summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/skia/experimental
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2014-08-08 14:30:41 +0200
committerJocelyn Turcotte <jocelyn.turcotte@digia.com>2014-08-12 13:49:54 +0200
commitab0a50979b9eb4dfa3320eff7e187e41efedf7a9 (patch)
tree498dfb8a97ff3361a9f7486863a52bb4e26bb898 /chromium/third_party/skia/experimental
parent4ce69f7403811819800e7c5ae1318b2647e778d1 (diff)
Update Chromium to beta version 37.0.2062.68
Change-Id: I188e3b5aff1bec75566014291b654eb19f5bc8ca Reviewed-by: Andras Becsi <andras.becsi@digia.com>
Diffstat (limited to 'chromium/third_party/skia/experimental')
-rw-r--r--chromium/third_party/skia/experimental/AndroidPathRenderer/AndroidPathRenderer.cpp729
-rw-r--r--chromium/third_party/skia/experimental/AndroidPathRenderer/AndroidPathRenderer.h94
-rw-r--r--chromium/third_party/skia/experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp89
-rw-r--r--chromium/third_party/skia/experimental/AndroidPathRenderer/GrAndroidPathRenderer.h29
-rw-r--r--chromium/third_party/skia/experimental/AndroidPathRenderer/Vertex.h84
-rw-r--r--chromium/third_party/skia/experimental/AndroidPathRenderer/cutils/compiler.h35
-rw-r--r--chromium/third_party/skia/experimental/ChromeUtils/SkBorder.cpp30
-rw-r--r--chromium/third_party/skia/experimental/ChromeUtils/SkBorder.h104
-rw-r--r--chromium/third_party/skia/experimental/DrawingBoard/SampleDrawingClient.cpp278
-rw-r--r--chromium/third_party/skia/experimental/DrawingBoard/SampleDrawingServer.cpp222
-rw-r--r--chromium/third_party/skia/experimental/DrawingBoard/SkColorPalette.cpp195
-rw-r--r--chromium/third_party/skia/experimental/DrawingBoard/SkColorPalette.h34
-rw-r--r--chromium/third_party/skia/experimental/DrawingBoard/SkNetPipeController.cpp50
-rw-r--r--chromium/third_party/skia/experimental/DrawingBoard/SkNetPipeController.h36
-rw-r--r--chromium/third_party/skia/experimental/FileReaderApp/English.lproj/InfoPlist.strings2
-rw-r--r--chromium/third_party/skia/experimental/FileReaderApp/English.lproj/MainMenu.xib4272
-rw-r--r--chromium/third_party/skia/experimental/FileReaderApp/FileReaderApp-Info.plist32
-rw-r--r--chromium/third_party/skia/experimental/FileReaderApp/FileReaderAppDelegate.h15
-rw-r--r--chromium/third_party/skia/experimental/FileReaderApp/FileReaderAppDelegate.mm10
-rw-r--r--chromium/third_party/skia/experimental/FileReaderApp/FileReaderApp_Prefix.pch7
-rw-r--r--chromium/third_party/skia/experimental/FileReaderApp/FileReaderWindow.h14
-rw-r--r--chromium/third_party/skia/experimental/FileReaderApp/FileReaderWindow.mm35
-rw-r--r--chromium/third_party/skia/experimental/FileReaderApp/ReaderView.cpp75
-rw-r--r--chromium/third_party/skia/experimental/FileReaderApp/ReaderView.h29
-rw-r--r--chromium/third_party/skia/experimental/FileReaderApp/main.m16
-rwxr-xr-xchromium/third_party/skia/experimental/Intersection/ActiveEdge_Test.cpp83
-rw-r--r--chromium/third_party/skia/experimental/Intersection/AddTestOutput/main.cpp115
-rw-r--r--chromium/third_party/skia/experimental/Intersection/ConvexHull.cpp143
-rw-r--r--chromium/third_party/skia/experimental/Intersection/ConvexHull_Test.cpp468
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubeRoot.cpp400
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicBezierClip.cpp89
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicBezierClip_Test.cpp32
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicBounds.cpp66
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicConvexHull.cpp165
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicIntersection.cpp471
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicIntersection_Test.cpp778
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicIntersection_TestData.cpp310
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicIntersection_TestData.h31
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicLineSegments.cpp38
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicLineSegments.h12
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicParameterization.cpp518
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicParameterizationCode.cpp405
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicParameterization_Test.cpp113
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicParameterization_TestUtility.cpp53
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicReduceOrder.cpp254
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicReduceOrder_Test.cpp154
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicSubDivide.cpp147
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicToQuadratics.cpp217
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicToQuadratics_Test.cpp269
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicUtilities.cpp424
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicUtilities.h46
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CubicUtilities_Test.cpp28
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CurveIntersection.h80
-rw-r--r--chromium/third_party/skia/experimental/Intersection/CurveUtilities.h15
-rw-r--r--chromium/third_party/skia/experimental/Intersection/DataTypes.cpp108
-rw-r--r--chromium/third_party/skia/experimental/Intersection/DataTypes.h418
-rw-r--r--chromium/third_party/skia/experimental/Intersection/DataTypes_Test.h7
-rw-r--r--chromium/third_party/skia/experimental/Intersection/EdgeDemo.cpp347
-rw-r--r--chromium/third_party/skia/experimental/Intersection/EdgeDemo.h3
-rw-r--r--chromium/third_party/skia/experimental/Intersection/EdgeDemoApp-Info.plist32
-rw-r--r--chromium/third_party/skia/experimental/Intersection/EdgeDemoApp.mm94
-rw-r--r--chromium/third_party/skia/experimental/Intersection/EdgeDemoApp.xib3115
-rw-r--r--chromium/third_party/skia/experimental/Intersection/EdgeMain.cpp13
-rw-r--r--chromium/third_party/skia/experimental/Intersection/EdgeWalker.cpp2705
-rwxr-xr-xchromium/third_party/skia/experimental/Intersection/EdgeWalkerPolygon4x4_Test.cpp290
-rw-r--r--chromium/third_party/skia/experimental/Intersection/EdgeWalkerPolygons_Mismatches.cpp1622
-rw-r--r--chromium/third_party/skia/experimental/Intersection/EdgeWalkerPolygons_Test.cpp790
-rw-r--r--chromium/third_party/skia/experimental/Intersection/EdgeWalkerQuadralaterals_Test.cpp126
-rw-r--r--chromium/third_party/skia/experimental/Intersection/EdgeWalkerQuadratic4x4_Test.cpp106
-rw-r--r--chromium/third_party/skia/experimental/Intersection/EdgeWalkerQuadratics_Test.cpp284
-rw-r--r--chromium/third_party/skia/experimental/Intersection/EdgeWalkerRectangles_Test.cpp469
-rw-r--r--chromium/third_party/skia/experimental/Intersection/EdgeWalker_Test.h59
-rw-r--r--chromium/third_party/skia/experimental/Intersection/EdgeWalker_TestUtility.cpp761
-rw-r--r--chromium/third_party/skia/experimental/Intersection/English.lproj/InfoPlist.strings2
-rw-r--r--chromium/third_party/skia/experimental/Intersection/English.lproj/MainMenu.xib4119
-rw-r--r--chromium/third_party/skia/experimental/Intersection/Extrema.cpp81
-rw-r--r--chromium/third_party/skia/experimental/Intersection/Extrema.h8
-rw-r--r--chromium/third_party/skia/experimental/Intersection/Inline_Tests.cpp54
-rw-r--r--chromium/third_party/skia/experimental/Intersection/IntersectionUtilities.cpp48
-rw-r--r--chromium/third_party/skia/experimental/Intersection/IntersectionUtilities.h47
-rw-r--r--chromium/third_party/skia/experimental/Intersection/Intersection_Tests.cpp84
-rw-r--r--chromium/third_party/skia/experimental/Intersection/Intersection_Tests.h61
-rw-r--r--chromium/third_party/skia/experimental/Intersection/Intersections.cpp158
-rw-r--r--chromium/third_party/skia/experimental/Intersection/Intersections.h144
-rw-r--r--chromium/third_party/skia/experimental/Intersection/LineCubicIntersection.cpp296
-rw-r--r--chromium/third_party/skia/experimental/Intersection/LineCubicIntersection_Test.cpp62
-rw-r--r--chromium/third_party/skia/experimental/Intersection/LineIntersection.cpp338
-rw-r--r--chromium/third_party/skia/experimental/Intersection/LineIntersection.h21
-rw-r--r--chromium/third_party/skia/experimental/Intersection/LineIntersection_Test.cpp72
-rw-r--r--chromium/third_party/skia/experimental/Intersection/LineParameterization.cpp63
-rw-r--r--chromium/third_party/skia/experimental/Intersection/LineParameters.h108
-rw-r--r--chromium/third_party/skia/experimental/Intersection/LineParameteters_Test.cpp79
-rw-r--r--chromium/third_party/skia/experimental/Intersection/LineQuadraticIntersection.cpp369
-rw-r--r--chromium/third_party/skia/experimental/Intersection/LineQuadraticIntersection_Test.cpp235
-rw-r--r--chromium/third_party/skia/experimental/Intersection/LineUtilities.cpp133
-rw-r--r--chromium/third_party/skia/experimental/Intersection/LineUtilities.h25
-rw-r--r--chromium/third_party/skia/experimental/Intersection/LogoPlay.cpp353
-rw-r--r--chromium/third_party/skia/experimental/Intersection/MiniSimplify_Test.cpp99
-rw-r--r--chromium/third_party/skia/experimental/Intersection/NearestPoint.cpp473
-rw-r--r--chromium/third_party/skia/experimental/Intersection/Parameterization_Test.h12
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticBezierClip.cpp82
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticBezierClip_Test.cpp70
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticBounds.cpp47
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticImplicit.cpp572
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticIntersection.cpp403
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticIntersection_Test.cpp436
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticIntersection_TestData.cpp98
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticIntersection_TestData.h16
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticLineSegments.cpp34
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticLineSegments.h12
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticParameterization.cpp135
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticParameterization.h27
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticParameterization_Test.cpp48
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticParameterization_TestUtility.cpp16
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticReduceOrder.cpp184
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticReduceOrder_Test.cpp67
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticSubDivide.cpp79
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticUtilities.cpp255
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuadraticUtilities.h47
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuarticRoot.cpp236
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuarticRoot.h5
-rw-r--r--chromium/third_party/skia/experimental/Intersection/QuarticRoot_Test.cpp195
-rw-r--r--chromium/third_party/skia/experimental/Intersection/ShapeOpCubic4x4_Test.cpp106
-rw-r--r--chromium/third_party/skia/experimental/Intersection/ShapeOpRect4x4_Test.cpp94
-rw-r--r--chromium/third_party/skia/experimental/Intersection/ShapeOps.cpp279
-rw-r--r--chromium/third_party/skia/experimental/Intersection/ShapeOps.h40
-rw-r--r--chromium/third_party/skia/experimental/Intersection/Simplify.cpp6608
-rw-r--r--chromium/third_party/skia/experimental/Intersection/Simplify.h17
-rw-r--r--chromium/third_party/skia/experimental/Intersection/SimplifyAddIntersectingTs_Test.cpp135
-rw-r--r--chromium/third_party/skia/experimental/Intersection/SimplifyAngle_Test.cpp342
-rw-r--r--chromium/third_party/skia/experimental/Intersection/SimplifyFindNext_Test.cpp153
-rw-r--r--chromium/third_party/skia/experimental/Intersection/SimplifyFindTop_Test.cpp222
-rw-r--r--chromium/third_party/skia/experimental/Intersection/SimplifyNew_Test.cpp5194
-rw-r--r--chromium/third_party/skia/experimental/Intersection/SimplifyRect4x4_Test.cpp200
-rw-r--r--chromium/third_party/skia/experimental/Intersection/SkAntiEdge.cpp1086
-rw-r--r--chromium/third_party/skia/experimental/Intersection/SkAntiEdge.h76
-rw-r--r--chromium/third_party/skia/experimental/Intersection/TSearch.h101
-rw-r--r--chromium/third_party/skia/experimental/Intersection/TestUtilities.cpp65
-rw-r--r--chromium/third_party/skia/experimental/Intersection/TestUtilities.h11
-rw-r--r--chromium/third_party/skia/experimental/Intersection/TriangleUtilities.cpp31
-rw-r--r--chromium/third_party/skia/experimental/Intersection/TriangleUtilities.h10
-rw-r--r--chromium/third_party/skia/experimental/Intersection/as.htm7027
-rw-r--r--chromium/third_party/skia/experimental/Intersection/bc.htm455
-rw-r--r--chromium/third_party/skia/experimental/Intersection/cd.htm517
-rw-r--r--chromium/third_party/skia/experimental/Intersection/edge_Prefix.pch5
-rw-r--r--chromium/third_party/skia/experimental/Intersection/hg.htm649
-rw-r--r--chromium/third_party/skia/experimental/Intersection/op.htm4806
-rw-r--r--chromium/third_party/skia/experimental/Intersection/qc.htm2883
-rw-r--r--chromium/third_party/skia/experimental/Intersection/thingsToDo.txt525
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker.sln20
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.cpp673
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.vcxproj90
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.vcxproj.filters36
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.vcxproj.user11
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/ReadMe.txt40
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/stdafx.cpp8
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/stdafx.h15
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/targetver.h8
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/helper.h65
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/lightsymbols.cc169
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/lightsymbols.h50
-rw-r--r--chromium/third_party/skia/experimental/Networking/SampleNetPipeReader.cpp129
-rw-r--r--chromium/third_party/skia/experimental/Networking/SkSockets.cpp358
-rw-r--r--chromium/third_party/skia/experimental/Networking/SkSockets.h198
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/SkNulCanvas.cpp8
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/SkNulCanvas.h112
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/SkPdfConfig.h105
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/SkPdfFont.cpp468
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/SkPdfFont.h479
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/SkPdfGraphicsState.cpp41
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/SkPdfGraphicsState.h354
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/SkPdfReporter.cpp66
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/SkPdfReporter.h100
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/SkPdfUtils.cpp31
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/SkPdfUtils.h121
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/SkTrackDevice.cpp8
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/SkTrackDevice.h180
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/SkTracker.cpp8
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/SkTracker.h227
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/chop_transparency_main.cpp175
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfContext.h48
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfDiffEncoder.h25
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfRenderer.h80
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfTokenLooper.h68
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdf_viewer_main.cpp349
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/SkPdfNYI.cpp8
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/SkPdfNYI.h20
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeDoc.cpp582
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeDoc.h159
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeObject.cpp134
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeObject.h1326
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp1125
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h201
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfALinkAnnotationDictionary_autogen.cpp103
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfALinkAnnotationDictionary_autogen.h541
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfActionDictionary_autogen.cpp65
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfActionDictionary_autogen.h534
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAlternateImageDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAlternateImageDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAnnotationActionsDictionary_autogen.cpp81
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAnnotationActionsDictionary_autogen.h535
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAnnotationDictionary_autogen.cpp249
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAnnotationDictionary_autogen.h565
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAppearanceCharacteristicsDictionary_autogen.cpp141
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAppearanceCharacteristicsDictionary_autogen.h545
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAppearanceDictionary_autogen.cpp105
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAppearanceDictionary_autogen.h544
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfApplicationDataDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfApplicationDataDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfArtifactsDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfArtifactsDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAttributeObjectDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAttributeObjectDictionary_autogen.h525
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBeadDictionary_autogen.cpp81
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBeadDictionary_autogen.h535
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBlockLevelStructureElementsDictionary_autogen.cpp181
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBlockLevelStructureElementsDictionary_autogen.h555
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBorderStyleDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBorderStyleDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBoxColorInformationDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBoxColorInformationDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBoxStyleDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBoxStyleDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDFontDescriptorDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDFontDescriptorDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDFontDictionary_autogen.cpp149
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDFontDictionary_autogen.h548
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDSystemInfoDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDSystemInfoDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCMapDictionary_autogen.cpp109
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCMapDictionary_autogen.h543
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCalgrayColorSpaceDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCalgrayColorSpaceDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCalrgbColorSpaceDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCalrgbColorSpaceDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCatalogDictionary_autogen.cpp301
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCatalogDictionary_autogen.h575
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCcittfaxdecodeFilterDictionary_autogen.cpp105
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCcittfaxdecodeFilterDictionary_autogen.h539
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCheckboxFieldDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCheckboxFieldDictionary_autogen.h525
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfChoiceFieldDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfChoiceFieldDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfComponentsWithMetadataDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfComponentsWithMetadataDictionary_autogen.h525
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDctdecodeFilterDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDctdecodeFilterDictionary_autogen.h525
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDeviceNColorSpaceDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDeviceNColorSpaceDictionary_autogen.h525
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDictionary_autogen.cpp9
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDocumentCatalogActionsDictionary_autogen.cpp69
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDocumentCatalogActionsDictionary_autogen.h533
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDocumentInformationDictionary_autogen.cpp117
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDocumentInformationDictionary_autogen.h541
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFileParameterDictionary_autogen.cpp69
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFileParameterDictionary_autogen.h533
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFileStreamDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFileStreamDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFontStreamDictionary_autogen.cpp69
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFontStreamDictionary_autogen.h533
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncodingDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncodingDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncryptedEmbeddedFileStreamDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncryptedEmbeddedFileStreamDictionary_autogen.h525
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncryptionCommonDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncryptionCommonDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEnums_autogen.h358
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFCatalogDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFCatalogDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFDictionary_autogen.cpp141
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFDictionary_autogen.h545
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFFieldDictionary_autogen.cpp189
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFFieldDictionary_autogen.h553
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFFileAnnotationDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFFileAnnotationDictionary_autogen.h525
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFNamedPageReferenceDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFNamedPageReferenceDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFPageDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFPageDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFTemplateDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFTemplateDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFTrailerDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFTrailerDictionary_autogen.h525
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFieldDictionary_autogen.cpp129
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFieldDictionary_autogen.h543
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileAttachmentAnnotationDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileAttachmentAnnotationDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileSpecificationDictionary_autogen.cpp129
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileSpecificationDictionary_autogen.h543
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileTrailerDictionary_autogen.cpp81
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileTrailerDictionary_autogen.h535
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFontDescriptorDictionary_autogen.cpp237
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFontDescriptorDictionary_autogen.h561
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFontDictionary_autogen.cpp9
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFontDictionary_autogen.h507
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFormFieldActionsDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFormFieldActionsDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFreeTextAnnotationDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFreeTextAnnotationDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFunctionCommonDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFunctionCommonDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGoToActionDictionary_autogen.cpp67
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGoToActionDictionary_autogen.h535
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGraphicsStateDictionary_autogen.cpp515
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGraphicsStateDictionary_autogen.h621
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGroupAttributesDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGroupAttributesDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfHeaders_autogen.cpp176
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfHeaders_autogen.h179
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfHideActionDictionary_autogen.cpp79
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfHideActionDictionary_autogen.h537
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfIccProfileStreamDictionary_autogen.cpp77
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfIccProfileStreamDictionary_autogen.h536
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfIconFitDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfIconFitDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfImageDictionary_autogen.cpp265
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfImageDictionary_autogen.h74
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfImportDataActionDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfImportDataActionDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInkAnnotationDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInkAnnotationDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInlineLevelStructureElementsDictionary_autogen.cpp41
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInlineLevelStructureElementsDictionary_autogen.h530
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInteractiveFormDictionary_autogen.cpp93
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInteractiveFormDictionary_autogen.h537
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJavascriptActionDictionary_autogen.cpp53
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJavascriptActionDictionary_autogen.h532
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJavascriptDictionary_autogen.cpp85
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJavascriptDictionary_autogen.h539
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJbig2DecodeFilterDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJbig2DecodeFilterDictionary_autogen.h525
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLabColorSpaceDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLabColorSpaceDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLaunchActionDictionary_autogen.cpp81
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLaunchActionDictionary_autogen.h535
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLineAnnotationDictionary_autogen.cpp81
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLineAnnotationDictionary_autogen.h535
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfListAttributeDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfListAttributeDictionary_autogen.h525
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLzwdecodeAndFlatedecodeFiltersDictionary_autogen.cpp69
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLzwdecodeAndFlatedecodeFiltersDictionary_autogen.h533
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMacOsFileInformationDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMacOsFileInformationDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMapper_autogen.cpp4634
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMapper_autogen.h692
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkInformationDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkInformationDictionary_autogen.h525
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkedContentReferenceDictionary_autogen.cpp69
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkedContentReferenceDictionary_autogen.h533
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkupAnnotationsDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkupAnnotationsDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMetadataStreamDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMetadataStreamDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieActionDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieActionDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieActivationDictionary_autogen.cpp117
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieActivationDictionary_autogen.h541
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieAnnotationDictionary_autogen.cpp77
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieAnnotationDictionary_autogen.h536
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieDictionary_autogen.cpp77
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieDictionary_autogen.h536
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMultiMasterFontDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMultiMasterFontDictionary_autogen.h32
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNameDictionary_autogen.cpp265
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNameDictionary_autogen.h579
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNameTreeNodeDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNameTreeNodeDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNamedActionsDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNamedActionsDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNumberTreeNodeDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNumberTreeNodeDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfObjectReferenceDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfObjectReferenceDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOpiVersionDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOpiVersionDictionary_autogen.h525
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOutlineDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOutlineDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOutlineItemDictionary_autogen.cpp187
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOutlineItemDictionary_autogen.h555
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPDF_XOutputIntentDictionary_autogen.cpp93
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPDF_XOutputIntentDictionary_autogen.h537
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPSXobjectDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPSXobjectDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageLabelDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageLabelDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageObjectActionsDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageObjectActionsDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageObjectDictionary_autogen.cpp329
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageObjectDictionary_autogen.h578
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPagePieceDictionary_autogen.cpp23
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPagePieceDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageTreeNodeDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageTreeNodeDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPopUpAnnotationDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPopUpAnnotationDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPrinterMarkAnnotationDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPrinterMarkAnnotationDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPrinterMarkFormDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPrinterMarkFormDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRadioButtonFieldDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRadioButtonFieldDictionary_autogen.h525
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfReferenceDictionary_autogen.cpp65
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfReferenceDictionary_autogen.h534
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRemoteGoToActionDictionary_autogen.cpp91
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRemoteGoToActionDictionary_autogen.h539
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfResetFormActionDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfResetFormActionDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfResourceDictionary_autogen.cpp105
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfResourceDictionary_autogen.h539
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRubberStampAnnotationDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRubberStampAnnotationDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSeparationDictionary_autogen.cpp65
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSeparationDictionary_autogen.h534
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfShadingDictionary_autogen.cpp89
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfShadingDictionary_autogen.h520
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSignatureDictionary_autogen.cpp117
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSignatureDictionary_autogen.h541
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoftMaskDictionary_autogen.cpp89
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoftMaskDictionary_autogen.h538
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoftMaskImageDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoftMaskImageDictionary_autogen.h31
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundActionDictionary_autogen.cpp81
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundActionDictionary_autogen.h535
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundAnnotationDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundAnnotationDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundObjectDictionary_autogen.cpp93
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundObjectDictionary_autogen.h537
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSourceInformationDictionary_autogen.cpp89
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSourceInformationDictionary_autogen.h538
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSquareOrCircleAnnotation_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSquareOrCircleAnnotation_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStandardSecurityHandlerDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStandardSecurityHandlerDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStandardStructureDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStandardStructureDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStreamCommonDictionary_autogen.cpp161
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStreamCommonDictionary_autogen.h555
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureElementAccessDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureElementAccessDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureElementDictionary_autogen.cpp185
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureElementDictionary_autogen.h554
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureTreeRootDictionary_autogen.cpp153
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureTreeRootDictionary_autogen.h552
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSubmitFormActionDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSubmitFormActionDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTableAttributesDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTableAttributesDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTextAnnotationDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTextAnnotationDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTextFieldDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTextFieldDictionary_autogen.h525
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfThreadActionDictionary_autogen.cpp111
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfThreadActionDictionary_autogen.h544
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfThreadDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfThreadDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTransitionDictionary_autogen.cpp81
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTransitionDictionary_autogen.h535
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTransparencyGroupDictionary_autogen.cpp77
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTransparencyGroupDictionary_autogen.h536
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrapNetworkAnnotationDictionary_autogen.cpp81
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrapNetworkAnnotationDictionary_autogen.h535
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrapNetworkAppearanceStreamDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrapNetworkAppearanceStreamDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrueTypeFontDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrueTypeFontDictionary_autogen.h32
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType0FontDictionary_autogen.cpp101
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType0FontDictionary_autogen.h54
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType0FunctionDictionary_autogen.cpp69
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType0FunctionDictionary_autogen.h533
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType10HalftoneDictionary_autogen.cpp101
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType10HalftoneDictionary_autogen.h540
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType16HalftoneDictionary_autogen.cpp125
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType16HalftoneDictionary_autogen.h544
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1FontDictionary_autogen.cpp149
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1FontDictionary_autogen.h53
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1FormDictionary_autogen.cpp189
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1FormDictionary_autogen.h61
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1HalftoneDictionary_autogen.cpp145
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1HalftoneDictionary_autogen.h549
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1PatternDictionary_autogen.cpp117
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1PatternDictionary_autogen.h541
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1ShadingDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1ShadingDictionary_autogen.h46
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2FunctionDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2FunctionDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2PatternDictionary_autogen.cpp89
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2PatternDictionary_autogen.h538
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2ShadingDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2ShadingDictionary_autogen.h48
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3FontDictionary_autogen.cpp173
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3FontDictionary_autogen.h60
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3FunctionDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3FunctionDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3ShadingDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3ShadingDictionary_autogen.h48
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType4ShadingDictionary_autogen.cpp69
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType4ShadingDictionary_autogen.h50
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType5HalftoneDictionary_autogen.cpp111
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType5HalftoneDictionary_autogen.h545
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType5ShadingDictionary_autogen.cpp69
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType5ShadingDictionary_autogen.h50
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType6HalftoneDictionary_autogen.cpp101
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType6HalftoneDictionary_autogen.h540
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType6ShadingDictionary_autogen.cpp69
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType6ShadingDictionary_autogen.h50
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURIActionDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURIActionDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURIDictionary_autogen.cpp21
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURIDictionary_autogen.h525
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURLAliasDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURLAliasDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfVariableTextFieldDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfVariableTextFieldDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfViewerPreferencesDictionary_autogen.cpp153
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfViewerPreferencesDictionary_autogen.h547
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureCommandDictionary_autogen.cpp113
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureCommandDictionary_autogen.h542
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureCommandSettingsDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureCommandSettingsDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureDictionary_autogen.cpp113
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureDictionary_autogen.h542
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureImageSetDictionary_autogen.cpp53
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureImageSetDictionary_autogen.h532
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureInformationDictionary_autogen.cpp33
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureInformationDictionary_autogen.h527
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCapturePageSetDictionary_autogen.cpp45
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCapturePageSetDictionary_autogen.h529
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWidgetAnnotationDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWidgetAnnotationDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWindowsLaunchActionDictionary_autogen.cpp57
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWindowsLaunchActionDictionary_autogen.h531
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfXObjectDictionary_autogen.cpp9
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfXObjectDictionary_autogen.h513
-rwxr-xr-xchromium/third_party/skia/experimental/PdfViewer/scripts/test_all_pdfs.sh92
-rwxr-xr-xchromium/third_party/skia/experimental/PdfViewer/scripts/vm_pdf_viewer_run_one_pdf.sh11
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/src/SkPdfContext.cpp126
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/src/SkPdfDiffEncoder.cpp130
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/src/SkPdfOps.h18
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/src/SkPdfRenderer.cpp2915
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/src/SkTDStackNester.h214
-rw-r--r--chromium/third_party/skia/experimental/SimpleCocoaApp/SimpleApp-Info.plist32
-rw-r--r--chromium/third_party/skia/experimental/SimpleCocoaApp/SimpleApp.h16
-rw-r--r--chromium/third_party/skia/experimental/SimpleCocoaApp/SimpleApp.mm306
-rw-r--r--chromium/third_party/skia/experimental/SimpleCocoaApp/SimpleApp.xib3734
-rw-r--r--chromium/third_party/skia/experimental/SimpleiOSApp/SimpleApp.h6
-rw-r--r--chromium/third_party/skia/experimental/SimpleiOSApp/SimpleApp.mm70
-rw-r--r--chromium/third_party/skia/experimental/SimpleiOSApp/SimpleiOSApp-Info.plist43
-rwxr-xr-xchromium/third_party/skia/experimental/SimpleiOSApp/SimpleiOSApp.xcodeproj/project.pbxproj2935
-rw-r--r--chromium/third_party/skia/experimental/SimpleiOSApp/SimpleiOSApp_Prefix.pch8
-rw-r--r--chromium/third_party/skia/experimental/SimpleiOSApp/iPad/AppDelegate_iPad.h17
-rw-r--r--chromium/third_party/skia/experimental/SimpleiOSApp/iPad/AppDelegate_iPad.m67
-rw-r--r--chromium/third_party/skia/experimental/SimpleiOSApp/iPad/MainWindow_iPad.xib439
-rw-r--r--chromium/third_party/skia/experimental/SimpleiOSApp/iPhone/AppDelegate_iPhone.h17
-rw-r--r--chromium/third_party/skia/experimental/SimpleiOSApp/iPhone/AppDelegate_iPhone.m83
-rw-r--r--chromium/third_party/skia/experimental/SimpleiOSApp/iPhone/MainWindow_iPhone.xib449
-rw-r--r--chromium/third_party/skia/experimental/SimpleiOSApp/tool-Info.plist43
-rw-r--r--chromium/third_party/skia/experimental/SkSetPoly3To3.cpp69
-rw-r--r--chromium/third_party/skia/experimental/SkSetPoly3To3_A.cpp84
-rw-r--r--chromium/third_party/skia/experimental/SkSetPoly3To3_D.cpp74
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/BaseContext.cpp286
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/BaseContext.h84
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/Global.cpp245
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/Global.h85
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/JsContext.cpp140
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/JsContext.h65
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/Path2D.cpp244
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/Path2D.h52
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/README16
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/SkV8Example.cpp225
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/SkV8Example.h53
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/compare/gears.html11
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/compare/snow.html11
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/gears.js183
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/path.js33
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/sample.js19
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/snow.js95
-rw-r--r--chromium/third_party/skia/experimental/SkV8Example/speed.js23
-rw-r--r--chromium/third_party/skia/experimental/SkiaExamples/HelloSkiaExample.cpp106
-rw-r--r--chromium/third_party/skia/experimental/SkiaExamples/SkExample.cpp194
-rw-r--r--chromium/third_party/skia/experimental/SkiaExamples/SkExample.h82
-rw-r--r--chromium/third_party/skia/experimental/SkiaExamples/SkExampleNSView.h13
-rw-r--r--chromium/third_party/skia/experimental/SkiaExamples/SkExampleNSView.mm28
-rw-r--r--chromium/third_party/skia/experimental/SkiaExamples/SkiaExamples-Info.plist32
-rw-r--r--chromium/third_party/skia/experimental/SkiaExamples/SkiaExamples.xib3703
-rw-r--r--chromium/third_party/skia/experimental/StrokePathRenderer/GrStrokePathRenderer.cpp300
-rw-r--r--chromium/third_party/skia/experimental/StrokePathRenderer/GrStrokePathRenderer.h30
-rwxr-xr-xchromium/third_party/skia/experimental/benchtools/greenify.py205
-rwxr-xr-xchromium/third_party/skia/experimental/benchtools/rebase.py248
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkOptionListController.h16
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkOptionListController.mm78
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkOptionsTableViewController.h42
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkOptionsTableViewController.mm339
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIDetailViewController.h42
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIDetailViewController.mm175
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIRootViewController.h21
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIRootViewController.mm61
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIView.h48
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIView.mm115
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/Shared/skia_ios.mm15
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/SkSampleUIView.h48
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/SkSampleUIView.mm494
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/SkiOSSampleApp-Base.xcconfig17
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/SkiOSSampleApp-Debug.xcconfig13
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/SkiOSSampleApp-Release.xcconfig12
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/iOSSampleApp-Info.plist43
-rwxr-xr-xchromium/third_party/skia/experimental/iOSSampleApp/iOSSampleApp.xcodeproj/project.pbxproj3487
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/iOSSampleApp_Prefix.pch8
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/iPad/AppDelegate_iPad.h19
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/iPad/AppDelegate_iPad.mm22
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/iPad/MainWindow_iPad.xib565
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/iPad/SkUISplitViewController.h20
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/iPad/SkUISplitViewController.mm50
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/iPhone/AppDelegate_iPhone.h19
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/iPhone/AppDelegate_iPhone.mm21
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/iPhone/MainWindow_iPhone.xib831
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/iPhone/SkUINavigationController.h20
-rw-r--r--chromium/third_party/skia/experimental/iOSSampleApp/iPhone/SkUINavigationController.mm28
-rw-r--r--chromium/third_party/skia/experimental/nanomsg/picture_demo.cpp207
-rw-r--r--chromium/third_party/skia/experimental/pixman/Pixman-version.h50
-rw-r--r--chromium/third_party/skia/experimental/pixman/config.h3
-rw-r--r--chromium/third_party/skia/experimental/pixman/junk.cpp108
-rw-r--r--chromium/third_party/skia/experimental/pixman/pixman.mm99
-rw-r--r--chromium/third_party/skia/experimental/webtry/DESIGN.md282
-rw-r--r--chromium/third_party/skia/experimental/webtry/README.md94
-rw-r--r--chromium/third_party/skia/experimental/webtry/TODO.md16
-rw-r--r--chromium/third_party/skia/experimental/webtry/main.cpp126
-rw-r--r--chromium/third_party/skia/experimental/webtry/poly/.bowerrc3
-rw-r--r--chromium/third_party/skia/experimental/webtry/poly/Gruntfile.js64
-rw-r--r--chromium/third_party/skia/experimental/webtry/poly/README.md18
-rw-r--r--chromium/third_party/skia/experimental/webtry/poly/bower.json22
-rw-r--r--chromium/third_party/skia/experimental/webtry/poly/package.json17
-rw-r--r--chromium/third_party/skia/experimental/webtry/res/css/cm/codemirror.css272
-rw-r--r--chromium/third_party/skia/experimental/webtry/res/css/webtry.css128
-rw-r--r--chromium/third_party/skia/experimental/webtry/res/imp/zoom.html169
-rw-r--r--chromium/third_party/skia/experimental/webtry/res/js/cm/clike.js436
-rw-r--r--chromium/third_party/skia/experimental/webtry/res/js/cm/codemirror.js7526
-rw-r--r--chromium/third_party/skia/experimental/webtry/res/js/polyfill.js3
-rw-r--r--chromium/third_party/skia/experimental/webtry/res/js/webtry.js303
-rw-r--r--chromium/third_party/skia/experimental/webtry/result.cpp29
-rwxr-xr-xchromium/third_party/skia/experimental/webtry/safec++7
-rw-r--r--chromium/third_party/skia/experimental/webtry/seccomp_bpf.h65
-rwxr-xr-xchromium/third_party/skia/experimental/webtry/setup/continue_install60
-rwxr-xr-xchromium/third_party/skia/experimental/webtry/setup/webtry_setup.sh33
-rw-r--r--chromium/third_party/skia/experimental/webtry/sys/webtry_init159
-rw-r--r--chromium/third_party/skia/experimental/webtry/sys/webtry_monit7
-rw-r--r--chromium/third_party/skia/experimental/webtry/sys/webtry_schroot9
-rw-r--r--chromium/third_party/skia/experimental/webtry/sys/webtry_squid6
-rw-r--r--chromium/third_party/skia/experimental/webtry/templates/content.html42
-rw-r--r--chromium/third_party/skia/experimental/webtry/templates/footercommon.html6
-rw-r--r--chromium/third_party/skia/experimental/webtry/templates/headercommon.html2
-rw-r--r--chromium/third_party/skia/experimental/webtry/templates/iframe.html16
-rw-r--r--chromium/third_party/skia/experimental/webtry/templates/index.html18
-rw-r--r--chromium/third_party/skia/experimental/webtry/templates/recent.html25
-rw-r--r--chromium/third_party/skia/experimental/webtry/templates/template.cpp162
-rw-r--r--chromium/third_party/skia/experimental/webtry/templates/titlebar.html8
-rw-r--r--chromium/third_party/skia/experimental/webtry/templates/workspace.html39
-rw-r--r--chromium/third_party/skia/experimental/webtry/webtry.go872
658 files changed, 213622 insertions, 0 deletions
diff --git a/chromium/third_party/skia/experimental/AndroidPathRenderer/AndroidPathRenderer.cpp b/chromium/third_party/skia/experimental/AndroidPathRenderer/AndroidPathRenderer.cpp
new file mode 100644
index 00000000000..ca9873cddb7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/AndroidPathRenderer/AndroidPathRenderer.cpp
@@ -0,0 +1,729 @@
+/*
+ * Copyright 2012 The Android Open Source Project
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#define LOG_TAG "PathRenderer"
+#define LOG_NDEBUG 1
+#define ATRACE_TAG ATRACE_TAG_GRAPHICS
+
+#define VERTEX_DEBUG 0
+
+#include <SkPath.h>
+#include <SkStrokeRec.h>
+
+#include <stdlib.h>
+#include <stdint.h>
+#include <sys/types.h>
+
+#include <SkTypes.h>
+#include <SkTraceEvent.h>
+#include <SkMatrix.h>
+#include <SkPoint.h>
+
+#ifdef VERBOSE
+#define ALOGV SkDebugf
+#else
+#define ALOGV(x, ...)
+#endif
+
+#include "AndroidPathRenderer.h"
+#include "Vertex.h"
+
+namespace android {
+namespace uirenderer {
+
+#define THRESHOLD 0.5f
+
+SkRect PathRenderer::ComputePathBounds(const SkPath& path, const SkPaint* paint) {
+ SkRect bounds = path.getBounds();
+ if (paint->getStyle() != SkPaint::kFill_Style) {
+ float outset = paint->getStrokeWidth() * 0.5f;
+ bounds.outset(outset, outset);
+ }
+ return bounds;
+}
+
+inline void computeInverseScales(const SkMatrix* transform, float &inverseScaleX, float& inverseScaleY) {
+ if (transform && transform->getType() & (SkMatrix::kScale_Mask|SkMatrix::kAffine_Mask|SkMatrix::kPerspective_Mask)) {
+ float m00 = transform->getScaleX();
+ float m01 = transform->getSkewY();
+ float m10 = transform->getSkewX();
+ float m11 = transform->getScaleY();
+ float scaleX = sk_float_sqrt(m00 * m00 + m01 * m01);
+ float scaleY = sk_float_sqrt(m10 * m10 + m11 * m11);
+ inverseScaleX = (scaleX != 0) ? (1.0f / scaleX) : 1.0f;
+ inverseScaleY = (scaleY != 0) ? (1.0f / scaleY) : 1.0f;
+ } else {
+ inverseScaleX = 1.0f;
+ inverseScaleY = 1.0f;
+ }
+}
+
+inline void copyVertex(Vertex* destPtr, const Vertex* srcPtr) {
+ Vertex::set(destPtr, srcPtr->position[0], srcPtr->position[1]);
+}
+
+inline void copyAlphaVertex(AlphaVertex* destPtr, const AlphaVertex* srcPtr) {
+ AlphaVertex::set(destPtr, srcPtr->position[0], srcPtr->position[1], srcPtr->alpha);
+}
+
+/**
+ * Produces a pseudo-normal for a vertex, given the normals of the two incoming lines. If the offset
+ * from each vertex in a perimeter is calculated, the resultant lines connecting the offset vertices
+ * will be offset by 1.0
+ *
+ * Note that we can't add and normalize the two vectors, that would result in a rectangle having an
+ * offset of (sqrt(2)/2, sqrt(2)/2) at each corner, instead of (1, 1)
+ *
+ * NOTE: assumes angles between normals 90 degrees or less
+ */
+inline SkVector totalOffsetFromNormals(const SkVector& normalA, const SkVector& normalB) {
+ SkVector pseudoNormal = normalA + normalB;
+ pseudoNormal.scale(1.0f / (1.0f + sk_float_abs(normalA.dot(normalB))));
+ return pseudoNormal;
+}
+
+inline void scaleOffsetForStrokeWidth(SkVector& offset, float halfStrokeWidth,
+ float inverseScaleX, float inverseScaleY) {
+ if (halfStrokeWidth == 0.0f) {
+ // hairline - compensate for scale
+ offset.fX *= 0.5f * inverseScaleX;
+ offset.fY *= 0.5f * inverseScaleY;
+ } else {
+ offset.scale(halfStrokeWidth);
+ }
+}
+
+static void getFillVerticesFromPerimeter(const SkTArray<Vertex, true>& perimeter, VertexBuffer* vertexBuffer) {
+ Vertex* buffer = vertexBuffer->alloc<Vertex>(perimeter.count());
+
+ int currentIndex = 0;
+ // zig zag between all previous points on the inside of the hull to create a
+ // triangle strip that fills the hull
+ int srcAindex = 0;
+ int srcBindex = perimeter.count() - 1;
+ while (srcAindex <= srcBindex) {
+ copyVertex(&buffer[currentIndex++], &perimeter[srcAindex]);
+ if (srcAindex == srcBindex) break;
+ copyVertex(&buffer[currentIndex++], &perimeter[srcBindex]);
+ srcAindex++;
+ srcBindex--;
+ }
+}
+
+static void getStrokeVerticesFromPerimeter(const SkTArray<Vertex, true>& perimeter, float halfStrokeWidth,
+ VertexBuffer* vertexBuffer, float inverseScaleX, float inverseScaleY) {
+ Vertex* buffer = vertexBuffer->alloc<Vertex>(perimeter.count() * 2 + 2);
+
+ int currentIndex = 0;
+ const Vertex* last = &(perimeter[perimeter.count() - 1]);
+ const Vertex* current = &(perimeter[0]);
+ SkVector lastNormal;
+ lastNormal.set(current->position[1] - last->position[1],
+ last->position[0] - current->position[0]);
+ lastNormal.normalize();
+ for (int i = 0; i < perimeter.count(); i++) {
+ const Vertex* next = &(perimeter[i + 1 >= perimeter.count() ? 0 : i + 1]);
+ SkVector nextNormal;
+ nextNormal.set(next->position[1] - current->position[1],
+ current->position[0] - next->position[0]);
+ nextNormal.normalize();
+
+ SkVector totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
+ scaleOffsetForStrokeWidth(totalOffset, halfStrokeWidth, inverseScaleX, inverseScaleY);
+
+ Vertex::set(&buffer[currentIndex++],
+ current->position[0] + totalOffset.fX,
+ current->position[1] + totalOffset.fY);
+
+ Vertex::set(&buffer[currentIndex++],
+ current->position[0] - totalOffset.fX,
+ current->position[1] - totalOffset.fY);
+
+ last = current;
+ current = next;
+ lastNormal = nextNormal;
+ }
+
+ // wrap around to beginning
+ copyVertex(&buffer[currentIndex++], &buffer[0]);
+ copyVertex(&buffer[currentIndex++], &buffer[1]);
+}
+
+static void getStrokeVerticesFromUnclosedVertices(const SkTArray<Vertex, true>& vertices, float halfStrokeWidth,
+ VertexBuffer* vertexBuffer, float inverseScaleX, float inverseScaleY) {
+ Vertex* buffer = vertexBuffer->alloc<Vertex>(vertices.count() * 2);
+
+ int currentIndex = 0;
+ const Vertex* current = &(vertices[0]);
+ SkVector lastNormal;
+ for (int i = 0; i < vertices.count() - 1; i++) {
+ const Vertex* next = &(vertices[i + 1]);
+ SkVector nextNormal;
+ nextNormal.set(next->position[1] - current->position[1],
+ current->position[0] - next->position[0]);
+ nextNormal.normalize();
+
+ SkVector totalOffset;
+ if (i == 0) {
+ totalOffset = nextNormal;
+ } else {
+ totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
+ }
+ scaleOffsetForStrokeWidth(totalOffset, halfStrokeWidth, inverseScaleX, inverseScaleY);
+
+ Vertex::set(&buffer[currentIndex++],
+ current->position[0] + totalOffset.fX,
+ current->position[1] + totalOffset.fY);
+
+ Vertex::set(&buffer[currentIndex++],
+ current->position[0] - totalOffset.fX,
+ current->position[1] - totalOffset.fY);
+
+ current = next;
+ lastNormal = nextNormal;
+ }
+
+ SkVector totalOffset = lastNormal;
+ scaleOffsetForStrokeWidth(totalOffset, halfStrokeWidth, inverseScaleX, inverseScaleY);
+
+ Vertex::set(&buffer[currentIndex++],
+ current->position[0] + totalOffset.fX,
+ current->position[1] + totalOffset.fY);
+ Vertex::set(&buffer[currentIndex++],
+ current->position[0] - totalOffset.fX,
+ current->position[1] - totalOffset.fY);
+#if VERTEX_DEBUG
+ for (unsigned int i = 0; i < vertexBuffer.getSize(); i++) {
+ SkDebugf("point at %f %f", buffer[i].position[0], buffer[i].position[1]);
+ }
+#endif
+}
+
+static void getFillVerticesFromPerimeterAA(const SkTArray<Vertex, true>& perimeter, VertexBuffer* vertexBuffer,
+ float inverseScaleX, float inverseScaleY) {
+ AlphaVertex* buffer = vertexBuffer->alloc<AlphaVertex>(perimeter.count() * 3 + 2);
+
+ // generate alpha points - fill Alpha vertex gaps in between each point with
+ // alpha 0 vertex, offset by a scaled normal.
+ int currentIndex = 0;
+ const Vertex* last = &(perimeter[perimeter.count() - 1]);
+ const Vertex* current = &(perimeter[0]);
+ SkVector lastNormal;
+ lastNormal.set(current->position[1] - last->position[1],
+ last->position[0] - current->position[0]);
+ lastNormal.normalize();
+ for (int i = 0; i < perimeter.count(); i++) {
+ const Vertex* next = &(perimeter[i + 1 >= perimeter.count() ? 0 : i + 1]);
+ SkVector nextNormal;
+ nextNormal.set(next->position[1] - current->position[1],
+ current->position[0] - next->position[0]);
+ nextNormal.normalize();
+
+ // AA point offset from original point is that point's normal, such that each side is offset
+ // by .5 pixels
+ SkVector totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
+ totalOffset.fX *= 0.5f * inverseScaleX;
+ totalOffset.fY *= 0.5f * inverseScaleY;
+
+ AlphaVertex::set(&buffer[currentIndex++],
+ current->position[0] + totalOffset.fX,
+ current->position[1] + totalOffset.fY,
+ 0.0f);
+ AlphaVertex::set(&buffer[currentIndex++],
+ current->position[0] - totalOffset.fX,
+ current->position[1] - totalOffset.fY,
+ 1.0f);
+
+ last = current;
+ current = next;
+ lastNormal = nextNormal;
+ }
+
+ // wrap around to beginning
+ copyAlphaVertex(&buffer[currentIndex++], &buffer[0]);
+ copyAlphaVertex(&buffer[currentIndex++], &buffer[1]);
+
+ // zig zag between all previous points on the inside of the hull to create a
+ // triangle strip that fills the hull, repeating the first inner point to
+ // create degenerate tris to start inside path
+ int srcAindex = 0;
+ int srcBindex = perimeter.count() - 1;
+ while (srcAindex <= srcBindex) {
+ copyAlphaVertex(&buffer[currentIndex++], &buffer[srcAindex * 2 + 1]);
+ if (srcAindex == srcBindex) break;
+ copyAlphaVertex(&buffer[currentIndex++], &buffer[srcBindex * 2 + 1]);
+ srcAindex++;
+ srcBindex--;
+ }
+
+#if VERTEX_DEBUG
+ for (unsigned int i = 0; i < vertexBuffer.getSize(); i++) {
+ SkDebugf("point at %f %f, alpha %f", buffer[i].position[0], buffer[i].position[1], buffer[i].alpha);
+ }
+#endif
+}
+
+
+static void getStrokeVerticesFromUnclosedVerticesAA(const SkTArray<Vertex, true>& vertices, float halfStrokeWidth,
+ VertexBuffer* vertexBuffer, float inverseScaleX, float inverseScaleY) {
+ AlphaVertex* buffer = vertexBuffer->alloc<AlphaVertex>(6 * vertices.count() + 2);
+
+ // avoid lines smaller than hairline since they break triangle based sampling. instead reducing
+ // alpha value (TODO: support different X/Y scale)
+ float maxAlpha = 1.0f;
+ if (halfStrokeWidth != 0 && inverseScaleX == inverseScaleY &&
+ halfStrokeWidth * inverseScaleX < 0.5f) {
+ maxAlpha *= (2 * halfStrokeWidth) / inverseScaleX;
+ halfStrokeWidth = 0.0f;
+ }
+
+ // there is no outer/inner here, using them for consistency with below approach
+ int offset = 2 * (vertices.count() - 2);
+ int currentAAOuterIndex = 2;
+ int currentAAInnerIndex = 2 * offset + 5; // reversed
+ int currentStrokeIndex = currentAAInnerIndex + 7;
+
+ const Vertex* last = &(vertices[0]);
+ const Vertex* current = &(vertices[1]);
+ SkVector lastNormal;
+ lastNormal.set(current->position[1] - last->position[1],
+ last->position[0] - current->position[0]);
+ lastNormal.normalize();
+
+ {
+ // start cap
+ SkVector totalOffset = lastNormal;
+ SkVector AAOffset = totalOffset;
+ AAOffset.fX *= 0.5f * inverseScaleX;
+ AAOffset.fY *= 0.5f * inverseScaleY;
+
+ SkVector innerOffset = totalOffset;
+ scaleOffsetForStrokeWidth(innerOffset, halfStrokeWidth, inverseScaleX, inverseScaleY);
+ SkVector outerOffset = innerOffset + AAOffset;
+ innerOffset -= AAOffset;
+
+ // TODO: support square cap by changing this offset to incorporate halfStrokeWidth
+ SkVector capAAOffset;
+ capAAOffset.set(AAOffset.fY, -AAOffset.fX);
+ AlphaVertex::set(&buffer[0],
+ last->position[0] + outerOffset.fX + capAAOffset.fX,
+ last->position[1] + outerOffset.fY + capAAOffset.fY,
+ 0.0f);
+ AlphaVertex::set(&buffer[1],
+ last->position[0] + innerOffset.fX - capAAOffset.fX,
+ last->position[1] + innerOffset.fY - capAAOffset.fY,
+ maxAlpha);
+
+ AlphaVertex::set(&buffer[2 * offset + 6],
+ last->position[0] - outerOffset.fX + capAAOffset.fX,
+ last->position[1] - outerOffset.fY + capAAOffset.fY,
+ 0.0f);
+ AlphaVertex::set(&buffer[2 * offset + 7],
+ last->position[0] - innerOffset.fX - capAAOffset.fX,
+ last->position[1] - innerOffset.fY - capAAOffset.fY,
+ maxAlpha);
+ copyAlphaVertex(&buffer[2 * offset + 8], &buffer[0]);
+ copyAlphaVertex(&buffer[2 * offset + 9], &buffer[1]);
+ copyAlphaVertex(&buffer[2 * offset + 10], &buffer[1]); // degenerate tris (the only two!)
+ copyAlphaVertex(&buffer[2 * offset + 11], &buffer[2 * offset + 7]);
+ }
+
+ for (int i = 1; i < vertices.count() - 1; i++) {
+ const Vertex* next = &(vertices[i + 1]);
+ SkVector nextNormal;
+ nextNormal.set(next->position[1] - current->position[1],
+ current->position[0] - next->position[0]);
+ nextNormal.normalize();
+
+ SkVector totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
+ SkVector AAOffset = totalOffset;
+ AAOffset.fX *= 0.5f * inverseScaleX;
+ AAOffset.fY *= 0.5f * inverseScaleY;
+
+ SkVector innerOffset = totalOffset;
+ scaleOffsetForStrokeWidth(innerOffset, halfStrokeWidth, inverseScaleX, inverseScaleY);
+ SkVector outerOffset = innerOffset + AAOffset;
+ innerOffset -= AAOffset;
+
+ AlphaVertex::set(&buffer[currentAAOuterIndex++],
+ current->position[0] + outerOffset.fX,
+ current->position[1] + outerOffset.fY,
+ 0.0f);
+ AlphaVertex::set(&buffer[currentAAOuterIndex++],
+ current->position[0] + innerOffset.fX,
+ current->position[1] + innerOffset.fY,
+ maxAlpha);
+
+ AlphaVertex::set(&buffer[currentStrokeIndex++],
+ current->position[0] + innerOffset.fX,
+ current->position[1] + innerOffset.fY,
+ maxAlpha);
+ AlphaVertex::set(&buffer[currentStrokeIndex++],
+ current->position[0] - innerOffset.fX,
+ current->position[1] - innerOffset.fY,
+ maxAlpha);
+
+ AlphaVertex::set(&buffer[currentAAInnerIndex--],
+ current->position[0] - innerOffset.fX,
+ current->position[1] - innerOffset.fY,
+ maxAlpha);
+ AlphaVertex::set(&buffer[currentAAInnerIndex--],
+ current->position[0] - outerOffset.fX,
+ current->position[1] - outerOffset.fY,
+ 0.0f);
+
+ last = current;
+ current = next;
+ lastNormal = nextNormal;
+ }
+
+ {
+ // end cap
+ SkVector totalOffset = lastNormal;
+ SkVector AAOffset = totalOffset;
+ AAOffset.fX *= 0.5f * inverseScaleX;
+ AAOffset.fY *= 0.5f * inverseScaleY;
+
+ SkVector innerOffset = totalOffset;
+ scaleOffsetForStrokeWidth(innerOffset, halfStrokeWidth, inverseScaleX, inverseScaleY);
+ SkVector outerOffset = innerOffset + AAOffset;
+ innerOffset -= AAOffset;
+
+ // TODO: support square cap by changing this offset to incorporate halfStrokeWidth
+ SkVector capAAOffset;
+ capAAOffset.set(-AAOffset.fY, AAOffset.fX);
+
+ AlphaVertex::set(&buffer[offset + 2],
+ current->position[0] + outerOffset.fX + capAAOffset.fX,
+ current->position[1] + outerOffset.fY + capAAOffset.fY,
+ 0.0f);
+ AlphaVertex::set(&buffer[offset + 3],
+ current->position[0] + innerOffset.fX - capAAOffset.fX,
+ current->position[1] + innerOffset.fY - capAAOffset.fY,
+ maxAlpha);
+
+ AlphaVertex::set(&buffer[offset + 4],
+ current->position[0] - outerOffset.fX + capAAOffset.fX,
+ current->position[1] - outerOffset.fY + capAAOffset.fY,
+ 0.0f);
+ AlphaVertex::set(&buffer[offset + 5],
+ current->position[0] - innerOffset.fX - capAAOffset.fX,
+ current->position[1] - innerOffset.fY - capAAOffset.fY,
+ maxAlpha);
+
+ copyAlphaVertex(&buffer[vertexBuffer->getSize() - 2], &buffer[offset + 3]);
+ copyAlphaVertex(&buffer[vertexBuffer->getSize() - 1], &buffer[offset + 5]);
+ }
+
+#if VERTEX_DEBUG
+ for (unsigned int i = 0; i < vertexBuffer.getSize(); i++) {
+ SkDebugf("point at %f %f, alpha %f", buffer[i].position[0], buffer[i].position[1], buffer[i].alpha);
+ }
+#endif
+}
+
+
+static void getStrokeVerticesFromPerimeterAA(const SkTArray<Vertex, true>& perimeter, float halfStrokeWidth,
+ VertexBuffer* vertexBuffer, float inverseScaleX, float inverseScaleY) {
+ AlphaVertex* buffer = vertexBuffer->alloc<AlphaVertex>(6 * perimeter.count() + 8);
+
+ // avoid lines smaller than hairline since they break triangle based sampling. instead reducing
+ // alpha value (TODO: support different X/Y scale)
+ float maxAlpha = 1.0f;
+ if (halfStrokeWidth != 0 && inverseScaleX == inverseScaleY &&
+ halfStrokeWidth * inverseScaleX < 0.5f) {
+ maxAlpha *= (2 * halfStrokeWidth) / inverseScaleX;
+ halfStrokeWidth = 0.0f;
+ }
+
+ int offset = 2 * perimeter.count() + 3;
+ int currentAAOuterIndex = 0;
+ int currentStrokeIndex = offset;
+ int currentAAInnerIndex = offset * 2;
+
+ const Vertex* last = &(perimeter[perimeter.count() - 1]);
+ const Vertex* current = &(perimeter[0]);
+ SkVector lastNormal;
+ lastNormal.set(current->position[1] - last->position[1],
+ last->position[0] - current->position[0]);
+ lastNormal.normalize();
+ for (int i = 0; i < perimeter.count(); i++) {
+ const Vertex* next = &(perimeter[i + 1 >= perimeter.count() ? 0 : i + 1]);
+ SkVector nextNormal;
+ nextNormal.set(next->position[1] - current->position[1],
+ current->position[0] - next->position[0]);
+ nextNormal.normalize();
+
+ SkVector totalOffset = totalOffsetFromNormals(lastNormal, nextNormal);
+ SkVector AAOffset = totalOffset;
+ AAOffset.fX *= 0.5f * inverseScaleX;
+ AAOffset.fY *= 0.5f * inverseScaleY;
+
+ SkVector innerOffset = totalOffset;
+ scaleOffsetForStrokeWidth(innerOffset, halfStrokeWidth, inverseScaleX, inverseScaleY);
+ SkVector outerOffset = innerOffset + AAOffset;
+ innerOffset -= AAOffset;
+
+ AlphaVertex::set(&buffer[currentAAOuterIndex++],
+ current->position[0] + outerOffset.fX,
+ current->position[1] + outerOffset.fY,
+ 0.0f);
+ AlphaVertex::set(&buffer[currentAAOuterIndex++],
+ current->position[0] + innerOffset.fX,
+ current->position[1] + innerOffset.fY,
+ maxAlpha);
+
+ AlphaVertex::set(&buffer[currentStrokeIndex++],
+ current->position[0] + innerOffset.fX,
+ current->position[1] + innerOffset.fY,
+ maxAlpha);
+ AlphaVertex::set(&buffer[currentStrokeIndex++],
+ current->position[0] - innerOffset.fX,
+ current->position[1] - innerOffset.fY,
+ maxAlpha);
+
+ AlphaVertex::set(&buffer[currentAAInnerIndex++],
+ current->position[0] - innerOffset.fX,
+ current->position[1] - innerOffset.fY,
+ maxAlpha);
+ AlphaVertex::set(&buffer[currentAAInnerIndex++],
+ current->position[0] - outerOffset.fX,
+ current->position[1] - outerOffset.fY,
+ 0.0f);
+
+ last = current;
+ current = next;
+ lastNormal = nextNormal;
+ }
+
+ // wrap each strip around to beginning, creating degenerate tris to bridge strips
+ copyAlphaVertex(&buffer[currentAAOuterIndex++], &buffer[0]);
+ copyAlphaVertex(&buffer[currentAAOuterIndex++], &buffer[1]);
+ copyAlphaVertex(&buffer[currentAAOuterIndex++], &buffer[1]);
+
+ copyAlphaVertex(&buffer[currentStrokeIndex++], &buffer[offset]);
+ copyAlphaVertex(&buffer[currentStrokeIndex++], &buffer[offset + 1]);
+ copyAlphaVertex(&buffer[currentStrokeIndex++], &buffer[offset + 1]);
+
+ copyAlphaVertex(&buffer[currentAAInnerIndex++], &buffer[2 * offset]);
+ copyAlphaVertex(&buffer[currentAAInnerIndex++], &buffer[2 * offset + 1]);
+ // don't need to create last degenerate tri
+
+#if VERTEX_DEBUG
+ for (unsigned int i = 0; i < vertexBuffer.getSize(); i++) {
+ SkDebugf("point at %f %f, alpha %f", buffer[i].position[0], buffer[i].position[1], buffer[i].alpha);
+ }
+#endif
+}
+
+void PathRenderer::ConvexPathVertices(const SkPath &path, const SkStrokeRec& stroke, bool isAA,
+ const SkMatrix* transform, VertexBuffer* vertexBuffer) {
+
+ SkStrokeRec::Style style = stroke.getStyle();
+
+ float inverseScaleX, inverseScaleY;
+ computeInverseScales(transform, inverseScaleX, inverseScaleY);
+
+ SkTArray<Vertex, true> tempVertices;
+ float threshInvScaleX = inverseScaleX;
+ float threshInvScaleY = inverseScaleY;
+ if (style == SkStrokeRec::kStroke_Style) {
+ // alter the bezier recursion threshold values we calculate in order to compensate for
+ // expansion done after the path vertices are found
+ SkRect bounds = path.getBounds();
+ if (!bounds.isEmpty()) {
+ threshInvScaleX *= bounds.width() / (bounds.width() + stroke.getWidth());
+ threshInvScaleY *= bounds.height() / (bounds.height() + stroke.getWidth());
+ }
+ }
+
+ // force close if we're filling the path, since fill path expects closed perimeter.
+ bool forceClose = style != SkStrokeRec::kStroke_Style;
+ bool wasClosed = ConvexPathPerimeterVertices(path, forceClose, threshInvScaleX * threshInvScaleX,
+ threshInvScaleY * threshInvScaleY, &tempVertices);
+
+ if (!tempVertices.count()) {
+ // path was empty, return without allocating vertex buffer
+ return;
+ }
+
+#if VERTEX_DEBUG
+ for (unsigned int i = 0; i < tempVertices.count(); i++) {
+ SkDebugf("orig path: point at %f %f", tempVertices[i].position[0], tempVertices[i].position[1]);
+ }
+#endif
+
+ if (style == SkStrokeRec::kStroke_Style) {
+ float halfStrokeWidth = stroke.getWidth() * 0.5f;
+ if (!isAA) {
+ if (wasClosed) {
+ getStrokeVerticesFromPerimeter(tempVertices, halfStrokeWidth, vertexBuffer,
+ inverseScaleX, inverseScaleY);
+ } else {
+ getStrokeVerticesFromUnclosedVertices(tempVertices, halfStrokeWidth, vertexBuffer,
+ inverseScaleX, inverseScaleY);
+ }
+
+ } else {
+ if (wasClosed) {
+ getStrokeVerticesFromPerimeterAA(tempVertices, halfStrokeWidth, vertexBuffer,
+ inverseScaleX, inverseScaleY);
+ } else {
+ getStrokeVerticesFromUnclosedVerticesAA(tempVertices, halfStrokeWidth, vertexBuffer,
+ inverseScaleX, inverseScaleY);
+ }
+ }
+ } else {
+ // For kStrokeAndFill style, the path should be adjusted externally, as it will be treated as a fill here.
+ if (!isAA) {
+ getFillVerticesFromPerimeter(tempVertices, vertexBuffer);
+ } else {
+ getFillVerticesFromPerimeterAA(tempVertices, vertexBuffer, inverseScaleX, inverseScaleY);
+ }
+ }
+}
+
+
+static void pushToVector(SkTArray<Vertex, true>* vertices, float x, float y) {
+ // TODO: make this not yuck
+ vertices->push_back();
+ Vertex* newVertex = &((*vertices)[vertices->count() - 1]);
+ Vertex::set(newVertex, x, y);
+}
+
+bool PathRenderer::ConvexPathPerimeterVertices(const SkPath& path, bool forceClose,
+ float sqrInvScaleX, float sqrInvScaleY, SkTArray<Vertex, true>* outputVertices) {
+
+
+ // TODO: to support joins other than sharp miter, join vertices should be labelled in the
+ // perimeter, or resolved into more vertices. Reconsider forceClose-ing in that case.
+ SkPath::Iter iter(path, forceClose);
+ SkPoint pts[4];
+ SkPath::Verb v;
+
+ while (SkPath::kDone_Verb != (v = iter.next(pts))) {
+ switch (v) {
+ case SkPath::kMove_Verb:
+ pushToVector(outputVertices, pts[0].x(), pts[0].y());
+ ALOGV("Move to pos %f %f", pts[0].x(), pts[0].y());
+ break;
+ case SkPath::kClose_Verb:
+ ALOGV("Close at pos %f %f", pts[0].x(), pts[0].y());
+ break;
+ case SkPath::kLine_Verb:
+ ALOGV("kLine_Verb %f %f -> %f %f",
+ pts[0].x(), pts[0].y(),
+ pts[1].x(), pts[1].y());
+
+ pushToVector(outputVertices, pts[1].x(), pts[1].y());
+ break;
+ case SkPath::kQuad_Verb:
+ ALOGV("kQuad_Verb");
+ RecursiveQuadraticBezierVertices(
+ pts[0].x(), pts[0].y(),
+ pts[2].x(), pts[2].y(),
+ pts[1].x(), pts[1].y(),
+ sqrInvScaleX, sqrInvScaleY, outputVertices);
+ break;
+ case SkPath::kCubic_Verb:
+ ALOGV("kCubic_Verb");
+ RecursiveCubicBezierVertices(
+ pts[0].x(), pts[0].y(),
+ pts[1].x(), pts[1].y(),
+ pts[3].x(), pts[3].y(),
+ pts[2].x(), pts[2].y(),
+ sqrInvScaleX, sqrInvScaleY, outputVertices);
+ break;
+ default:
+ break;
+ }
+ }
+
+ int size = outputVertices->count();
+ if (size >= 2 && (*outputVertices)[0].position[0] == (*outputVertices)[size - 1].position[0] &&
+ (*outputVertices)[0].position[1] == (*outputVertices)[size - 1].position[1]) {
+ outputVertices->pop_back();
+ return true;
+ }
+ return false;
+}
+
+void PathRenderer::RecursiveCubicBezierVertices(
+ float p1x, float p1y, float c1x, float c1y,
+ float p2x, float p2y, float c2x, float c2y,
+ float sqrInvScaleX, float sqrInvScaleY, SkTArray<Vertex, true>* outputVertices) {
+ float dx = p2x - p1x;
+ float dy = p2y - p1y;
+ float d1 = sk_float_abs((c1x - p2x) * dy - (c1y - p2y) * dx);
+ float d2 = sk_float_abs((c2x - p2x) * dy - (c2y - p2y) * dx);
+ float d = d1 + d2;
+
+ // multiplying by sqrInvScaleY/X equivalent to multiplying in dimensional scale factors
+
+ if (d * d < THRESHOLD * THRESHOLD * (dx * dx * sqrInvScaleY + dy * dy * sqrInvScaleX)) {
+ // below thresh, draw line by adding endpoint
+ pushToVector(outputVertices, p2x, p2y);
+ } else {
+ float p1c1x = (p1x + c1x) * 0.5f;
+ float p1c1y = (p1y + c1y) * 0.5f;
+ float p2c2x = (p2x + c2x) * 0.5f;
+ float p2c2y = (p2y + c2y) * 0.5f;
+
+ float c1c2x = (c1x + c2x) * 0.5f;
+ float c1c2y = (c1y + c2y) * 0.5f;
+
+ float p1c1c2x = (p1c1x + c1c2x) * 0.5f;
+ float p1c1c2y = (p1c1y + c1c2y) * 0.5f;
+
+ float p2c1c2x = (p2c2x + c1c2x) * 0.5f;
+ float p2c1c2y = (p2c2y + c1c2y) * 0.5f;
+
+ float mx = (p1c1c2x + p2c1c2x) * 0.5f;
+ float my = (p1c1c2y + p2c1c2y) * 0.5f;
+
+ RecursiveCubicBezierVertices(
+ p1x, p1y, p1c1x, p1c1y,
+ mx, my, p1c1c2x, p1c1c2y,
+ sqrInvScaleX, sqrInvScaleY, outputVertices);
+ RecursiveCubicBezierVertices(
+ mx, my, p2c1c2x, p2c1c2y,
+ p2x, p2y, p2c2x, p2c2y,
+ sqrInvScaleX, sqrInvScaleY, outputVertices);
+ }
+}
+
+void PathRenderer::RecursiveQuadraticBezierVertices(
+ float ax, float ay,
+ float bx, float by,
+ float cx, float cy,
+ float sqrInvScaleX, float sqrInvScaleY, SkTArray<Vertex, true>* outputVertices) {
+ float dx = bx - ax;
+ float dy = by - ay;
+ float d = (cx - bx) * dy - (cy - by) * dx;
+
+ if (d * d < THRESHOLD * THRESHOLD * (dx * dx * sqrInvScaleY + dy * dy * sqrInvScaleX)) {
+ // below thresh, draw line by adding endpoint
+ pushToVector(outputVertices, bx, by);
+ } else {
+ float acx = (ax + cx) * 0.5f;
+ float bcx = (bx + cx) * 0.5f;
+ float acy = (ay + cy) * 0.5f;
+ float bcy = (by + cy) * 0.5f;
+
+ // midpoint
+ float mx = (acx + bcx) * 0.5f;
+ float my = (acy + bcy) * 0.5f;
+
+ RecursiveQuadraticBezierVertices(ax, ay, mx, my, acx, acy,
+ sqrInvScaleX, sqrInvScaleY, outputVertices);
+ RecursiveQuadraticBezierVertices(mx, my, bx, by, bcx, bcy,
+ sqrInvScaleX, sqrInvScaleY, outputVertices);
+ }
+}
+
+}; // namespace uirenderer
+}; // namespace android
diff --git a/chromium/third_party/skia/experimental/AndroidPathRenderer/AndroidPathRenderer.h b/chromium/third_party/skia/experimental/AndroidPathRenderer/AndroidPathRenderer.h
new file mode 100644
index 00000000000..0e87aed1d1f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/AndroidPathRenderer/AndroidPathRenderer.h
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2012 The Android Open Source Project
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef ANDROID_HWUI_PATH_RENDERER_H
+#define ANDROID_HWUI_PATH_RENDERER_H
+
+#include <SkTArray.h>
+
+#include "Vertex.h"
+
+class SkMatrix;
+
+namespace android {
+namespace uirenderer {
+
+class VertexBuffer {
+public:
+ VertexBuffer():
+ mBuffer(0),
+ mSize(0),
+ mCleanupMethod(0)
+ {}
+
+ ~VertexBuffer() {
+ if (mCleanupMethod)
+ mCleanupMethod(mBuffer);
+ }
+
+ template <class TYPE>
+ TYPE* alloc(int size) {
+ mSize = size;
+ mBuffer = (void*)new TYPE[size];
+ mCleanupMethod = &(cleanup<TYPE>);
+
+ return (TYPE*)mBuffer;
+ }
+
+ void* getBuffer() { return mBuffer; }
+ unsigned int getSize() { return mSize; }
+
+private:
+ template <class TYPE>
+ static void cleanup(void* buffer) {
+ delete[] (TYPE*)buffer;
+ }
+
+ void* mBuffer;
+ unsigned int mSize;
+ void (*mCleanupMethod)(void*);
+};
+
+class PathRenderer {
+public:
+ static SkRect ComputePathBounds(const SkPath& path, const SkPaint* paint);
+
+ static void ConvexPathVertices(const SkPath& path, const SkStrokeRec& stroke, bool isAA,
+ const SkMatrix* transform, VertexBuffer* vertexBuffer);
+
+private:
+ static bool ConvexPathPerimeterVertices(const SkPath &path, bool forceClose,
+ float sqrInvScaleX, float sqrInvScaleY, SkTArray<Vertex, true>* outputVertices);
+
+/*
+ endpoints a & b,
+ control c
+ */
+ static void RecursiveQuadraticBezierVertices(
+ float ax, float ay,
+ float bx, float by,
+ float cx, float cy,
+ float sqrInvScaleX, float sqrInvScaleY,
+ SkTArray<Vertex, true>* outputVertices);
+
+/*
+ endpoints p1, p2
+ control c1, c2
+ */
+ static void RecursiveCubicBezierVertices(
+ float p1x, float p1y,
+ float c1x, float c1y,
+ float p2x, float p2y,
+ float c2x, float c2y,
+ float sqrInvScaleX, float sqrInvScaleY,
+ SkTArray<Vertex, true>* outputVertices);
+};
+
+}; // namespace uirenderer
+}; // namespace android
+
+#endif // ANDROID_HWUI_PATH_RENDERER_H
diff --git a/chromium/third_party/skia/experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp b/chromium/third_party/skia/experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp
new file mode 100644
index 00000000000..4121ad50954
--- /dev/null
+++ b/chromium/third_party/skia/experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp
@@ -0,0 +1,89 @@
+
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "GrAndroidPathRenderer.h"
+#include "AndroidPathRenderer.h"
+#include "Vertex.h"
+
+GrAndroidPathRenderer::GrAndroidPathRenderer() {
+}
+
+bool GrAndroidPathRenderer::canDrawPath(const SkPath& path,
+ const SkStrokeRec& stroke,
+ const GrDrawTarget* target,
+ bool antiAlias) const {
+ return ((stroke.isFillStyle() || stroke.getStyle() == SkStrokeRec::kStroke_Style)
+ && !path.isInverseFillType() && path.isConvex());
+}
+
+struct ColorVertex {
+ SkPoint pos;
+ GrColor color;
+};
+
+bool GrAndroidPathRenderer::onDrawPath(const SkPath& origPath,
+ const SkStrokeRec& stroke,
+ GrDrawTarget* target,
+ bool antiAlias) {
+
+ // generate verts using Android algorithm
+ android::uirenderer::VertexBuffer vertices;
+ android::uirenderer::PathRenderer::ConvexPathVertices(origPath, stroke, antiAlias, NULL,
+ &vertices);
+
+ // set vertex attributes depending on anti-alias
+ GrDrawState* drawState = target->drawState();
+ if (antiAlias) {
+ // position + coverage
+ GrVertexAttrib attribs[] = {
+ GrVertexAttrib(kVec2f_GrVertexAttribType, 0),
+ GrVertexAttrib(kVec4ub_GrVertexAttribType, sizeof(GrPoint))
+ };
+ drawState->setVertexAttribs(attribs, SK_ARRAY_COUNT(attribs));
+ drawState->setAttribIndex(GrDrawState::kPosition_AttribIndex, 0);
+ drawState->setAttribIndex(GrDrawState::kCoverage_AttribIndex, 1);
+ drawState->setAttribBindings(GrDrawState::kCoverage_AttribBindingsBit);
+ } else {
+ drawState->setDefaultVertexAttribs();
+ }
+
+ // allocate our vert buffer
+ int vertCount = vertices.getSize();
+ GrDrawTarget::AutoReleaseGeometry geo(target, vertCount, 0);
+ if (!geo.succeeded()) {
+ GrPrintf("Failed to get space for vertices!\n");
+ return false;
+ }
+
+ // copy android verts to our vertex buffer
+ if (antiAlias) {
+ SkASSERT(sizeof(ColorVertex) == drawState->getVertexSize());
+ ColorVertex* outVert = reinterpret_cast<ColorVertex*>(geo.vertices());
+ android::uirenderer::AlphaVertex* inVert =
+ reinterpret_cast<android::uirenderer::AlphaVertex*>(vertices.getBuffer());
+
+ for (int i = 0; i < vertCount; ++i) {
+ // copy vertex position
+ outVert->pos.set(inVert->position[0], inVert->position[1]);
+ // copy alpha
+ int coverage = static_cast<int>(inVert->alpha * 0xff);
+ outVert->color = GrColorPackRGBA(coverage, coverage, coverage, coverage);
+ ++outVert;
+ ++inVert;
+ }
+ } else {
+ size_t vsize = drawState->getVertexSize();
+ size_t copySize = vsize*vertCount;
+ memcpy(geo.vertices(), vertices.getBuffer(), copySize);
+ }
+
+ // render it
+ target->drawNonIndexed(kTriangleStrip_GrPrimitiveType, 0, vertCount);
+
+ return true;
+}
diff --git a/chromium/third_party/skia/experimental/AndroidPathRenderer/GrAndroidPathRenderer.h b/chromium/third_party/skia/experimental/AndroidPathRenderer/GrAndroidPathRenderer.h
new file mode 100644
index 00000000000..38d20304685
--- /dev/null
+++ b/chromium/third_party/skia/experimental/AndroidPathRenderer/GrAndroidPathRenderer.h
@@ -0,0 +1,29 @@
+
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "GrPathRenderer.h"
+
+
+class GrAndroidPathRenderer : public GrPathRenderer {
+public:
+ GrAndroidPathRenderer();
+
+ virtual bool canDrawPath(const SkPath& path,
+ const SkStrokeRec& stroke,
+ const GrDrawTarget* target,
+ bool antiAlias) const SK_OVERRIDE;
+
+protected:
+ virtual bool onDrawPath(const SkPath& path,
+ const SkStrokeRec& stroke,
+ GrDrawTarget* target,
+ bool antiAlias) SK_OVERRIDE;
+
+private:
+ typedef GrPathRenderer INHERITED;
+};
diff --git a/chromium/third_party/skia/experimental/AndroidPathRenderer/Vertex.h b/chromium/third_party/skia/experimental/AndroidPathRenderer/Vertex.h
new file mode 100644
index 00000000000..c8e0ba7ea14
--- /dev/null
+++ b/chromium/third_party/skia/experimental/AndroidPathRenderer/Vertex.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2012 The Android Open Source Project
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef ANDROID_HWUI_VERTEX_H
+#define ANDROID_HWUI_VERTEX_H
+
+namespace android {
+namespace uirenderer {
+
+/**
+ * Simple structure to describe a vertex with a position and a texture.
+ */
+struct Vertex {
+ float position[2];
+
+ static inline void set(Vertex* vertex, float x, float y) {
+ vertex[0].position[0] = x;
+ vertex[0].position[1] = y;
+ }
+}; // struct Vertex
+
+/**
+ * Simple structure to describe a vertex with a position and a texture.
+ */
+/*struct TextureVertex {
+ float position[2];
+ float texture[2];
+
+ static inline void set(TextureVertex* vertex, float x, float y, float u, float v) {
+ vertex[0].position[0] = x;
+ vertex[0].position[1] = y;
+ vertex[0].texture[0] = u;
+ vertex[0].texture[1] = v;
+ }
+
+ static inline void setUV(TextureVertex* vertex, float u, float v) {
+ vertex[0].texture[0] = u;
+ vertex[0].texture[1] = v;
+ }
+};*/ // struct TextureVertex
+
+/**
+ * Simple structure to describe a vertex with a position and an alpha value.
+ */
+struct AlphaVertex : Vertex {
+ float alpha;
+
+ static inline void set(AlphaVertex* vertex, float x, float y, float alpha) {
+ Vertex::set(vertex, x, y);
+ vertex[0].alpha = alpha;
+ }
+
+ static inline void setColor(AlphaVertex* vertex, float alpha) {
+ vertex[0].alpha = alpha;
+ }
+}; // struct AlphaVertex
+
+/**
+ * Simple structure to describe a vertex with a position and an alpha value.
+ */
+/*struct AAVertex : Vertex {
+ float width;
+ float length;
+
+ static inline void set(AAVertex* vertex, float x, float y, float width, float length) {
+ Vertex::set(vertex, x, y);
+ vertex[0].width = width;
+ vertex[0].length = length;
+ }
+
+ static inline void setColor(AAVertex* vertex, float width, float length) {
+ vertex[0].width = width;
+ vertex[0].length = length;
+ }
+};*/ // struct AlphaVertex
+
+}; // namespace uirenderer
+}; // namespace android
+
+#endif // ANDROID_HWUI_VERTEX_H
diff --git a/chromium/third_party/skia/experimental/AndroidPathRenderer/cutils/compiler.h b/chromium/third_party/skia/experimental/AndroidPathRenderer/cutils/compiler.h
new file mode 100644
index 00000000000..56c623c42bf
--- /dev/null
+++ b/chromium/third_party/skia/experimental/AndroidPathRenderer/cutils/compiler.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2012 The Android Open Source Project
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef ANDROID_CUTILS_COMPILER_H
+#define ANDROID_CUTILS_COMPILER_H
+
+/*
+ * helps the compiler's optimizer predicting branches
+ */
+
+#ifdef __cplusplus
+# define CC_LIKELY( exp ) (__builtin_expect( !!(exp), true ))
+# define CC_UNLIKELY( exp ) (__builtin_expect( !!(exp), false ))
+#else
+# define CC_LIKELY( exp ) (__builtin_expect( !!(exp), 1 ))
+# define CC_UNLIKELY( exp ) (__builtin_expect( !!(exp), 0 ))
+#endif
+
+/**
+ * exports marked symbols
+ *
+ * if used on a C++ class declaration, this macro must be inserted
+ * after the "class" keyword. For instance:
+ *
+ * template <typename TYPE>
+ * class ANDROID_API Singleton { }
+ */
+
+#define ANDROID_API __attribute__((visibility("default")))
+
+#endif // ANDROID_CUTILS_COMPILER_H
diff --git a/chromium/third_party/skia/experimental/ChromeUtils/SkBorder.cpp b/chromium/third_party/skia/experimental/ChromeUtils/SkBorder.cpp
new file mode 100644
index 00000000000..fad27210fc2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/ChromeUtils/SkBorder.cpp
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkBorder.h"
+
+SkBorder::SkBorder(SkPaint& p, SkScalar width, BorderStyle style)
+ : fFlags(kOnePaint_Flag) {
+ fPaints[0] = p;
+
+ for (int i = 0; i < 4; ++i) {
+ fWidths[i] = width;
+ fStyles[i] = style;
+ }
+}
+
+SkBorder::SkBorder(const SkPaint paints[4],
+ const SkScalar widths[4],
+ const BorderStyle styles[4])
+ : fFlags(0) {
+ for (int i = 0; i < 4; ++i) {
+ fPaints[i] = paints[i];
+ }
+
+ memcpy(fWidths, widths, sizeof(fWidths));
+ memcpy(fStyles, styles, sizeof(fStyles));
+}
diff --git a/chromium/third_party/skia/experimental/ChromeUtils/SkBorder.h b/chromium/third_party/skia/experimental/ChromeUtils/SkBorder.h
new file mode 100644
index 00000000000..e9d8774b0c3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/ChromeUtils/SkBorder.h
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+
+#ifndef SkBorder_DEFINED
+#define SkBorder_DEFINED
+
+#include "SkColor.h"
+#include "SkPaint.h"
+#include "SkScalar.h"
+#include "SkTArray.h"
+
+// This class provides a concise means of specifying all the geometry/shading
+// associated with a CSS-style box/round-rect.
+class SkBorder {
+public:
+ enum BorderStyle {
+ /**
+ */
+ kNone_BorderStyle,
+ /**
+ */
+ kHidden_BorderStyle,
+ /**
+ */
+ kDotted_BorderStyle,
+ /**
+ */
+ kDashed_BorderStyle,
+ /**
+ */
+ kSolid_BorderStyle,
+ /**
+ */
+ kDouble_BorderStyle,
+ /**
+ */
+ kGroove_BorderStyle,
+ /**
+ */
+ kRidge_BorderStyle,
+ /**
+ */
+ kInset_BorderStyle,
+ /**
+ */
+ kOutset_BorderStyle,
+ };
+
+ enum BlurStyle {
+ kNormal_BlurStyle, //!< fuzzy inside and outside
+ kInner_BlurStyle, //!< fuzzy inside, nothing outside
+ };
+
+ struct ShadowInfo {
+ SkScalar fXOffset;
+ SkScalar fYOffset;
+ SkScalar fBlurSigma;
+ SkColor fColor;
+ BlurStyle fStyle;
+ };
+
+ SkBorder(SkPaint& p, SkScalar width, BorderStyle style);
+
+ SkBorder(const SkPaint paints[4], const SkScalar widths[4], const BorderStyle styles[4]);
+
+ void setBackground(SkPaint* p) {
+ if (NULL == p) {
+ fBackground.reset();
+ fFlags &= ~kDrawBackground_Flag;
+ } else {
+ fBackground = *p;
+ fFlags |= kDrawBackground_Flag;
+ }
+ }
+
+ void addShadow(ShadowInfo& info) {
+ fShadows.push_back(info);
+ }
+
+private:
+ enum Flags {
+ // One paint "fPaints[0]" is applied to all the borders
+ kOnePaint_Flag = 0x01,
+ // Use 'fBackground' to draw the background
+ kDrawBackground_Flag = 0x02,
+ };
+
+ // If kOnePaint_Flag is specified then fBorder[0] is applied to all sides.
+ // Otherwise the order is: left, top, right, bottom
+ SkPaint fPaints[4];
+ // Only valid if kDrawBackground_Flag is set.
+ SkPaint fBackground;
+ SkScalar fWidths[4];
+ BorderStyle fStyles[4];
+ SkTArray<ShadowInfo> fShadows;
+ uint32_t fFlags;
+};
+
+#endif
diff --git a/chromium/third_party/skia/experimental/DrawingBoard/SampleDrawingClient.cpp b/chromium/third_party/skia/experimental/DrawingBoard/SampleDrawingClient.cpp
new file mode 100644
index 00000000000..542c5890302
--- /dev/null
+++ b/chromium/third_party/skia/experimental/DrawingBoard/SampleDrawingClient.cpp
@@ -0,0 +1,278 @@
+#include "SampleCode.h"
+#include "SkView.h"
+#include "SkCanvas.h"
+#include "SkGPipe.h"
+#include "SkSockets.h"
+#include "SkNetPipeController.h"
+#include "SkCornerPathEffect.h"
+#include "SkColorPalette.h"
+#include "SkOSMenu.h"
+
+
+/**
+ * Drawing Client
+ *
+ * A drawing client that allows a user to perform simple brush stokes with
+ * a selected color and brush size. The drawing client communicates with a
+ * drawing server to send/receive data to/from other clients connected to the
+ * same server. The drawing client stores data in fData and fBuffer depending on
+ * the data type. Append type means that the drawing data is a completed stroke
+ * and Replace type means that the drawing data is in progress and will be
+ * replaced by subsequent data. fData and fBuffer are read by a pipe reader and
+ * reproduce the drawing. When the client is in a normal state, the data stored
+ * on the client and the server should be identical.
+ * The drawing client is also able to switch between vector and bitmap drawing.
+ * The drawing client also renders the latest drawing stroke locally in order to
+ * produce better reponses. This can be disabled by calling
+ * controller.disablePlayBack(), which will introduce a lag between the input
+ * and the drawing.
+ * Note: in order to keep up with the drawing data, the client will try to read
+ * a few times each frame in case more than one frame worth of data has been
+ * received and render them together. This behavior can be adjusted by tweaking
+ * MAX_READ_PER_FRAME or disabled by turning fSync to false
+ */
+
+#define MAX_READ_PER_FRAME 5
+
+class DrawingClientView : public SampleView {
+public:
+ DrawingClientView() {
+ fSocket = NULL;
+ fTotalBytesRead = 0;
+ fPalette = new SkColorPalette;
+ fPalette->setSize(100, 300);
+ fPalette->setVisibleP(true);
+ this->attachChildToFront(fPalette);
+ fPalette->unref();
+ fBrushSize = 2.5;
+ fAA = false;
+ fPaletteVisible = true;
+ fSync = true;
+ fVector = true;
+ }
+ ~DrawingClientView() {
+ if (fSocket) {
+ delete fSocket;
+ }
+ fData.reset();
+ fBuffer.reset();
+ }
+
+ virtual void requestMenu(SkOSMenu* menu) {
+ menu->setTitle("Drawing Client");
+ menu->appendTextField("Server IP", "Server IP", this->getSinkID(),
+ "IP address or hostname");
+ menu->appendSwitch("Vector", "Vector", this->getSinkID(), fVector);
+ menu->appendSlider("Brush Size", "Brush Size", this->getSinkID(), 1.0,
+ 100.0, fBrushSize);
+ menu->appendSwitch("Anti-Aliasing", "AA", this->getSinkID(), fAA);
+ menu->appendSwitch("Show Color Palette", "Palette", this->getSinkID(),
+ fPaletteVisible);
+ menu->appendSwitch("Sync", "Sync", this->getSinkID(), fSync);
+ menu->appendAction("Clear", this->getSinkID());
+ }
+
+protected:
+
+ static void readData(int cid, const void* data, size_t size,
+ SkSocket::DataType type, void* context) {
+ DrawingClientView* view = (DrawingClientView*)context;
+ view->onRead(cid, data, size, type);
+ }
+
+ void onRead(int cid, const void* data, size_t size, SkSocket::DataType type) {
+ if (size > 0) {
+ fBuffer.reset();
+ if (type == SkSocket::kPipeReplace_type)
+ fBuffer.append(size, (const char*)data);
+ else if (type == SkSocket::kPipeAppend_type)
+ fData.append(size, (const char*)data);
+ else {
+ //other types of data
+ }
+ }
+ }
+
+ bool onQuery(SkEvent* evt) {
+ if (SampleCode::TitleQ(*evt)) {
+ SampleCode::TitleR(evt, "Drawing Client");
+ return true;
+ }
+
+ return this->INHERITED::onQuery(evt);
+ }
+
+ bool onEvent(const SkEvent& evt) {;
+ if (SkOSMenu::FindSliderValue(evt, "Brush Size", &fBrushSize))
+ return true;
+
+ SkString s;
+ if (SkOSMenu::FindText(evt, "Server IP", &s)) {
+ if (NULL != fSocket) {
+ delete fSocket;
+ }
+ fSocket = new SkTCPClient(s.c_str(), 40000);
+ fSocket->connectToServer();
+ fSocket->suspendWrite();
+ SkDebugf("Connecting to %s\n", s.c_str());
+ fData.reset();
+ fBuffer.reset();
+ this->inval(NULL);
+ return true;
+ }
+ if (SkOSMenu::FindSwitchState(evt, "AA", &fAA) ||
+ SkOSMenu::FindSwitchState(evt, "Sync", &fSync))
+ return true;
+ if (SkOSMenu::FindSwitchState(evt, "Vector", &fVector)) {
+ this->clearBitmap();
+ return true;
+ }
+ if (SkOSMenu::FindAction(evt, "Clear")) {
+ this->clear();
+ return true;
+ }
+ if (SkOSMenu::FindSwitchState(evt, "Palette", &fPaletteVisible)) {
+ fPalette->setVisibleP(fPaletteVisible);
+ return true;
+ }
+ return this->INHERITED::onEvent(evt);
+ }
+
+ virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) {
+ return new Click(this);
+ }
+
+ virtual bool onClick(SkView::Click* click) {
+ switch (click->fState) {
+ case SkView::Click::kDown_State:
+ fCurrLine.moveTo(click->fCurr);
+ fType = SkSocket::kPipeReplace_type;
+ if (fSocket)
+ fSocket->resumeWrite();
+ break;
+ case SkView::Click::kMoved_State:
+ fCurrLine.lineTo(click->fCurr);
+ break;
+ case SkView::Click::kUp_State:
+ fType = SkSocket::kPipeAppend_type;
+ break;
+ default:
+ break;
+ }
+ return true;
+ }
+
+ virtual void onDrawContent(SkCanvas* canvas) {
+ if (fSocket) {
+ if (fSocket->isConnected()) {
+ if (fSync) {
+ int count = 0;
+ while (fSocket->readPacket(readData, this) > 0 &&
+ count < MAX_READ_PER_FRAME)
+ ++count;
+ }
+ else
+ fSocket->readPacket(readData, this);
+ }
+ else
+ fSocket->connectToServer();
+ }
+ size_t bytesRead = 0;
+ SkGPipeReader::Status status;
+ SkCanvas bufferCanvas(fBase);
+ SkCanvas* tempCanvas;
+ while (fTotalBytesRead < fData.count()) {
+ if (fVector)
+ tempCanvas = canvas;
+ else
+ tempCanvas = &bufferCanvas;
+ SkGPipeReader reader(tempCanvas);
+ status = reader.playback(fData.begin() + fTotalBytesRead,
+ fData.count() - fTotalBytesRead,
+ &bytesRead);
+ SkASSERT(SkGPipeReader::kError_Status != status);
+ fTotalBytesRead += bytesRead;
+ }
+ if (fVector)
+ fTotalBytesRead = 0;
+ else
+ canvas->drawBitmap(fBase, 0, 0, NULL);
+
+ size_t totalBytesRead = 0;
+ while (totalBytesRead < fBuffer.count()) {
+ SkGPipeReader reader(canvas);
+ status = reader.playback(fBuffer.begin() + totalBytesRead,
+ fBuffer.count() - totalBytesRead,
+ &bytesRead);
+ SkASSERT(SkGPipeReader::kError_Status != status);
+ totalBytesRead += bytesRead;
+ }
+
+ SkNetPipeController controller(canvas);
+ SkGPipeWriter writer;
+ SkCanvas* writerCanvas = writer.startRecording(&controller,
+ SkGPipeWriter::kCrossProcess_Flag);
+
+ //controller.disablePlayback();
+ SkPaint p;
+ p.setColor(fPalette->getColor());
+ p.setStyle(SkPaint::kStroke_Style);
+ p.setStrokeWidth(fBrushSize);
+ p.setStrokeCap(SkPaint::kRound_Cap);
+ p.setStrokeJoin(SkPaint::kRound_Join);
+ p.setAntiAlias(fAA);
+ p.setPathEffect(new SkCornerPathEffect(55))->unref();
+ writerCanvas->drawPath(fCurrLine, p);
+ writer.endRecording();
+
+ controller.writeToSocket(fSocket, fType);
+ if (fType == SkSocket::kPipeAppend_type && fSocket) {
+ fSocket->suspendWrite();
+ fCurrLine.reset();
+ }
+
+ this->inval(NULL);
+ }
+
+ virtual void onSizeChange() {
+ this->INHERITED::onSizeChange();
+ fPalette->setLoc(this->width()-100, 0);
+ fBase.setConfig(SkBitmap::kARGB_8888_Config, this->width(), this->height());
+ fBase.allocPixels(NULL);
+ this->clearBitmap();
+ }
+
+private:
+ void clear() {
+ fData.reset();
+ fBuffer.reset();
+ fCurrLine.reset();
+ fTotalBytesRead = 0;
+ this->clearBitmap();
+ }
+ void clearBitmap() {
+ fTotalBytesRead = 0;
+ fBase.eraseColor(fBGColor);
+ }
+ SkTDArray<char> fData;
+ SkTDArray<char> fBuffer;
+ SkBitmap fBase;
+ SkPath fCurrLine;
+ SkTCPClient* fSocket;
+ SkSocket::DataType fType;
+ SkColorPalette* fPalette;
+ bool fPaletteVisible;
+ size_t fTotalBytesRead;
+ SkScalar fBrushSize;
+ bool fAA;
+ bool fSync;
+ bool fVector;
+
+ typedef SampleView INHERITED;
+};
+
+
+///////////////////////////////////////////////////////////////////////////////
+
+static SkView* MyFactory() { return new DrawingClientView; }
+static SkViewRegister reg(MyFactory);
diff --git a/chromium/third_party/skia/experimental/DrawingBoard/SampleDrawingServer.cpp b/chromium/third_party/skia/experimental/DrawingBoard/SampleDrawingServer.cpp
new file mode 100644
index 00000000000..fa059fa70ac
--- /dev/null
+++ b/chromium/third_party/skia/experimental/DrawingBoard/SampleDrawingServer.cpp
@@ -0,0 +1,222 @@
+#include "SampleCode.h"
+#include "SkView.h"
+#include "SkCanvas.h"
+#include "SkGPipe.h"
+#include "SkSockets.h"
+#include "SkNetPipeController.h"
+#include "SkCornerPathEffect.h"
+#include "SkOSMenu.h"
+#include <map>
+
+/**
+ * Drawing Server
+ *
+ * This simple drawing server can accept connections from multiple drawing
+ * clients simultaneously. It accumulates drawing data from each client each
+ * frame, stores it in the appropriate place, and then broadcasts incremental
+ * changes back to all the clients. Each logical packet, meaning one brush
+ * stoke in this case can be of two types, append and replace. Append types are
+ * completed strokes ready to be stored in the fData queue and will no longer be
+ * modified. Replace types are drawing operations that are still in progress on
+ * the client side, so they are appended to fBuffer. The location and size of
+ * the buffered data for each client is stored in a map and updated properly.
+ * Each time a new replace drawing call is received from a client, its previous
+ * buffered data is discarded.
+ * Since the Server keeps all the complete drawing data and the latest buffered
+ * data, it's able to switch between vector and bitmap drawing
+ */
+
+class DrawingServerView : public SampleView {
+public:
+ DrawingServerView(){
+ fServer = new SkTCPServer(40000);
+ fServer->suspendWrite();
+ fTotalBytesRead = fTotalBytesWritten = 0;
+ fVector = true;
+ }
+ ~DrawingServerView() {
+ delete fServer;
+ fData.reset();
+ fBuffer.reset();
+ fClientMap.clear();
+ }
+
+ virtual void requestMenu(SkOSMenu* menu) {
+ menu->setTitle("Drawing Server");
+ menu->appendAction("Clear", this->getSinkID());
+ menu->appendSwitch("Vector", "Vector", this->getSinkID(), fVector);
+ }
+
+protected:
+ static void readData(int cid, const void* data, size_t size,
+ SkSocket::DataType type, void* context) {
+ DrawingServerView* view = (DrawingServerView*)context;
+ view->onRead(cid, data, size, type);
+ }
+
+ void onRead(int cid, const void* data, size_t size, SkSocket::DataType type) {
+ if (NULL == data && size <= 0)
+ return;
+
+ ClientState* cs;
+ std::map<int, ClientState*>::iterator it = fClientMap.find(cid);
+ if (it == fClientMap.end()) { //New client
+ cs = new ClientState;
+ cs->bufferBase = 0;
+ cs->bufferSize = 0;
+ fClientMap[cid] = cs;
+ }
+ else {
+ cs = it->second;
+ }
+
+ if (type == SkSocket::kPipeReplace_type) {
+ fBuffer.remove(cs->bufferBase, cs->bufferSize);
+
+ for (it = fClientMap.begin(); it != fClientMap.end(); ++it) {
+ if (cid == it->first)
+ continue;
+ else {
+ if (it->second->bufferBase > cs->bufferBase) {
+ it->second->bufferBase -= cs->bufferSize;
+ SkASSERT(it->second->bufferBase >= 0);
+ }
+ }
+ }
+
+ cs->bufferBase = fBuffer.count();
+ cs->bufferSize = size;
+ fBuffer.append(size, (const char*)data);
+ }
+ else if (type == SkSocket::kPipeAppend_type) {
+ fData.append(size, (const char*)data);
+ fServer->resumeWrite();
+ fServer->writePacket(fData.begin() + fTotalBytesWritten,
+ fData.count() - fTotalBytesWritten,
+ SkSocket::kPipeAppend_type);
+ fTotalBytesWritten = fData.count();
+ fServer->suspendWrite();
+ }
+ else {
+ //other types of data
+ }
+ }
+
+ bool onQuery(SkEvent* evt) {
+ if (SampleCode::TitleQ(*evt)) {
+ SampleCode::TitleR(evt, "Drawing Server");
+ return true;
+ }
+ return this->INHERITED::onQuery(evt);
+ }
+
+ bool onEvent(const SkEvent& evt) {
+ if (SkOSMenu::FindAction(evt, "Clear")) {
+ this->clear();
+ return true;
+ }
+ if (SkOSMenu::FindSwitchState(evt, "Vector", &fVector)) {
+ this->clearBitmap();
+ return true;
+ }
+ return this->INHERITED::onEvent(evt);
+ }
+
+
+ virtual void onDrawContent(SkCanvas* canvas) {
+ if (fCurrMatrix != canvas->getTotalMatrix()) {
+ fTotalBytesRead = 0;
+ fCurrMatrix = canvas->getTotalMatrix();
+ }
+
+ fServer->acceptConnections();
+ if (fServer->readPacket(readData, this) > 0) {
+ fServer->resumeWrite();
+ }
+ else {
+ fServer->suspendWrite();
+ }
+
+ size_t bytesRead;
+ SkGPipeReader::Status stat;
+ SkCanvas bufferCanvas(fBase);
+ SkCanvas* tempCanvas;
+ while (fTotalBytesRead < fData.count()) {
+ if (fVector) {
+ tempCanvas = canvas;
+ } else {
+ tempCanvas = &bufferCanvas;
+ }
+ SkGPipeReader reader(tempCanvas);
+ stat = reader.playback(fData.begin() + fTotalBytesRead,
+ fData.count() - fTotalBytesRead,
+ &bytesRead);
+ SkASSERT(SkGPipeReader::kError_Status != stat);
+ fTotalBytesRead += bytesRead;
+ }
+ if (fVector) {
+ fTotalBytesRead = 0;
+ } else {
+ canvas->drawBitmap(fBase, 0, 0, NULL);
+ }
+
+ size_t totalBytesRead = 0;
+ while (totalBytesRead < fBuffer.count()) {
+ SkGPipeReader reader(canvas);
+ stat = reader.playback(fBuffer.begin() + totalBytesRead,
+ fBuffer.count() - totalBytesRead,
+ &bytesRead);
+ SkASSERT(SkGPipeReader::kError_Status != stat);
+ totalBytesRead += bytesRead;
+ }
+
+ fServer->writePacket(fBuffer.begin(), fBuffer.count(),
+ SkSocket::kPipeReplace_type);
+
+ this->inval(NULL);
+ }
+
+ virtual void onSizeChange() {
+ this->INHERITED::onSizeChange();
+ fBase.setConfig(SkBitmap::kARGB_8888_Config,
+ this->width(),
+ this->height());
+ fBase.allocPixels(NULL);
+ this->clearBitmap();
+ }
+
+private:
+ void clear() {
+ fData.reset();
+ fBuffer.reset();
+ fTotalBytesRead = fTotalBytesWritten = 0;
+ fClientMap.clear();
+ this->clearBitmap();
+ }
+ void clearBitmap() {
+ fTotalBytesRead = 0;
+ fBase.eraseColor(fBGColor);
+ }
+
+ struct ClientState {
+ int bufferBase;
+ int bufferSize;
+ };
+
+ std::map<int, ClientState*> fClientMap;
+ SkTDArray<char> fData;
+ SkTDArray<char> fBuffer;
+ size_t fTotalBytesRead;
+ size_t fTotalBytesWritten;
+ SkMatrix fCurrMatrix;
+ SkBitmap fBase;
+ bool fVector;
+ SkTCPServer* fServer;
+ typedef SampleView INHERITED;
+};
+
+
+///////////////////////////////////////////////////////////////////////////////
+
+static SkView* MyFactory() { return new DrawingServerView; }
+static SkViewRegister reg(MyFactory);
diff --git a/chromium/third_party/skia/experimental/DrawingBoard/SkColorPalette.cpp b/chromium/third_party/skia/experimental/DrawingBoard/SkColorPalette.cpp
new file mode 100644
index 00000000000..f2776af4ffa
--- /dev/null
+++ b/chromium/third_party/skia/experimental/DrawingBoard/SkColorPalette.cpp
@@ -0,0 +1,195 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "SkView.h"
+#include "SkCanvas.h"
+#include "SkPaint.h"
+#include "SkGradientShader.h"
+#include "SkColorPalette.h"
+
+SkColorPalette::SkColorPalette() {
+ fSlotRect = SkRect::MakeWH(SkIntToScalar(50), SkIntToScalar(20));
+ fGradientRect = SkRect::MakeWH(SkIntToScalar(100), SkIntToScalar(100));
+ fSelected = 0;
+ fCurrColor = 0xFF000000;
+
+ fColors[0] = SK_ColorWHITE;
+ fColors[1] = SK_ColorBLACK;
+ fColors[2] = SK_ColorRED;
+ fColors[3] = SK_ColorGREEN;
+ fColors[4] = SK_ColorBLUE;
+}
+
+bool SkColorPalette::onEvent(const SkEvent& evt) {
+ return this->INHERITED::onEvent(evt);
+}
+
+void SkColorPalette::onDraw(SkCanvas* canvas) {
+ canvas->drawColor(SK_ColorWHITE);
+
+ SkPaint paint;
+ paint.setAntiAlias(true);
+
+ canvas->translate(PalettePadding, PalettePadding);
+
+ for (int i = 0; i < PaletteSlots; ++i) {
+ if (fSelected == i) {
+ paint.setStrokeWidth(SkIntToScalar(3));
+ }
+ else {
+ paint.setStrokeWidth(1);
+ }
+
+ paint.setStyle(SkPaint::kStroke_Style);
+ paint.setColor(SK_ColorBLACK);
+ canvas->drawRect(fSlotRect, paint);
+ paint.setStyle(SkPaint::kFill_Style);
+ paint.setColor(fColors[i]);
+ canvas->drawRect(fSlotRect, paint);
+ canvas->translate(0, fSlotRect.height() + PalettePadding);
+ }
+ paint.setStrokeWidth(0);
+ canvas->translate(0, PalettePadding);
+ SkPoint p = SkPoint::Make(0,0);
+ SkPoint q = SkPoint::Make(this->width(), 0);
+ SkPoint pts[] = {p, q};
+
+ SkColor colors[] = { SK_ColorRED, SK_ColorYELLOW, SK_ColorGREEN,
+ SK_ColorCYAN, SK_ColorBLUE, SK_ColorMAGENTA,SK_ColorRED};
+ SkScalar colorPositions[] = { 0, 0.2, 0.4, 0.5, 0.6, 0.8, 1.0};
+
+
+ SkShader* shader1 = SkGradientShader::CreateLinear(pts, colors, colorPositions,7,
+ SkShader::kMirror_TileMode);
+ paint.setShader(shader1)->unref();
+
+ canvas->drawRect(fGradientRect, paint);
+
+ //this->INHERITED::onDraw(canvas);
+}
+
+SkView::Click* SkColorPalette::onFindClickHandler(SkScalar x, SkScalar y) {
+ return new Click(this);
+}
+
+bool SkColorPalette::onClick(SkView::Click* click) {
+ SkPoint curr = click->fCurr;
+ //SkDebugf("click %f %f \n", curr.fX, curr.fY);
+ int selected = selectSlot(curr);
+ if (selected >= 0) {
+ switch (click->fState) {
+ case SkView::Click::kDown_State:
+ case SkView::Click::kMoved_State:
+ case SkView::Click::kUp_State:
+ fSelected = selected;
+ fCurrColor = fColors[fSelected];
+ break;
+ default:
+ break;
+ }
+ return true;
+ }
+ else{
+ //account for padding
+ curr.fX -= PalettePadding;
+ curr.fY -= 2 * PalettePadding + (fSlotRect.height() + PalettePadding) * PaletteSlots;
+ if (curr.fX < 0 || curr.fX > fGradientRect.width() ||
+ curr.fY < 0 || curr.fY > fGradientRect.height()) {
+ return false;
+ }
+ else {
+ switch (click->fState) {
+ case SkView::Click::kDown_State:
+ case SkView::Click::kMoved_State:
+ case SkView::Click::kUp_State:
+ fColors[fSelected] = selectColorFromGradient(curr);
+ fCurrColor = fColors[fSelected];
+ break;
+ default:
+ break;
+ }
+ return true;
+ }
+ }
+}
+
+void SkColorPalette::onSizeChange() {
+ fGradientRect = SkRect::MakeWH(this->width() - 2*PalettePadding,
+ this->width() - 2*PalettePadding);
+ this->INHERITED::onSizeChange();
+}
+
+int SkColorPalette::selectSlot(SkPoint& cursorPosition) {
+ //account for padding
+ cursorPosition.fX -= PalettePadding;
+ cursorPosition.fY -= PalettePadding;
+
+ if (cursorPosition.fX < 0 || cursorPosition.fX > fSlotRect.width() ||
+ cursorPosition.fY < 0 || cursorPosition.fY > (fSlotRect.height() + PalettePadding) * PaletteSlots) {
+ return -1;
+ }
+ int index = cursorPosition.fY/(fSlotRect.height() + PalettePadding);
+ int offset = (int)cursorPosition.fY%((int)fSlotRect.height() + PalettePadding);
+ if (offset <= fSlotRect.height()) {
+ return index;
+ }
+ else {
+ return -1;
+ }
+}
+
+SkColor SkColorPalette::selectColorFromGradient(SkPoint& cursorPosition) {
+ float h = cursorPosition.fX/fGradientRect.width();
+ float s = 1.0 - cursorPosition.fY/fGradientRect.height();
+ float v = 1.0;
+ float _h,r,g,b;
+ float _1, _2, _3;
+ int _i;
+
+ _h = h * 6;
+ _i = (int)_h;
+ _1 = v * (1 - s);
+ _2 = v * (1 - s * (_h - _i));
+ _3 = v * (1 - s * (1 - (_h - _i)));
+
+ if (_i == 0) {
+ r = v;
+ g = _3;
+ b = _1;
+ }
+ else if (_i == 1) {
+ r = _2;
+ g = v;
+ b = _1;
+ }
+ else if (_i == 2) {
+ r = _1;
+ g = v;
+ b = _3;
+ }
+ else if (_i == 3) {
+ r = _1;
+ g = _2;
+ b = v;
+ }
+ else if (_i == 4) {
+ r = _3;
+ g = _1;
+ b = v;
+ }
+ else {
+ r = v;
+ g = _1;
+ b = _2;
+ };
+
+ SkColor retval = 0xFF000000;
+ retval += ((int)(r * 255) << 16);
+ retval += ((int)(g * 255) << 8);
+ retval += (int)(b * 255);
+ return retval;
+}
diff --git a/chromium/third_party/skia/experimental/DrawingBoard/SkColorPalette.h b/chromium/third_party/skia/experimental/DrawingBoard/SkColorPalette.h
new file mode 100644
index 00000000000..0ee1dd592e2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/DrawingBoard/SkColorPalette.h
@@ -0,0 +1,34 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#ifndef SkColorPalette_DEFINED
+#define SkColorPalette_DEFINED
+
+#define PaletteSlots 5
+#define PalettePadding 5
+class SkColorPalette : public SkView {
+public:
+ SkColorPalette();
+ SkColor getColor() { return fCurrColor; }
+protected:
+ virtual bool onEvent(const SkEvent& evt);
+ virtual void onDraw(SkCanvas* canvas);
+ virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y);
+ virtual bool onClick(SkView::Click* click);
+ virtual void onSizeChange();
+private:
+ int selectSlot(SkPoint& cursorPosition);
+ SkColor selectColorFromGradient(SkPoint& cursorPosition);
+ int fSelected;
+ SkRect fGradientRect;
+ SkRect fSlotRect;
+ SkColor fCurrColor;
+ SkColor fColors[PaletteSlots];
+ typedef SkView INHERITED;
+};
+
+#endif
diff --git a/chromium/third_party/skia/experimental/DrawingBoard/SkNetPipeController.cpp b/chromium/third_party/skia/experimental/DrawingBoard/SkNetPipeController.cpp
new file mode 100644
index 00000000000..3e4ded5cf74
--- /dev/null
+++ b/chromium/third_party/skia/experimental/DrawingBoard/SkNetPipeController.cpp
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "SkNetPipeController.h"
+
+SkNetPipeController::SkNetPipeController(SkCanvas* target) : fReader(target) {
+ fBlock = NULL;
+ fBlockSize = fBytesWritten = 0;
+ fPlayback = true;
+ fStatus = SkGPipeReader::kDone_Status;
+ fTotalWritten = 0;
+ fAtomsWritten = 0;
+}
+SkNetPipeController::~SkNetPipeController() {
+ sk_free(fBlock);
+}
+
+int SkNetPipeController::writeToSocket(SkSocket* sockfd, SkSocket::DataType type) {
+ if (NULL != sockfd && fTotalWritten > 4)
+ return sockfd->writePacket(fBlock, fBytesWritten, type);
+ else
+ return -1;
+}
+
+void* SkNetPipeController::requestBlock(size_t minRequest, size_t* actual) {
+ sk_free(fBlock);
+
+ fBlockSize = minRequest * 4;
+ fBlock = sk_malloc_throw(fBlockSize);
+ fBytesWritten = 0;
+ *actual = fBlockSize;
+ return fBlock;
+}
+
+void SkNetPipeController::notifyWritten(size_t bytes) {
+ SkASSERT(fBytesWritten + bytes <= fBlockSize);
+
+ if (fPlayback) {
+ fStatus = fReader.playback((const char*)fBlock + fBytesWritten, bytes);
+ }
+
+ SkASSERT(SkGPipeReader::kError_Status != fStatus);
+ fBytesWritten += bytes;
+ fTotalWritten += bytes;
+
+ fAtomsWritten += 1;
+}
diff --git a/chromium/third_party/skia/experimental/DrawingBoard/SkNetPipeController.h b/chromium/third_party/skia/experimental/DrawingBoard/SkNetPipeController.h
new file mode 100644
index 00000000000..84b1714057f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/DrawingBoard/SkNetPipeController.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#ifndef SkNetPipeController_DEFINED
+#define SkNetPipeController_DEFINED
+#include "SkTypes.h"
+#include "SkCanvas.h"
+#include "SkGPipe.h"
+#include "SkSockets.h"
+class SkNetPipeController : public SkGPipeController {
+public:
+ SkNetPipeController(SkCanvas* target);
+ ~SkNetPipeController();
+
+ virtual void* requestBlock(size_t minRequest, size_t* actual);
+ virtual void notifyWritten(size_t bytes);
+
+ int writeToSocket(SkSocket* sockfd, SkSocket::DataType type);
+ void enablePlayback() { fPlayback = true; }
+ void disablePlayback() { fPlayback = false; }
+
+private:
+ SkGPipeReader fReader;
+ bool fPlayback;
+ void* fBlock;
+ size_t fBlockSize;
+ size_t fBytesWritten;
+ int fAtomsWritten;
+ size_t fTotalWritten;
+
+ SkGPipeReader::Status fStatus;
+};
+#endif
diff --git a/chromium/third_party/skia/experimental/FileReaderApp/English.lproj/InfoPlist.strings b/chromium/third_party/skia/experimental/FileReaderApp/English.lproj/InfoPlist.strings
new file mode 100644
index 00000000000..477b28ff8f8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/FileReaderApp/English.lproj/InfoPlist.strings
@@ -0,0 +1,2 @@
+/* Localized versions of Info.plist keys */
+
diff --git a/chromium/third_party/skia/experimental/FileReaderApp/English.lproj/MainMenu.xib b/chromium/third_party/skia/experimental/FileReaderApp/English.lproj/MainMenu.xib
new file mode 100644
index 00000000000..53e910be41f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/FileReaderApp/English.lproj/MainMenu.xib
@@ -0,0 +1,4272 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
+ <data>
+ <int key="IBDocument.SystemTarget">1060</int>
+ <string key="IBDocument.SystemVersion">10J3250</string>
+ <string key="IBDocument.InterfaceBuilderVersion">851</string>
+ <string key="IBDocument.AppKitVersion">1038.35</string>
+ <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">851</string>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+ <integer value="1" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomObject" id="1021">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSCustomObject" id="1014">
+ <string key="NSClassName">FirstResponder</string>
+ </object>
+ <object class="NSCustomObject" id="1050">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSMenu" id="649796088">
+ <string key="NSTitle">AMainMenu</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="694149608">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">FileReaderApp</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <object class="NSCustomResource" key="NSOnImage" id="35465992">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuCheckmark</string>
+ </object>
+ <object class="NSCustomResource" key="NSMixedImage" id="502551668">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuMixedState</string>
+ </object>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="110575045">
+ <string key="NSTitle">FileReaderApp</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="238522557">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">About FileReaderApp</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="304266470">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="609285721">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Preferences…</string>
+ <string key="NSKeyEquiv">,</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="481834944">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1046388886">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Services</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="752062318">
+ <string key="NSTitle">Services</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <string key="NSName">_NSServicesMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="646227648">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="755159360">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Hide FileReaderApp</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="342932134">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Hide Others</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="908899353">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Show All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1056857174">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="632727374">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Quit FileReaderApp</string>
+ <string key="NSKeyEquiv">q</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSAppleMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="379814623">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">File</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="720053764">
+ <string key="NSTitle">File</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="705341025">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">New</string>
+ <string key="NSKeyEquiv">n</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="722745758">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Open…</string>
+ <string key="NSKeyEquiv">o</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1025936716">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Open Recent</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="1065607017">
+ <string key="NSTitle">Open Recent</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="759406840">
+ <reference key="NSMenu" ref="1065607017"/>
+ <string key="NSTitle">Clear Menu</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSRecentDocumentsMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="425164168">
+ <reference key="NSMenu" ref="720053764"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="776162233">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Close</string>
+ <string key="NSKeyEquiv">w</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1023925487">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Save</string>
+ <string key="NSKeyEquiv">s</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="117038363">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Save As…</string>
+ <string key="NSKeyEquiv">S</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="579971712">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Revert to Saved</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1010469920">
+ <reference key="NSMenu" ref="720053764"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="294629803">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Page Setup...</string>
+ <string key="NSKeyEquiv">P</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSToolTip"/>
+ </object>
+ <object class="NSMenuItem" id="49223823">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Print…</string>
+ <string key="NSKeyEquiv">p</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="952259628">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Edit</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="789758025">
+ <string key="NSTitle">Edit</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="1058277027">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Undo</string>
+ <string key="NSKeyEquiv">z</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="790794224">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Redo</string>
+ <string key="NSKeyEquiv">Z</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1040322652">
+ <reference key="NSMenu" ref="789758025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="296257095">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Cut</string>
+ <string key="NSKeyEquiv">x</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="860595796">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Copy</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="29853731">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Paste</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="82994268">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Paste and Match Style</string>
+ <string key="NSKeyEquiv">V</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="437104165">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Delete</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="583158037">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Select All</string>
+ <string key="NSKeyEquiv">a</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="212016141">
+ <reference key="NSMenu" ref="789758025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="892235320">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Find</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="963351320">
+ <string key="NSTitle">Find</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="447796847">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find…</string>
+ <string key="NSKeyEquiv">f</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="326711663">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find Next</string>
+ <string key="NSKeyEquiv">g</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="270902937">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find Previous</string>
+ <string key="NSKeyEquiv">G</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="159080638">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Use Selection for Find</string>
+ <string key="NSKeyEquiv">e</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">7</int>
+ </object>
+ <object class="NSMenuItem" id="88285865">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Jump to Selection</string>
+ <string key="NSKeyEquiv">j</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="972420730">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Spelling and Grammar</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="769623530">
+ <string key="NSTitle">Spelling and Grammar</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="679648819">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Show Spelling and Grammar</string>
+ <string key="NSKeyEquiv">:</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="96193923">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Document Now</string>
+ <string key="NSKeyEquiv">;</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="859480356">
+ <reference key="NSMenu" ref="769623530"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="948374510">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Spelling While Typing</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="967646866">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Grammar With Spelling</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="795346622">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Correct Spelling Automatically</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="507821607">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Substitutions</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="698887838">
+ <string key="NSTitle">Substitutions</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="65139061">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Show Substitutions</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="19036812">
+ <reference key="NSMenu" ref="698887838"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="605118523">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Copy/Paste</string>
+ <string key="NSKeyEquiv">f</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="197661976">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Quotes</string>
+ <string key="NSKeyEquiv">g</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="672708820">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Dashes</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="708854459">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Links</string>
+ <string key="NSKeyEquiv">G</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="537092702">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Text Replacement</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="288088188">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Transformations</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="579392910">
+ <string key="NSTitle">Transformations</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="1060694897">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Make Upper Case</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="879586729">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Make Lower Case</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="56570060">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Capitalize</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="676164635">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Speech</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="785027613">
+ <string key="NSTitle">Speech</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="731782645">
+ <reference key="NSMenu" ref="785027613"/>
+ <string key="NSTitle">Start Speaking</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="680220178">
+ <reference key="NSMenu" ref="785027613"/>
+ <string key="NSTitle">Stop Speaking</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="302598603">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Format</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="941447902">
+ <string key="NSTitle">Format</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="792887677">
+ <reference key="NSMenu" ref="941447902"/>
+ <string key="NSTitle">Font</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="786677654">
+ <string key="NSTitle">Font</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="159677712">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Show Fonts</string>
+ <string key="NSKeyEquiv">t</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="305399458">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Bold</string>
+ <string key="NSKeyEquiv">b</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="814362025">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Italic</string>
+ <string key="NSKeyEquiv">i</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="330926929">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Underline</string>
+ <string key="NSKeyEquiv">u</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="533507878">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="158063935">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Bigger</string>
+ <string key="NSKeyEquiv">+</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="885547335">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Smaller</string>
+ <string key="NSKeyEquiv">-</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">4</int>
+ </object>
+ <object class="NSMenuItem" id="901062459">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="767671776">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Kern</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="175441468">
+ <string key="NSTitle">Kern</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="252969304">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="766922938">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Use None</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="677519740">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Tighten</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="238351151">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Loosen</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="691570813">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Ligature</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="1058217995">
+ <string key="NSTitle">Ligature</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="706297211">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="568384683">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use None</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="663508465">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="769124883">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Baseline</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="18263474">
+ <string key="NSTitle">Baseline</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="257962622">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="644725453">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Superscript</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1037576581">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Subscript</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="941806246">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Raise</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1045724900">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Lower</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="739652853">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1012600125">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Show Colors</string>
+ <string key="NSKeyEquiv">C</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="214559597">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="596732606">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Copy Style</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="393423671">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Paste Style</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSFontMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="215659978">
+ <reference key="NSMenu" ref="941447902"/>
+ <string key="NSTitle">Text</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="446991534">
+ <string key="NSTitle">Text</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="875092757">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Align Left</string>
+ <string key="NSKeyEquiv">{</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="630155264">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Center</string>
+ <string key="NSKeyEquiv">|</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="945678886">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Justify</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="512868991">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Align Right</string>
+ <string key="NSKeyEquiv">}</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="163117631">
+ <reference key="NSMenu" ref="446991534"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="31516759">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Writing Direction</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="956096989">
+ <string key="NSTitle">Writing Direction</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="257099033">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <string key="NSTitle">Paragraph</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="551969625">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="249532473">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="607364498">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="508151438">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="981751889">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <string key="NSTitle">Selection</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="380031999">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="825984362">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="560145579">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="908105787">
+ <reference key="NSMenu" ref="446991534"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="644046920">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Show Ruler</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="231811626">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Copy Ruler</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1310720</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="883618387">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Paste Ruler</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1310720</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="586577488">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">View</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="466310130">
+ <string key="NSTitle">View</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="102151532">
+ <reference key="NSMenu" ref="466310130"/>
+ <string key="NSTitle">Show Toolbar</string>
+ <string key="NSKeyEquiv">t</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="237841660">
+ <reference key="NSMenu" ref="466310130"/>
+ <string key="NSTitle">Customize Toolbar…</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="713487014">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Window</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="835318025">
+ <string key="NSTitle">Window</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="1011231497">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Minimize</string>
+ <string key="NSKeyEquiv">m</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="575023229">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Zoom</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="299356726">
+ <reference key="NSMenu" ref="835318025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="625202149">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Bring All to Front</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSWindowsMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="448692316">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Help</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="992780483">
+ <string key="NSTitle">Help</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="105068016">
+ <reference key="NSMenu" ref="992780483"/>
+ <string key="NSTitle">FileReaderApp Help</string>
+ <string key="NSKeyEquiv">?</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSHelpMenu</string>
+ </object>
+ </object>
+ </object>
+ <string key="NSName">_NSMainMenu</string>
+ </object>
+ <object class="NSWindowTemplate" id="972006081">
+ <int key="NSWindowStyleMask">15</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{335, 390}, {640, 480}}</string>
+ <int key="NSWTFlags">1954021376</int>
+ <string key="NSWindowTitle">FileReaderApp</string>
+ <string key="NSWindowClass">FileReaderWindow</string>
+ <nil key="NSViewClass"/>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <object class="NSView" key="NSWindowView" id="439893737">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomView" id="322594744">
+ <reference key="NSNextResponder" ref="439893737"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrameSize">{640, 480}</string>
+ <reference key="NSSuperview" ref="439893737"/>
+ <string key="NSClassName">SkNSView</string>
+ </object>
+ </object>
+ <string key="NSFrameSize">{640, 480}</string>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ </object>
+ <object class="NSCustomObject" id="976324537">
+ <string key="NSClassName">FileReaderAppDelegate</string>
+ </object>
+ <object class="NSCustomObject" id="755631768">
+ <string key="NSClassName">NSFontManager</string>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performMiniaturize:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1011231497"/>
+ </object>
+ <int key="connectionID">37</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">arrangeInFront:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="625202149"/>
+ </object>
+ <int key="connectionID">39</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">print:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="49223823"/>
+ </object>
+ <int key="connectionID">86</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">runPageLayout:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="294629803"/>
+ </object>
+ <int key="connectionID">87</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">clearRecentDocuments:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="759406840"/>
+ </object>
+ <int key="connectionID">127</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontStandardAboutPanel:</string>
+ <reference key="source" ref="1021"/>
+ <reference key="destination" ref="238522557"/>
+ </object>
+ <int key="connectionID">142</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performClose:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="776162233"/>
+ </object>
+ <int key="connectionID">193</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleContinuousSpellChecking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="948374510"/>
+ </object>
+ <int key="connectionID">222</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">undo:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1058277027"/>
+ </object>
+ <int key="connectionID">223</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copy:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="860595796"/>
+ </object>
+ <int key="connectionID">224</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">checkSpelling:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="96193923"/>
+ </object>
+ <int key="connectionID">225</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">paste:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="29853731"/>
+ </object>
+ <int key="connectionID">226</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">stopSpeaking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="680220178"/>
+ </object>
+ <int key="connectionID">227</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cut:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="296257095"/>
+ </object>
+ <int key="connectionID">228</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showGuessPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="679648819"/>
+ </object>
+ <int key="connectionID">230</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">redo:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="790794224"/>
+ </object>
+ <int key="connectionID">231</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">selectAll:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="583158037"/>
+ </object>
+ <int key="connectionID">232</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">startSpeaking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="731782645"/>
+ </object>
+ <int key="connectionID">233</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">delete:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="437104165"/>
+ </object>
+ <int key="connectionID">235</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performZoom:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="575023229"/>
+ </object>
+ <int key="connectionID">240</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="447796847"/>
+ </object>
+ <int key="connectionID">241</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">centerSelectionInVisibleArea:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="88285865"/>
+ </object>
+ <int key="connectionID">245</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleGrammarChecking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="967646866"/>
+ </object>
+ <int key="connectionID">347</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleSmartInsertDelete:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="605118523"/>
+ </object>
+ <int key="connectionID">355</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticQuoteSubstitution:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="197661976"/>
+ </object>
+ <int key="connectionID">356</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticLinkDetection:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="708854459"/>
+ </object>
+ <int key="connectionID">357</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">saveDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1023925487"/>
+ </object>
+ <int key="connectionID">362</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">saveDocumentAs:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="117038363"/>
+ </object>
+ <int key="connectionID">363</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">revertDocumentToSaved:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="579971712"/>
+ </object>
+ <int key="connectionID">364</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">runToolbarCustomizationPalette:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="237841660"/>
+ </object>
+ <int key="connectionID">365</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleToolbarShown:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="102151532"/>
+ </object>
+ <int key="connectionID">366</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">hide:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="755159360"/>
+ </object>
+ <int key="connectionID">367</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">hideOtherApplications:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="342932134"/>
+ </object>
+ <int key="connectionID">368</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">unhideAllApplications:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="908899353"/>
+ </object>
+ <int key="connectionID">370</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">newDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="705341025"/>
+ </object>
+ <int key="connectionID">373</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="722745758"/>
+ </object>
+ <int key="connectionID">374</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addFontTrait:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="305399458"/>
+ </object>
+ <int key="connectionID">421</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addFontTrait:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="814362025"/>
+ </object>
+ <int key="connectionID">422</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">modifyFont:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="885547335"/>
+ </object>
+ <int key="connectionID">423</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontFontPanel:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="159677712"/>
+ </object>
+ <int key="connectionID">424</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">modifyFont:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="158063935"/>
+ </object>
+ <int key="connectionID">425</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">raiseBaseline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="941806246"/>
+ </object>
+ <int key="connectionID">426</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">lowerBaseline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1045724900"/>
+ </object>
+ <int key="connectionID">427</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copyFont:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="596732606"/>
+ </object>
+ <int key="connectionID">428</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">subscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1037576581"/>
+ </object>
+ <int key="connectionID">429</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">superscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="644725453"/>
+ </object>
+ <int key="connectionID">430</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">tightenKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="677519740"/>
+ </object>
+ <int key="connectionID">431</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">underline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="330926929"/>
+ </object>
+ <int key="connectionID">432</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontColorPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1012600125"/>
+ </object>
+ <int key="connectionID">433</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useAllLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="663508465"/>
+ </object>
+ <int key="connectionID">434</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">loosenKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="238351151"/>
+ </object>
+ <int key="connectionID">435</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteFont:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="393423671"/>
+ </object>
+ <int key="connectionID">436</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">unscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="257962622"/>
+ </object>
+ <int key="connectionID">437</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useStandardKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="252969304"/>
+ </object>
+ <int key="connectionID">438</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useStandardLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="706297211"/>
+ </object>
+ <int key="connectionID">439</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">turnOffLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="568384683"/>
+ </object>
+ <int key="connectionID">440</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">turnOffKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="766922938"/>
+ </object>
+ <int key="connectionID">441</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">terminate:</string>
+ <reference key="source" ref="1050"/>
+ <reference key="destination" ref="632727374"/>
+ </object>
+ <int key="connectionID">449</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticSpellingCorrection:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="795346622"/>
+ </object>
+ <int key="connectionID">456</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontSubstitutionsPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="65139061"/>
+ </object>
+ <int key="connectionID">458</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticDashSubstitution:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="672708820"/>
+ </object>
+ <int key="connectionID">461</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticTextReplacement:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="537092702"/>
+ </object>
+ <int key="connectionID">463</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">uppercaseWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1060694897"/>
+ </object>
+ <int key="connectionID">464</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">capitalizeWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="56570060"/>
+ </object>
+ <int key="connectionID">467</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">lowercaseWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="879586729"/>
+ </object>
+ <int key="connectionID">468</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteAsPlainText:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="82994268"/>
+ </object>
+ <int key="connectionID">486</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="326711663"/>
+ </object>
+ <int key="connectionID">487</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="270902937"/>
+ </object>
+ <int key="connectionID">488</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="159080638"/>
+ </object>
+ <int key="connectionID">489</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showHelp:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="105068016"/>
+ </object>
+ <int key="connectionID">493</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="1021"/>
+ <reference key="destination" ref="976324537"/>
+ </object>
+ <int key="connectionID">495</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignCenter:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="630155264"/>
+ </object>
+ <int key="connectionID">518</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="883618387"/>
+ </object>
+ <int key="connectionID">519</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="644046920"/>
+ </object>
+ <int key="connectionID">520</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="512868991"/>
+ </object>
+ <int key="connectionID">521</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copyRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="231811626"/>
+ </object>
+ <int key="connectionID">522</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignJustified:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="945678886"/>
+ </object>
+ <int key="connectionID">523</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="875092757"/>
+ </object>
+ <int key="connectionID">524</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionNatural:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="551969625"/>
+ </object>
+ <int key="connectionID">525</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionLeftToRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="249532473"/>
+ </object>
+ <int key="connectionID">526</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionRightToLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="607364498"/>
+ </object>
+ <int key="connectionID">527</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionNatural:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="380031999"/>
+ </object>
+ <int key="connectionID">528</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionLeftToRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="825984362"/>
+ </object>
+ <int key="connectionID">529</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionRightToLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="560145579"/>
+ </object>
+ <int key="connectionID">530</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">fView</string>
+ <reference key="source" ref="972006081"/>
+ <reference key="destination" ref="322594744"/>
+ </object>
+ <int key="connectionID">535</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">window</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="972006081"/>
+ </object>
+ <int key="connectionID">536</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <object class="NSArray" key="object" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <reference key="children" ref="1048"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="1021"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="1014"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">First Responder</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="1050"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">29</int>
+ <reference key="object" ref="649796088"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="713487014"/>
+ <reference ref="694149608"/>
+ <reference ref="952259628"/>
+ <reference ref="379814623"/>
+ <reference ref="586577488"/>
+ <reference ref="302598603"/>
+ <reference ref="448692316"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">19</int>
+ <reference key="object" ref="713487014"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="835318025"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">56</int>
+ <reference key="object" ref="694149608"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="110575045"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">217</int>
+ <reference key="object" ref="952259628"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="789758025"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">83</int>
+ <reference key="object" ref="379814623"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="720053764"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">81</int>
+ <reference key="object" ref="720053764"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1023925487"/>
+ <reference ref="117038363"/>
+ <reference ref="49223823"/>
+ <reference ref="722745758"/>
+ <reference ref="705341025"/>
+ <reference ref="1025936716"/>
+ <reference ref="294629803"/>
+ <reference ref="776162233"/>
+ <reference ref="425164168"/>
+ <reference ref="579971712"/>
+ <reference ref="1010469920"/>
+ </object>
+ <reference key="parent" ref="379814623"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">75</int>
+ <reference key="object" ref="1023925487"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">80</int>
+ <reference key="object" ref="117038363"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">78</int>
+ <reference key="object" ref="49223823"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">72</int>
+ <reference key="object" ref="722745758"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">82</int>
+ <reference key="object" ref="705341025"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">124</int>
+ <reference key="object" ref="1025936716"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1065607017"/>
+ </object>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">77</int>
+ <reference key="object" ref="294629803"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">73</int>
+ <reference key="object" ref="776162233"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">79</int>
+ <reference key="object" ref="425164168"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">112</int>
+ <reference key="object" ref="579971712"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">74</int>
+ <reference key="object" ref="1010469920"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">125</int>
+ <reference key="object" ref="1065607017"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="759406840"/>
+ </object>
+ <reference key="parent" ref="1025936716"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">126</int>
+ <reference key="object" ref="759406840"/>
+ <reference key="parent" ref="1065607017"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">205</int>
+ <reference key="object" ref="789758025"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="437104165"/>
+ <reference ref="583158037"/>
+ <reference ref="1058277027"/>
+ <reference ref="212016141"/>
+ <reference ref="296257095"/>
+ <reference ref="29853731"/>
+ <reference ref="860595796"/>
+ <reference ref="1040322652"/>
+ <reference ref="790794224"/>
+ <reference ref="892235320"/>
+ <reference ref="972420730"/>
+ <reference ref="676164635"/>
+ <reference ref="507821607"/>
+ <reference ref="288088188"/>
+ <reference ref="82994268"/>
+ </object>
+ <reference key="parent" ref="952259628"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">202</int>
+ <reference key="object" ref="437104165"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">198</int>
+ <reference key="object" ref="583158037"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">207</int>
+ <reference key="object" ref="1058277027"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">214</int>
+ <reference key="object" ref="212016141"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">199</int>
+ <reference key="object" ref="296257095"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">203</int>
+ <reference key="object" ref="29853731"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">197</int>
+ <reference key="object" ref="860595796"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">206</int>
+ <reference key="object" ref="1040322652"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">215</int>
+ <reference key="object" ref="790794224"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">218</int>
+ <reference key="object" ref="892235320"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="963351320"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">216</int>
+ <reference key="object" ref="972420730"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="769623530"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">200</int>
+ <reference key="object" ref="769623530"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="948374510"/>
+ <reference ref="96193923"/>
+ <reference ref="679648819"/>
+ <reference ref="967646866"/>
+ <reference ref="859480356"/>
+ <reference ref="795346622"/>
+ </object>
+ <reference key="parent" ref="972420730"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">219</int>
+ <reference key="object" ref="948374510"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">201</int>
+ <reference key="object" ref="96193923"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">204</int>
+ <reference key="object" ref="679648819"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">220</int>
+ <reference key="object" ref="963351320"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="270902937"/>
+ <reference ref="88285865"/>
+ <reference ref="159080638"/>
+ <reference ref="326711663"/>
+ <reference ref="447796847"/>
+ </object>
+ <reference key="parent" ref="892235320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">213</int>
+ <reference key="object" ref="270902937"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">210</int>
+ <reference key="object" ref="88285865"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">221</int>
+ <reference key="object" ref="159080638"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">208</int>
+ <reference key="object" ref="326711663"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">209</int>
+ <reference key="object" ref="447796847"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">57</int>
+ <reference key="object" ref="110575045"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="238522557"/>
+ <reference ref="755159360"/>
+ <reference ref="908899353"/>
+ <reference ref="632727374"/>
+ <reference ref="646227648"/>
+ <reference ref="609285721"/>
+ <reference ref="481834944"/>
+ <reference ref="304266470"/>
+ <reference ref="1046388886"/>
+ <reference ref="1056857174"/>
+ <reference ref="342932134"/>
+ </object>
+ <reference key="parent" ref="694149608"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">58</int>
+ <reference key="object" ref="238522557"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">134</int>
+ <reference key="object" ref="755159360"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">150</int>
+ <reference key="object" ref="908899353"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">136</int>
+ <reference key="object" ref="632727374"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">144</int>
+ <reference key="object" ref="646227648"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">129</int>
+ <reference key="object" ref="609285721"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">143</int>
+ <reference key="object" ref="481834944"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">236</int>
+ <reference key="object" ref="304266470"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">131</int>
+ <reference key="object" ref="1046388886"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="752062318"/>
+ </object>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">149</int>
+ <reference key="object" ref="1056857174"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">145</int>
+ <reference key="object" ref="342932134"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">130</int>
+ <reference key="object" ref="752062318"/>
+ <reference key="parent" ref="1046388886"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">24</int>
+ <reference key="object" ref="835318025"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="299356726"/>
+ <reference ref="625202149"/>
+ <reference ref="575023229"/>
+ <reference ref="1011231497"/>
+ </object>
+ <reference key="parent" ref="713487014"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">92</int>
+ <reference key="object" ref="299356726"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5</int>
+ <reference key="object" ref="625202149"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">239</int>
+ <reference key="object" ref="575023229"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">23</int>
+ <reference key="object" ref="1011231497"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">295</int>
+ <reference key="object" ref="586577488"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="466310130"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">296</int>
+ <reference key="object" ref="466310130"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="102151532"/>
+ <reference ref="237841660"/>
+ </object>
+ <reference key="parent" ref="586577488"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">297</int>
+ <reference key="object" ref="102151532"/>
+ <reference key="parent" ref="466310130"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">298</int>
+ <reference key="object" ref="237841660"/>
+ <reference key="parent" ref="466310130"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">211</int>
+ <reference key="object" ref="676164635"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="785027613"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">212</int>
+ <reference key="object" ref="785027613"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="680220178"/>
+ <reference ref="731782645"/>
+ </object>
+ <reference key="parent" ref="676164635"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">195</int>
+ <reference key="object" ref="680220178"/>
+ <reference key="parent" ref="785027613"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">196</int>
+ <reference key="object" ref="731782645"/>
+ <reference key="parent" ref="785027613"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">346</int>
+ <reference key="object" ref="967646866"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">348</int>
+ <reference key="object" ref="507821607"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="698887838"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">349</int>
+ <reference key="object" ref="698887838"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="605118523"/>
+ <reference ref="197661976"/>
+ <reference ref="708854459"/>
+ <reference ref="65139061"/>
+ <reference ref="19036812"/>
+ <reference ref="672708820"/>
+ <reference ref="537092702"/>
+ </object>
+ <reference key="parent" ref="507821607"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">350</int>
+ <reference key="object" ref="605118523"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">351</int>
+ <reference key="object" ref="197661976"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">354</int>
+ <reference key="object" ref="708854459"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">371</int>
+ <reference key="object" ref="972006081"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="439893737"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">372</int>
+ <reference key="object" ref="439893737"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="322594744"/>
+ </object>
+ <reference key="parent" ref="972006081"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">375</int>
+ <reference key="object" ref="302598603"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="941447902"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">376</int>
+ <reference key="object" ref="941447902"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="792887677"/>
+ <reference ref="215659978"/>
+ </object>
+ <reference key="parent" ref="302598603"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">377</int>
+ <reference key="object" ref="792887677"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="786677654"/>
+ </object>
+ <reference key="parent" ref="941447902"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">388</int>
+ <reference key="object" ref="786677654"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="159677712"/>
+ <reference ref="305399458"/>
+ <reference ref="814362025"/>
+ <reference ref="330926929"/>
+ <reference ref="533507878"/>
+ <reference ref="158063935"/>
+ <reference ref="885547335"/>
+ <reference ref="901062459"/>
+ <reference ref="767671776"/>
+ <reference ref="691570813"/>
+ <reference ref="769124883"/>
+ <reference ref="739652853"/>
+ <reference ref="1012600125"/>
+ <reference ref="214559597"/>
+ <reference ref="596732606"/>
+ <reference ref="393423671"/>
+ </object>
+ <reference key="parent" ref="792887677"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">389</int>
+ <reference key="object" ref="159677712"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">390</int>
+ <reference key="object" ref="305399458"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">391</int>
+ <reference key="object" ref="814362025"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">392</int>
+ <reference key="object" ref="330926929"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">393</int>
+ <reference key="object" ref="533507878"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">394</int>
+ <reference key="object" ref="158063935"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">395</int>
+ <reference key="object" ref="885547335"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">396</int>
+ <reference key="object" ref="901062459"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">397</int>
+ <reference key="object" ref="767671776"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="175441468"/>
+ </object>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">398</int>
+ <reference key="object" ref="691570813"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1058217995"/>
+ </object>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">399</int>
+ <reference key="object" ref="769124883"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="18263474"/>
+ </object>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">400</int>
+ <reference key="object" ref="739652853"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">401</int>
+ <reference key="object" ref="1012600125"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">402</int>
+ <reference key="object" ref="214559597"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">403</int>
+ <reference key="object" ref="596732606"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">404</int>
+ <reference key="object" ref="393423671"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">405</int>
+ <reference key="object" ref="18263474"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="257962622"/>
+ <reference ref="644725453"/>
+ <reference ref="1037576581"/>
+ <reference ref="941806246"/>
+ <reference ref="1045724900"/>
+ </object>
+ <reference key="parent" ref="769124883"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">406</int>
+ <reference key="object" ref="257962622"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">407</int>
+ <reference key="object" ref="644725453"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">408</int>
+ <reference key="object" ref="1037576581"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">409</int>
+ <reference key="object" ref="941806246"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">410</int>
+ <reference key="object" ref="1045724900"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">411</int>
+ <reference key="object" ref="1058217995"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="706297211"/>
+ <reference ref="568384683"/>
+ <reference ref="663508465"/>
+ </object>
+ <reference key="parent" ref="691570813"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">412</int>
+ <reference key="object" ref="706297211"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">413</int>
+ <reference key="object" ref="568384683"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">414</int>
+ <reference key="object" ref="663508465"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">415</int>
+ <reference key="object" ref="175441468"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="252969304"/>
+ <reference ref="766922938"/>
+ <reference ref="677519740"/>
+ <reference ref="238351151"/>
+ </object>
+ <reference key="parent" ref="767671776"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">416</int>
+ <reference key="object" ref="252969304"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">417</int>
+ <reference key="object" ref="766922938"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">418</int>
+ <reference key="object" ref="677519740"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">419</int>
+ <reference key="object" ref="238351151"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">420</int>
+ <reference key="object" ref="755631768"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">450</int>
+ <reference key="object" ref="288088188"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="579392910"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">451</int>
+ <reference key="object" ref="579392910"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1060694897"/>
+ <reference ref="879586729"/>
+ <reference ref="56570060"/>
+ </object>
+ <reference key="parent" ref="288088188"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">452</int>
+ <reference key="object" ref="1060694897"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">453</int>
+ <reference key="object" ref="859480356"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">454</int>
+ <reference key="object" ref="795346622"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">457</int>
+ <reference key="object" ref="65139061"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">459</int>
+ <reference key="object" ref="19036812"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">460</int>
+ <reference key="object" ref="672708820"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">462</int>
+ <reference key="object" ref="537092702"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">465</int>
+ <reference key="object" ref="879586729"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">466</int>
+ <reference key="object" ref="56570060"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">485</int>
+ <reference key="object" ref="82994268"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">490</int>
+ <reference key="object" ref="448692316"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="992780483"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">491</int>
+ <reference key="object" ref="992780483"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="105068016"/>
+ </object>
+ <reference key="parent" ref="448692316"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">492</int>
+ <reference key="object" ref="105068016"/>
+ <reference key="parent" ref="992780483"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">494</int>
+ <reference key="object" ref="976324537"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">496</int>
+ <reference key="object" ref="215659978"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="446991534"/>
+ </object>
+ <reference key="parent" ref="941447902"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">497</int>
+ <reference key="object" ref="446991534"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="875092757"/>
+ <reference ref="630155264"/>
+ <reference ref="945678886"/>
+ <reference ref="512868991"/>
+ <reference ref="163117631"/>
+ <reference ref="31516759"/>
+ <reference ref="908105787"/>
+ <reference ref="644046920"/>
+ <reference ref="231811626"/>
+ <reference ref="883618387"/>
+ </object>
+ <reference key="parent" ref="215659978"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">498</int>
+ <reference key="object" ref="875092757"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">499</int>
+ <reference key="object" ref="630155264"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">500</int>
+ <reference key="object" ref="945678886"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">501</int>
+ <reference key="object" ref="512868991"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">502</int>
+ <reference key="object" ref="163117631"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">503</int>
+ <reference key="object" ref="31516759"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="956096989"/>
+ </object>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">504</int>
+ <reference key="object" ref="908105787"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">505</int>
+ <reference key="object" ref="644046920"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">506</int>
+ <reference key="object" ref="231811626"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">507</int>
+ <reference key="object" ref="883618387"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">508</int>
+ <reference key="object" ref="956096989"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="257099033"/>
+ <reference ref="551969625"/>
+ <reference ref="249532473"/>
+ <reference ref="607364498"/>
+ <reference ref="508151438"/>
+ <reference ref="981751889"/>
+ <reference ref="380031999"/>
+ <reference ref="825984362"/>
+ <reference ref="560145579"/>
+ </object>
+ <reference key="parent" ref="31516759"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">509</int>
+ <reference key="object" ref="257099033"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">510</int>
+ <reference key="object" ref="551969625"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">511</int>
+ <reference key="object" ref="249532473"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">512</int>
+ <reference key="object" ref="607364498"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">513</int>
+ <reference key="object" ref="508151438"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">514</int>
+ <reference key="object" ref="981751889"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">515</int>
+ <reference key="object" ref="380031999"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">516</int>
+ <reference key="object" ref="825984362"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">517</int>
+ <reference key="object" ref="560145579"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">533</int>
+ <reference key="object" ref="322594744"/>
+ <reference key="parent" ref="439893737"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-3.IBPluginDependency</string>
+ <string>112.IBPluginDependency</string>
+ <string>112.ImportedFromIB2</string>
+ <string>124.IBPluginDependency</string>
+ <string>124.ImportedFromIB2</string>
+ <string>125.IBPluginDependency</string>
+ <string>125.ImportedFromIB2</string>
+ <string>125.editorWindowContentRectSynchronizationRect</string>
+ <string>126.IBPluginDependency</string>
+ <string>126.ImportedFromIB2</string>
+ <string>129.IBPluginDependency</string>
+ <string>129.ImportedFromIB2</string>
+ <string>130.IBPluginDependency</string>
+ <string>130.ImportedFromIB2</string>
+ <string>130.editorWindowContentRectSynchronizationRect</string>
+ <string>131.IBPluginDependency</string>
+ <string>131.ImportedFromIB2</string>
+ <string>134.IBPluginDependency</string>
+ <string>134.ImportedFromIB2</string>
+ <string>136.IBPluginDependency</string>
+ <string>136.ImportedFromIB2</string>
+ <string>143.IBPluginDependency</string>
+ <string>143.ImportedFromIB2</string>
+ <string>144.IBPluginDependency</string>
+ <string>144.ImportedFromIB2</string>
+ <string>145.IBPluginDependency</string>
+ <string>145.ImportedFromIB2</string>
+ <string>149.IBPluginDependency</string>
+ <string>149.ImportedFromIB2</string>
+ <string>150.IBPluginDependency</string>
+ <string>150.ImportedFromIB2</string>
+ <string>19.IBPluginDependency</string>
+ <string>19.ImportedFromIB2</string>
+ <string>195.IBPluginDependency</string>
+ <string>195.ImportedFromIB2</string>
+ <string>196.IBPluginDependency</string>
+ <string>196.ImportedFromIB2</string>
+ <string>197.IBPluginDependency</string>
+ <string>197.ImportedFromIB2</string>
+ <string>198.IBPluginDependency</string>
+ <string>198.ImportedFromIB2</string>
+ <string>199.IBPluginDependency</string>
+ <string>199.ImportedFromIB2</string>
+ <string>200.IBEditorWindowLastContentRect</string>
+ <string>200.IBPluginDependency</string>
+ <string>200.ImportedFromIB2</string>
+ <string>200.editorWindowContentRectSynchronizationRect</string>
+ <string>201.IBPluginDependency</string>
+ <string>201.ImportedFromIB2</string>
+ <string>202.IBPluginDependency</string>
+ <string>202.ImportedFromIB2</string>
+ <string>203.IBPluginDependency</string>
+ <string>203.ImportedFromIB2</string>
+ <string>204.IBPluginDependency</string>
+ <string>204.ImportedFromIB2</string>
+ <string>205.IBEditorWindowLastContentRect</string>
+ <string>205.IBPluginDependency</string>
+ <string>205.ImportedFromIB2</string>
+ <string>205.editorWindowContentRectSynchronizationRect</string>
+ <string>206.IBPluginDependency</string>
+ <string>206.ImportedFromIB2</string>
+ <string>207.IBPluginDependency</string>
+ <string>207.ImportedFromIB2</string>
+ <string>208.IBPluginDependency</string>
+ <string>208.ImportedFromIB2</string>
+ <string>209.IBPluginDependency</string>
+ <string>209.ImportedFromIB2</string>
+ <string>210.IBPluginDependency</string>
+ <string>210.ImportedFromIB2</string>
+ <string>211.IBPluginDependency</string>
+ <string>211.ImportedFromIB2</string>
+ <string>212.IBPluginDependency</string>
+ <string>212.ImportedFromIB2</string>
+ <string>212.editorWindowContentRectSynchronizationRect</string>
+ <string>213.IBPluginDependency</string>
+ <string>213.ImportedFromIB2</string>
+ <string>214.IBPluginDependency</string>
+ <string>214.ImportedFromIB2</string>
+ <string>215.IBPluginDependency</string>
+ <string>215.ImportedFromIB2</string>
+ <string>216.IBPluginDependency</string>
+ <string>216.ImportedFromIB2</string>
+ <string>217.IBPluginDependency</string>
+ <string>217.ImportedFromIB2</string>
+ <string>218.IBPluginDependency</string>
+ <string>218.ImportedFromIB2</string>
+ <string>219.IBPluginDependency</string>
+ <string>219.ImportedFromIB2</string>
+ <string>220.IBEditorWindowLastContentRect</string>
+ <string>220.IBPluginDependency</string>
+ <string>220.ImportedFromIB2</string>
+ <string>220.editorWindowContentRectSynchronizationRect</string>
+ <string>221.IBPluginDependency</string>
+ <string>221.ImportedFromIB2</string>
+ <string>23.IBPluginDependency</string>
+ <string>23.ImportedFromIB2</string>
+ <string>236.IBPluginDependency</string>
+ <string>236.ImportedFromIB2</string>
+ <string>239.IBPluginDependency</string>
+ <string>239.ImportedFromIB2</string>
+ <string>24.IBEditorWindowLastContentRect</string>
+ <string>24.IBPluginDependency</string>
+ <string>24.ImportedFromIB2</string>
+ <string>24.editorWindowContentRectSynchronizationRect</string>
+ <string>29.IBEditorWindowLastContentRect</string>
+ <string>29.IBPluginDependency</string>
+ <string>29.ImportedFromIB2</string>
+ <string>29.WindowOrigin</string>
+ <string>29.editorWindowContentRectSynchronizationRect</string>
+ <string>295.IBPluginDependency</string>
+ <string>296.IBEditorWindowLastContentRect</string>
+ <string>296.IBPluginDependency</string>
+ <string>296.editorWindowContentRectSynchronizationRect</string>
+ <string>297.IBPluginDependency</string>
+ <string>298.IBPluginDependency</string>
+ <string>346.IBPluginDependency</string>
+ <string>346.ImportedFromIB2</string>
+ <string>348.IBPluginDependency</string>
+ <string>348.ImportedFromIB2</string>
+ <string>349.IBEditorWindowLastContentRect</string>
+ <string>349.IBPluginDependency</string>
+ <string>349.ImportedFromIB2</string>
+ <string>349.editorWindowContentRectSynchronizationRect</string>
+ <string>350.IBPluginDependency</string>
+ <string>350.ImportedFromIB2</string>
+ <string>351.IBPluginDependency</string>
+ <string>351.ImportedFromIB2</string>
+ <string>354.IBPluginDependency</string>
+ <string>354.ImportedFromIB2</string>
+ <string>371.IBEditorWindowLastContentRect</string>
+ <string>371.IBPluginDependency</string>
+ <string>371.IBWindowTemplateEditedContentRect</string>
+ <string>371.NSWindowTemplate.visibleAtLaunch</string>
+ <string>371.editorWindowContentRectSynchronizationRect</string>
+ <string>371.windowTemplate.maxSize</string>
+ <string>371.windowTemplate.minSize</string>
+ <string>372.IBPluginDependency</string>
+ <string>375.IBPluginDependency</string>
+ <string>376.IBEditorWindowLastContentRect</string>
+ <string>376.IBPluginDependency</string>
+ <string>377.IBPluginDependency</string>
+ <string>388.IBEditorWindowLastContentRect</string>
+ <string>388.IBPluginDependency</string>
+ <string>389.IBPluginDependency</string>
+ <string>390.IBPluginDependency</string>
+ <string>391.IBPluginDependency</string>
+ <string>392.IBPluginDependency</string>
+ <string>393.IBPluginDependency</string>
+ <string>394.IBPluginDependency</string>
+ <string>395.IBPluginDependency</string>
+ <string>396.IBPluginDependency</string>
+ <string>397.IBPluginDependency</string>
+ <string>398.IBPluginDependency</string>
+ <string>399.IBPluginDependency</string>
+ <string>400.IBPluginDependency</string>
+ <string>401.IBPluginDependency</string>
+ <string>402.IBPluginDependency</string>
+ <string>403.IBPluginDependency</string>
+ <string>404.IBPluginDependency</string>
+ <string>405.IBPluginDependency</string>
+ <string>406.IBPluginDependency</string>
+ <string>407.IBPluginDependency</string>
+ <string>408.IBPluginDependency</string>
+ <string>409.IBPluginDependency</string>
+ <string>410.IBPluginDependency</string>
+ <string>411.IBPluginDependency</string>
+ <string>412.IBPluginDependency</string>
+ <string>413.IBPluginDependency</string>
+ <string>414.IBPluginDependency</string>
+ <string>415.IBPluginDependency</string>
+ <string>416.IBPluginDependency</string>
+ <string>417.IBPluginDependency</string>
+ <string>418.IBPluginDependency</string>
+ <string>419.IBPluginDependency</string>
+ <string>450.IBPluginDependency</string>
+ <string>451.IBEditorWindowLastContentRect</string>
+ <string>451.IBPluginDependency</string>
+ <string>452.IBPluginDependency</string>
+ <string>453.IBPluginDependency</string>
+ <string>454.IBPluginDependency</string>
+ <string>457.IBPluginDependency</string>
+ <string>459.IBPluginDependency</string>
+ <string>460.IBPluginDependency</string>
+ <string>462.IBPluginDependency</string>
+ <string>465.IBPluginDependency</string>
+ <string>466.IBPluginDependency</string>
+ <string>485.IBPluginDependency</string>
+ <string>490.IBPluginDependency</string>
+ <string>491.IBEditorWindowLastContentRect</string>
+ <string>491.IBPluginDependency</string>
+ <string>492.IBPluginDependency</string>
+ <string>496.IBPluginDependency</string>
+ <string>497.IBEditorWindowLastContentRect</string>
+ <string>497.IBPluginDependency</string>
+ <string>498.IBPluginDependency</string>
+ <string>499.IBPluginDependency</string>
+ <string>5.IBPluginDependency</string>
+ <string>5.ImportedFromIB2</string>
+ <string>500.IBPluginDependency</string>
+ <string>501.IBPluginDependency</string>
+ <string>502.IBPluginDependency</string>
+ <string>503.IBPluginDependency</string>
+ <string>504.IBPluginDependency</string>
+ <string>505.IBPluginDependency</string>
+ <string>506.IBPluginDependency</string>
+ <string>507.IBPluginDependency</string>
+ <string>508.IBEditorWindowLastContentRect</string>
+ <string>508.IBPluginDependency</string>
+ <string>509.IBPluginDependency</string>
+ <string>510.IBPluginDependency</string>
+ <string>511.IBPluginDependency</string>
+ <string>512.IBPluginDependency</string>
+ <string>513.IBPluginDependency</string>
+ <string>514.IBPluginDependency</string>
+ <string>515.IBPluginDependency</string>
+ <string>516.IBPluginDependency</string>
+ <string>517.IBPluginDependency</string>
+ <string>533.IBPluginDependency</string>
+ <string>533.IBViewBoundsToFrameTransform</string>
+ <string>56.IBPluginDependency</string>
+ <string>56.ImportedFromIB2</string>
+ <string>57.IBEditorWindowLastContentRect</string>
+ <string>57.IBPluginDependency</string>
+ <string>57.ImportedFromIB2</string>
+ <string>57.editorWindowContentRectSynchronizationRect</string>
+ <string>58.IBPluginDependency</string>
+ <string>58.ImportedFromIB2</string>
+ <string>72.IBPluginDependency</string>
+ <string>72.ImportedFromIB2</string>
+ <string>73.IBPluginDependency</string>
+ <string>73.ImportedFromIB2</string>
+ <string>74.IBPluginDependency</string>
+ <string>74.ImportedFromIB2</string>
+ <string>75.IBPluginDependency</string>
+ <string>75.ImportedFromIB2</string>
+ <string>77.IBPluginDependency</string>
+ <string>77.ImportedFromIB2</string>
+ <string>78.IBPluginDependency</string>
+ <string>78.ImportedFromIB2</string>
+ <string>79.IBPluginDependency</string>
+ <string>79.ImportedFromIB2</string>
+ <string>80.IBPluginDependency</string>
+ <string>80.ImportedFromIB2</string>
+ <string>81.IBEditorWindowLastContentRect</string>
+ <string>81.IBPluginDependency</string>
+ <string>81.ImportedFromIB2</string>
+ <string>81.editorWindowContentRectSynchronizationRect</string>
+ <string>82.IBPluginDependency</string>
+ <string>82.ImportedFromIB2</string>
+ <string>83.IBPluginDependency</string>
+ <string>83.ImportedFromIB2</string>
+ <string>92.IBPluginDependency</string>
+ <string>92.ImportedFromIB2</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{522, 812}, {146, 23}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{436, 809}, {64, 6}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{753, 187}, {275, 113}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{608, 612}, {275, 83}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{547, 180}, {254, 283}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{187, 434}, {243, 243}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{608, 612}, {167, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{753, 217}, {238, 103}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{608, 612}, {241, 103}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{654, 239}, {194, 73}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{525, 802}, {197, 73}}</string>
+ <string>{{380, 836}, {489, 20}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{74, 862}</string>
+ <string>{{6, 978}, {478, 20}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{604, 269}, {231, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{475, 832}, {234, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{746, 287}, {220, 133}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{608, 612}, {215, 63}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{358, 214}, {480, 360}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{358, 214}, {480, 360}}</string>
+ <integer value="1"/>
+ <string>{{33, 99}, {480, 360}}</string>
+ <string>{3.40282e+38, 3.40282e+38}</string>
+ <string>{0, 0}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{591, 420}, {83, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{523, 2}, {178, 283}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{753, 197}, {170, 63}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{725, 289}, {246, 23}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{674, 260}, {204, 183}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{878, 180}, {164, 173}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <object class="NSAffineTransform">
+ <bytes key="NSTransformStruct">AULIAABDAgAAA</bytes>
+ </object>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{286, 129}, {275, 183}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{23, 794}, {245, 183}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{452, 109}, {196, 203}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{145, 474}, {199, 203}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">536</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">FileReaderAppDelegate</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">window</string>
+ <string key="NS.object.0">SkNSWindow</string>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <string key="NS.key.0">window</string>
+ <object class="IBToOneOutletInfo" key="NS.object.0">
+ <string key="name">window</string>
+ <string key="candidateClassName">SkNSWindow</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">FileReaderAppDelegate.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">FileReaderWindow</string>
+ <string key="superclassName">SkNSWindow</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">fView</string>
+ <string key="NS.object.0">SkNSView</string>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <string key="NS.key.0">fView</string>
+ <object class="IBToOneOutletInfo" key="NS.object.0">
+ <string key="name">fView</string>
+ <string key="candidateClassName">SkNSView</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">FileReaderWindow.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkNSView</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">SkNSView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkNSWindow</string>
+ <string key="superclassName">NSWindow</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">SkNSWindow.h</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <string key="superclassName">NSResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="822405504">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="850738725">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="624831158">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSBrowser</string>
+ <string key="superclassName">NSControl</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSBrowser.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSControl</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="310914472">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSDocument</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>printDocument:</string>
+ <string>revertDocumentToSaved:</string>
+ <string>runPageLayout:</string>
+ <string>saveDocument:</string>
+ <string>saveDocumentAs:</string>
+ <string>saveDocumentTo:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>printDocument:</string>
+ <string>revertDocumentToSaved:</string>
+ <string>runPageLayout:</string>
+ <string>saveDocument:</string>
+ <string>saveDocumentAs:</string>
+ <string>saveDocumentTo:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">printDocument:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">revertDocumentToSaved:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">runPageLayout:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">saveDocument:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">saveDocumentAs:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">saveDocumentTo:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDocument.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSDocument</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDocumentScripting.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSDocumentController</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>clearRecentDocuments:</string>
+ <string>newDocument:</string>
+ <string>openDocument:</string>
+ <string>saveAllDocuments:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>clearRecentDocuments:</string>
+ <string>newDocument:</string>
+ <string>openDocument:</string>
+ <string>saveAllDocuments:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">clearRecentDocuments:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">newDocument:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">openDocument:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">saveAllDocuments:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDocumentController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSFontManager</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="946436764">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSFormatter</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMatrix</string>
+ <string key="superclassName">NSControl</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMatrix.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMenu</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="1056362899">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMenuItem</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="472958451">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMovieView</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMovieView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="822405504"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="850738725"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="624831158"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="310914472"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDragging.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="946436764"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="1056362899"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="809545482">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="260078765">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSResponder</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSTableView</string>
+ <string key="superclassName">NSControl</string>
+ <reference key="sourceIdentifier" ref="809545482"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSText</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSText.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSTextView</string>
+ <string key="superclassName">NSText</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTextView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <reference key="sourceIdentifier" ref="472958451"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <string key="superclassName">NSResponder</string>
+ <reference key="sourceIdentifier" ref="260078765"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSWindow</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSWindow</string>
+ <string key="superclassName">NSResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSWindow</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
+ </object>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <integer value="1060" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+ <integer value="3000" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <string key="IBDocument.LastKnownRelativeProjectPath">../FileReaderApp.xcodeproj</string>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSMenuCheckmark</string>
+ <string>NSMenuMixedState</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>{9, 8}</string>
+ <string>{7, 2}</string>
+ </object>
+ </object>
+ </data>
+</archive>
diff --git a/chromium/third_party/skia/experimental/FileReaderApp/FileReaderApp-Info.plist b/chromium/third_party/skia/experimental/FileReaderApp/FileReaderApp-Info.plist
new file mode 100644
index 00000000000..f696cb233ef
--- /dev/null
+++ b/chromium/third_party/skia/experimental/FileReaderApp/FileReaderApp-Info.plist
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>com.yourcompany.${PRODUCT_NAME:rfc1034identifier}</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>${MACOSX_DEPLOYMENT_TARGET}</string>
+ <key>NSMainNibFile</key>
+ <string>MainMenu</string>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+</dict>
+</plist>
diff --git a/chromium/third_party/skia/experimental/FileReaderApp/FileReaderAppDelegate.h b/chromium/third_party/skia/experimental/FileReaderApp/FileReaderAppDelegate.h
new file mode 100644
index 00000000000..113f62e2296
--- /dev/null
+++ b/chromium/third_party/skia/experimental/FileReaderApp/FileReaderAppDelegate.h
@@ -0,0 +1,15 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#import <Cocoa/Cocoa.h>
+#import "SkNSWindow.h"
+@interface FileReaderAppDelegate : NSObject <NSApplicationDelegate> {
+ SkNSWindow *window;
+}
+
+@property (assign) IBOutlet SkNSWindow *window;
+@end
diff --git a/chromium/third_party/skia/experimental/FileReaderApp/FileReaderAppDelegate.mm b/chromium/third_party/skia/experimental/FileReaderApp/FileReaderAppDelegate.mm
new file mode 100644
index 00000000000..6b706b6aaf0
--- /dev/null
+++ b/chromium/third_party/skia/experimental/FileReaderApp/FileReaderAppDelegate.mm
@@ -0,0 +1,10 @@
+#import "FileReaderAppDelegate.h"
+
+@implementation FileReaderAppDelegate
+@synthesize window;
+
+-(void) applicationDidFinishLaunching:(NSNotification *)aNotification {
+ //Load specified skia views after launching
+ [window installSkViews];
+}
+@end
diff --git a/chromium/third_party/skia/experimental/FileReaderApp/FileReaderApp_Prefix.pch b/chromium/third_party/skia/experimental/FileReaderApp/FileReaderApp_Prefix.pch
new file mode 100644
index 00000000000..8d43caec0d5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/FileReaderApp/FileReaderApp_Prefix.pch
@@ -0,0 +1,7 @@
+//
+// Prefix header for all source files of the 'CocoaSampleApp' target in the 'CocoaSampleApp' project
+//
+
+#ifdef __OBJC__
+ #import <Cocoa/Cocoa.h>
+#endif
diff --git a/chromium/third_party/skia/experimental/FileReaderApp/FileReaderWindow.h b/chromium/third_party/skia/experimental/FileReaderApp/FileReaderWindow.h
new file mode 100644
index 00000000000..e18a31c6bb2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/FileReaderApp/FileReaderWindow.h
@@ -0,0 +1,14 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#import "SkNSWindow.h"
+#import "ReaderView.h"
+@interface FileReaderWindow : SkNSWindow {
+ IBOutlet SkNSView* fView;
+ ReaderView* fReaderView;
+}
+@end
diff --git a/chromium/third_party/skia/experimental/FileReaderApp/FileReaderWindow.mm b/chromium/third_party/skia/experimental/FileReaderApp/FileReaderWindow.mm
new file mode 100644
index 00000000000..87b9ab18db3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/FileReaderApp/FileReaderWindow.mm
@@ -0,0 +1,35 @@
+#import "FileReaderWindow.h"
+#import "SkGradientShader.h"
+
+bool gNeverSetToTrueJustNeedToFoolLinker;
+static void init_effects() {
+ if (gNeverSetToTrueJustNeedToFoolLinker) {
+ SkPoint p = SkPoint::Make(0,0);
+ SkPoint q = SkPoint::Make(100,100);
+ SkPoint pts[] = {p, q};
+ SkColor colors[] = { SK_ColorRED, SK_ColorGREEN };
+ SkScalar pos[] = { 0, 1.0};
+ SkGradientShader::CreateLinear(pts, colors, pos, 2,
+ SkShader::kMirror_TileMode);
+ }
+}
+
+@implementation FileReaderWindow
+-(void) installSkViews {
+ init_effects();
+ fReaderView = new ReaderView;
+ fReaderView->setVisibleP(true);
+ fReaderView->setSize([self frame].size.width, [self frame].size.height);
+ [fView addSkView:fReaderView];
+ [fView setNeedsDisplay:YES];
+ fReaderView->unref();
+ //TODO - Temporary fix. Inval doesn't Seem to be working.
+ [NSTimer scheduledTimerWithTimeInterval:0.01 target:self
+ selector:@selector(redraw) userInfo:nil
+ repeats:YES];
+}
+
+- (void)redraw {
+ [fView setNeedsDisplay:YES];
+}
+@end \ No newline at end of file
diff --git a/chromium/third_party/skia/experimental/FileReaderApp/ReaderView.cpp b/chromium/third_party/skia/experimental/FileReaderApp/ReaderView.cpp
new file mode 100644
index 00000000000..d0792d26c57
--- /dev/null
+++ b/chromium/third_party/skia/experimental/FileReaderApp/ReaderView.cpp
@@ -0,0 +1,75 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "ReaderView.h"
+#include "SkGPipe.h"
+#include "SkCanvas.h"
+
+#include <stdio.h>
+
+#define FILE_PATH "/Users/yangsu/Code/test/test.a"
+ReaderView::ReaderView() {
+ fBGColor = 0xFFDDDDDD;
+ fFilePos = 0;
+ fBufferBitmaps[0].setConfig(SkBitmap::kARGB_8888_Config, 640, 480);
+ fBufferBitmaps[0].allocPixels(NULL);
+ fBufferBitmaps[1].setConfig(SkBitmap::kARGB_8888_Config, 640, 480);
+ fBufferBitmaps[1].allocPixels(NULL);
+ fFront = 0;
+ fBack = 1;
+}
+
+void ReaderView::draw(SkCanvas* canvas) {
+ canvas->drawColor(fBGColor);
+
+ SkAutoCanvasRestore acr(canvas, true);
+
+ //Create a temporary canvas and reader object that draws into the back
+ //bitmap so that the incremental changes or incomplete reads are not shown
+ //on screen
+ SkCanvas bufferCanvas(fBufferBitmaps[fBack]);
+ SkGPipeReader reader(&bufferCanvas);
+
+ //The file specified by FILE_PATH MUST exist
+ FILE* f = fopen(FILE_PATH, "rb");
+ SkASSERT(f != NULL);
+
+ fseek(f, 0, SEEK_END);
+ int size = ftell(f) * sizeof(char);
+ if (size <= fFilePos) {
+ fFilePos = 0;
+ }
+
+ //Resume from the last read location
+ fseek(f, fFilePos, SEEK_SET);
+ int toBeRead = size - fFilePos;
+ if (size > 0 && toBeRead > 0) {
+ void* block = sk_malloc_throw(toBeRead);
+ fread(block, 1, toBeRead, f);
+
+ size_t bytesRead;
+ SkGPipeReader::Status fStatus = reader.playback(block, toBeRead, &bytesRead);
+ SkASSERT(SkGPipeReader::kError_Status != fStatus);
+ SkASSERT(toBeRead >= bytesRead);
+
+ //if the reader reaches a done verb, a frame is complete.
+ //Update the file location and swap the front and back bitmaps to show
+ //the new frame
+ if (SkGPipeReader::kDone_Status == fStatus) {
+ fFilePos += bytesRead;
+ fFront = fFront ^ 0x1;
+ fBack = fBack ^ 0x1;
+ }
+ sk_free(block);
+ }
+
+ fclose(f);
+
+ //the front bitmap is always drawn
+ canvas->drawBitmap(fBufferBitmaps[fFront], 0, 0, NULL);
+ this->inval(NULL);
+}
diff --git a/chromium/third_party/skia/experimental/FileReaderApp/ReaderView.h b/chromium/third_party/skia/experimental/FileReaderApp/ReaderView.h
new file mode 100644
index 00000000000..3f61eb80871
--- /dev/null
+++ b/chromium/third_party/skia/experimental/FileReaderApp/ReaderView.h
@@ -0,0 +1,29 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "SkView.h"
+#include "SkColor.h"
+#include "SkBitmap.h"
+
+/*
+ * Pipe Reader with File IO. This view reads from the data file produced by the
+ * Pipe Writer.
+ */
+
+class ReaderView : public SkView {
+public:
+ ReaderView();
+ virtual void draw(SkCanvas* canvas);
+
+private:
+ int fFilePos;
+ int fFront;
+ int fBack;
+ SkColor fBGColor;
+ SkBitmap fBufferBitmaps[2];
+ typedef SkView INHERITED;
+};
diff --git a/chromium/third_party/skia/experimental/FileReaderApp/main.m b/chromium/third_party/skia/experimental/FileReaderApp/main.m
new file mode 100644
index 00000000000..cd85c6d0189
--- /dev/null
+++ b/chromium/third_party/skia/experimental/FileReaderApp/main.m
@@ -0,0 +1,16 @@
+//
+// main.m
+// CocoaSampleApp
+//
+// Created by Yang Su on 6/14/11.
+// Copyright 2011 Google Inc.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+#import <Cocoa/Cocoa.h>
+
+int main(int argc, char *argv[])
+{
+ return NSApplicationMain(argc, (const char **) argv);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/ActiveEdge_Test.cpp b/chromium/third_party/skia/experimental/Intersection/ActiveEdge_Test.cpp
new file mode 100755
index 00000000000..1c82f1cb698
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/ActiveEdge_Test.cpp
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "Simplify.h"
+
+namespace UnitTest {
+
+#include "EdgeWalker.cpp"
+
+} // end of UnitTest namespace
+
+#include "Intersection_Tests.h"
+
+SkPoint leftRight[][4] = {
+// equal length
+ {{10, 10}, {10, 50}, {20, 10}, {20, 50}},
+ {{10, 10}, {10, 50}, {10, 10}, {20, 50}},
+ {{10, 10}, {10, 50}, {20, 10}, {10, 50}},
+// left top higher
+ {{10, 0}, {10, 50}, {20, 10}, {20, 50}},
+ {{10, 0}, {10, 50}, {10, 10}, {20, 50}},
+ {{10, 0}, {10, 50}, {20, 10}, {10, 50}},
+ {{10, 0}, {10, 50}, {20, 10}, {10 + 0.000001f, 40}},
+// left top lower
+ {{10, 20}, {10, 50}, {20, 10}, {20, 50}},
+ {{10, 20}, {10, 50}, {10, 10}, {20, 50}},
+ {{10, 20}, {10, 50}, {20, 10}, {10, 50}},
+ {{10, 20}, {10, 50}, {20, 10}, {10 + 0.000001f, 40}},
+ {{10, 20}, {10, 50}, { 0, 0}, {50, 50}},
+// left bottom higher
+ {{10, 10}, {10, 40}, {20, 10}, {20, 50}},
+ {{10, 10}, {10, 40}, {10, 10}, {20, 50}},
+ {{10, 10}, {10, 40}, {20, 10}, {10, 50}},
+ {{10, 10}, {10, 40}, {20, 10}, { 0 + 0.000001f, 70}},
+// left bottom lower
+ {{10, 10}, {10, 60}, {20, 10}, {20, 50}},
+ {{10, 10}, {10, 60}, {10, 10}, {20, 50}},
+ {{10, 10}, {10, 60}, {20, 10}, {10 + 0.000001f, 50}},
+ {{10, 10}, {10, 60}, {20, 10}, {10 + 0.000001f, 40}},
+ {{10, 10}, {10, 60}, { 0, 0}, {20 + 0.000001f, 20}},
+};
+
+size_t leftRightCount = sizeof(leftRight) / sizeof(leftRight[0]);
+
+// older code that worked mostly
+static bool operator_less_than(const UnitTest::ActiveEdge& lh,
+ const UnitTest::ActiveEdge& rh) {
+ if ((rh.fAbove.fY - lh.fAbove.fY > lh.fBelow.fY - rh.fAbove.fY
+ && lh.fBelow.fY < rh.fBelow.fY)
+ || (lh.fAbove.fY - rh.fAbove.fY < rh.fBelow.fY - lh.fAbove.fY
+ && rh.fBelow.fY < lh.fBelow.fY)) {
+ const SkPoint& check = rh.fBelow.fY <= lh.fBelow.fY
+ && lh.fBelow != rh.fBelow ? rh.fBelow :
+ rh.fAbove;
+ return (check.fY - lh.fAbove.fY) * (lh.fBelow.fX - lh.fAbove.fX)
+ < (lh.fBelow.fY - lh.fAbove.fY) * (check.fX - lh.fAbove.fX);
+ }
+ const SkPoint& check = lh.fBelow.fY <= rh.fBelow.fY
+ && lh.fBelow != rh.fBelow ? lh.fBelow : lh.fAbove;
+ return (rh.fBelow.fY - rh.fAbove.fY) * (check.fX - rh.fAbove.fX)
+ < (check.fY - rh.fAbove.fY) * (rh.fBelow.fX - rh.fAbove.fX);
+}
+
+
+void ActiveEdge_Test() {
+ UnitTest::InEdge leftIn, rightIn;
+ UnitTest::ActiveEdge left, right;
+ left.fWorkEdge.fEdge = &leftIn;
+ right.fWorkEdge.fEdge = &rightIn;
+ for (size_t x = 0; x < leftRightCount; ++x) {
+ left.fAbove = leftRight[x][0];
+ left.fTangent = left.fBelow = leftRight[x][1];
+ right.fAbove = leftRight[x][2];
+ right.fTangent = right.fBelow = leftRight[x][3];
+ SkASSERT(left < right);
+ SkASSERT(operator_less_than(left, right));
+ SkASSERT(!(right < left));
+ SkASSERT(!operator_less_than(right, left));
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/AddTestOutput/main.cpp b/chromium/third_party/skia/experimental/Intersection/AddTestOutput/main.cpp
new file mode 100644
index 00000000000..1058bfceecb
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/AddTestOutput/main.cpp
@@ -0,0 +1,115 @@
+#include "SkStream.h"
+#include "SkString.h"
+#include "SkTDArray.h"
+#include <stdio.h>
+
+static bool replace(const char* fun, const char* dir, const char* filename, const char* marker,
+ const char* marker2, const char* replace, size_t replaceLen) {
+ SkString outFileStr(dir);
+ outFileStr.append(filename);
+ SkFILEStream opStreamIn(outFileStr.c_str());
+ if (!opStreamIn.isValid()) {
+ SkDebugf("%s couldn't find %s\n", fun, outFileStr.c_str());
+ return false;
+ }
+ SkTDArray<char> opData;
+ opData.setCount(opStreamIn.getLength());
+ size_t opLen = opData.count();
+ opStreamIn.read(opData.begin(), opLen);
+ opStreamIn.setPath(NULL);
+ SkFILEWStream opStreamOut(outFileStr.c_str());
+ if (!opStreamOut.isValid()) {
+ SkDebugf("%s couldn't open for writing %s\n", fun, outFileStr.c_str());
+ return false;
+ }
+
+ char* opInsert = strstr(opData.begin(), marker);
+ if (!opInsert) {
+ SkDebugf("%s missing marker in %s\n", fun, outFileStr.c_str());
+ opStreamOut.write(opData.begin(), opLen);
+ opStreamOut.flush();
+ return false;
+ }
+ const char* opInsertEnd = opInsert + strlen(marker);
+ if (marker2) {
+ char* opInsert2 = strstr(opInsert, marker2);
+ if (!opInsert2) {
+ SkDebugf("%s missing marker second half in %s\n", fun, outFileStr.c_str());
+ opStreamOut.write(opData.begin(), opLen);
+ opStreamOut.flush();
+ return false;
+ }
+ opInsertEnd = opInsert2 + strlen(marker2);
+ }
+ opStreamOut.write(opData.begin(), opInsert - opData.begin());
+ opStreamOut.write(replace, replaceLen);
+ opStreamOut.write(opInsertEnd, opLen - (opInsertEnd - opData.begin()));
+ opStreamOut.flush();
+ return true;
+}
+
+int main (int argc, char * const argv[]) {
+ if (argc != 2) {
+ SkDebugf("%s expected filename\n", argv[0]);
+ return 0;
+ }
+ const char* dir = "../../experimental/Intersection/";
+ SkString inFileStr;
+ if (argv[1][0] != '/') {
+ inFileStr.append(dir);
+ }
+ inFileStr.append(argv[1]);
+ SkFILEStream inFile(inFileStr.c_str());
+ if (!inFile.isValid()) {
+ SkDebugf("%s couldn't find %s\n", argv[0], argv[1]);
+ return 0;
+ }
+ SkTDArray<char> inData;
+ inData.setCount(inFile.getLength());
+ size_t inLen = inData.count();
+ inFile.read(inData.begin(), inLen);
+ inFile.setPath(NULL);
+ char* insert = strstr(inData.begin(), "\n\n\n");
+ if (!insert) {
+ SkDebugf("%s missing two blank line delimiter in %s\n", argv[0], argv[1]);
+ return 0;
+ }
+ insert += 1; // include first blank line
+ const char opMarker[] =
+ "</div>" "\n"
+ "\n"
+ "<script type=\"text/javascript\">" "\n"
+ "\n"
+ "var testDivs = [" "\n"
+ ;
+ if (!replace(argv[0], dir, "op.htm", opMarker, NULL, inData.begin(),
+ insert - inData.begin())) {
+ return 0;
+ }
+ const char newMarker[] =
+ "static void (*firstTest)() = "
+ ;
+ const char newMarker2[] =
+ ";" "\n"
+ "\n"
+ "static struct {" "\n"
+ " void (*fun)();" "\n"
+ " const char* str;" "\n"
+ "} tests[] = {" "\n"
+ ;
+ if (!replace(argv[0], dir, "SimplifyNew_Test.cpp", newMarker, newMarker2, insert + 2,
+ inLen - (insert - inData.begin()) - 2)) {
+ return 0;
+ }
+ const char forceReleaseMarker[] =
+ "#define FORCE_RELEASE 1 // set force release to 1 for multiple thread -- no debugging"
+ ;
+ const char forceReleaseReplace[] =
+ "#define FORCE_RELEASE 0 // set force release to 1 for multiple thread -- no debugging"
+ ;
+ if (!replace(argv[0], dir, "DataTypes.h", forceReleaseMarker, NULL, forceReleaseReplace,
+ sizeof(forceReleaseReplace) - 1)) {
+ return 0;
+ }
+ return 0;
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/ConvexHull.cpp b/chromium/third_party/skia/experimental/Intersection/ConvexHull.cpp
new file mode 100644
index 00000000000..86cb2dc6f5d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/ConvexHull.cpp
@@ -0,0 +1,143 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "CurveUtilities.h"
+#include "IntersectionUtilities.h"
+
+/* Given a cubic, find the convex hull described by the end and control points.
+ The hull may have 3 or 4 points. Cubics that degenerate into a point or line
+ are not considered.
+
+ The hull is computed by assuming that three points, if unique and non-linear,
+ form a triangle. The fourth point may replace one of the first three, may be
+ discarded if in the triangle or on an edge, or may be inserted between any of
+ the three to form a convex quadralateral.
+
+ The indices returned in order describe the convex hull.
+*/
+int convex_hull(const Cubic& cubic, char order[4]) {
+ size_t index;
+ // find top point
+ size_t yMin = 0;
+ for (index = 1; index < 4; ++index) {
+ if (cubic[yMin].y > cubic[index].y || (cubic[yMin].y == cubic[index].y
+ && cubic[yMin].x > cubic[index].x)) {
+ yMin = index;
+ }
+ }
+ order[0] = yMin;
+ int midX = -1;
+ int backupYMin = -1;
+ for (int pass = 0; pass < 2; ++pass) {
+ for (index = 0; index < 4; ++index) {
+ if (index == yMin) {
+ continue;
+ }
+ // rotate line from (yMin, index) to axis
+ // see if remaining two points are both above or below
+ // use this to find mid
+ int mask = other_two(yMin, index);
+ int side1 = yMin ^ mask;
+ int side2 = index ^ mask;
+ Cubic rotPath;
+ if (!rotate(cubic, yMin, index, rotPath)) { // ! if cbc[yMin]==cbc[idx]
+ order[1] = side1;
+ order[2] = side2;
+ return 3;
+ }
+ int sides = side(rotPath[side1].y - rotPath[yMin].y);
+ sides ^= side(rotPath[side2].y - rotPath[yMin].y);
+ if (sides == 2) { // '2' means one remaining point <0, one >0
+ if (midX >= 0) {
+ printf("%s unexpected mid\n", __FUNCTION__); // there can be only one mid
+ }
+ midX = index;
+ } else if (sides == 0) { // '0' means both to one side or the other
+ backupYMin = index;
+ }
+ }
+ if (midX >= 0) {
+ break;
+ }
+ if (backupYMin < 0) {
+ break;
+ }
+ yMin = backupYMin;
+ backupYMin = -1;
+ }
+ if (midX < 0) {
+ midX = yMin ^ 3; // choose any other point
+ }
+ int mask = other_two(yMin, midX);
+ int least = yMin ^ mask;
+ int most = midX ^ mask;
+ order[0] = yMin;
+ order[1] = least;
+
+ // see if mid value is on same side of line (least, most) as yMin
+ Cubic midPath;
+ if (!rotate(cubic, least, most, midPath)) { // ! if cbc[least]==cbc[most]
+ order[2] = midX;
+ return 3;
+ }
+ int midSides = side(midPath[yMin].y - midPath[least].y);
+ midSides ^= side(midPath[midX].y - midPath[least].y);
+ if (midSides != 2) { // if mid point is not between
+ order[2] = most;
+ return 3; // result is a triangle
+ }
+ order[2] = midX;
+ order[3] = most;
+ return 4; // result is a quadralateral
+}
+
+/* Find the convex hull for cubics with the x-axis interval regularly spaced.
+ Cubics computed as distance functions are formed this way.
+
+ connectTo0[0], connectTo0[1] are the point indices that cubic[0] connects to.
+ connectTo3[0], connectTo3[1] are the point indices that cubic[3] connects to.
+
+ Returns true if cubic[1] to cubic[2] also forms part of the hull.
+*/
+bool convex_x_hull(const Cubic& cubic, char connectTo0[2], char connectTo3[2]) {
+ double projectedY[4];
+ projectedY[0] = 0;
+ int index;
+ for (index = 1; index < 4; ++index) {
+ projectedY[index] = (cubic[index].y - cubic[0].y) * (3.0 / index);
+ }
+ int lower0Index = 1;
+ int upper0Index = 1;
+ for (index = 2; index < 4; ++index) {
+ if (approximately_greater_or_equal(projectedY[lower0Index], projectedY[index])) {
+ lower0Index = index;
+ }
+ if (approximately_lesser_or_equal(projectedY[upper0Index], projectedY[index])) {
+ upper0Index = index;
+ }
+ }
+ connectTo0[0] = lower0Index;
+ connectTo0[1] = upper0Index;
+ for (index = 0; index < 3; ++index) {
+ projectedY[index] = (cubic[3].y - cubic[index].y) * (3.0 / (3 - index));
+ }
+ projectedY[3] = 0;
+ int lower3Index = 2;
+ int upper3Index = 2;
+ for (index = 1; index > -1; --index) {
+ if (approximately_greater_or_equal(projectedY[lower3Index], projectedY[index])) {
+ lower3Index = index;
+ }
+ if (approximately_lesser_or_equal(projectedY[upper3Index], projectedY[index])) {
+ upper3Index = index;
+ }
+ }
+ connectTo3[0] = lower3Index;
+ connectTo3[1] = upper3Index;
+ return (1 << lower0Index | 1 << upper0Index
+ | 1 << lower3Index | 1 << upper3Index) == 0x0F;
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/ConvexHull_Test.cpp b/chromium/third_party/skia/experimental/Intersection/ConvexHull_Test.cpp
new file mode 100644
index 00000000000..3979b1ebca1
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/ConvexHull_Test.cpp
@@ -0,0 +1,468 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "Intersection_Tests.h"
+#include "IntersectionUtilities.h"
+
+const Cubic convex[] = {
+ {{0, 0}, {2, 0}, {2, 1}, {0, 1}},
+ {{1, 0}, {1, 1}, {0, 1}, {0, 0}},
+ {{1, 1}, {0, 1}, {0, 0}, {1, 0}},
+ {{0, 1}, {0, 0}, {1, 0}, {1, 1}},
+ {{0, 0}, {10, 0}, {10, 10}, {5, 6}},
+};
+
+size_t convex_count = sizeof(convex) / sizeof(convex[0]);
+
+const Cubic bowtie[] = {
+ {{0, 0}, {1, 1}, {1, 0}, {0, 1}},
+ {{1, 0}, {0, 1}, {1, 1}, {0, 0}},
+ {{1, 1}, {0, 0}, {0, 1}, {1, 0}},
+ {{0, 1}, {1, 0}, {0, 0}, {1, 1}},
+};
+
+size_t bowtie_count = sizeof(bowtie) / sizeof(bowtie[0]);
+
+const Cubic arrow[] = {
+ {{0, 0}, {10, 0}, {10, 10}, {5, 4}},
+ {{10, 0}, {10, 10}, {5, 4}, {0, 0}},
+ {{10, 10}, {5, 4}, {0, 0}, {10, 0}},
+ {{5, 4}, {0, 0}, {10, 0}, {10, 10}},
+};
+
+size_t arrow_count = sizeof(arrow) / sizeof(arrow[0]);
+
+const Cubic three[] = {
+ {{1, 0}, {1, 0}, {1, 1}, {0, 1}}, // 0 == 1
+ {{0, 0}, {1, 1}, {1, 1}, {0, 1}}, // 1 == 2
+ {{0, 0}, {1, 0}, {0, 1}, {0, 1}}, // 2 == 3
+ {{1, 0}, {1, 1}, {1, 0}, {0, 1}}, // 0 == 2
+ {{1, 0}, {1, 1}, {0, 1}, {1, 0}}, // 0 == 3
+ {{0, 0}, {1, 0}, {1, 1}, {1, 0}}, // 1 == 3
+};
+
+size_t three_count = sizeof(three) / sizeof(three[0]);
+
+const Cubic triangle[] = {
+ {{0, 0}, {1, 0}, {2, 0}, {0, 1}}, // extra point on horz
+ {{1, 0}, {2, 0}, {0, 1}, {0, 0}},
+ {{2, 0}, {0, 1}, {0, 0}, {1, 0}},
+ {{0, 1}, {0, 0}, {1, 0}, {2, 0}},
+
+ {{0, 0}, {0, 1}, {0, 2}, {1, 1}}, // extra point on vert
+ {{0, 1}, {0, 2}, {1, 1}, {0, 0}},
+ {{0, 2}, {1, 1}, {0, 0}, {0, 1}},
+ {{1, 1}, {0, 0}, {0, 1}, {0, 2}},
+
+ {{0, 0}, {1, 1}, {2, 2}, {2, 0}}, // extra point on diag
+ {{1, 1}, {2, 2}, {2, 0}, {0, 0}},
+ {{2, 2}, {2, 0}, {0, 0}, {1, 1}},
+ {{2, 0}, {0, 0}, {1, 1}, {2, 2}},
+
+ {{0, 0}, {2, 0}, {2, 2}, {1, 1}}, // extra point on diag
+ {{2, 0}, {2, 2}, {1, 1}, {0, 0}},
+ {{2, 2}, {1, 1}, {0, 0}, {2, 0}},
+ {{1, 1}, {0, 0}, {2, 0}, {2, 2}},
+};
+
+size_t triangle_count = sizeof(triangle) / sizeof(triangle[0]);
+
+const struct CubicDataSet {
+ const Cubic* data;
+ size_t size;
+} cubicDataSet[] = {
+ { three, three_count },
+ { convex, convex_count },
+ { bowtie, bowtie_count },
+ { arrow, arrow_count },
+ { triangle, triangle_count },
+};
+
+size_t cubicDataSet_count = sizeof(cubicDataSet) / sizeof(cubicDataSet[0]);
+
+typedef double Matrix3x2[3][2];
+
+static bool rotateToAxis(const _Point& a, const _Point& b, Matrix3x2& matrix) {
+ double dx = b.x - a.x;
+ double dy = b.y - a.y;
+ double length = sqrt(dx * dx + dy * dy);
+ if (length == 0) {
+ return false;
+ }
+ double invLength = 1 / length;
+ matrix[0][0] = dx * invLength;
+ matrix[1][0] = dy * invLength;
+ matrix[2][0] = 0;
+ matrix[0][1] = -dy * invLength;
+ matrix[1][1] = dx * invLength;
+ matrix[2][1] = 0;
+ return true;
+}
+
+static void transform(const Cubic& cubic, const Matrix3x2& matrix, Cubic& rotPath) {
+ for (int index = 0; index < 4; ++index) {
+ rotPath[index].x = cubic[index].x * matrix[0][0]
+ + cubic[index].y * matrix[1][0] + matrix[2][0];
+ rotPath[index].y = cubic[index].x * matrix[0][1]
+ + cubic[index].y * matrix[1][1] + matrix[2][1];
+ }
+}
+
+// brute force way to find convex hull:
+// pick two points
+// rotate all four until the two points are horizontal
+// are the remaining two points both above or below the horizontal line?
+// if so, the two points must be an edge of the convex hull
+static int rotate_to_hull(const Cubic& cubic, char order[4], size_t idx, size_t inr) {
+ bool debug_rotate_to_hull = false;
+ int outsidePtSet[4];
+ memset(outsidePtSet, -1, sizeof(outsidePtSet));
+ for (int outer = 0; outer < 3; ++outer) {
+ for (int priorOuter = 0; priorOuter < outer; ++priorOuter) {
+ if (cubic[outer].approximatelyEqual(cubic[priorOuter])) {
+ goto skip;
+ }
+ }
+ for (int inner = outer + 1; inner < 4; ++inner) {
+ for (int priorInner = outer + 1; priorInner < inner; ++priorInner) {
+ if (cubic[inner].approximatelyEqual(cubic[priorInner])) {
+ goto skipInner;
+ }
+ }
+ if (cubic[outer].approximatelyEqual(cubic[inner])) {
+ continue;
+ }
+ Matrix3x2 matrix;
+ if (!rotateToAxis(cubic[outer], cubic[inner], matrix)) {
+ continue;
+ }
+ Cubic rotPath;
+ transform(cubic, matrix, rotPath);
+ int sides[3];
+ int zeroes;
+ zeroes = -1;
+ bzero(sides, sizeof(sides));
+ if (debug_rotate_to_hull) SkDebugf("%s [%d,%d] [o=%d,i=%d] src=(%g,%g) rot=", __FUNCTION__,
+ (int)idx, (int)inr, (int)outer, (int)inner,
+ cubic[inner].x, cubic[inner].y);
+ for (int index = 0; index < 4; ++index) {
+ if (debug_rotate_to_hull) SkDebugf("(%g,%g) ", rotPath[index].x, rotPath[index].y);
+ sides[side(rotPath[index].y - rotPath[inner].y)]++;
+ if (index != outer && index != inner
+ && side(rotPath[index].y - rotPath[inner].y) == 1)
+ zeroes = index;
+ }
+ if (debug_rotate_to_hull) SkDebugf("sides=(%d,%d,%d)\n", sides[0], sides[1], sides[2]);
+ if (sides[0] && sides[2]) {
+ continue;
+ }
+ if (sides[1] == 3 && zeroes >= 0) {
+ // verify that third point is between outer, inner
+ // if either of remaining two equals outer or equal, pick lower
+ if (rotPath[zeroes].approximatelyEqual(rotPath[inner])
+ && zeroes < inner) {
+ if (debug_rotate_to_hull) SkDebugf("%s [%d,%d] [o=%d,i=%d] zeroes < inner\n",
+ __FUNCTION__, (int)idx, (int)inr, (int)outer, (int)inner);
+ continue;
+ }
+ if (rotPath[zeroes].approximatelyEqual(rotPath[outer])
+ && zeroes < outer) {
+ if (debug_rotate_to_hull) SkDebugf("%s [%d,%d] [o=%d,i=%d] zeroes < outer\n",
+ __FUNCTION__, (int)idx, (int)inr, (int)outer, (int)inner);
+ continue;
+ }
+ if (rotPath[zeroes].x < rotPath[inner].x
+ && rotPath[zeroes].x < rotPath[outer].x) {
+ if (debug_rotate_to_hull) SkDebugf("%s [%d,%d] [o=%d,i=%d] zeroes < inner && outer\n",
+ __FUNCTION__, (int)idx, (int)inr, (int)outer, (int)inner);
+ continue;
+ }
+ if (rotPath[zeroes].x > rotPath[inner].x
+ && rotPath[zeroes].x > rotPath[outer].x) {
+ if (debug_rotate_to_hull) SkDebugf("%s [%d,%d] [o=%d,i=%d] zeroes > inner && outer\n",
+ __FUNCTION__, (int)idx, (int)inr, (int)outer, (int)inner);
+ continue;
+ }
+ }
+ if (outsidePtSet[outer] < 0) {
+ outsidePtSet[outer] = inner;
+ } else {
+ if (outsidePtSet[inner] > 0) {
+ if (debug_rotate_to_hull) SkDebugf("%s [%d,%d] [o=%d,i=%d] too many rays from one point\n",
+ __FUNCTION__, (int)idx, (int)inr, (int)outer, (int)inner);
+ }
+ outsidePtSet[inner] = outer;
+ }
+skipInner:
+ ;
+ }
+skip:
+ ;
+ }
+ int totalSides = 0;
+ int first = 0;
+ for (; first < 4; ++first) {
+ if (outsidePtSet[first] >= 0) {
+ break;
+ }
+ }
+ if (first > 3) {
+ order[0] = 0;
+ return 1;
+ }
+ int next = first;
+ do {
+ order[totalSides++] = next;
+ next = outsidePtSet[next];
+ } while (next != -1 && next != first);
+ return totalSides;
+}
+
+int firstIndex = 0;
+int firstInner = 0;
+
+void ConvexHull_Test() {
+ for (size_t index = firstIndex; index < cubicDataSet_count; ++index) {
+ const CubicDataSet& set = cubicDataSet[index];
+ for (size_t inner = firstInner; inner < set.size; ++inner) {
+ const Cubic& cubic = set.data[inner];
+ char order[4], cmpOrder[4];
+ int cmp = rotate_to_hull(cubic, cmpOrder, index, inner);
+ if (cmp < 3) {
+ continue;
+ }
+ int result = convex_hull(cubic, order);
+ if (cmp != result) {
+ SkDebugf("%s [%d,%d] result=%d cmp=%d\n", __FUNCTION__,
+ (int)index, (int)inner, result, cmp);
+ continue;
+ }
+ // check for same indices
+ char pts = 0;
+ char cmpPts = 0;
+ int pt, bit;
+ for (pt = 0; pt < cmp; ++pt) {
+ if (pts & 1 << order[pt]) {
+ SkDebugf("%s [%d,%d] duplicate index in order: %d,%d,%d",
+ __FUNCTION__, (int)index, (int)inner,
+ order[0], order[1], order[2]);
+ if (cmp == 4) {
+ SkDebugf(",%d", order[3]);
+ }
+ SkDebugf("\n");
+ goto next;
+ }
+ if (cmpPts & 1 << cmpOrder[pt]) {
+ SkDebugf("%s [%d,%d] duplicate index in order: %d,%d,%d",
+ __FUNCTION__, (int)index, (int)inner,
+ cmpOrder[0], cmpOrder[1], cmpOrder[2]);
+ if (cmp == 4) {
+ SkDebugf(",%d", cmpOrder[3]);
+ }
+ SkDebugf("\n");
+ goto next;
+ }
+ pts |= 1 << order[pt];
+ cmpPts |= 1 << cmpOrder[pt];
+ }
+ for (bit = 0; bit < 4; ++bit) {
+ if (pts & 1 << bit) {
+ continue;
+ }
+ for (pt = 0; pt < cmp; ++pt) {
+ if (order[pt] == bit) {
+ continue;
+ }
+ if (cubic[order[pt]] == cubic[bit]) {
+ pts |= 1 << bit;
+ }
+ }
+ }
+ for (bit = 0; bit < 4; ++bit) {
+ if (cmpPts & 1 << bit) {
+ continue;
+ }
+ for (pt = 0; pt < cmp; ++pt) {
+ if (cmpOrder[pt] == bit) {
+ continue;
+ }
+ if (cubic[cmpOrder[pt]] == cubic[bit]) {
+ cmpPts |= 1 << bit;
+ }
+ }
+ }
+ if (pts != cmpPts) {
+ SkDebugf("%s [%d,%d] mismatch indices: order=%d,%d,%d",
+ __FUNCTION__, (int)index, (int)inner,
+ order[0], order[1], order[2]);
+ if (cmp == 4) {
+ SkDebugf(",%d", order[3]);
+ }
+ SkDebugf(" cmpOrder=%d,%d,%d", cmpOrder[0], cmpOrder[1], cmpOrder[2]);
+ if (cmp == 4) {
+ SkDebugf(",%d", cmpOrder[3]);
+ }
+ SkDebugf("\n");
+ continue;
+ }
+ if (cmp == 4) { // check for bow ties
+ int match = 0;
+ while (cmpOrder[match] != order[0]) {
+ ++match;
+ }
+ if (cmpOrder[match ^ 2] != order[2]) {
+ SkDebugf("%s [%d,%d] bowtie mismatch: order=%d,%d,%d,%d"
+ " cmpOrder=%d,%d,%d,%d\n",
+ __FUNCTION__, (int)index, (int)inner,
+ order[0], order[1], order[2], order[3],
+ cmpOrder[0], cmpOrder[1], cmpOrder[2], cmpOrder[3]);
+ }
+ }
+ next:
+ ;
+ }
+ }
+}
+
+const double a = 1.0/3;
+const double b = 2.0/3;
+
+const Cubic x_cubic[] = {
+ {{0, 0}, {a, 0}, {b, 0}, {1, 0}}, // 0
+ {{0, 0}, {a, 0}, {b, 0}, {1, 1}}, // 1
+ {{0, 0}, {a, 0}, {b, 1}, {1, 0}}, // 2
+ {{0, 0}, {a, 0}, {b, 1}, {1, 1}}, // 3
+ {{0, 0}, {a, 1}, {b, 0}, {1, 0}}, // 4
+ {{0, 0}, {a, 1}, {b, 0}, {1, 1}}, // 5
+ {{0, 0}, {a, 1}, {b, 1}, {1, 0}}, // 6
+ {{0, 0}, {a, 1}, {b, 1}, {1, 1}}, // 7
+ {{0, 1}, {a, 0}, {b, 0}, {1, 0}}, // 8
+ {{0, 1}, {a, 0}, {b, 0}, {1, 1}}, // 9
+ {{0, 1}, {a, 0}, {b, 1}, {1, 0}}, // 10
+ {{0, 1}, {a, 0}, {b, 1}, {1, 1}}, // 11
+ {{0, 1}, {a, 1}, {b, 0}, {1, 0}}, // 12
+ {{0, 1}, {a, 1}, {b, 0}, {1, 1}}, // 13
+ {{0, 1}, {a, 1}, {b, 1}, {1, 0}}, // 14
+ {{0, 1}, {a, 1}, {b, 1}, {1, 1}}, // 15
+};
+
+size_t x_cubic_count = sizeof(x_cubic) / sizeof(x_cubic[0]);
+
+static int first_x_test = 0;
+
+void ConvexHull_X_Test() {
+ for (size_t index = first_x_test; index < x_cubic_count; ++index) {
+ const Cubic& cubic = x_cubic[index];
+ char connectTo0[2] = {-1, -1};
+ char connectTo3[2] = {-1, -1};
+ convex_x_hull(cubic, connectTo0, connectTo3);
+ int idx, cmp;
+ for (idx = 0; idx < 2; ++idx) {
+ if (connectTo0[idx] >= 1 && connectTo0[idx] < 4) {
+ continue;
+ } else {
+ SkDebugf("%s connectTo0[idx]=%d", __FUNCTION__, connectTo0[idx]);
+ }
+ if (connectTo3[idx] >= 0 && connectTo3[idx] < 3) {
+ continue;
+ } else {
+ SkDebugf("%s connectTo3[idx]=%d", __FUNCTION__, connectTo3[idx]);
+ }
+ goto nextTest;
+ }
+ char rOrder[4];
+ char cmpOrder[4];
+ cmp = rotate_to_hull(cubic, cmpOrder, index, 0);
+ if (index == 0 || index == 15) {
+ // FIXME: make rotate_to_hull work for degenerate 2 edge hull cases
+ cmpOrder[0] = 0;
+ cmpOrder[1] = 3;
+ cmp = 2;
+ }
+ if (cmp < 3) {
+ // FIXME: make rotate_to_hull work for index == 3 etc
+ continue;
+ }
+ for (idx = 0; idx < cmp; ++idx) {
+ if (cmpOrder[idx] == 0) {
+ rOrder[0] = cmpOrder[(idx + 1) % cmp];
+ rOrder[1] = cmpOrder[(idx + cmp - 1) % cmp];
+ } else if (cmpOrder[idx] == 3) {
+ rOrder[2] = cmpOrder[(idx + 1) % cmp];
+ rOrder[3] = cmpOrder[(idx + cmp - 1) % cmp];
+ }
+ }
+ if (connectTo0[0] != connectTo0[1]) {
+ if (rOrder[0] == rOrder[1]) {
+ SkDebugf("%s [%d] (1) order=(%d,%d,%d,%d) r_order=(%d,%d,%d,%d)\n",
+ __FUNCTION__, (int)index, connectTo0[0], connectTo0[1],
+ connectTo3[0], connectTo3[1],
+ rOrder[0], rOrder[1], rOrder[2], rOrder[3]);
+ continue;
+ }
+ int unused = 6 - connectTo0[0] - connectTo0[1];
+ int rUnused = 6 - rOrder[0] - rOrder[1];
+ if (unused != rUnused) {
+ SkDebugf("%s [%d] (2) order=(%d,%d,%d,%d) r_order=(%d,%d,%d,%d)\n",
+ __FUNCTION__, (int)index, connectTo0[0], connectTo0[1],
+ connectTo3[0], connectTo3[1],
+ rOrder[0], rOrder[1], rOrder[2], rOrder[3]);
+ continue;
+ }
+ } else {
+ if (rOrder[0] != rOrder[1]) {
+ SkDebugf("%s [%d] (3) order=(%d,%d,%d,%d) r_order=(%d,%d,%d,%d)\n",
+ __FUNCTION__, (int)index, connectTo0[0], connectTo0[1],
+ connectTo3[0], connectTo3[1],
+ rOrder[0], rOrder[1], rOrder[2], rOrder[3]);
+ continue;
+ }
+ if (connectTo0[0] != rOrder[0]) {
+ SkDebugf("%s [%d] (4) order=(%d,%d,%d,%d) r_order=(%d,%d,%d,%d)\n",
+ __FUNCTION__, (int)index, connectTo0[0], connectTo0[1],
+ connectTo3[0], connectTo3[1],
+ rOrder[0], rOrder[1], rOrder[2], rOrder[3]);
+ continue;
+ }
+ }
+ if (connectTo3[0] != connectTo3[1]) {
+ if (rOrder[2] == rOrder[3]) {
+ SkDebugf("%s [%d] (5) order=(%d,%d,%d,%d) r_order=(%d,%d,%d,%d)\n",
+ __FUNCTION__, (int)index, connectTo0[0], connectTo0[1],
+ connectTo3[0], connectTo3[1],
+ rOrder[0], rOrder[1], rOrder[2], rOrder[3]);
+ continue;
+ }
+ int unused = 6 - connectTo3[0] - connectTo3[1];
+ int rUnused = 6 - rOrder[2] - rOrder[3];
+ if (unused != rUnused) {
+ SkDebugf("%s [%d] (6) order=(%d,%d,%d,%d) r_order=(%d,%d,%d,%d)\n",
+ __FUNCTION__, (int)index, connectTo0[0], connectTo0[1],
+ connectTo3[0], connectTo3[1],
+ rOrder[0], rOrder[1], rOrder[2], rOrder[3]);
+ continue;
+ }
+ } else {
+ if (rOrder[2] != rOrder[3]) {
+ SkDebugf("%s [%d] (7) order=(%d,%d,%d,%d) r_order=(%d,%d,%d,%d)\n",
+ __FUNCTION__, (int)index, connectTo0[0], connectTo0[1],
+ connectTo3[0], connectTo3[1],
+ rOrder[0], rOrder[1], rOrder[2], rOrder[3]);
+ continue;
+ }
+ if (connectTo3[1] != rOrder[3]) {
+ SkDebugf("%s [%d] (8) order=(%d,%d,%d,%d) r_order=(%d,%d,%d,%d)\n",
+ __FUNCTION__, (int)index, connectTo0[0], connectTo0[1],
+ connectTo3[0], connectTo3[1],
+ rOrder[0], rOrder[1], rOrder[2], rOrder[3]);
+ continue;
+ }
+ }
+nextTest:
+ ;
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CubeRoot.cpp b/chromium/third_party/skia/experimental/Intersection/CubeRoot.cpp
new file mode 100644
index 00000000000..5f785a0358a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubeRoot.cpp
@@ -0,0 +1,400 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+// http://metamerist.com/cbrt/CubeRoot.cpp
+//
+
+#include <math.h>
+#include "CubicUtilities.h"
+
+#define TEST_ALTERNATIVES 0
+#if TEST_ALTERNATIVES
+typedef float (*cuberootfnf) (float);
+typedef double (*cuberootfnd) (double);
+
+// estimate bits of precision (32-bit float case)
+inline int bits_of_precision(float a, float b)
+{
+ const double kd = 1.0 / log(2.0);
+
+ if (a==b)
+ return 23;
+
+ const double kdmin = pow(2.0, -23.0);
+
+ double d = fabs(a-b);
+ if (d < kdmin)
+ return 23;
+
+ return int(-log(d)*kd);
+}
+
+// estiamte bits of precision (64-bit double case)
+inline int bits_of_precision(double a, double b)
+{
+ const double kd = 1.0 / log(2.0);
+
+ if (a==b)
+ return 52;
+
+ const double kdmin = pow(2.0, -52.0);
+
+ double d = fabs(a-b);
+ if (d < kdmin)
+ return 52;
+
+ return int(-log(d)*kd);
+}
+
+// cube root via x^(1/3)
+static float pow_cbrtf(float x)
+{
+ return (float) pow(x, 1.0f/3.0f);
+}
+
+// cube root via x^(1/3)
+static double pow_cbrtd(double x)
+{
+ return pow(x, 1.0/3.0);
+}
+
+// cube root approximation using bit hack for 32-bit float
+static float cbrt_5f(float f)
+{
+ unsigned int* p = (unsigned int *) &f;
+ *p = *p/3 + 709921077;
+ return f;
+}
+#endif
+
+// cube root approximation using bit hack for 64-bit float
+// adapted from Kahan's cbrt
+static double cbrt_5d(double d)
+{
+ const unsigned int B1 = 715094163;
+ double t = 0.0;
+ unsigned int* pt = (unsigned int*) &t;
+ unsigned int* px = (unsigned int*) &d;
+ pt[1]=px[1]/3+B1;
+ return t;
+}
+
+#if TEST_ALTERNATIVES
+// cube root approximation using bit hack for 64-bit float
+// adapted from Kahan's cbrt
+#if 0
+static double quint_5d(double d)
+{
+ return sqrt(sqrt(d));
+
+ const unsigned int B1 = 71509416*5/3;
+ double t = 0.0;
+ unsigned int* pt = (unsigned int*) &t;
+ unsigned int* px = (unsigned int*) &d;
+ pt[1]=px[1]/5+B1;
+ return t;
+}
+#endif
+
+// iterative cube root approximation using Halley's method (float)
+static float cbrta_halleyf(const float a, const float R)
+{
+ const float a3 = a*a*a;
+ const float b= a * (a3 + R + R) / (a3 + a3 + R);
+ return b;
+}
+#endif
+
+// iterative cube root approximation using Halley's method (double)
+static double cbrta_halleyd(const double a, const double R)
+{
+ const double a3 = a*a*a;
+ const double b= a * (a3 + R + R) / (a3 + a3 + R);
+ return b;
+}
+
+#if TEST_ALTERNATIVES
+// iterative cube root approximation using Newton's method (float)
+static float cbrta_newtonf(const float a, const float x)
+{
+// return (1.0 / 3.0) * ((a + a) + x / (a * a));
+ return a - (1.0f / 3.0f) * (a - x / (a*a));
+}
+
+// iterative cube root approximation using Newton's method (double)
+static double cbrta_newtond(const double a, const double x)
+{
+ return (1.0/3.0) * (x / (a*a) + 2*a);
+}
+
+// cube root approximation using 1 iteration of Halley's method (double)
+static double halley_cbrt1d(double d)
+{
+ double a = cbrt_5d(d);
+ return cbrta_halleyd(a, d);
+}
+
+// cube root approximation using 1 iteration of Halley's method (float)
+static float halley_cbrt1f(float d)
+{
+ float a = cbrt_5f(d);
+ return cbrta_halleyf(a, d);
+}
+
+// cube root approximation using 2 iterations of Halley's method (double)
+static double halley_cbrt2d(double d)
+{
+ double a = cbrt_5d(d);
+ a = cbrta_halleyd(a, d);
+ return cbrta_halleyd(a, d);
+}
+#endif
+
+// cube root approximation using 3 iterations of Halley's method (double)
+static double halley_cbrt3d(double d)
+{
+ double a = cbrt_5d(d);
+ a = cbrta_halleyd(a, d);
+ a = cbrta_halleyd(a, d);
+ return cbrta_halleyd(a, d);
+}
+
+#if TEST_ALTERNATIVES
+// cube root approximation using 2 iterations of Halley's method (float)
+static float halley_cbrt2f(float d)
+{
+ float a = cbrt_5f(d);
+ a = cbrta_halleyf(a, d);
+ return cbrta_halleyf(a, d);
+}
+
+// cube root approximation using 1 iteration of Newton's method (double)
+static double newton_cbrt1d(double d)
+{
+ double a = cbrt_5d(d);
+ return cbrta_newtond(a, d);
+}
+
+// cube root approximation using 2 iterations of Newton's method (double)
+static double newton_cbrt2d(double d)
+{
+ double a = cbrt_5d(d);
+ a = cbrta_newtond(a, d);
+ return cbrta_newtond(a, d);
+}
+
+// cube root approximation using 3 iterations of Newton's method (double)
+static double newton_cbrt3d(double d)
+{
+ double a = cbrt_5d(d);
+ a = cbrta_newtond(a, d);
+ a = cbrta_newtond(a, d);
+ return cbrta_newtond(a, d);
+}
+
+// cube root approximation using 4 iterations of Newton's method (double)
+static double newton_cbrt4d(double d)
+{
+ double a = cbrt_5d(d);
+ a = cbrta_newtond(a, d);
+ a = cbrta_newtond(a, d);
+ a = cbrta_newtond(a, d);
+ return cbrta_newtond(a, d);
+}
+
+// cube root approximation using 2 iterations of Newton's method (float)
+static float newton_cbrt1f(float d)
+{
+ float a = cbrt_5f(d);
+ return cbrta_newtonf(a, d);
+}
+
+// cube root approximation using 2 iterations of Newton's method (float)
+static float newton_cbrt2f(float d)
+{
+ float a = cbrt_5f(d);
+ a = cbrta_newtonf(a, d);
+ return cbrta_newtonf(a, d);
+}
+
+// cube root approximation using 3 iterations of Newton's method (float)
+static float newton_cbrt3f(float d)
+{
+ float a = cbrt_5f(d);
+ a = cbrta_newtonf(a, d);
+ a = cbrta_newtonf(a, d);
+ return cbrta_newtonf(a, d);
+}
+
+// cube root approximation using 4 iterations of Newton's method (float)
+static float newton_cbrt4f(float d)
+{
+ float a = cbrt_5f(d);
+ a = cbrta_newtonf(a, d);
+ a = cbrta_newtonf(a, d);
+ a = cbrta_newtonf(a, d);
+ return cbrta_newtonf(a, d);
+}
+
+static double TestCubeRootf(const char* szName, cuberootfnf cbrt, double rA, double rB, int rN)
+{
+ const int N = rN;
+
+ float dd = float((rB-rA) / N);
+
+ // calculate 1M numbers
+ int i=0;
+ float d = (float) rA;
+
+ double s = 0.0;
+
+ for(d=(float) rA, i=0; i<N; i++, d += dd)
+ {
+ s += cbrt(d);
+ }
+
+ double bits = 0.0;
+ double worstx=0.0;
+ double worsty=0.0;
+ int minbits=64;
+
+ for(d=(float) rA, i=0; i<N; i++, d += dd)
+ {
+ float a = cbrt((float) d);
+ float b = (float) pow((double) d, 1.0/3.0);
+
+ int bc = bits_of_precision(a, b);
+ bits += bc;
+
+ if (b > 1.0e-6)
+ {
+ if (bc < minbits)
+ {
+ minbits = bc;
+ worstx = d;
+ worsty = a;
+ }
+ }
+ }
+
+ bits /= N;
+
+ printf(" %3d mbp %6.3f abp\n", minbits, bits);
+
+ return s;
+}
+
+
+static double TestCubeRootd(const char* szName, cuberootfnd cbrt, double rA, double rB, int rN)
+{
+ const int N = rN;
+
+ double dd = (rB-rA) / N;
+
+ int i=0;
+
+ double s = 0.0;
+ double d = 0.0;
+
+ for(d=rA, i=0; i<N; i++, d += dd)
+ {
+ s += cbrt(d);
+ }
+
+
+ double bits = 0.0;
+ double worstx = 0.0;
+ double worsty = 0.0;
+ int minbits = 64;
+ for(d=rA, i=0; i<N; i++, d += dd)
+ {
+ double a = cbrt(d);
+ double b = pow(d, 1.0/3.0);
+
+ int bc = bits_of_precision(a, b); // min(53, count_matching_bitsd(a, b) - 12);
+ bits += bc;
+
+ if (b > 1.0e-6)
+ {
+ if (bc < minbits)
+ {
+ bits_of_precision(a, b);
+ minbits = bc;
+ worstx = d;
+ worsty = a;
+ }
+ }
+ }
+
+ bits /= N;
+
+ printf(" %3d mbp %6.3f abp\n", minbits, bits);
+
+ return s;
+}
+
+static int _tmain()
+{
+ // a million uniform steps through the range from 0.0 to 1.0
+ // (doing uniform steps in the log scale would be better)
+ double a = 0.0;
+ double b = 1.0;
+ int n = 1000000;
+
+ printf("32-bit float tests\n");
+ printf("----------------------------------------\n");
+ TestCubeRootf("cbrt_5f", cbrt_5f, a, b, n);
+ TestCubeRootf("pow", pow_cbrtf, a, b, n);
+ TestCubeRootf("halley x 1", halley_cbrt1f, a, b, n);
+ TestCubeRootf("halley x 2", halley_cbrt2f, a, b, n);
+ TestCubeRootf("newton x 1", newton_cbrt1f, a, b, n);
+ TestCubeRootf("newton x 2", newton_cbrt2f, a, b, n);
+ TestCubeRootf("newton x 3", newton_cbrt3f, a, b, n);
+ TestCubeRootf("newton x 4", newton_cbrt4f, a, b, n);
+ printf("\n\n");
+
+ printf("64-bit double tests\n");
+ printf("----------------------------------------\n");
+ TestCubeRootd("cbrt_5d", cbrt_5d, a, b, n);
+ TestCubeRootd("pow", pow_cbrtd, a, b, n);
+ TestCubeRootd("halley x 1", halley_cbrt1d, a, b, n);
+ TestCubeRootd("halley x 2", halley_cbrt2d, a, b, n);
+ TestCubeRootd("halley x 3", halley_cbrt3d, a, b, n);
+ TestCubeRootd("newton x 1", newton_cbrt1d, a, b, n);
+ TestCubeRootd("newton x 2", newton_cbrt2d, a, b, n);
+ TestCubeRootd("newton x 3", newton_cbrt3d, a, b, n);
+ TestCubeRootd("newton x 4", newton_cbrt4d, a, b, n);
+ printf("\n\n");
+
+ return 0;
+}
+#endif
+
+double cube_root(double x) {
+ if (approximately_zero_cubed(x)) {
+ return 0;
+ }
+ double result = halley_cbrt3d(fabs(x));
+ if (x < 0) {
+ result = -result;
+ }
+ return result;
+}
+
+#if TEST_ALTERNATIVES
+// http://bytes.com/topic/c/answers/754588-tips-find-cube-root-program-using-c
+/* cube root */
+int icbrt(int n) {
+ int t=0, x=(n+2)/3; /* works for n=0 and n>=1 */
+ for(; t!=x;) {
+ int x3=x*x*x;
+ t=x;
+ x*=(2*n + x3);
+ x/=(2*x3 + n);
+ }
+ return x ; /* always(?) equal to floor(n^(1/3)) */
+}
+#endif
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicBezierClip.cpp b/chromium/third_party/skia/experimental/Intersection/CubicBezierClip.cpp
new file mode 100644
index 00000000000..d4c50fb41c1
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicBezierClip.cpp
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "CurveUtilities.h"
+#include "LineParameters.h"
+
+// return false if unable to clip (e.g., unable to create implicit line)
+// caller should subdivide, or create degenerate if the values are too small
+bool bezier_clip(const Cubic& cubic1, const Cubic& cubic2, double& minT, double& maxT) {
+ minT = 1;
+ maxT = 0;
+ // determine normalized implicit line equation for pt[0] to pt[3]
+ // of the form ax + by + c = 0, where a*a + b*b == 1
+
+ // find the implicit line equation parameters
+ LineParameters endLine;
+ endLine.cubicEndPoints(cubic1);
+ if (!endLine.normalize()) {
+ printf("line cannot be normalized: need more code here\n");
+ return false;
+ }
+
+ double distance[2];
+ distance[0] = endLine.controlPtDistance(cubic1, 1);
+ distance[1] = endLine.controlPtDistance(cubic1, 2);
+
+ // find fat line
+ double top = distance[0];
+ double bottom = distance[1];
+ if (top > bottom) {
+ SkTSwap(top, bottom);
+ }
+ if (top * bottom >= 0) {
+ const double scale = 3/4.0; // http://cagd.cs.byu.edu/~tom/papers/bezclip.pdf (13)
+ if (top < 0) {
+ top *= scale;
+ bottom = 0;
+ } else {
+ top = 0;
+ bottom *= scale;
+ }
+ } else {
+ const double scale = 4/9.0; // http://cagd.cs.byu.edu/~tom/papers/bezclip.pdf (15)
+ top *= scale;
+ bottom *= scale;
+ }
+
+ // compute intersecting candidate distance
+ Cubic distance2y; // points with X of (0, 1/3, 2/3, 1)
+ endLine.cubicDistanceY(cubic2, distance2y);
+
+ int flags = 0;
+ if (approximately_lesser_or_equal(distance2y[0].y, top)) {
+ flags |= kFindTopMin;
+ } else if (approximately_greater_or_equal(distance2y[0].y, bottom)) {
+ flags |= kFindBottomMin;
+ } else {
+ minT = 0;
+ }
+
+ if (approximately_lesser_or_equal(distance2y[3].y, top)) {
+ flags |= kFindTopMax;
+ } else if (approximately_greater_or_equal(distance2y[3].y, bottom)) {
+ flags |= kFindBottomMax;
+ } else {
+ maxT = 1;
+ }
+ // Find the intersection of distance convex hull and fat line.
+ char to_0[2];
+ char to_3[2];
+ bool do_1_2_edge = convex_x_hull(distance2y, to_0, to_3);
+ x_at(distance2y[0], distance2y[to_0[0]], top, bottom, flags, minT, maxT);
+ if (to_0[0] != to_0[1]) {
+ x_at(distance2y[0], distance2y[to_0[1]], top, bottom, flags, minT, maxT);
+ }
+ x_at(distance2y[to_3[0]], distance2y[3], top, bottom, flags, minT, maxT);
+ if (to_3[0] != to_3[1]) {
+ x_at(distance2y[to_3[1]], distance2y[3], top, bottom, flags, minT, maxT);
+ }
+ if (do_1_2_edge) {
+ x_at(distance2y[1], distance2y[2], top, bottom, flags, minT, maxT);
+ }
+
+ return minT < maxT; // returns false if distance shows no intersection
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicBezierClip_Test.cpp b/chromium/third_party/skia/experimental/Intersection/CubicBezierClip_Test.cpp
new file mode 100644
index 00000000000..9133980f58d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicBezierClip_Test.cpp
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "CubicIntersection_TestData.h"
+#include "Intersection_Tests.h"
+
+void CubicBezierClip_Test() {
+ for (size_t index = 0; index < tests_count; ++index) {
+ const Cubic& cubic1 = tests[index][0];
+ const Cubic& cubic2 = tests[index][1];
+ Cubic reduce1, reduce2;
+ int order1 = reduceOrder(cubic1, reduce1, kReduceOrder_NoQuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ int order2 = reduceOrder(cubic2, reduce2, kReduceOrder_NoQuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ if (order1 < 4) {
+ SkDebugf("%s [%d] cubic1 order=%d\n", __FUNCTION__, (int) index, order1);
+ }
+ if (order2 < 4) {
+ SkDebugf("%s [%d] cubic2 order=%d\n", __FUNCTION__, (int) index, order2);
+ }
+ if (order1 == 4 && order2 == 4) {
+ double minT = 0;
+ double maxT = 1;
+ bezier_clip(reduce1, reduce2, minT, maxT);
+ }
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicBounds.cpp b/chromium/third_party/skia/experimental/Intersection/CubicBounds.cpp
new file mode 100644
index 00000000000..7fd9feff6fa
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicBounds.cpp
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "CurveUtilities.h"
+#include "Extrema.h"
+
+static int isBoundedByEndPoints(double a, double b, double c, double d)
+{
+ return between(a, b, d) && between(a, c, d);
+}
+
+double leftMostT(const Cubic& cubic, double startT, double endT) {
+ double leftTs[2];
+ _Point pt[2];
+ int results = findExtrema(cubic[0].x, cubic[1].x, cubic[2].x, cubic[3].x, leftTs);
+ int best = -1;
+ for (int index = 0; index < results; ++index) {
+ if (startT > leftTs[index] || leftTs[index] > endT) {
+ continue;
+ }
+ if (best < 0) {
+ best = index;
+ continue;
+ }
+ xy_at_t(cubic, leftTs[0], pt[0].x, pt[0].y);
+ xy_at_t(cubic, leftTs[1], pt[1].x, pt[1].y);
+ if (pt[0].x > pt[1].x) {
+ best = 1;
+ }
+ }
+ if (best >= 0) {
+ return leftTs[best];
+ }
+ xy_at_t(cubic, startT, pt[0].x, pt[0].y);
+ xy_at_t(cubic, endT, pt[1].x, pt[1].y);
+ return pt[0].x <= pt[1].x ? startT : endT;
+}
+
+void _Rect::setBounds(const Cubic& cubic) {
+ set(cubic[0]);
+ add(cubic[3]);
+ double tValues[4];
+ int roots = 0;
+ if (!isBoundedByEndPoints(cubic[0].x, cubic[1].x, cubic[2].x, cubic[3].x)) {
+ roots = findExtrema(cubic[0].x, cubic[1].x, cubic[2].x, cubic[3].x, tValues);
+ }
+ if (!isBoundedByEndPoints(cubic[0].y, cubic[1].y, cubic[2].y, cubic[3].y)) {
+ roots += findExtrema(cubic[0].y, cubic[1].y, cubic[2].y, cubic[3].y, &tValues[roots]);
+ }
+ for (int x = 0; x < roots; ++x) {
+ _Point result;
+ xy_at_t(cubic, tValues[x], result.x, result.y);
+ add(result);
+ }
+}
+
+void _Rect::setRawBounds(const Cubic& cubic) {
+ set(cubic[0]);
+ for (int x = 1; x < 4; ++x) {
+ add(cubic[x]);
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicConvexHull.cpp b/chromium/third_party/skia/experimental/Intersection/CubicConvexHull.cpp
new file mode 100644
index 00000000000..137b0d68d65
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicConvexHull.cpp
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "CubicUtilities.h"
+#include "CurveIntersection.h"
+#include "Intersections.h"
+#include "IntersectionUtilities.h"
+#include "LineIntersection.h"
+
+static const double tClipLimit = 0.8; // http://cagd.cs.byu.edu/~tom/papers/bezclip.pdf see Multiple intersections
+
+class CubicIntersections : public Intersections {
+public:
+
+CubicIntersections(const Cubic& c1, const Cubic& c2, Intersections& i)
+ : cubic1(c1)
+ , cubic2(c2)
+ , intersections(i)
+ , depth(0)
+ , splits(0) {
+}
+
+bool intersect() {
+ double minT1, minT2, maxT1, maxT2;
+ if (!bezier_clip(cubic2, cubic1, minT1, maxT1)) {
+ return false;
+ }
+ if (!bezier_clip(cubic1, cubic2, minT2, maxT2)) {
+ return false;
+ }
+ int split;
+ if (maxT1 - minT1 < maxT2 - minT2) {
+ intersections.swap();
+ minT2 = 0;
+ maxT2 = 1;
+ split = maxT1 - minT1 > tClipLimit;
+ } else {
+ minT1 = 0;
+ maxT1 = 1;
+ split = (maxT2 - minT2 > tClipLimit) << 1;
+ }
+ return chop(minT1, maxT1, minT2, maxT2, split);
+}
+
+protected:
+
+bool intersect(double minT1, double maxT1, double minT2, double maxT2) {
+ Cubic smaller, larger;
+ // FIXME: carry last subdivide and reduceOrder result with cubic
+ sub_divide(cubic1, minT1, maxT1, intersections.swapped() ? larger : smaller);
+ sub_divide(cubic2, minT2, maxT2, intersections.swapped() ? smaller : larger);
+ Cubic smallResult;
+ if (reduceOrder(smaller, smallResult, kReduceOrder_NoQuadraticsAllowed,
+ kReduceOrder_TreatAsFill) <= 2) {
+ Cubic largeResult;
+ if (reduceOrder(larger, largeResult, kReduceOrder_NoQuadraticsAllowed,
+ kReduceOrder_TreatAsFill) <= 2) {
+ const _Line& smallLine = (const _Line&) smallResult;
+ const _Line& largeLine = (const _Line&) largeResult;
+ Intersections lineTs;
+ // FIXME: this doesn't detect or deal with coincident lines
+ if (!::intersect(smallLine, largeLine, lineTs)) {
+ return false;
+ }
+ if (intersections.swapped()) {
+ lineTs.fT[0][0] = interp(minT2, maxT2, lineTs.fT[0][0]);
+ lineTs.fT[1][0] = interp(minT1, maxT1, lineTs.fT[1][0]);
+ } else {
+ lineTs.fT[0][0] = interp(minT1, maxT1, lineTs.fT[0][0]);
+ lineTs.fT[1][0] = interp(minT2, maxT2, lineTs.fT[1][0]);
+ }
+ _Point pt;
+ xy_at_t(cubic1, lineTs.fT[0][0], pt.x, pt.y);
+ intersections.insert(lineTs.fT[0][0], lineTs.fT[1][0], pt);
+ return true;
+ }
+ }
+ double minT, maxT;
+ if (!bezier_clip(smaller, larger, minT, maxT)) {
+ if (minT == maxT) {
+ if (intersections.swapped()) {
+ minT1 = (minT1 + maxT1) / 2;
+ minT2 = interp(minT2, maxT2, minT);
+ } else {
+ minT1 = interp(minT1, maxT1, minT);
+ minT2 = (minT2 + maxT2) / 2;
+ }
+ _Point pt;
+ xy_at_t(cubic1, minT1, pt.x, pt.y);
+ intersections.insert(minT1, minT2, pt);
+ return true;
+ }
+ return false;
+ }
+
+ int split;
+ if (intersections.swapped()) {
+ double newMinT1 = interp(minT1, maxT1, minT);
+ double newMaxT1 = interp(minT1, maxT1, maxT);
+ split = (newMaxT1 - newMinT1 > (maxT1 - minT1) * tClipLimit) << 1;
+#define VERBOSE 0
+#if VERBOSE
+ printf("%s d=%d s=%d new1=(%g,%g) old1=(%g,%g) split=%d\n",
+ __FUNCTION__, depth, splits, newMinT1, newMaxT1, minT1, maxT1,
+ split);
+#endif
+ minT1 = newMinT1;
+ maxT1 = newMaxT1;
+ } else {
+ double newMinT2 = interp(minT2, maxT2, minT);
+ double newMaxT2 = interp(minT2, maxT2, maxT);
+ split = newMaxT2 - newMinT2 > (maxT2 - minT2) * tClipLimit;
+#if VERBOSE
+ printf("%s d=%d s=%d new2=(%g,%g) old2=(%g,%g) split=%d\n",
+ __FUNCTION__, depth, splits, newMinT2, newMaxT2, minT2, maxT2,
+ split);
+#endif
+ minT2 = newMinT2;
+ maxT2 = newMaxT2;
+ }
+ return chop(minT1, maxT1, minT2, maxT2, split);
+}
+
+bool chop(double minT1, double maxT1, double minT2, double maxT2, int split) {
+ ++depth;
+ intersections.swap();
+ if (split) {
+ ++splits;
+ if (split & 2) {
+ double middle1 = (maxT1 + minT1) / 2;
+ intersect(minT1, middle1, minT2, maxT2);
+ intersect(middle1, maxT1, minT2, maxT2);
+ } else {
+ double middle2 = (maxT2 + minT2) / 2;
+ intersect(minT1, maxT1, minT2, middle2);
+ intersect(minT1, maxT1, middle2, maxT2);
+ }
+ --splits;
+ intersections.swap();
+ --depth;
+ return intersections.intersected();
+ }
+ bool result = intersect(minT1, maxT1, minT2, maxT2);
+ intersections.swap();
+ --depth;
+ return result;
+}
+
+private:
+
+const Cubic& cubic1;
+const Cubic& cubic2;
+Intersections& intersections;
+int depth;
+int splits;
+};
+
+bool intersect(const Cubic& c1, const Cubic& c2, Intersections& i) {
+ CubicIntersections c(c1, c2, i);
+ return c.intersect();
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicIntersection.cpp b/chromium/third_party/skia/experimental/Intersection/CubicIntersection.cpp
new file mode 100644
index 00000000000..175b7b7c460
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicIntersection.cpp
@@ -0,0 +1,471 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "CubicUtilities.h"
+#include "CurveIntersection.h"
+#include "Intersections.h"
+#include "IntersectionUtilities.h"
+#include "LineIntersection.h"
+#include "LineUtilities.h"
+#include "QuadraticUtilities.h"
+#include "TSearch.h"
+
+#if 0
+#undef ONE_OFF_DEBUG
+#define ONE_OFF_DEBUG 0
+#endif
+
+#if ONE_OFF_DEBUG
+static const double tLimits1[2][2] = {{0.36, 0.37}, {0.63, 0.64}};
+static const double tLimits2[2][2] = {{-0.865211397, -0.865215212}, {-0.865207696, -0.865208078}};
+#endif
+
+#define DEBUG_QUAD_PART 0
+#define SWAP_TOP_DEBUG 0
+
+static int quadPart(const Cubic& cubic, double tStart, double tEnd, Quadratic& simple) {
+ Cubic part;
+ sub_divide(cubic, tStart, tEnd, part);
+ Quadratic quad;
+ demote_cubic_to_quad(part, quad);
+ // FIXME: should reduceOrder be looser in this use case if quartic is going to blow up on an
+ // extremely shallow quadratic?
+ int order = reduceOrder(quad, simple, kReduceOrder_TreatAsFill);
+#if DEBUG_QUAD_PART
+ SkDebugf("%s cubic=(%1.17g,%1.17g %1.17g,%1.17g %1.17g,%1.17g %1.17g,%1.17g) t=(%1.17g,%1.17g)\n",
+ __FUNCTION__, cubic[0].x, cubic[0].y, cubic[1].x, cubic[1].y, cubic[2].x, cubic[2].y,
+ cubic[3].x, cubic[3].y, tStart, tEnd);
+ SkDebugf("%s part=(%1.17g,%1.17g %1.17g,%1.17g %1.17g,%1.17g %1.17g,%1.17g)"
+ " quad=(%1.17g,%1.17g %1.17g,%1.17g %1.17g,%1.17g)\n", __FUNCTION__, part[0].x, part[0].y,
+ part[1].x, part[1].y, part[2].x, part[2].y, part[3].x, part[3].y, quad[0].x, quad[0].y,
+ quad[1].x, quad[1].y, quad[2].x, quad[2].y);
+ SkDebugf("%s simple=(%1.17g,%1.17g", __FUNCTION__, simple[0].x, simple[0].y);
+ if (order > 1) {
+ SkDebugf(" %1.17g,%1.17g", simple[1].x, simple[1].y);
+ }
+ if (order > 2) {
+ SkDebugf(" %1.17g,%1.17g", simple[2].x, simple[2].y);
+ }
+ SkDebugf(")\n");
+ SkASSERT(order < 4 && order > 0);
+#endif
+ return order;
+}
+
+static void intersectWithOrder(const Quadratic& simple1, int order1, const Quadratic& simple2,
+ int order2, Intersections& i) {
+ if (order1 == 3 && order2 == 3) {
+ intersect2(simple1, simple2, i);
+ } else if (order1 <= 2 && order2 <= 2) {
+ intersect((const _Line&) simple1, (const _Line&) simple2, i);
+ } else if (order1 == 3 && order2 <= 2) {
+ intersect(simple1, (const _Line&) simple2, i);
+ } else {
+ SkASSERT(order1 <= 2 && order2 == 3);
+ intersect(simple2, (const _Line&) simple1, i);
+ for (int s = 0; s < i.fUsed; ++s) {
+ SkTSwap(i.fT[0][s], i.fT[1][s]);
+ }
+ }
+}
+
+// this flavor centers potential intersections recursively. In contrast, '2' may inadvertently
+// chase intersections near quadratic ends, requiring odd hacks to find them.
+static bool intersect3(const Cubic& cubic1, double t1s, double t1e, const Cubic& cubic2,
+ double t2s, double t2e, double precisionScale, Intersections& i) {
+ i.upDepth();
+ bool result = false;
+ Cubic c1, c2;
+ sub_divide(cubic1, t1s, t1e, c1);
+ sub_divide(cubic2, t2s, t2e, c2);
+ SkTDArray<double> ts1;
+ // OPTIMIZE: if c1 == c2, call once (happens when detecting self-intersection)
+ cubic_to_quadratics(c1, calcPrecision(c1) * precisionScale, ts1);
+ SkTDArray<double> ts2;
+ cubic_to_quadratics(c2, calcPrecision(c2) * precisionScale, ts2);
+ double t1Start = t1s;
+ int ts1Count = ts1.count();
+ for (int i1 = 0; i1 <= ts1Count; ++i1) {
+ const double tEnd1 = i1 < ts1Count ? ts1[i1] : 1;
+ const double t1 = t1s + (t1e - t1s) * tEnd1;
+ Quadratic s1;
+ int o1 = quadPart(cubic1, t1Start, t1, s1);
+ double t2Start = t2s;
+ int ts2Count = ts2.count();
+ for (int i2 = 0; i2 <= ts2Count; ++i2) {
+ const double tEnd2 = i2 < ts2Count ? ts2[i2] : 1;
+ const double t2 = t2s + (t2e - t2s) * tEnd2;
+ if (cubic1 == cubic2 && t1Start >= t2Start) {
+ t2Start = t2;
+ continue;
+ }
+ Quadratic s2;
+ int o2 = quadPart(cubic2, t2Start, t2, s2);
+ #if ONE_OFF_DEBUG
+ char tab[] = " ";
+ if (tLimits1[0][0] >= t1Start && tLimits1[0][1] <= t1
+ && tLimits1[1][0] >= t2Start && tLimits1[1][1] <= t2) {
+ Cubic cSub1, cSub2;
+ sub_divide(cubic1, t1Start, t1, cSub1);
+ sub_divide(cubic2, t2Start, t2, cSub2);
+ SkDebugf("%.*s %s t1=(%1.9g,%1.9g) t2=(%1.9g,%1.9g)", i.depth()*2, tab, __FUNCTION__,
+ t1Start, t1, t2Start, t2);
+ Intersections xlocals;
+ intersectWithOrder(s1, o1, s2, o2, xlocals);
+ SkDebugf(" xlocals.fUsed=%d\n", xlocals.used());
+ }
+ #endif
+ Intersections locals;
+ intersectWithOrder(s1, o1, s2, o2, locals);
+ double coStart[2] = { -1 };
+ _Point coPoint;
+ int tCount = locals.used();
+ for (int tIdx = 0; tIdx < tCount; ++tIdx) {
+ double to1 = t1Start + (t1 - t1Start) * locals.fT[0][tIdx];
+ double to2 = t2Start + (t2 - t2Start) * locals.fT[1][tIdx];
+ // if the computed t is not sufficiently precise, iterate
+ _Point p1 = xy_at_t(cubic1, to1);
+ _Point p2 = xy_at_t(cubic2, to2);
+ if (p1.approximatelyEqual(p2)) {
+ if (locals.fIsCoincident[0] & 1 << tIdx) {
+ if (coStart[0] < 0) {
+ coStart[0] = to1;
+ coStart[1] = to2;
+ coPoint = p1;
+ } else {
+ i.insertCoincidentPair(coStart[0], to1, coStart[1], to2, coPoint, p1);
+ coStart[0] = -1;
+ }
+ result = true;
+ } else if (cubic1 != cubic2 || !approximately_equal(to1, to2)) {
+ if (i.swapped()) { // FIXME: insert should respect swap
+ i.insert(to2, to1, p1);
+ } else {
+ i.insert(to1, to2, p1);
+ }
+ result = true;
+ }
+ } else {
+ double offset = precisionScale / 16; // FIME: const is arbitrary -- test & refine
+#if 1
+ double c1Bottom = tIdx == 0 ? 0 :
+ (t1Start + (t1 - t1Start) * locals.fT[0][tIdx - 1] + to1) / 2;
+ double c1Min = SkTMax(c1Bottom, to1 - offset);
+ double c1Top = tIdx == tCount - 1 ? 1 :
+ (t1Start + (t1 - t1Start) * locals.fT[0][tIdx + 1] + to1) / 2;
+ double c1Max = SkTMin(c1Top, to1 + offset);
+ double c2Min = SkTMax(0., to2 - offset);
+ double c2Max = SkTMin(1., to2 + offset);
+ #if ONE_OFF_DEBUG
+ SkDebugf("%.*s %s 1 contains1=%d/%d contains2=%d/%d\n", i.depth()*2, tab, __FUNCTION__,
+ c1Min <= tLimits1[0][1] && tLimits1[0][0] <= c1Max
+ && c2Min <= tLimits1[1][1] && tLimits1[1][0] <= c2Max,
+ to1 - offset <= tLimits1[0][1] && tLimits1[0][0] <= to1 + offset
+ && to2 - offset <= tLimits1[1][1] && tLimits1[1][0] <= to2 + offset,
+ c1Min <= tLimits2[0][1] && tLimits2[0][0] <= c1Max
+ && c2Min <= tLimits2[1][1] && tLimits2[1][0] <= c2Max,
+ to1 - offset <= tLimits2[0][1] && tLimits2[0][0] <= to1 + offset
+ && to2 - offset <= tLimits2[1][1] && tLimits2[1][0] <= to2 + offset);
+ SkDebugf("%.*s %s 1 c1Bottom=%1.9g c1Top=%1.9g c2Bottom=%1.9g c2Top=%1.9g"
+ " 1-o=%1.9g 1+o=%1.9g 2-o=%1.9g 2+o=%1.9g offset=%1.9g\n",
+ i.depth()*2, tab, __FUNCTION__, c1Bottom, c1Top, 0., 1.,
+ to1 - offset, to1 + offset, to2 - offset, to2 + offset, offset);
+ SkDebugf("%.*s %s 1 to1=%1.9g to2=%1.9g c1Min=%1.9g c1Max=%1.9g c2Min=%1.9g"
+ " c2Max=%1.9g\n", i.depth()*2, tab, __FUNCTION__, to1, to2, c1Min, c1Max, c2Min, c2Max);
+ #endif
+ intersect3(cubic1, c1Min, c1Max, cubic2, c2Min, c2Max, offset, i);
+ #if ONE_OFF_DEBUG
+ SkDebugf("%.*s %s 1 i.used=%d t=%1.9g\n", i.depth()*2, tab, __FUNCTION__, i.used(),
+ i.used() > 0 ? i.fT[0][i.used() - 1] : -1);
+ #endif
+ if (tCount > 1) {
+ c1Min = SkTMax(0., to1 - offset);
+ c1Max = SkTMin(1., to1 + offset);
+ double c2Bottom = tIdx == 0 ? to2 :
+ (t2Start + (t2 - t2Start) * locals.fT[1][tIdx - 1] + to2) / 2;
+ double c2Top = tIdx == tCount - 1 ? to2 :
+ (t2Start + (t2 - t2Start) * locals.fT[1][tIdx + 1] + to2) / 2;
+ if (c2Bottom > c2Top) {
+ SkTSwap(c2Bottom, c2Top);
+ }
+ if (c2Bottom == to2) {
+ c2Bottom = 0;
+ }
+ if (c2Top == to2) {
+ c2Top = 1;
+ }
+ c2Min = SkTMax(c2Bottom, to2 - offset);
+ c2Max = SkTMin(c2Top, to2 + offset);
+ #if ONE_OFF_DEBUG
+ SkDebugf("%.*s %s 2 contains1=%d/%d contains2=%d/%d\n", i.depth()*2, tab, __FUNCTION__,
+ c1Min <= tLimits1[0][1] && tLimits1[0][0] <= c1Max
+ && c2Min <= tLimits1[1][1] && tLimits1[1][0] <= c2Max,
+ to1 - offset <= tLimits1[0][1] && tLimits1[0][0] <= to1 + offset
+ && to2 - offset <= tLimits1[1][1] && tLimits1[1][0] <= to2 + offset,
+ c1Min <= tLimits2[0][1] && tLimits2[0][0] <= c1Max
+ && c2Min <= tLimits2[1][1] && tLimits2[1][0] <= c2Max,
+ to1 - offset <= tLimits2[0][1] && tLimits2[0][0] <= to1 + offset
+ && to2 - offset <= tLimits2[1][1] && tLimits2[1][0] <= to2 + offset);
+ SkDebugf("%.*s %s 2 c1Bottom=%1.9g c1Top=%1.9g c2Bottom=%1.9g c2Top=%1.9g"
+ " 1-o=%1.9g 1+o=%1.9g 2-o=%1.9g 2+o=%1.9g offset=%1.9g\n",
+ i.depth()*2, tab, __FUNCTION__, 0., 1., c2Bottom, c2Top,
+ to1 - offset, to1 + offset, to2 - offset, to2 + offset, offset);
+ SkDebugf("%.*s %s 2 to1=%1.9g to2=%1.9g c1Min=%1.9g c1Max=%1.9g c2Min=%1.9g"
+ " c2Max=%1.9g\n", i.depth()*2, tab, __FUNCTION__, to1, to2, c1Min, c1Max, c2Min, c2Max);
+ #endif
+ intersect3(cubic1, c1Min, c1Max, cubic2, c2Min, c2Max, offset, i);
+ #if ONE_OFF_DEBUG
+ SkDebugf("%.*s %s 2 i.used=%d t=%1.9g\n", i.depth()*2, tab, __FUNCTION__, i.used(),
+ i.used() > 0 ? i.fT[0][i.used() - 1] : -1);
+ #endif
+ c1Min = SkTMax(c1Bottom, to1 - offset);
+ c1Max = SkTMin(c1Top, to1 + offset);
+ #if ONE_OFF_DEBUG
+ SkDebugf("%.*s %s 3 contains1=%d/%d contains2=%d/%d\n", i.depth()*2, tab, __FUNCTION__,
+ c1Min <= tLimits1[0][1] && tLimits1[0][0] <= c1Max
+ && c2Min <= tLimits1[1][1] && tLimits1[1][0] <= c2Max,
+ to1 - offset <= tLimits1[0][1] && tLimits1[0][0] <= to1 + offset
+ && to2 - offset <= tLimits1[1][1] && tLimits1[1][0] <= to2 + offset,
+ c1Min <= tLimits2[0][1] && tLimits2[0][0] <= c1Max
+ && c2Min <= tLimits2[1][1] && tLimits2[1][0] <= c2Max,
+ to1 - offset <= tLimits2[0][1] && tLimits2[0][0] <= to1 + offset
+ && to2 - offset <= tLimits2[1][1] && tLimits2[1][0] <= to2 + offset);
+ SkDebugf("%.*s %s 3 c1Bottom=%1.9g c1Top=%1.9g c2Bottom=%1.9g c2Top=%1.9g"
+ " 1-o=%1.9g 1+o=%1.9g 2-o=%1.9g 2+o=%1.9g offset=%1.9g\n",
+ i.depth()*2, tab, __FUNCTION__, 0., 1., c2Bottom, c2Top,
+ to1 - offset, to1 + offset, to2 - offset, to2 + offset, offset);
+ SkDebugf("%.*s %s 3 to1=%1.9g to2=%1.9g c1Min=%1.9g c1Max=%1.9g c2Min=%1.9g"
+ " c2Max=%1.9g\n", i.depth()*2, tab, __FUNCTION__, to1, to2, c1Min, c1Max, c2Min, c2Max);
+ #endif
+ intersect3(cubic1, c1Min, c1Max, cubic2, c2Min, c2Max, offset, i);
+ #if ONE_OFF_DEBUG
+ SkDebugf("%.*s %s 3 i.used=%d t=%1.9g\n", i.depth()*2, tab, __FUNCTION__, i.used(),
+ i.used() > 0 ? i.fT[0][i.used() - 1] : -1);
+ #endif
+ }
+#else
+ double c1Bottom = tIdx == 0 ? 0 :
+ (t1Start + (t1 - t1Start) * locals.fT[0][tIdx - 1] + to1) / 2;
+ double c1Min = SkTMax(c1Bottom, to1 - offset);
+ double c1Top = tIdx == tCount - 1 ? 1 :
+ (t1Start + (t1 - t1Start) * locals.fT[0][tIdx + 1] + to1) / 2;
+ double c1Max = SkTMin(c1Top, to1 + offset);
+ double c2Bottom = tIdx == 0 ? to2 :
+ (t2Start + (t2 - t2Start) * locals.fT[1][tIdx - 1] + to2) / 2;
+ double c2Top = tIdx == tCount - 1 ? to2 :
+ (t2Start + (t2 - t2Start) * locals.fT[1][tIdx + 1] + to2) / 2;
+ if (c2Bottom > c2Top) {
+ SkTSwap(c2Bottom, c2Top);
+ }
+ if (c2Bottom == to2) {
+ c2Bottom = 0;
+ }
+ if (c2Top == to2) {
+ c2Top = 1;
+ }
+ double c2Min = SkTMax(c2Bottom, to2 - offset);
+ double c2Max = SkTMin(c2Top, to2 + offset);
+ #if ONE_OFF_DEBUG
+ SkDebugf("%s contains1=%d/%d contains2=%d/%d\n", __FUNCTION__,
+ c1Min <= 0.210357794 && 0.210357794 <= c1Max
+ && c2Min <= 0.223476406 && 0.223476406 <= c2Max,
+ to1 - offset <= 0.210357794 && 0.210357794 <= to1 + offset
+ && to2 - offset <= 0.223476406 && 0.223476406 <= to2 + offset,
+ c1Min <= 0.211324707 && 0.211324707 <= c1Max
+ && c2Min <= 0.211327209 && 0.211327209 <= c2Max,
+ to1 - offset <= 0.211324707 && 0.211324707 <= to1 + offset
+ && to2 - offset <= 0.211327209 && 0.211327209 <= to2 + offset);
+ SkDebugf("%s c1Bottom=%1.9g c1Top=%1.9g c2Bottom=%1.9g c2Top=%1.9g"
+ " 1-o=%1.9g 1+o=%1.9g 2-o=%1.9g 2+o=%1.9g offset=%1.9g\n",
+ __FUNCTION__, c1Bottom, c1Top, c2Bottom, c2Top,
+ to1 - offset, to1 + offset, to2 - offset, to2 + offset, offset);
+ SkDebugf("%s to1=%1.9g to2=%1.9g c1Min=%1.9g c1Max=%1.9g c2Min=%1.9g"
+ " c2Max=%1.9g\n", __FUNCTION__, to1, to2, c1Min, c1Max, c2Min, c2Max);
+ #endif
+#endif
+ intersect3(cubic1, c1Min, c1Max, cubic2, c2Min, c2Max, offset, i);
+ // TODO: if no intersection is found, either quadratics intersected where
+ // cubics did not, or the intersection was missed. In the former case, expect
+ // the quadratics to be nearly parallel at the point of intersection, and check
+ // for that.
+ }
+ }
+ SkASSERT(coStart[0] == -1);
+ t2Start = t2;
+ }
+ t1Start = t1;
+ }
+ i.downDepth();
+ return result;
+}
+
+#if 0
+#define LINE_FRACTION (1.0 / gPrecisionUnit)
+#else
+#define LINE_FRACTION 0.1
+#endif
+
+// intersect the end of the cubic with the other. Try lines from the end to control and opposite
+// end to determine range of t on opposite cubic.
+static bool intersectEnd(const Cubic& cubic1, bool start, const Cubic& cubic2, const _Rect& bounds2,
+ Intersections& i) {
+ // bool selfIntersect = cubic1 == cubic2;
+ _Line line;
+ int t1Index = start ? 0 : 3;
+ line[0] = cubic1[t1Index];
+ // don't bother if the two cubics are connnected
+#if 0
+ if (!selfIntersect && (line[0].approximatelyEqual(cubic2[0])
+ || line[0].approximatelyEqual(cubic2[3]))) {
+ return false;
+ }
+#endif
+ bool result = false;
+ SkTDArray<double> tVals; // OPTIMIZE: replace with hard-sized array
+ for (int index = 0; index < 4; ++index) {
+ if (index == t1Index) {
+ continue;
+ }
+ _Vector dxy1 = cubic1[index] - line[0];
+ dxy1 /= gPrecisionUnit;
+ line[1] = line[0] + dxy1;
+ _Rect lineBounds;
+ lineBounds.setBounds(line);
+ if (!bounds2.intersects(lineBounds)) {
+ continue;
+ }
+ Intersections local;
+ if (!intersect(cubic2, line, local)) {
+ continue;
+ }
+ for (int idx2 = 0; idx2 < local.used(); ++idx2) {
+ double foundT = local.fT[0][idx2];
+ if (approximately_less_than_zero(foundT)
+ || approximately_greater_than_one(foundT)) {
+ continue;
+ }
+ if (local.fPt[idx2].approximatelyEqual(line[0])) {
+ if (i.swapped()) { // FIXME: insert should respect swap
+ i.insert(foundT, start ? 0 : 1, line[0]);
+ } else {
+ i.insert(start ? 0 : 1, foundT, line[0]);
+ }
+ result = true;
+ } else {
+ *tVals.append() = local.fT[0][idx2];
+ }
+ }
+ }
+ if (tVals.count() == 0) {
+ return result;
+ }
+ QSort<double>(tVals.begin(), tVals.end() - 1);
+ double tMin1 = start ? 0 : 1 - LINE_FRACTION;
+ double tMax1 = start ? LINE_FRACTION : 1;
+ int tIdx = 0;
+ do {
+ int tLast = tIdx;
+ while (tLast + 1 < tVals.count() && roughly_equal(tVals[tLast + 1], tVals[tIdx])) {
+ ++tLast;
+ }
+ double tMin2 = SkTMax(tVals[tIdx] - LINE_FRACTION, 0.0);
+ double tMax2 = SkTMin(tVals[tLast] + LINE_FRACTION, 1.0);
+ int lastUsed = i.used();
+ result |= intersect3(cubic1, tMin1, tMax1, cubic2, tMin2, tMax2, 1, i);
+ if (lastUsed == i.used()) {
+ tMin2 = SkTMax(tVals[tIdx] - (1.0 / gPrecisionUnit), 0.0);
+ tMax2 = SkTMin(tVals[tLast] + (1.0 / gPrecisionUnit), 1.0);
+ result |= intersect3(cubic1, tMin1, tMax1, cubic2, tMin2, tMax2, 1, i);
+ }
+ tIdx = tLast + 1;
+ } while (tIdx < tVals.count());
+ return result;
+}
+
+const double CLOSE_ENOUGH = 0.001;
+
+static bool closeStart(const Cubic& cubic, int cubicIndex, Intersections& i, _Point& pt) {
+ if (i.fT[cubicIndex][0] != 0 || i.fT[cubicIndex][1] > CLOSE_ENOUGH) {
+ return false;
+ }
+ pt = xy_at_t(cubic, (i.fT[cubicIndex][0] + i.fT[cubicIndex][1]) / 2);
+ return true;
+}
+
+static bool closeEnd(const Cubic& cubic, int cubicIndex, Intersections& i, _Point& pt) {
+ int last = i.used() - 1;
+ if (i.fT[cubicIndex][last] != 1 || i.fT[cubicIndex][last - 1] < 1 - CLOSE_ENOUGH) {
+ return false;
+ }
+ pt = xy_at_t(cubic, (i.fT[cubicIndex][last] + i.fT[cubicIndex][last - 1]) / 2);
+ return true;
+}
+
+bool intersect3(const Cubic& c1, const Cubic& c2, Intersections& i) {
+ bool result = intersect3(c1, 0, 1, c2, 0, 1, 1, i);
+ // FIXME: pass in cached bounds from caller
+ _Rect c1Bounds, c2Bounds;
+ c1Bounds.setBounds(c1); // OPTIMIZE use setRawBounds ?
+ c2Bounds.setBounds(c2);
+ result |= intersectEnd(c1, false, c2, c2Bounds, i);
+ result |= intersectEnd(c1, true, c2, c2Bounds, i);
+ bool selfIntersect = c1 == c2;
+ if (!selfIntersect) {
+ i.swap();
+ result |= intersectEnd(c2, false, c1, c1Bounds, i);
+ result |= intersectEnd(c2, true, c1, c1Bounds, i);
+ i.swap();
+ }
+ // If an end point and a second point very close to the end is returned, the second
+ // point may have been detected because the approximate quads
+ // intersected at the end and close to it. Verify that the second point is valid.
+ if (i.used() <= 1 || i.coincidentUsed()) {
+ return result;
+ }
+ _Point pt[2];
+ if (closeStart(c1, 0, i, pt[0]) && closeStart(c2, 1, i, pt[1])
+ && pt[0].approximatelyEqual(pt[1])) {
+ i.removeOne(1);
+ }
+ if (closeEnd(c1, 0, i, pt[0]) && closeEnd(c2, 1, i, pt[1])
+ && pt[0].approximatelyEqual(pt[1])) {
+ i.removeOne(i.used() - 2);
+ }
+ return result;
+}
+
+// Up promote the quad to a cubic.
+// OPTIMIZATION If this is a common use case, optimize by duplicating
+// the intersect 3 loop to avoid the promotion / demotion code
+int intersect(const Cubic& cubic, const Quadratic& quad, Intersections& i) {
+ Cubic up;
+ toCubic(quad, up);
+ (void) intersect3(cubic, up, i);
+ return i.used();
+}
+
+/* http://www.ag.jku.at/compass/compasssample.pdf
+( Self-Intersection Problems and Approximate Implicitization by Jan B. Thomassen
+Centre of Mathematics for Applications, University of Oslo http://www.cma.uio.no janbth@math.uio.no
+SINTEF Applied Mathematics http://www.sintef.no )
+describes a method to find the self intersection of a cubic by taking the gradient of the implicit
+form dotted with the normal, and solving for the roots. My math foo is too poor to implement this.*/
+
+int intersect(const Cubic& c, Intersections& i) {
+ // check to see if x or y end points are the extrema. Are other quick rejects possible?
+ if (ends_are_extrema_in_x_or_y(c)) {
+ return false;
+ }
+ (void) intersect3(c, c, i);
+ if (i.used() > 0) {
+ SkASSERT(i.used() == 1);
+ if (i.fT[0][0] > i.fT[1][0]) {
+ SkTSwap(i.fT[0][0], i.fT[1][0]);
+ }
+ }
+ return i.used();
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicIntersection_Test.cpp b/chromium/third_party/skia/experimental/Intersection/CubicIntersection_Test.cpp
new file mode 100644
index 00000000000..ffaa933175b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicIntersection_Test.cpp
@@ -0,0 +1,778 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "CurveUtilities.h"
+#include "CubicIntersection_TestData.h"
+#include "Intersection_Tests.h"
+#include "Intersections.h"
+#include "TestUtilities.h"
+
+#define SHOW_ORIGINAL 1
+
+const int firstCubicIntersectionTest = 9;
+
+static void standardTestCases() {
+ for (size_t index = firstCubicIntersectionTest; index < tests_count; ++index) {
+ const Cubic& cubic1 = tests[index][0];
+ const Cubic& cubic2 = tests[index][1];
+ Cubic reduce1, reduce2;
+ int order1 = reduceOrder(cubic1, reduce1, kReduceOrder_NoQuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ int order2 = reduceOrder(cubic2, reduce2, kReduceOrder_NoQuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ if (order1 < 4) {
+ printf("%s [%d] cubic1 order=%d\n", __FUNCTION__, (int) index, order1);
+ continue;
+ }
+ if (order2 < 4) {
+ printf("%s [%d] cubic2 order=%d\n", __FUNCTION__, (int) index, order2);
+ continue;
+ }
+ if (implicit_matches(reduce1, reduce2)) {
+ printf("%s [%d] coincident\n", __FUNCTION__, (int) index);
+ continue;
+ }
+ Intersections tIntersections;
+ intersect(reduce1, reduce2, tIntersections);
+ if (!tIntersections.intersected()) {
+ printf("%s [%d] no intersection\n", __FUNCTION__, (int) index);
+ continue;
+ }
+ for (int pt = 0; pt < tIntersections.used(); ++pt) {
+ double tt1 = tIntersections.fT[0][pt];
+ double tx1, ty1;
+ xy_at_t(cubic1, tt1, tx1, ty1);
+ double tt2 = tIntersections.fT[1][pt];
+ double tx2, ty2;
+ xy_at_t(cubic2, tt2, tx2, ty2);
+ if (!AlmostEqualUlps(tx1, tx2)) {
+ printf("%s [%d,%d] x!= t1=%g (%g,%g) t2=%g (%g,%g)\n",
+ __FUNCTION__, (int)index, pt, tt1, tx1, ty1, tt2, tx2, ty2);
+ }
+ if (!AlmostEqualUlps(ty1, ty2)) {
+ printf("%s [%d,%d] y!= t1=%g (%g,%g) t2=%g (%g,%g)\n",
+ __FUNCTION__, (int)index, pt, tt1, tx1, ty1, tt2, tx2, ty2);
+ }
+ }
+ }
+}
+
+static const Cubic testSet[] = {
+{{67.426548091427676, 37.993772624988935}, {23.483695892376684, 90.476863174921306}, {35.597065061143162, 79.872482633158796}, {75.38634169631932, 18.244890038969412}},
+{{67.4265481, 37.9937726}, {23.4836959, 90.4768632}, {35.5970651, 79.8724826}, {75.3863417, 18.24489}},
+
+{{0, 0}, {0, 1}, {1, 1}, {1, 0}},
+{{1, 0}, {0, 0}, {0, 1}, {1, 1}},
+
+{{0,1}, {4,5}, {1,0}, {5,3}},
+{{0,1}, {3,5}, {1,0}, {5,4}},
+
+{{0, 1}, {1, 6}, {1, 0}, {1, 0}},
+{{0, 1}, {0, 1}, {1, 0}, {6, 1}},
+
+{{0,1}, {3,4}, {1,0}, {5,1}},
+{{0,1}, {1,5}, {1,0}, {4,3}},
+
+{{0,1}, {1,2}, {1,0}, {6,1}},
+{{0,1}, {1,6}, {1,0}, {2,1}},
+
+{{0,1}, {0,5}, {1,0}, {4,0}},
+{{0,1}, {0,4}, {1,0}, {5,0}},
+
+{{0,1}, {3,4}, {1,0}, {3,0}},
+{{0,1}, {0,3}, {1,0}, {4,3}},
+
+{{0, 0}, {1, 2}, {3, 4}, {4, 4}},
+{{0, 0}, {1, 2}, {3, 4}, {4, 4}},
+{{4, 4}, {3, 4}, {1, 2}, {0, 0}},
+
+{{0,1}, {2,3}, {1,0}, {1,0}},
+{{0,1}, {0,1}, {1,0}, {3,2}},
+
+{{0,2}, {0,1}, {1,0}, {1,0}},
+{{0,1}, {0,1}, {2,0}, {1,0}},
+
+{{0, 1}, {0, 2}, {1, 0}, {1, 0}},
+{{0, 1}, {0, 1}, {1, 0}, {2, 0}},
+
+{{0, 1}, {1, 6}, {1, 0}, {2, 0}},
+{{0, 1}, {0, 2}, {1, 0}, {6, 1}},
+
+{{0, 1}, {5, 6}, {1, 0}, {1, 0}},
+{{0, 1}, {0, 1}, {1, 0}, {6, 5}},
+
+{{95.837747722788592, 45.025976907939643}, {16.564570095652982, 0.72959763963222402}, {63.209855865319199, 68.047528419665767}, {57.640240647662544, 59.524565264361243}},
+{{51.593891741518817, 38.53849970667553}, {62.34752929878772, 74.924924725166022}, {74.810149322641152, 34.17966562983564}, {29.368398119401373, 94.66719277886078}},
+
+{{39.765160968417838, 33.060396198677083}, {5.1922921581157908, 66.854301452103215}, {31.619281802149157, 25.269248720849514}, {81.541621071073038, 70.025341524754353}},
+{{46.078911165743556, 48.259962651999651}, {20.24450549867214, 49.403916182650214}, {0.26325131778756683, 24.46489805563581}, {15.915006546264051, 83.515023059917155}},
+
+{{65.454505973241524, 93.881892270353575}, {45.867360264932437, 92.723972719499827}, {2.1464054482739447, 74.636369140183717}, {33.774068594804994, 40.770872887582925}},
+{{72.963387832494163, 95.659300729473728}, {11.809496633619768, 82.209921247423594}, {13.456139067865974, 57.329313623406605}, {36.060621606214262, 70.867335643091849}},
+
+{{32.484981432782945, 75.082940782924624}, {42.467313093350882, 48.131159948246157}, {3.5963115764764657, 43.208665839959245}, {79.442476890721579, 89.709102357602262}},
+{{18.98573861410177, 93.308887208490106}, {40.405250173250792, 91.039661826118675}, {8.0467721950480584, 42.100282172719147}, {40.883324221187891, 26.030185504830527}},
+
+{{7.5374809128872498, 82.441702896003477}, {22.444346930107265, 22.138854312775123}, {66.76091829629658, 50.753805856571446}, {78.193478508942519, 97.7932997968948}},
+{{97.700573130371311, 53.53260215070685}, {87.72443481149358, 84.575876772671876}, {19.215031396232092, 47.032676472809484}, {11.989686410869325, 10.659507480757082}},
+
+{{26.192053931854691, 9.8504326817814416}, {10.174241480498686, 98.476562741434464}, {21.177712558385782, 33.814968789841501}, {75.329030899018534, 55.02231980442177}},
+{{56.222082700683771, 24.54395039218662}, {95.589995289030483, 81.050822735322086}, {28.180450866082897, 28.837706255185282}, {60.128952916771617, 87.311672180570511}},
+
+{{42.449716172390481, 52.379709366885805}, {27.896043159019225, 48.797373636065686}, {92.770268299044233, 89.899302036454571}, {12.102066544863426, 99.43241951960718}},
+{{45.77532924980639, 45.958701495993274}, {37.458701356062065, 68.393691335056758}, {37.569326692060258, 27.673713456687381}, {60.674866037757539, 62.47349659096146}},
+
+{{67.426548091427676, 37.993772624988935}, {23.483695892376684, 90.476863174921306}, {35.597065061143162, 79.872482633158796}, {75.38634169631932, 18.244890038969412}},
+{{61.336508189019057, 82.693132843213675}, {44.639380902349664, 54.074825790745592}, {16.815615499771951, 20.049704667203923}, {41.866884958868326, 56.735503699973002}},
+
+{{67.4265481, 37.9937726}, {23.4836959, 90.4768632}, {35.5970651, 79.8724826}, {75.3863417, 18.24489}},
+{{61.3365082, 82.6931328}, {44.6393809, 54.0748258}, {16.8156155, 20.0497047}, {41.866885, 56.7355037}},
+
+{{18.1312339, 31.6473732}, {95.5711034, 63.5350219}, {92.3283165, 62.0158945}, {18.5656052, 32.1268808}},
+{{97.402018, 35.7169972}, {33.1127443, 25.8935163}, {1.13970027, 54.9424981}, {56.4860195, 60.529264}},
+};
+
+const size_t testSetCount = sizeof(testSet) / sizeof(testSet[0]);
+
+static const Cubic newTestSet[] = {
+{{1,3}, {5,6}, {5,3}, {5,4}},
+{{3,5}, {4,5}, {3,1}, {6,5}},
+
+{{0,5}, {0,5}, {5,4}, {6,4}},
+{{4,5}, {4,6}, {5,0}, {5,0}},
+
+{{0,4}, {1,3}, {5,4}, {4,2}},
+{{4,5}, {2,4}, {4,0}, {3,1}},
+
+{{0,2}, {1,5}, {3,2}, {4,1}},
+{{2,3}, {1,4}, {2,0}, {5,1}},
+
+{{0,2}, {2,3}, {5,1}, {3,2}},
+{{1,5}, {2,3}, {2,0}, {3,2}},
+
+{{2,6}, {4,5}, {1,0}, {6,1}},
+{{0,1}, {1,6}, {6,2}, {5,4}},
+
+{{0,1}, {1,2}, {6,5}, {5,4}},
+{{5,6}, {4,5}, {1,0}, {2,1}},
+
+{{2.5119999999999996, 1.5710000000000002}, {2.6399999999999983, 1.6599999999999997}, {2.8000000000000007, 1.8000000000000003}, {3, 2}},
+{{2.4181876227114887, 1.9849772580462195}, {2.8269904869227211, 2.009330650246834}, {3.2004679292461624, 1.9942047174679169}, {3.4986199496818058, 2.0035994597094731}},
+
+{{2,3}, {1,4}, {1,0}, {6,0}},
+{{0,1}, {0,6}, {3,2}, {4,1}},
+
+{{0,2}, {1,5}, {1,0}, {6,1}},
+{{0,1}, {1,6}, {2,0}, {5,1}},
+
+{{0,1}, {1,5}, {2,1}, {4,0}},
+{{1,2}, {0,4}, {1,0}, {5,1}},
+
+{{0,1}, {3,5}, {2,1}, {3,1}},
+{{1,2}, {1,3}, {1,0}, {5,3}},
+
+{{0,1}, {2,5}, {6,0}, {5,3}},
+{{0,6}, {3,5}, {1,0}, {5,2}},
+
+{{0,1}, {3,6}, {1,0}, {5,2}},
+{{0,1}, {2,5}, {1,0}, {6,3}},
+
+{{1,2},{5,6},{1,0},{1,0}},
+{{0,1},{0,1},{2,1},{6,5}},
+
+{{0,6},{1,2},{1,0},{1,0}},
+{{0,1},{0,1},{6,0},{2,1}},
+
+{{0,2},{0,1},{3,0},{1,0}},
+{{0,3},{0,1},{2,0},{1,0}},
+};
+
+const size_t newTestSetCount = sizeof(newTestSet) / sizeof(newTestSet[0]);
+
+#if 0
+static void oneOff(const Cubic& cubic1, const Cubic& cubic2) {
+ SkTDArray<Quadratic> quads1;
+ cubic_to_quadratics(cubic1, calcPrecision(cubic1), quads1);
+#if SHOW_ORIGINAL
+ SkDebugf("computed quadratics given\n");
+ SkDebugf(" {{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}}, {%1.9g,%1.9g}},\n",
+ cubic1[0].x, cubic1[0].y, cubic1[1].x, cubic1[1].y,
+ cubic1[2].x, cubic1[2].y, cubic1[3].x, cubic1[3].y));
+ SkDebugf(" {{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}}, {%1.9g,%1.9g}},\n",
+ cubic2[0].x, cubic2[0].y, cubic2[1].x, cubic2[1].y,
+ cubic2[2].x, cubic2[2].y, cubic2[3].x, cubic2[3].y));
+#endif
+#if ONE_OFF_DEBUG
+ SkDebugf("computed quadratics set 1\n");
+ for (int index = 0; index < quads1.count(); ++index) {
+ const Quadratic& q = quads1[index];
+ SkDebugf(" {{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}},\n", q[0].x, q[0].y,
+ q[1].x, q[1].y, q[2].x, q[2].y);
+ }
+#endif
+ SkTDArray<Quadratic> quads2;
+ cubic_to_quadratics(cubic2, calcPrecision(cubic2), quads2);
+#if ONE_OFF_DEBUG
+ SkDebugf("computed quadratics set 2\n");
+ for (int index = 0; index < quads2.count(); ++index) {
+ const Quadratic& q = quads2[index];
+ SkDebugf(" {{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}},\n", q[0].x, q[0].y,
+ q[1].x, q[1].y, q[2].x, q[2].y);
+ }
+#endif
+ Intersections intersections2, intersections3;
+ intersect2(cubic1, cubic2, intersections2);
+ intersect3(cubic1, cubic2, intersections3);
+ int pt1, pt2, pt3;
+ bool found;
+ double tt1, tt2, last = -1;
+ _Point xy1, xy2;
+ for (pt1 = 0; pt1 < intersections2.used(); ++pt1) {
+ tt1 = intersections2.fT[0][pt1];
+ SkASSERT(!approximately_equal(last, tt1));
+ last = tt1;
+ xy_at_t(cubic1, tt1, xy1.x, xy1.y);
+ pt2 = intersections2.fFlip ? intersections2.used() - pt1 - 1 : pt1;
+ tt2 = intersections2.fT[1][pt2];
+ xy_at_t(cubic2, tt2, xy2.x, xy2.y);
+#if ONE_OFF_DEBUG
+ SkDebugf("%s t1=%1.9g (%1.9g, %1.9g) (%1.9g, %1.9g) (%1.9g, %1.9g) t2=%1.9g\n",
+ __FUNCTION__, tt1, xy1.x, xy1.y, intersections2.fPt[pt1].x,
+ intersections2.fPt[pt1].y, xy2.x, xy2.y, tt2);
+#endif
+ SkASSERT(xy1.approximatelyEqual(xy2));
+#if SK_DEBUG
+ found = false;
+ for (pt3 = 0; pt3 < intersections3.used(); ++pt3) {
+ if (roughly_equal(tt1, intersections3.fT[0][pt3])) {
+ found = true;
+ break;
+ }
+ }
+ SkASSERT(found);
+#endif
+ }
+ last = -1;
+ for (pt3 = 0; pt3 < intersections3.used(); ++pt3) {
+ found = false;
+ double tt3 = intersections3.fT[0][pt3];
+ SkASSERT(!approximately_equal(last, tt3));
+ last = tt3;
+ for (pt1 = 0; pt1 < intersections2.used(); ++pt1) {
+ if (approximately_equal(tt3, intersections2.fT[0][pt1])) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ tt1 = intersections3.fT[0][pt3];
+ xy_at_t(cubic1, tt1, xy1.x, xy1.y);
+ pt2 = intersections3.fFlip ? intersections3.used() - pt3 - 1 : pt3;
+ tt2 = intersections3.fT[1][pt2];
+ xy_at_t(cubic2, tt2, xy2.x, xy2.y);
+ #if ONE_OFF_DEBUG
+ SkDebugf("%s t1=%1.9g (%1.9g, %1.9g) (%1.9g, %1.9g) (%1.9g, %1.9g) t2=%1.9g\n",
+ __FUNCTION__, tt1, xy1.x, xy1.y, intersections3.fPt[pt1].x,
+ intersections3.fPt[pt1].y, xy2.x, xy2.y, tt2);
+ #endif
+ SkASSERT(xy1.approximatelyEqual(xy2));
+ SkDebugf("%s missing in intersect2\n", __FUNCTION__);
+ }
+ }
+}
+#endif
+
+static void oneOff3(const Cubic& cubic1, const Cubic& cubic2) {
+#if ONE_OFF_DEBUG
+ SkDebugf("computed quadratics given\n");
+ SkDebugf(" {{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}},\n",
+ cubic1[0].x, cubic1[0].y, cubic1[1].x, cubic1[1].y,
+ cubic1[2].x, cubic1[2].y, cubic1[3].x, cubic1[3].y);
+ SkDebugf(" {{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}},\n",
+ cubic2[0].x, cubic2[0].y, cubic2[1].x, cubic2[1].y,
+ cubic2[2].x, cubic2[2].y, cubic2[3].x, cubic2[3].y);
+#endif
+ SkTDArray<Quadratic> quads1;
+ cubic_to_quadratics(cubic1, calcPrecision(cubic1), quads1);
+#if ONE_OFF_DEBUG
+ SkDebugf("computed quadratics set 1\n");
+ for (int index = 0; index < quads1.count(); ++index) {
+ const Quadratic& q = quads1[index];
+ SkDebugf(" {{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}},\n", q[0].x, q[0].y,
+ q[1].x, q[1].y, q[2].x, q[2].y);
+ }
+#endif
+ SkTDArray<Quadratic> quads2;
+ cubic_to_quadratics(cubic2, calcPrecision(cubic2), quads2);
+#if ONE_OFF_DEBUG
+ SkDebugf("computed quadratics set 2\n");
+ for (int index = 0; index < quads2.count(); ++index) {
+ const Quadratic& q = quads2[index];
+ SkDebugf(" {{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}},\n", q[0].x, q[0].y,
+ q[1].x, q[1].y, q[2].x, q[2].y);
+ }
+#endif
+ Intersections intersections3;
+ intersect3(cubic1, cubic2, intersections3);
+ int pt2, pt3;
+ double tt1, tt2, last = -1;
+ _Point xy1, xy2;
+ for (pt3 = 0; pt3 < intersections3.used(); ++pt3) {
+ double tt3 = intersections3.fT[0][pt3];
+ // SkASSERT(!approximately_equal(last, tt3));
+ last = tt3;
+ tt1 = intersections3.fT[0][pt3];
+ xy_at_t(cubic1, tt1, xy1.x, xy1.y);
+ pt2 = intersections3.fFlip ? intersections3.used() - pt3 - 1 : pt3;
+ tt2 = intersections3.fT[1][pt2];
+ xy_at_t(cubic2, tt2, xy2.x, xy2.y);
+#if ONE_OFF_DEBUG
+ SkDebugf("%s t1=%1.9g (%1.9g, %1.9g) (%1.9g, %1.9g) (%1.9g, %1.9g) t2=%1.9g\n",
+ __FUNCTION__, tt1, xy1.x, xy1.y, intersections3.fPt[pt3].x,
+ intersections3.fPt[pt3].y, xy2.x, xy2.y, tt2);
+#endif
+ SkASSERT(xy1.approximatelyEqual(xy2));
+ }
+}
+
+#if 0
+static int fails[][2] = { {0, 23}, // fails in intersect2 recursing
+ {2, 7}, // answers differ, but neither is correct ('3' is closer)
+ {3, 26}, // fails in intersect2 recursing
+ {4, 9}, // fails in intersect2 recursing
+ {4, 10}, // fails in intersect2 recursing
+ {10, 17}, // fails in intersect2 recursing
+ {12, 14}, // loops indefinitely
+ {12, 21}, // fails in intersect2 recursing
+ {13, 21}, // fails in intersect2 recursing
+ {14, 21}, // fails in intersect2 recursing
+ {17, 25}, // fails in intersect2 recursing
+ {23, 25}, // fails in intersect2 recursing
+};
+
+static int failCount = sizeof(fails) / sizeof(fails[0]);
+#endif
+
+static void oneOff(int outer, int inner) {
+ const Cubic& cubic1 = testSet[outer];
+ const Cubic& cubic2 = testSet[inner];
+#if 0
+ bool failing = false;
+ for (int i = 0; i < failCount; ++i) {
+ if ((fails[i][0] == outer && fails[i][1] == inner)
+ || (fails[i][1] == outer && fails[i][0] == inner)) {
+ failing = true;
+ break;
+ }
+ }
+ if (!failing) {
+ oneOff(cubic1, cubic2);
+ } else {
+#endif
+ oneOff3(cubic1, cubic2);
+// }
+}
+
+void CubicIntersection_OneOffTest() {
+ oneOff(0, 1);
+}
+
+static void newOneOff(int outer, int inner) {
+ const Cubic& cubic1 = newTestSet[outer];
+ const Cubic& cubic2 = newTestSet[inner];
+ oneOff3(cubic1, cubic2);
+}
+
+void CubicIntersection_NewOneOffTest() {
+ newOneOff(0, 1);
+}
+
+static void oneOffTests() {
+ for (size_t outer = 0; outer < testSetCount - 1; ++outer) {
+ for (size_t inner = outer + 1; inner < testSetCount; ++inner) {
+ oneOff(outer, inner);
+ }
+ }
+}
+
+void CubicIntersection_OneOffTests() {
+ oneOffTests();
+}
+
+#define DEBUG_CRASH 0
+
+class CubicChopper {
+public:
+
+// only finds one intersection
+CubicChopper(const Cubic& c1, const Cubic& c2)
+ : cubic1(c1)
+ , cubic2(c2)
+ , depth(0) {
+}
+
+bool intersect(double minT1, double maxT1, double minT2, double maxT2) {
+ Cubic sub1, sub2;
+ // FIXME: carry last subdivide and reduceOrder result with cubic
+ sub_divide(cubic1, minT1, maxT1, sub1);
+ sub_divide(cubic2, minT2, maxT2, sub2);
+ Intersections i;
+ intersect3(sub1, sub2, i);
+ if (i.used() == 0) {
+ return false;
+ }
+ double x1, y1, x2, y2;
+ t1 = minT1 + i.fT[0][0] * (maxT1 - minT1);
+ t2 = minT2 + i.fT[1][0] * (maxT2 - minT2);
+ xy_at_t(cubic1, t1, x1, y1);
+ xy_at_t(cubic2, t2, x2, y2);
+ if (AlmostEqualUlps(x1, x2) && AlmostEqualUlps(y1, y2)) {
+ return true;
+ }
+ double half1 = (minT1 + maxT1) / 2;
+ double half2 = (minT2 + maxT2) / 2;
+ ++depth;
+ bool result;
+ if (depth & 1) {
+ result = intersect(minT1, half1, minT2, maxT2) || intersect(half1, maxT1, minT2, maxT2)
+ || intersect(minT1, maxT1, minT2, half2) || intersect(minT1, maxT1, half2, maxT2);
+ } else {
+ result = intersect(minT1, maxT1, minT2, half2) || intersect(minT1, maxT1, half2, maxT2)
+ || intersect(minT1, half1, minT2, maxT2) || intersect(half1, maxT1, minT2, maxT2);
+ }
+ --depth;
+ return result;
+}
+
+const Cubic& cubic1;
+const Cubic& cubic2;
+double t1;
+double t2;
+int depth;
+};
+
+#define TRY_OLD 0 // old way fails on test == 1
+
+void CubicIntersection_RandTestOld() {
+ srand(0);
+ const int tests = 1000000; // 10000000;
+ double largestFactor = DBL_MAX;
+ for (int test = 0; test < tests; ++test) {
+ Cubic cubic1, cubic2;
+ for (int i = 0; i < 4; ++i) {
+ cubic1[i].x = (double) rand() / RAND_MAX * 100;
+ cubic1[i].y = (double) rand() / RAND_MAX * 100;
+ cubic2[i].x = (double) rand() / RAND_MAX * 100;
+ cubic2[i].y = (double) rand() / RAND_MAX * 100;
+ }
+ if (test == 2513) { // the pair crosses three times, but the quadratic approximation
+ continue; // only sees one -- should be OK to ignore the other two?
+ }
+ if (test == 12932) { // this exposes a weakness when one cubic touches the other but
+ continue; // does not touch the quad approximation. Captured in qc.htm as cubic15
+ }
+ #if DEBUG_CRASH
+ char str[1024];
+ sprintf(str, "{{%1.9g, %1.9g}, {%1.9g, %1.9g}, {%1.9g, %1.9g}, {%1.9g, %1.9g}},\n"
+ "{{%1.9g, %1.9g}, {%1.9g, %1.9g}, {%1.9g, %1.9g}, {%1.9g, %1.9g}},\n",
+ cubic1[0].x, cubic1[0].y, cubic1[1].x, cubic1[1].y, cubic1[2].x, cubic1[2].y,
+ cubic1[3].x, cubic1[3].y,
+ cubic2[0].x, cubic2[0].y, cubic2[1].x, cubic2[1].y, cubic2[2].x, cubic2[2].y,
+ cubic2[3].x, cubic2[3].y);
+ #endif
+ _Rect rect1, rect2;
+ rect1.setBounds(cubic1);
+ rect2.setBounds(cubic2);
+ bool boundsIntersect = rect1.left <= rect2.right && rect2.left <= rect2.right
+ && rect1.top <= rect2.bottom && rect2.top <= rect1.bottom;
+ Intersections i1, i2;
+ #if TRY_OLD
+ bool oldIntersects = intersect(cubic1, cubic2, i1);
+ #else
+ bool oldIntersects = false;
+ #endif
+ if (test == -1) {
+ SkDebugf("ready...\n");
+ }
+ bool newIntersects = intersect3(cubic1, cubic2, i2);
+ if (!boundsIntersect && (oldIntersects || newIntersects)) {
+ #if DEBUG_CRASH
+ SkDebugf("%s %d unexpected intersection boundsIntersect=%d oldIntersects=%d"
+ " newIntersects=%d\n%s %s\n", __FUNCTION__, test, boundsIntersect,
+ oldIntersects, newIntersects, __FUNCTION__, str);
+ #endif
+ SkASSERT(0);
+ }
+ if (oldIntersects && !newIntersects) {
+ #if DEBUG_CRASH
+ SkDebugf("%s %d missing intersection oldIntersects=%d newIntersects=%d\n%s %s\n",
+ __FUNCTION__, test, oldIntersects, newIntersects, __FUNCTION__, str);
+ #endif
+ SkASSERT(0);
+ }
+ if (!oldIntersects && !newIntersects) {
+ continue;
+ }
+ if (i2.used() > 1) {
+ continue;
+ // just look at single intercepts for simplicity
+ }
+ Intersections self1, self2; // self-intersect checks
+ if (intersect(cubic1, self1)) {
+ continue;
+ }
+ if (intersect(cubic2, self2)) {
+ continue;
+ }
+ // binary search for range necessary to enclose real intersection
+ CubicChopper c(cubic1, cubic2);
+ bool result = c.intersect(0, 1, 0, 1);
+ if (!result) {
+ // FIXME: a failure here probably means that a core routine used by CubicChopper is failing
+ continue;
+ }
+ double delta1 = fabs(c.t1 - i2.fT[0][0]);
+ double delta2 = fabs(c.t2 - i2.fT[1][0]);
+ double calc1 = calcPrecision(cubic1);
+ double calc2 = calcPrecision(cubic2);
+ double factor1 = calc1 / delta1;
+ double factor2 = calc2 / delta2;
+ SkDebugf("%s %d calc1=%1.9g delta1=%1.9g factor1=%1.9g calc2=%1.9g delta2=%1.9g"
+ " factor2=%1.9g\n", __FUNCTION__, test,
+ calc1, delta1, factor1, calc2, delta2, factor2);
+ if (factor1 < largestFactor) {
+ SkDebugf("WE HAVE A WINNER! %1.9g\n", factor1);
+ #if DEBUG_CRASH
+ SkDebugf("%s\n", str);
+ #endif
+ oneOff3(cubic1, cubic2);
+ largestFactor = factor1;
+ }
+ if (factor2 < largestFactor) {
+ SkDebugf("WE HAVE A WINNER! %1.9g\n", factor2);
+ #if DEBUG_CRASH
+ SkDebugf("%s\n", str);
+ #endif
+ oneOff3(cubic1, cubic2);
+ largestFactor = factor2;
+ }
+ }
+}
+
+void CubicIntersection_RandTest() {
+ srand(0);
+ const int tests = 10000000;
+ for (int test = 0; test < tests; ++test) {
+ Cubic cubic1, cubic2;
+ for (int i = 0; i < 4; ++i) {
+ cubic1[i].x = (double) rand() / RAND_MAX * 100;
+ cubic1[i].y = (double) rand() / RAND_MAX * 100;
+ cubic2[i].x = (double) rand() / RAND_MAX * 100;
+ cubic2[i].y = (double) rand() / RAND_MAX * 100;
+ }
+ #if DEBUG_CRASH
+ char str[1024];
+ sprintf(str, "{{%1.9g, %1.9g}, {%1.9g, %1.9g}, {%1.9g, %1.9g}, {%1.9g, %1.9g}},\n"
+ "{{%1.9g, %1.9g}, {%1.9g, %1.9g}, {%1.9g, %1.9g}, {%1.9g, %1.9g}},\n",
+ cubic1[0].x, cubic1[0].y, cubic1[1].x, cubic1[1].y, cubic1[2].x, cubic1[2].y,
+ cubic1[3].x, cubic1[3].y,
+ cubic2[0].x, cubic2[0].y, cubic2[1].x, cubic2[1].y, cubic2[2].x, cubic2[2].y,
+ cubic2[3].x, cubic2[3].y);
+ #endif
+ _Rect rect1, rect2;
+ rect1.setBounds(cubic1);
+ rect2.setBounds(cubic2);
+ bool boundsIntersect = rect1.left <= rect2.right && rect2.left <= rect2.right
+ && rect1.top <= rect2.bottom && rect2.top <= rect1.bottom;
+ if (test == -1) {
+ SkDebugf("ready...\n");
+ }
+ Intersections intersections2;
+ bool newIntersects = intersect3(cubic1, cubic2, intersections2);
+ if (!boundsIntersect && newIntersects) {
+ #if DEBUG_CRASH
+ SkDebugf("%s %d unexpected intersection boundsIntersect=%d "
+ " newIntersects=%d\n%s %s\n", __FUNCTION__, test, boundsIntersect,
+ newIntersects, __FUNCTION__, str);
+ #endif
+ SkASSERT(0);
+ }
+ for (int pt = 0; pt < intersections2.used(); ++pt) {
+ double tt1 = intersections2.fT[0][pt];
+ _Point xy1, xy2;
+ xy_at_t(cubic1, tt1, xy1.x, xy1.y);
+ int pt2 = intersections2.fFlip ? intersections2.used() - pt - 1 : pt;
+ double tt2 = intersections2.fT[1][pt2];
+ xy_at_t(cubic2, tt2, xy2.x, xy2.y);
+ #if 0
+ SkDebugf("%s t1=%1.9g (%1.9g, %1.9g) (%1.9g, %1.9g) t2=%1.9g\n", __FUNCTION__,
+ tt1, xy1.x, xy1.y, xy2.x, xy2.y, tt2);
+ #endif
+ SkASSERT(xy1.approximatelyEqual(xy2));
+ }
+ }
+}
+
+static void intersectionFinder(int index0, int index1, double t1Seed, double t2Seed,
+ double t1Step, double t2Step) {
+ const Cubic& cubic1 = newTestSet[index0];
+ const Cubic& cubic2 = newTestSet[index1];
+ _Point t1[3], t2[3];
+ bool toggle = true;
+ do {
+ xy_at_t(cubic1, t1Seed - t1Step, t1[0].x, t1[0].y);
+ xy_at_t(cubic1, t1Seed, t1[1].x, t1[1].y);
+ xy_at_t(cubic1, t1Seed + t1Step, t1[2].x, t1[2].y);
+ xy_at_t(cubic2, t2Seed - t2Step, t2[0].x, t2[0].y);
+ xy_at_t(cubic2, t2Seed, t2[1].x, t2[1].y);
+ xy_at_t(cubic2, t2Seed + t2Step, t2[2].x, t2[2].y);
+ double dist[3][3];
+ dist[1][1] = t1[1].distance(t2[1]);
+ int best_i = 1, best_j = 1;
+ for (int i = 0; i < 3; ++i) {
+ for (int j = 0; j < 3; ++j) {
+ if (i == 1 && j == 1) {
+ continue;
+ }
+ dist[i][j] = t1[i].distance(t2[j]);
+ if (dist[best_i][best_j] > dist[i][j]) {
+ best_i = i;
+ best_j = j;
+ }
+ }
+ }
+ if (best_i == 0) {
+ t1Seed -= t1Step;
+ } else if (best_i == 2) {
+ t1Seed += t1Step;
+ }
+ if (best_j == 0) {
+ t2Seed -= t2Step;
+ } else if (best_j == 2) {
+ t2Seed += t2Step;
+ }
+ if (best_i == 1 && best_j == 1) {
+ if ((toggle ^= true)) {
+ t1Step /= 2;
+ } else {
+ t2Step /= 2;
+ }
+ }
+ } while (!t1[1].approximatelyEqual(t2[1]));
+ t1Step = t2Step = 0.1;
+ double t10 = t1Seed - t1Step * 2;
+ double t12 = t1Seed + t1Step * 2;
+ double t20 = t2Seed - t2Step * 2;
+ double t22 = t2Seed + t2Step * 2;
+ _Point test;
+ while (!approximately_zero(t1Step)) {
+ xy_at_t(cubic1, t10, test.x, test.y);
+ t10 += t1[1].approximatelyEqual(test) ? -t1Step : t1Step;
+ t1Step /= 2;
+ }
+ t1Step = 0.1;
+ while (!approximately_zero(t1Step)) {
+ xy_at_t(cubic1, t12, test.x, test.y);
+ t12 -= t1[1].approximatelyEqual(test) ? -t1Step : t1Step;
+ t1Step /= 2;
+ }
+ while (!approximately_zero(t2Step)) {
+ xy_at_t(cubic2, t20, test.x, test.y);
+ t20 += t2[1].approximatelyEqual(test) ? -t2Step : t2Step;
+ t2Step /= 2;
+ }
+ t2Step = 0.1;
+ while (!approximately_zero(t2Step)) {
+ xy_at_t(cubic2, t22, test.x, test.y);
+ t22 -= t2[1].approximatelyEqual(test) ? -t2Step : t2Step;
+ t2Step /= 2;
+ }
+#if ONE_OFF_DEBUG
+ SkDebugf("%s t1=(%1.9g<%1.9g<%1.9g) t2=(%1.9g<%1.9g<%1.9g)\n", __FUNCTION__,
+ t10, t1Seed, t12, t20, t2Seed, t22);
+ _Point p10 = xy_at_t(cubic1, t10);
+ _Point p1Seed = xy_at_t(cubic1, t1Seed);
+ _Point p12 = xy_at_t(cubic1, t12);
+ SkDebugf("%s p1=(%1.9g,%1.9g)<(%1.9g,%1.9g)<(%1.9g,%1.9g)\n", __FUNCTION__,
+ p10.x, p10.y, p1Seed.x, p1Seed.y, p12.x, p12.y);
+ _Point p20 = xy_at_t(cubic2, t20);
+ _Point p2Seed = xy_at_t(cubic2, t2Seed);
+ _Point p22 = xy_at_t(cubic2, t22);
+ SkDebugf("%s p2=(%1.9g,%1.9g)<(%1.9g,%1.9g)<(%1.9g,%1.9g)\n", __FUNCTION__,
+ p20.x, p20.y, p2Seed.x, p2Seed.y, p22.x, p22.y);
+#endif
+}
+
+void CubicIntersection_IntersectionFinder() {
+
+ // double t1Seed = 0.87;
+ // double t2Seed = 0.87;
+ double t1Step = 0.000001;
+ double t2Step = 0.000001;
+ intersectionFinder(0, 1, 0.855895664, 0.864850875, t1Step, t2Step);
+ intersectionFinder(0, 1, 0.865207906, 0.865207887, t1Step, t2Step);
+ intersectionFinder(0, 1, 0.865213351, 0.865208087, t1Step, t2Step);
+}
+
+static void coincidentTest() {
+#if 0
+ Cubic cubic1 = {{0, 1}, {0, 2}, {1, 0}, {1, 0}};
+ Cubic cubic2 = {{0, 1}, {0, 2}, {1, 0}, {6, 1}};
+#endif
+}
+
+void CubicIntersection_SelfTest() {
+ const Cubic selfSet[] = {
+ {{0,2}, {2,3}, {5,1}, {3,2}},
+ {{0,2}, {3,5}, {5,0}, {4,2}},
+ {{3.34,8.98}, {1.95,10.27}, {3.76,7.65}, {4.96,10.64}},
+ {{3.13,2.74}, {1.08,4.62}, {3.71,0.94}, {2.01,3.81}},
+ {{6.71,3.14}, {7.99,2.75}, {8.27,1.96}, {6.35,3.57}},
+ {{12.81,7.27}, {7.22,6.98}, {12.49,8.97}, {11.42,6.18}},
+ };
+ size_t selfSetCount = sizeof(selfSet) / sizeof(selfSet[0]);
+ size_t firstFail = 1;
+ for (size_t index = firstFail; index < selfSetCount; ++index) {
+ const Cubic& cubic = selfSet[index];
+ #if ONE_OFF_DEBUG
+ int idx2;
+ double max[3];
+ int ts = find_cubic_max_curvature(cubic, max);
+ for (idx2 = 0; idx2 < ts; ++idx2) {
+ SkDebugf("%s max[%d]=%1.9g (%1.9g, %1.9g)\n", __FUNCTION__, idx2,
+ max[idx2], xy_at_t(cubic, max[idx2]).x, xy_at_t(cubic, max[idx2]).y);
+ }
+ SkTDArray<double> ts1;
+ SkTDArray<Quadratic> quads1;
+ cubic_to_quadratics(cubic, calcPrecision(cubic), ts1);
+ for (idx2 = 0; idx2 < ts1.count(); ++idx2) {
+ SkDebugf("%s t[%d]=%1.9g\n", __FUNCTION__, idx2, ts1[idx2]);
+ }
+ cubic_to_quadratics(cubic, calcPrecision(cubic), quads1);
+ for (idx2 = 0; idx2 < quads1.count(); ++idx2) {
+ const Quadratic& q = quads1[idx2];
+ SkDebugf(" {{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}},\n",
+ q[0].x, q[0].y, q[1].x, q[1].y, q[2].x, q[2].y);
+ }
+ SkDebugf("\n");
+ #endif
+ Intersections i;
+ SkDEBUGCODE(int result = ) intersect(cubic, i);
+ SkASSERT(result == 1);
+ SkASSERT(i.used() == 1);
+ SkASSERT(!approximately_equal(i.fT[0][0], i.fT[1][0]));
+ _Point pt1 = xy_at_t(cubic, i.fT[0][0]);
+ _Point pt2 = xy_at_t(cubic, i.fT[1][0]);
+ SkASSERT(pt1.approximatelyEqual(pt2));
+ }
+}
+
+void CubicIntersection_Test() {
+ oneOffTests();
+ coincidentTest();
+ standardTestCases();
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicIntersection_TestData.cpp b/chromium/third_party/skia/experimental/Intersection/CubicIntersection_TestData.cpp
new file mode 100644
index 00000000000..c138a672dab
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicIntersection_TestData.cpp
@@ -0,0 +1,310 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CubicIntersection_TestData.h"
+#include <limits>
+
+const Cubic pointDegenerates[] = {
+ {{0, 0}, {0, 0}, {0, 0}, {0, 0}},
+ {{1, 1}, {1, 1}, {1, 1}, {1, 1}},
+ {{1 + PointEpsilon - std::numeric_limits<double>::epsilon(), 1},
+ {1, 1 + PointEpsilon - std::numeric_limits<double>::epsilon()}, {1, 1}, {1, 1}},
+ {{1 + PointEpsilon/2 - std::numeric_limits<double>::epsilon(), 1},
+ {1 - (PointEpsilon/2 - std::numeric_limits<double>::epsilon()), 1}, {1, 1}, {1, 1}}
+};
+
+const size_t pointDegenerates_count = sizeof(pointDegenerates) / sizeof(pointDegenerates[0]);
+
+const Cubic notPointDegenerates[] = {
+ {{1 + PointEpsilon + std::numeric_limits<double>::epsilon(), 1}, {1, 1 + PointEpsilon}, {1, 1}, {1, 1}},
+ {{1 + PointEpsilon/2 + std::numeric_limits<double>::epsilon(), 1}, {1 - PointEpsilon/2, 1}, {1, 1}, {1, 1}}
+};
+
+const size_t notPointDegenerates_count = sizeof(notPointDegenerates) / sizeof(notPointDegenerates[0]);
+
+// from http://www.truetex.com/bezint.htm
+const Cubic tests[][2] = {
+ { // intersects in one place (data gives bezier clip fits
+ {{0, 45},
+ {6.0094158284751593, 51.610357411322688},
+ {12.741093228940867, 55.981703949474607},
+ {20.021417396476362, 58.652245509710262}},
+ {{2.2070737699246674, 52.703494107327209},
+ {31.591482272629477, 23.811002295222025},
+ {76.824588616426425, 44.049473790502674},
+ {119.25488947221436, 55.599248272955073}}
+ },
+ { // intersects in three places
+ {{0, 45}, {50, 100}, {150, 0}, {200, 55}},
+ {{0, 55}, {50, 0}, {150, 100}, {200, 45}}
+ },
+ { // intersects in one place, cross over is nearly parallel
+ {{0, 0}, {0, 100}, {200, 0}, {200, 100}},
+ {{0, 100}, {0, 0}, {200, 100}, {200, 0}}
+ },
+ { // intersects in two places
+ {{0, 0}, {0, 100}, {200, 100}, {200, 0}},
+ {{0, 100}, {0, 0}, {200, 0}, {200, 100}}
+ },
+ {
+ {{150, 100}, {150 + 0.1, 150}, {150, 200}, {150, 250}},
+ {{250, 150}, {200, 150 + 0.1}, {150, 150}, {100, 150}}
+ },
+ { // single intersection around 168,185
+ {{200, 100}, {150, 100}, {150, 150}, {200, 150}},
+ {{250, 150}, {250, 100}, {100, 100}, {100, 150}}
+ },
+ {
+ {{1.0, 1.5}, {15.5, 0.5}, {-8.0, 3.5}, {5.0, 1.5}},
+ {{4.0, 0.5}, {5.0, 15.0}, {2.0, -8.5}, {4.0, 4.5}}
+ },
+ {
+ {{664.00168, 0}, {726.11545, 124.22757}, {736.89069, 267.89743}, {694.0017, 400.0002}},
+ {{850.66843, 115.55563}, {728.515, 115.55563}, {725.21347, 275.15309}, {694.0017, 400.0002}}
+ },
+ {
+ {{1, 1}, {12.5, 6.5}, {-4, 6.5}, {7.5, 1}},
+ {{1, 6.5}, {12.5, 1}, {-4, 1}, {.5, 6}}
+ },
+ {
+ {{315.748, 312.84}, {312.644, 318.134}, {305.836, 319.909}, {300.542, 316.804}},
+ {{317.122, 309.05}, {316.112, 315.102}, {310.385, 319.19}, {304.332, 318.179}}
+ },
+ {
+ {{1046.604051, 172.937967}, {1046.604051, 178.9763059}, {1041.76745, 183.9279165}, {1035.703842, 184.0432409}},
+ {{1046.452235, 174.7640504}, {1045.544872, 180.1973817}, {1040.837966, 184.0469882}, {1035.505925, 184.0469882}}
+ },
+ {
+ {{125.79356, 199.57382}, {51.16556, 128.93575}, {87.494, 16.67848}, {167.29361, 16.67848}},
+ {{167.29361, 55.81876}, {100.36128, 55.81876}, {68.64099, 145.4755}, {125.7942, 199.57309}}
+ }
+};
+
+const size_t tests_count = sizeof(tests) / sizeof(tests[0]);
+
+Cubic hexTests[][2] = {
+ {
+ {{0}} // placeholder for hex converted below
+ }
+};
+
+const size_t hexTests_count = sizeof(hexTests) / sizeof(hexTests[0]);
+
+static const uint64_t testx[2][8] = {
+ {
+ 0xf0d0d1ca63075a40LLU, 0x9408ce996a237740LLU, 0x6d5675460fbe5e40LLU, 0x6ef501e1b7487940LLU,
+ 0x9a71d2f8143d6540LLU, 0x6bc18bbe02907a40LLU, 0x5b94d92093aa6b40LLU, 0x6ac18bbe02907a40LLU
+ },
+ {
+ 0x92c56ed7b6145d40LLU, 0xede4f1255edb7740LLU, 0x1138c1101af75940LLU, 0x42e4f1255edb7740LLU,
+ 0x408e51603ad95640LLU, 0x1e2e8fe9dd927740LLU, 0x1cb4777cd3a75440LLU, 0x212e1390de017740LLU
+ }
+};
+
+void convert_testx() {
+ const uint64_t* inPtr = testx[0];
+ double* outPtr = &hexTests[sizeof(tests) / sizeof(tests[0]) - 1][0][0].x;
+ for (unsigned index = 0; index < sizeof(testx) / sizeof(testx[0][0]); ++index) {
+ uint64_t input = *inPtr++;
+ unsigned char* output = (unsigned char*) outPtr++;
+ for (unsigned byte = 0; byte < sizeof(input); ++byte) {
+ output[byte] = input >> (7 - byte) * 8;
+ }
+ }
+}
+
+const Cubic lines[] = {
+ {{0, 0}, {0, 0}, {0, 0}, {1, 0}}, // 0: horizontal
+ {{0, 0}, {0, 0}, {1, 0}, {0, 0}},
+ {{0, 0}, {1, 0}, {0, 0}, {0, 0}},
+ {{1, 0}, {0, 0}, {0, 0}, {0, 0}},
+ {{1, 0}, {2, 0}, {3, 0}, {4, 0}},
+ {{0, 0}, {0, 0}, {0, 0}, {0, 1}}, // 5: vertical
+ {{0, 0}, {0, 0}, {0, 1}, {0, 0}},
+ {{0, 0}, {0, 1}, {0, 0}, {0, 0}},
+ {{0, 1}, {0, 0}, {0, 0}, {0, 0}},
+ {{0, 1}, {0, 2}, {0, 3}, {0, 4}},
+ {{0, 0}, {0, 0}, {0, 0}, {1, 1}}, // 10: 3 coincident
+ {{0, 0}, {0, 0}, {1, 1}, {0, 0}},
+ {{0, 0}, {1, 1}, {0, 0}, {0, 0}},
+ {{1, 1}, {0, 0}, {0, 0}, {0, 0}},
+ {{0, 0}, {0, 0}, {1, 1}, {2, 2}}, // 14: 2 coincident
+ {{0, 0}, {1, 1}, {0, 0}, {2, 2}},
+ {{0, 0}, {1, 1}, {2, 2}, {0, 0}},
+ {{1, 1}, {0, 0}, {0, 0}, {2, 2}}, // 17:
+ {{1, 1}, {0, 0}, {2, 2}, {0, 0}},
+ {{1, 1}, {2, 2}, {0, 0}, {0, 0}},
+ {{1, 1}, {2, 2}, {3, 3}, {2, 2}}, // middle-last coincident
+ {{1, 1}, {2, 2}, {3, 3}, {3, 3}}, // middle-last coincident
+ {{1, 1}, {1, 1}, {2, 2}, {2, 2}}, // 2 pairs coincident
+ {{1, 1}, {2, 2}, {1, 1}, {2, 2}},
+ {{1, 1}, {2, 2}, {2, 2}, {1, 1}},
+ {{1, 1}, {1, 1}, {3, 3}, {3, 3}}, // first-middle middle-last coincident
+ {{1, 1}, {2, 2}, {3, 3}, {4, 4}}, // no coincident
+ {{1, 1}, {3, 3}, {2, 2}, {4, 4}},
+ {{1, 1}, {2, 2}, {4, 4}, {3, 3}},
+ {{1, 1}, {3, 3}, {4, 4}, {2, 2}},
+ {{1, 1}, {4, 4}, {2, 2}, {3, 3}},
+ {{1, 1}, {4, 4}, {3, 3}, {2, 2}},
+ {{2, 2}, {1, 1}, {3, 3}, {4, 4}},
+ {{2, 2}, {1, 1}, {4, 4}, {3, 3}},
+ {{2, 2}, {3, 3}, {1, 1}, {4, 4}},
+ {{2, 2}, {3, 3}, {4, 4}, {1, 1}},
+ {{2, 2}, {4, 4}, {1, 1}, {3, 3}},
+ {{2, 2}, {4, 4}, {3, 3}, {1, 1}},
+};
+
+const size_t lines_count = sizeof(lines) / sizeof(lines[0]);
+
+// 'not a line' tries to fool the line detection code
+const Cubic notLines[] = {
+ {{0, 0}, {0, 0}, {0, 1}, {1, 0}},
+ {{0, 0}, {0, 1}, {0, 0}, {1, 0}},
+ {{0, 0}, {0, 1}, {1, 0}, {0, 0}},
+ {{0, 1}, {0, 0}, {0, 0}, {1, 0}},
+ {{0, 1}, {0, 0}, {1, 0}, {0, 0}},
+ {{0, 1}, {1, 0}, {0, 0}, {0, 0}},
+};
+
+const size_t notLines_count = sizeof(notLines) / sizeof(notLines[0]);
+
+static const double E = PointEpsilon * 2;
+static const double F = PointEpsilon * 3;
+
+const Cubic modEpsilonLines[] = {
+ {{0, E}, {0, 0}, {0, 0}, {1, 0}}, // horizontal
+ {{0, 0}, {0, E}, {1, 0}, {0, 0}},
+ {{0, 0}, {1, 0}, {0, E}, {0, 0}},
+ {{1, 0}, {0, 0}, {0, 0}, {0, E}},
+ {{1, E}, {2, 0}, {3, 0}, {4, 0}},
+ {{E, 0}, {0, 0}, {0, 0}, {0, 1}}, // vertical
+ {{0, 0}, {E, 0}, {0, 1}, {0, 0}},
+ {{0, 0}, {0, 1}, {E, 0}, {0, 0}},
+ {{0, 1}, {0, 0}, {0, 0}, {E, 0}},
+ {{E, 1}, {0, 2}, {0, 3}, {0, 4}},
+ {{E, 0}, {0, 0}, {0, 0}, {1, 1}}, // 3 coincident
+ {{0, 0}, {E, 0}, {1, 1}, {0, 0}},
+ {{0, 0}, {1, 1}, {E, 0}, {0, 0}},
+ {{1, 1}, {0, 0}, {0, 0}, {E, 0}},
+ {{0, E}, {0, 0}, {1, 1}, {2, 2}}, // 2 coincident
+ {{0, 0}, {1, 1}, {0, E}, {2, 2}},
+ {{0, 0}, {1, 1}, {2, 2}, {0, E}},
+ {{1, 1}, {0, E}, {0, 0}, {2, 2}},
+ {{1, 1}, {0, E}, {2, 2}, {0, 0}},
+ {{1, 1}, {2, 2}, {E, 0}, {0, 0}},
+ {{1, 1}, {2, 2+E}, {3, 3}, {2, 2}}, // middle-last coincident
+ {{1, 1}, {2+E, 2}, {3, 3}, {3, 3}}, // middle-last coincident
+ {{1, 1}, {1, 1}, {2, 2}, {2+E, 2}}, // 2 pairs coincident
+ {{1, 1}, {2, 2}, {1, 1}, {2+E, 2}},
+ {{1, 1}, {2, 2}, {2, 2+E}, {1, 1}},
+ {{1, 1}, {1, 1+E}, {3, 3}, {3, 3}}, // first-middle middle-last coincident
+ {{1, 1}, {2+E, 2}, {3, 3}, {4, 4}}, // no coincident
+ {{1, 1}, {3, 3}, {2, 2}, {4, 4+F}}, // INVESTIGATE: why the epsilon is bigger
+ {{1, 1+F}, {2, 2}, {4, 4}, {3, 3}}, // INVESTIGATE: why the epsilon is bigger
+ {{1, 1}, {3, 3}, {4, 4+E}, {2, 2}},
+ {{1, 1}, {4, 4}, {2, 2}, {3, 3+E}},
+ {{1, 1}, {4, 4}, {3, 3}, {2+E, 2}},
+ {{2, 2}, {1, 1}, {3+E, 3}, {4, 4}},
+ {{2, 2}, {1+E, 1}, {4, 4}, {3, 3}},
+ {{2, 2+E}, {3, 3}, {1, 1}, {4, 4}},
+ {{2+E, 2}, {3, 3}, {4, 4}, {1, 1}},
+ {{2, 2}, {4+E, 4}, {1, 1}, {3, 3}},
+ {{2, 2}, {4, 4}, {3, 3}, {1, 1+E}},
+};
+
+const size_t modEpsilonLines_count = sizeof(modEpsilonLines) / sizeof(modEpsilonLines[0]);
+
+static const double D = PointEpsilon / 2;
+static const double G = PointEpsilon / 3;
+
+const Cubic lessEpsilonLines[] = {
+ {{0, D}, {0, 0}, {0, 0}, {1, 0}}, // horizontal
+ {{0, 0}, {0, D}, {1, 0}, {0, 0}},
+ {{0, 0}, {1, 0}, {0, D}, {0, 0}},
+ {{1, 0}, {0, 0}, {0, 0}, {0, D}},
+ {{1, D}, {2, 0}, {3, 0}, {4, 0}},
+ {{D, 0}, {0, 0}, {0, 0}, {0, 1}}, // vertical
+ {{0, 0}, {D, 0}, {0, 1}, {0, 0}},
+ {{0, 0}, {0, 1}, {D, 0}, {0, 0}},
+ {{0, 1}, {0, 0}, {0, 0}, {D, 0}},
+ {{D, 1}, {0, 2}, {0, 3}, {0, 4}},
+ {{D, 0}, {0, 0}, {0, 0}, {1, 1}}, // 3 coincident
+ {{0, 0}, {D, 0}, {1, 1}, {0, 0}},
+ {{0, 0}, {1, 1}, {D, 0}, {0, 0}},
+ {{1, 1}, {0, 0}, {0, 0}, {D, 0}},
+ {{0, D}, {0, 0}, {1, 1}, {2, 2}}, // 2 coincident
+ {{0, 0}, {1, 1}, {0, D}, {2, 2}},
+ {{0, 0}, {1, 1}, {2, 2}, {0, D}},
+ {{1, 1}, {0, D}, {0, 0}, {2, 2}},
+ {{1, 1}, {0, D}, {2, 2}, {0, 0}},
+ {{1, 1}, {2, 2}, {D, 0}, {0, 0}},
+ {{1, 1}, {2, 2+D}, {3, 3}, {2, 2}}, // middle-last coincident
+ {{1, 1}, {2+D, 2}, {3, 3}, {3, 3}}, // middle-last coincident
+ {{1, 1}, {1, 1}, {2, 2}, {2+D, 2}}, // 2 pairs coincident
+ {{1, 1}, {2, 2}, {1, 1}, {2+D, 2}},
+ {{1, 1}, {2, 2}, {2, 2+D}, {1, 1}},
+ {{1, 1}, {1, 1+D}, {3, 3}, {3, 3}}, // first-middle middle-last coincident
+ {{1, 1}, {2+D/2, 2}, {3, 3}, {4, 4}}, // no coincident (FIXME: N as opposed to N/2 failed)
+ {{1, 1}, {3, 3}, {2, 2}, {4, 4+D}},
+ {{1, 1+D}, {2, 2}, {4, 4}, {3, 3}},
+ {{1, 1}, {3, 3}, {4, 4+D}, {2, 2}},
+ {{1, 1}, {4, 4}, {2, 2}, {3, 3+D}},
+ {{1, 1}, {4, 4}, {3, 3}, {2+G, 2}}, // INVESTIGATE: why the epsilon is smaller
+ {{2, 2}, {1, 1}, {3+D, 3}, {4, 4}},
+ {{2, 2}, {1+D, 1}, {4, 4}, {3, 3}},
+ {{2, 2+D}, {3, 3}, {1, 1}, {4, 4}},
+ {{2+G, 2}, {3, 3}, {4, 4}, {1, 1}}, // INVESTIGATE: why the epsilon is smaller
+ {{2, 2}, {4+D, 4}, {1, 1}, {3, 3}},
+ {{2, 2}, {4, 4}, {3, 3}, {1, 1+D}},
+};
+
+const size_t lessEpsilonLines_count = sizeof(lessEpsilonLines) / sizeof(lessEpsilonLines[0]);
+
+static const double N = -PointEpsilon / 2;
+static const double M = -PointEpsilon / 3;
+
+const Cubic negEpsilonLines[] = {
+ {{0, N}, {0, 0}, {0, 0}, {1, 0}}, // horizontal
+ {{0, 0}, {0, N}, {1, 0}, {0, 0}},
+ {{0, 0}, {1, 0}, {0, N}, {0, 0}},
+ {{1, 0}, {0, 0}, {0, 0}, {0, N}},
+ {{1, N}, {2, 0}, {3, 0}, {4, 0}},
+ {{N, 0}, {0, 0}, {0, 0}, {0, 1}}, // vertical
+ {{0, 0}, {N, 0}, {0, 1}, {0, 0}},
+ {{0, 0}, {0, 1}, {N, 0}, {0, 0}},
+ {{0, 1}, {0, 0}, {0, 0}, {N, 0}},
+ {{N, 1}, {0, 2}, {0, 3}, {0, 4}},
+ {{N, 0}, {0, 0}, {0, 0}, {1, 1}}, // 3 coincident
+ {{0, 0}, {N, 0}, {1, 1}, {0, 0}},
+ {{0, 0}, {1, 1}, {N, 0}, {0, 0}},
+ {{1, 1}, {0, 0}, {0, 0}, {N, 0}},
+ {{0, N}, {0, 0}, {1, 1}, {2, 2}}, // 2 coincident
+ {{0, 0}, {1, 1}, {0, N}, {2, 2}},
+ {{0, 0}, {1, 1}, {2, 2}, {0, N}},
+ {{1, 1}, {0, N}, {0, 0}, {2, 2}},
+ {{1, 1}, {0, N}, {2, 2}, {0, 0}},
+ {{1, 1}, {2, 2}, {N, 0}, {0, 0}},
+ {{1, 1}, {2, 2+N}, {3, 3}, {2, 2}}, // middle-last coincident
+ {{1, 1}, {2+N, 2}, {3, 3}, {3, 3}}, // middle-last coincident
+ {{1, 1}, {1, 1}, {2, 2}, {2+N, 2}}, // 2 pairs coincident
+ {{1, 1}, {2, 2}, {1, 1}, {2+N, 2}},
+ {{1, 1}, {2, 2}, {2, 2+N}, {1, 1}},
+ {{1, 1}, {1, 1+N}, {3, 3}, {3, 3}}, // first-middle middle-last coincident
+ {{1, 1}, {2+N/2, 2}, {3, 3}, {4, 4}}, // no coincident (FIXME: N as opposed to N/2 failed)
+ {{1, 1}, {3, 3}, {2, 2}, {4, 4+N}},
+ {{1, 1+N}, {2, 2}, {4, 4}, {3, 3}},
+ {{1, 1}, {3, 3}, {4, 4+N}, {2, 2}},
+ {{1, 1}, {4, 4}, {2, 2}, {3, 3+N}},
+ {{1, 1}, {4, 4}, {3, 3}, {2+M, 2}}, // INVESTIGATE: why the epsilon is smaller
+ {{2, 2}, {1, 1}, {3+N, 3}, {4, 4}},
+ {{2, 2}, {1+N, 1}, {4, 4}, {3, 3}},
+ {{2, 2+N}, {3, 3}, {1, 1}, {4, 4}},
+ {{2+M, 2}, {3, 3}, {4, 4}, {1, 1}}, // INVESTIGATE: why the epsilon is smaller
+ {{2, 2}, {4+N, 4}, {1, 1}, {3, 3}},
+ {{2, 2}, {4, 4}, {3, 3}, {1, 1+N}},
+};
+
+const size_t negEpsilonLines_count = sizeof(negEpsilonLines) / sizeof(negEpsilonLines[0]);
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicIntersection_TestData.h b/chromium/third_party/skia/experimental/Intersection/CubicIntersection_TestData.h
new file mode 100644
index 00000000000..9893b3c1ac7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicIntersection_TestData.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "DataTypes.h"
+#include "DataTypes_Test.h"
+
+extern const Cubic pointDegenerates[];
+extern const Cubic notPointDegenerates[];
+extern const Cubic tests[][2];
+extern Cubic hexTests[][2];
+
+extern void convert_testx();
+
+extern const Cubic lines[];
+extern const Cubic notLines[];
+extern const Cubic modEpsilonLines[];
+extern const Cubic lessEpsilonLines[];
+extern const Cubic negEpsilonLines[];
+
+extern const size_t pointDegenerates_count;
+extern const size_t notPointDegenerates_count;
+extern const size_t tests_count;
+extern const size_t hexTests_count;
+extern const size_t lines_count;
+extern const size_t notLines_count;
+extern const size_t modEpsilonLines_count;
+extern const size_t lessEpsilonLines_count;
+extern const size_t negEpsilonLines_count;
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicLineSegments.cpp b/chromium/third_party/skia/experimental/Intersection/CubicLineSegments.cpp
new file mode 100644
index 00000000000..58b7b85d492
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicLineSegments.cpp
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CubicLineSegments.h"
+#include "QuadraticLineSegments.h"
+
+// http://cagd.cs.byu.edu/~557/text/cagd.pdf 2.7
+// A hodograph is the first derivative curve
+void hodograph(const Cubic& cubic, Quadratic& hodo) {
+ hodo[0].x = 3 * (cubic[1].x - cubic[0].x);
+ hodo[0].y = 3 * (cubic[1].y - cubic[0].y);
+ hodo[1].x = 3 * (cubic[2].x - cubic[1].x);
+ hodo[1].y = 3 * (cubic[2].y - cubic[1].y);
+ hodo[2].x = 3 * (cubic[3].x - cubic[2].x);
+ hodo[2].y = 3 * (cubic[3].y - cubic[2].y);
+}
+
+// A 2nd hodograph is the second derivative curve
+void secondHodograph(const Cubic& cubic, _Line& hodo2) {
+ Quadratic hodo;
+ hodograph(cubic, hodo);
+ hodograph(hodo, hodo2);
+}
+
+// The number of line segments required to approximate the cubic
+// see http://cagd.cs.byu.edu/~557/text/cagd.pdf 10.6
+double subDivisions(const Cubic& cubic) {
+ _Line hodo2;
+ secondHodograph(cubic, hodo2);
+ double maxX = SkTMax(hodo2[1].x, hodo2[1].x);
+ double maxY = SkTMax(hodo2[1].y, hodo2[1].y);
+ double dist = sqrt(maxX * maxX + maxY * maxY);
+ double segments = sqrt(dist / (8 * FLT_EPSILON));
+ return segments;
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicLineSegments.h b/chromium/third_party/skia/experimental/Intersection/CubicLineSegments.h
new file mode 100644
index 00000000000..0c80a640e7d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicLineSegments.h
@@ -0,0 +1,12 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "DataTypes.h"
+
+void hodograph(const Cubic& , Quadratic& hodo);
+void secondHodograph(const Cubic& , _Line& hodo2);
+double subDivisions(const Cubic& );
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicParameterization.cpp b/chromium/third_party/skia/experimental/Intersection/CubicParameterization.cpp
new file mode 100644
index 00000000000..caa7c24dd8e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicParameterization.cpp
@@ -0,0 +1,518 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "CubicUtilities.h"
+
+/* from http://tom.cs.byu.edu/~tom/papers/cvgip84.pdf 4.1
+ *
+ * This paper proves that Syvester's method can compute the implicit form of
+ * the quadratic from the parameterzied form.
+ *
+ * Given x = a*t*t*t + b*t*t + c*t + d (the parameterized form)
+ * y = e*t*t*t + f*t*t + g*t + h
+ *
+ * we want to find an equation of the implicit form:
+ *
+ * A*x^3 + B*x*x*y + C*x*y*y + D*y^3 + E*x*x + F*x*y + G*y*y + H*x + I*y + J = 0
+ *
+ * The implicit form can be expressed as a 6x6 determinant, as shown.
+ *
+ * The resultant obtained by Syvester's method is
+ *
+ * | a b c (d - x) 0 0 |
+ * | 0 a b c (d - x) 0 |
+ * | 0 0 a b c (d - x) |
+ * | e f g (h - y) 0 0 |
+ * | 0 e f g (h - y) 0 |
+ * | 0 0 e f g (h - y) |
+ *
+ * which, according to Mathematica, expands as shown below.
+ *
+ * Resultant[a*t^3 + b*t^2 + c*t + d - x, e*t^3 + f*t^2 + g*t + h - y, t]
+ *
+ * -d^3 e^3 + c d^2 e^2 f - b d^2 e f^2 + a d^2 f^3 - c^2 d e^2 g +
+ * 2 b d^2 e^2 g + b c d e f g - 3 a d^2 e f g - a c d f^2 g -
+ * b^2 d e g^2 + 2 a c d e g^2 + a b d f g^2 - a^2 d g^3 + c^3 e^2 h -
+ * 3 b c d e^2 h + 3 a d^2 e^2 h - b c^2 e f h + 2 b^2 d e f h +
+ * a c d e f h + a c^2 f^2 h - 2 a b d f^2 h + b^2 c e g h -
+ * 2 a c^2 e g h - a b d e g h - a b c f g h + 3 a^2 d f g h +
+ * a^2 c g^2 h - b^3 e h^2 + 3 a b c e h^2 - 3 a^2 d e h^2 +
+ * a b^2 f h^2 - 2 a^2 c f h^2 - a^2 b g h^2 + a^3 h^3 + 3 d^2 e^3 x -
+ * 2 c d e^2 f x + 2 b d e f^2 x - 2 a d f^3 x + c^2 e^2 g x -
+ * 4 b d e^2 g x - b c e f g x + 6 a d e f g x + a c f^2 g x +
+ * b^2 e g^2 x - 2 a c e g^2 x - a b f g^2 x + a^2 g^3 x +
+ * 3 b c e^2 h x - 6 a d e^2 h x - 2 b^2 e f h x - a c e f h x +
+ * 2 a b f^2 h x + a b e g h x - 3 a^2 f g h x + 3 a^2 e h^2 x -
+ * 3 d e^3 x^2 + c e^2 f x^2 - b e f^2 x^2 + a f^3 x^2 +
+ * 2 b e^2 g x^2 - 3 a e f g x^2 + 3 a e^2 h x^2 + e^3 x^3 -
+ * c^3 e^2 y + 3 b c d e^2 y - 3 a d^2 e^2 y + b c^2 e f y -
+ * 2 b^2 d e f y - a c d e f y - a c^2 f^2 y + 2 a b d f^2 y -
+ * b^2 c e g y + 2 a c^2 e g y + a b d e g y + a b c f g y -
+ * 3 a^2 d f g y - a^2 c g^2 y + 2 b^3 e h y - 6 a b c e h y +
+ * 6 a^2 d e h y - 2 a b^2 f h y + 4 a^2 c f h y + 2 a^2 b g h y -
+ * 3 a^3 h^2 y - 3 b c e^2 x y + 6 a d e^2 x y + 2 b^2 e f x y +
+ * a c e f x y - 2 a b f^2 x y - a b e g x y + 3 a^2 f g x y -
+ * 6 a^2 e h x y - 3 a e^2 x^2 y - b^3 e y^2 + 3 a b c e y^2 -
+ * 3 a^2 d e y^2 + a b^2 f y^2 - 2 a^2 c f y^2 - a^2 b g y^2 +
+ * 3 a^3 h y^2 + 3 a^2 e x y^2 - a^3 y^3
+ */
+
+enum {
+ xxx_coeff, // A
+ xxy_coeff, // B
+ xyy_coeff, // C
+ yyy_coeff, // D
+ xx_coeff,
+ xy_coeff,
+ yy_coeff,
+ x_coeff,
+ y_coeff,
+ c_coeff,
+ coeff_count
+};
+
+#define USE_SYVESTER 0 // if 0, use control-point base parametric form
+#if USE_SYVESTER
+
+// FIXME: factoring version unwritten
+// static bool straight_forward = true;
+
+/* from CubicParameterizationCode.cpp output:
+ * double A = e * e * e;
+ * double B = -3 * a * e * e;
+ * double C = 3 * a * a * e;
+ * double D = -a * a * a;
+ */
+static void calc_ABCD(double a, double e, double p[coeff_count]) {
+ double ee = e * e;
+ p[xxx_coeff] = e * ee;
+ p[xxy_coeff] = -3 * a * ee;
+ double aa = a * a;
+ p[xyy_coeff] = 3 * aa * e;
+ p[yyy_coeff] = -aa * a;
+}
+
+/* CubicParameterizationCode.cpp turns Mathematica output into C.
+ * Rather than edit the lines below, please edit the code there instead.
+ */
+// start of generated code
+static double calc_xx(double a, double b, double c, double d,
+ double e, double f, double g, double h) {
+ return
+ -3 * d * e * e * e
+ + c * e * e * f
+ - b * e * f * f
+ + a * f * f * f
+ + 2 * b * e * e * g
+ - 3 * a * e * f * g
+ + 3 * a * e * e * h;
+}
+
+static double calc_xy(double a, double b, double c, double d,
+ double e, double f, double g, double h) {
+ return
+ -3 * b * c * e * e
+ + 6 * a * d * e * e
+ + 2 * b * b * e * f
+ + a * c * e * f
+ - 2 * a * b * f * f
+ - a * b * e * g
+ + 3 * a * a * f * g
+ - 6 * a * a * e * h;
+}
+
+static double calc_yy(double a, double b, double c, double d,
+ double e, double f, double g, double h) {
+ return
+ -b * b * b * e
+ + 3 * a * b * c * e
+ - 3 * a * a * d * e
+ + a * b * b * f
+ - 2 * a * a * c * f
+ - a * a * b * g
+ + 3 * a * a * a * h;
+}
+
+static double calc_x(double a, double b, double c, double d,
+ double e, double f, double g, double h) {
+ return
+ 3 * d * d * e * e * e
+ - 2 * c * d * e * e * f
+ + 2 * b * d * e * f * f
+ - 2 * a * d * f * f * f
+ + c * c * e * e * g
+ - 4 * b * d * e * e * g
+ - b * c * e * f * g
+ + 6 * a * d * e * f * g
+ + a * c * f * f * g
+ + b * b * e * g * g
+ - 2 * a * c * e * g * g
+ - a * b * f * g * g
+ + a * a * g * g * g
+ + 3 * b * c * e * e * h
+ - 6 * a * d * e * e * h
+ - 2 * b * b * e * f * h
+ - a * c * e * f * h
+ + 2 * a * b * f * f * h
+ + a * b * e * g * h
+ - 3 * a * a * f * g * h
+ + 3 * a * a * e * h * h;
+}
+
+static double calc_y(double a, double b, double c, double d,
+ double e, double f, double g, double h) {
+ return
+ -c * c * c * e * e
+ + 3 * b * c * d * e * e
+ - 3 * a * d * d * e * e
+ + b * c * c * e * f
+ - 2 * b * b * d * e * f
+ - a * c * d * e * f
+ - a * c * c * f * f
+ + 2 * a * b * d * f * f
+ - b * b * c * e * g
+ + 2 * a * c * c * e * g
+ + a * b * d * e * g
+ + a * b * c * f * g
+ - 3 * a * a * d * f * g
+ - a * a * c * g * g
+ + 2 * b * b * b * e * h
+ - 6 * a * b * c * e * h
+ + 6 * a * a * d * e * h
+ - 2 * a * b * b * f * h
+ + 4 * a * a * c * f * h
+ + 2 * a * a * b * g * h
+ - 3 * a * a * a * h * h;
+}
+
+static double calc_c(double a, double b, double c, double d,
+ double e, double f, double g, double h) {
+ return
+ -d * d * d * e * e * e
+ + c * d * d * e * e * f
+ - b * d * d * e * f * f
+ + a * d * d * f * f * f
+ - c * c * d * e * e * g
+ + 2 * b * d * d * e * e * g
+ + b * c * d * e * f * g
+ - 3 * a * d * d * e * f * g
+ - a * c * d * f * f * g
+ - b * b * d * e * g * g
+ + 2 * a * c * d * e * g * g
+ + a * b * d * f * g * g
+ - a * a * d * g * g * g
+ + c * c * c * e * e * h
+ - 3 * b * c * d * e * e * h
+ + 3 * a * d * d * e * e * h
+ - b * c * c * e * f * h
+ + 2 * b * b * d * e * f * h
+ + a * c * d * e * f * h
+ + a * c * c * f * f * h
+ - 2 * a * b * d * f * f * h
+ + b * b * c * e * g * h
+ - 2 * a * c * c * e * g * h
+ - a * b * d * e * g * h
+ - a * b * c * f * g * h
+ + 3 * a * a * d * f * g * h
+ + a * a * c * g * g * h
+ - b * b * b * e * h * h
+ + 3 * a * b * c * e * h * h
+ - 3 * a * a * d * e * h * h
+ + a * b * b * f * h * h
+ - 2 * a * a * c * f * h * h
+ - a * a * b * g * h * h
+ + a * a * a * h * h * h;
+}
+// end of generated code
+
+#else
+
+/* more Mathematica generated code. This takes a different tack, starting with
+ the control-point based parametric formulas. The C code is unoptimized --
+ in this form, this is a proof of concept (since the other code didn't work)
+*/
+static double calc_c(double a, double b, double c, double d,
+ double e, double f, double g, double h) {
+ return
+d*d*d*e*e*e - 3*d*d*(3*c*e*e*f + 3*b*e*(-3*f*f + 2*e*g) + a*(9*f*f*f - 9*e*f*g + e*e*h)) -
+ h*(27*c*c*c*e*e - 27*c*c*(3*b*e*f - 3*a*f*f + 2*a*e*g) +
+ h*(-27*b*b*b*e + 27*a*b*b*f - 9*a*a*b*g + a*a*a*h) +
+ 9*c*(9*b*b*e*g + a*b*(-9*f*g + 3*e*h) + a*a*(3*g*g - 2*f*h))) +
+ 3*d*(9*c*c*e*e*g + 9*b*b*e*(3*g*g - 2*f*h) + 3*a*b*(-9*f*g*g + 6*f*f*h + e*g*h) +
+ a*a*(9*g*g*g - 9*f*g*h + e*h*h) + 3*c*(3*b*e*(-3*f*g + e*h) + a*(9*f*f*g - 6*e*g*g - e*f*h)))
+ ;
+}
+
+// - Power(e - 3*f + 3*g - h,3)*Power(x,3)
+static double calc_xxx(double e3f3gh) {
+ return -e3f3gh * e3f3gh * e3f3gh;
+}
+
+static double calc_y(double a, double b, double c, double d,
+ double e, double f, double g, double h) {
+ return
++ 3*(6*b*d*d*e*e - d*d*d*e*e + 18*b*b*d*e*f - 18*b*d*d*e*f -
+ 9*b*d*d*f*f - 54*b*b*d*e*g + 12*b*d*d*e*g - 27*b*b*d*g*g - 18*b*b*b*e*h + 18*b*b*d*e*h +
+ 18*b*b*d*f*h + a*a*a*h*h - 9*b*b*b*h*h + 9*c*c*c*e*(e + 2*h) +
+ a*a*(-3*b*h*(2*g + h) + d*(-27*g*g + 9*g*h - h*(2*e + h) + 9*f*(g + h))) +
+ a*(9*b*b*h*(2*f + h) - 3*b*d*(6*f*f - 6*f*(3*g - 2*h) + g*(-9*g + h) + e*(g + h)) +
+ d*d*(e*e + 9*f*(3*f - g) + e*(-9*f - 9*g + 2*h))) -
+ 9*c*c*(d*e*(e + 2*g) + 3*b*(f*h + e*(f + h)) + a*(-3*f*f - 6*f*h + 2*(g*h + e*(g + h)))) +
+ 3*c*(d*d*e*(e + 2*f) + a*a*(3*g*g + 6*g*h - 2*h*(2*f + h)) + 9*b*b*(g*h + e*(g + h)) +
+ a*d*(-9*f*f - 18*f*g + 6*g*g + f*h + e*(f + 12*g + h)) +
+ b*(d*(-3*e*e + 9*f*g + e*(9*f + 9*g - 6*h)) + 3*a*(h*(2*e - 3*g + h) - 3*f*(g + h))))) // *y
+ ;
+}
+
+static double calc_yy(double a, double b, double c, double d,
+ double e, double f, double g, double h) {
+ return
+- 3*(18*c*c*c*e - 18*c*c*d*e + 6*c*d*d*e - d*d*d*e + 3*c*d*d*f - 9*c*c*d*g + a*a*a*h + 9*c*c*c*h -
+ 9*b*b*b*(e + 2*h) - a*a*(d*(e - 9*f + 18*g - 7*h) + 3*c*(2*f - 6*g + h)) +
+ a*(-9*c*c*(2*e - 6*f + 2*g - h) + d*d*(-7*e + 18*f - 9*g + h) + 3*c*d*(7*e - 17*f + 3*g + h)) +
+ 9*b*b*(3*c*(e + g + h) + a*(f + 2*h) - d*(e - 2*(f - 3*g + h))) -
+ 3*b*(-(d*d*(e - 6*f + 2*g)) - 3*c*d*(e + 3*f + 3*g - h) + 9*c*c*(e + f + h) + a*a*(g + 2*h) +
+ a*(c*(-3*e + 9*f + 9*g + 3*h) + d*(e + 3*f - 17*g + 7*h)))) // *Power(y,2)
+ ;
+}
+
+// + Power(a - 3*b + 3*c - d,3)*Power(y,3)
+static double calc_yyy(double a3b3cd) {
+ return a3b3cd * a3b3cd * a3b3cd;
+}
+
+static double calc_xx(double a, double b, double c, double d,
+ double e, double f, double g, double h) {
+ return
+// + Power(x,2)*
+(-3*(-9*b*e*f*f + 9*a*f*f*f + 6*b*e*e*g - 9*a*e*f*g + 27*b*e*f*g - 27*a*f*f*g + 18*a*e*g*g - 54*b*e*g*g +
+ 27*a*f*g*g + 27*b*f*g*g - 18*a*g*g*g + a*e*e*h - 9*b*e*e*h + 3*a*e*f*h + 9*b*e*f*h + 9*a*f*f*h -
+ 18*b*f*f*h - 21*a*e*g*h + 51*b*e*g*h - 9*a*f*g*h - 27*b*f*g*h + 18*a*g*g*h + 7*a*e*h*h - 18*b*e*h*h - 3*a*f*h*h +
+ 18*b*f*h*h - 6*a*g*h*h - 3*b*g*h*h + a*h*h*h +
+ 3*c*(-9*f*f*(g - 2*h) + 3*g*g*h - f*h*(9*g + 2*h) + e*e*(f - 6*g + 6*h) +
+ e*(9*f*g + 6*g*g - 17*f*h - 3*g*h + 3*h*h)) -
+ d*(e*e*e + e*e*(-6*f - 3*g + 7*h) - 9*(2*f - g)*(f*f + g*g - f*(g + h)) +
+ e*(18*f*f + 9*g*g + 3*g*h + h*h - 3*f*(3*g + 7*h)))) )
+ ;
+}
+
+// + Power(x,2)*(3*(a - 3*b + 3*c - d)*Power(e - 3*f + 3*g - h,2)*y)
+static double calc_xxy(double a3b3cd, double e3f3gh) {
+ return 3 * a3b3cd * e3f3gh * e3f3gh;
+}
+
+static double calc_x(double a, double b, double c, double d,
+ double e, double f, double g, double h) {
+ return
+// + x*
+(-3*(27*b*b*e*g*g - 27*a*b*f*g*g + 9*a*a*g*g*g - 18*b*b*e*f*h + 18*a*b*f*f*h + 3*a*b*e*g*h -
+ 27*b*b*e*g*h - 9*a*a*f*g*h + 27*a*b*f*g*h - 9*a*a*g*g*h + a*a*e*h*h - 9*a*b*e*h*h +
+ 27*b*b*e*h*h + 6*a*a*f*h*h - 18*a*b*f*h*h - 9*b*b*f*h*h + 3*a*a*g*h*h +
+ 6*a*b*g*h*h - a*a*h*h*h + 9*c*c*(e*e*(g - 3*h) - 3*f*f*h + e*(3*f + 2*g)*h) +
+ d*d*(e*e*e - 9*f*f*f + 9*e*f*(f + g) - e*e*(3*f + 6*g + h)) +
+ d*(-3*c*(-9*f*f*g + e*e*(2*f - 6*g - 3*h) + e*(9*f*g + 6*g*g + f*h)) +
+ a*(-18*f*f*f - 18*e*g*g + 18*g*g*g - 2*e*e*h + 3*e*g*h + 2*e*h*h + 9*f*f*(3*g + 2*h) +
+ 3*f*(6*e*g - 9*g*g - e*h - 6*g*h)) - 3*b*(9*f*g*g + e*e*(4*g - 3*h) - 6*f*f*h -
+ e*(6*f*f + g*(18*g + h) - 3*f*(3*g + 4*h)))) +
+ 3*c*(3*b*(e*e*h + 3*f*g*h - e*(3*f*g - 6*f*h + 6*g*h + h*h)) +
+ a*(9*f*f*(g - 2*h) + f*h*(-e + 9*g + 4*h) - 3*(2*g*g*h + e*(2*g*g - 4*g*h + h*h))))) )
+ ;
+}
+
+static double calc_xy(double a, double b, double c, double d,
+ double e, double f, double g, double h) {
+ return
+// + x*3*
+(-2*a*d*e*e - 7*d*d*e*e + 15*a*d*e*f + 21*d*d*e*f - 9*a*d*f*f - 18*d*d*f*f - 15*a*d*e*g -
+ 3*d*d*e*g - 9*a*a*f*g + 9*d*d*f*g + 18*a*a*g*g + 9*a*d*g*g + 2*a*a*e*h - 2*d*d*e*h +
+ 3*a*a*f*h + 15*a*d*f*h - 21*a*a*g*h - 15*a*d*g*h + 7*a*a*h*h + 2*a*d*h*h -
+ 9*c*c*(2*e*e + 3*f*f + 3*f*h - 2*g*h + e*(-3*f - 4*g + h)) +
+ 9*b*b*(3*g*g - 3*g*h + 2*h*(-2*f + h) + e*(-2*f + 3*g + h)) +
+ 3*b*(3*c*(e*e + 3*e*(f - 3*g) + (9*f - 3*g - h)*h) + a*(6*f*f + e*g - 9*f*g - 9*g*g - 5*e*h + 9*f*h + 14*g*h - 7*h*h) +
+ d*(-e*e + 12*f*f - 27*f*g + e*(-9*f + 20*g - 5*h) + g*(9*g + h))) +
+ 3*c*(a*(-(e*f) - 9*f*f + 27*f*g - 12*g*g + 5*e*h - 20*f*h + 9*g*h + h*h) +
+ d*(7*e*e + 9*f*f + 9*f*g - 6*g*g - f*h + e*(-14*f - 9*g + 5*h)))) // *y
+ ;
+}
+
+// - x*3*Power(a - 3*b + 3*c - d,2)*(e - 3*f + 3*g - h)*Power(y,2)
+static double calc_xyy(double a3b3cd, double e3f3gh) {
+ return -3 * a3b3cd * a3b3cd * e3f3gh;
+}
+
+#endif
+
+static double (*calc_proc[])(double a, double b, double c, double d,
+ double e, double f, double g, double h) = {
+ calc_xx, calc_xy, calc_yy, calc_x, calc_y, calc_c
+};
+
+#if USE_SYVESTER
+/* Control points to parametric coefficients
+ s = 1 - t
+ Attt + 3Btts + 3Ctss + Dsss ==
+ Attt + 3B(1 - t)tt + 3C(1 - t)(t - tt) + D(1 - t)(1 - 2t + tt) ==
+ Attt + 3B(tt - ttt) + 3C(t - tt - tt + ttt) + D(1-2t+tt-t+2tt-ttt) ==
+ Attt + 3Btt - 3Bttt + 3Ct - 6Ctt + 3Cttt + D - 3Dt + 3Dtt - Dttt ==
+ D + (3C - 3D)t + (3B - 6C + 3D)tt + (A - 3B + 3C - D)ttt
+ a = A - 3*B + 3*C - D
+ b = 3*B - 6*C + 3*D
+ c = 3*C - 3*D
+ d = D
+ */
+
+ /* http://www.algorithmist.net/bezier3.html
+ p = 3 * A
+ q = 3 * B
+ r = 3 * C
+ a = A
+ b = q - p
+ c = p - 2 * q + r
+ d = D - A + q - r
+
+ B(t) = a + t * (b + t * (c + t * d))
+
+ so
+
+ B(t) = a + t*b + t*t*(c + t*d)
+ = a + t*b + t*t*c + t*t*t*d
+ */
+static void set_abcd(const double* cubic, double& a, double& b, double& c,
+ double& d) {
+ a = cubic[0]; // a = A
+ b = 3 * cubic[2]; // b = 3*B (compute rest of b lazily)
+ c = 3 * cubic[4]; // c = 3*C (compute rest of c lazily)
+ d = cubic[6]; // d = D
+ a += -b + c - d; // a = A - 3*B + 3*C - D
+}
+
+static void calc_bc(const double d, double& b, double& c) {
+ b -= 3 * c; // b = 3*B - 3*C
+ c -= 3 * d; // c = 3*C - 3*D
+ b -= c; // b = 3*B - 6*C + 3*D
+}
+
+static void alt_set_abcd(const double* cubic, double& a, double& b, double& c,
+ double& d) {
+ a = cubic[0];
+ double p = 3 * a;
+ double q = 3 * cubic[2];
+ double r = 3 * cubic[4];
+ b = q - p;
+ c = p - 2 * q + r;
+ d = cubic[6] - a + q - r;
+}
+
+const bool try_alt = true;
+
+#else
+
+static void calc_ABCD(double a, double b, double c, double d,
+ double e, double f, double g, double h,
+ double p[coeff_count]) {
+ double a3b3cd = a - 3 * (b - c) - d;
+ double e3f3gh = e - 3 * (f - g) - h;
+ p[xxx_coeff] = calc_xxx(e3f3gh);
+ p[xxy_coeff] = calc_xxy(a3b3cd, e3f3gh);
+ p[xyy_coeff] = calc_xyy(a3b3cd, e3f3gh);
+ p[yyy_coeff] = calc_yyy(a3b3cd);
+}
+#endif
+
+bool implicit_matches(const Cubic& one, const Cubic& two) {
+ double p1[coeff_count]; // a'xxx , b'xxy , c'xyy , d'xx , e'xy , f'yy, etc.
+ double p2[coeff_count];
+#if USE_SYVESTER
+ double a1, b1, c1, d1;
+ if (try_alt)
+ alt_set_abcd(&one[0].x, a1, b1, c1, d1);
+ else
+ set_abcd(&one[0].x, a1, b1, c1, d1);
+ double e1, f1, g1, h1;
+ if (try_alt)
+ alt_set_abcd(&one[0].y, e1, f1, g1, h1);
+ else
+ set_abcd(&one[0].y, e1, f1, g1, h1);
+ calc_ABCD(a1, e1, p1);
+ double a2, b2, c2, d2;
+ if (try_alt)
+ alt_set_abcd(&two[0].x, a2, b2, c2, d2);
+ else
+ set_abcd(&two[0].x, a2, b2, c2, d2);
+ double e2, f2, g2, h2;
+ if (try_alt)
+ alt_set_abcd(&two[0].y, e2, f2, g2, h2);
+ else
+ set_abcd(&two[0].y, e2, f2, g2, h2);
+ calc_ABCD(a2, e2, p2);
+#else
+ double a1 = one[0].x;
+ double b1 = one[1].x;
+ double c1 = one[2].x;
+ double d1 = one[3].x;
+ double e1 = one[0].y;
+ double f1 = one[1].y;
+ double g1 = one[2].y;
+ double h1 = one[3].y;
+ calc_ABCD(a1, b1, c1, d1, e1, f1, g1, h1, p1);
+ double a2 = two[0].x;
+ double b2 = two[1].x;
+ double c2 = two[2].x;
+ double d2 = two[3].x;
+ double e2 = two[0].y;
+ double f2 = two[1].y;
+ double g2 = two[2].y;
+ double h2 = two[3].y;
+ calc_ABCD(a2, b2, c2, d2, e2, f2, g2, h2, p2);
+#endif
+ int first = 0;
+ for (int index = 0; index < coeff_count; ++index) {
+#if USE_SYVESTER
+ if (!try_alt && index == xx_coeff) {
+ calc_bc(d1, b1, c1);
+ calc_bc(h1, f1, g1);
+ calc_bc(d2, b2, c2);
+ calc_bc(h2, f2, g2);
+ }
+#endif
+ if (index >= xx_coeff) {
+ int procIndex = index - xx_coeff;
+ p1[index] = (*calc_proc[procIndex])(a1, b1, c1, d1, e1, f1, g1, h1);
+ p2[index] = (*calc_proc[procIndex])(a2, b2, c2, d2, e2, f2, g2, h2);
+ }
+ if (approximately_zero(p1[index]) || approximately_zero(p2[index])) {
+ first += first == index;
+ continue;
+ }
+ if (first == index) {
+ continue;
+ }
+ if (!AlmostEqualUlps(p1[index] * p2[first], p1[first] * p2[index])) {
+ return false;
+ }
+ }
+ return true;
+}
+
+static double tangent(const double* cubic, double t) {
+ double a, b, c, d;
+#if USE_SYVESTER
+ set_abcd(cubic, a, b, c, d);
+ calc_bc(d, b, c);
+#else
+ coefficients(cubic, a, b, c, d);
+#endif
+ return 3 * a * t * t + 2 * b * t + c;
+}
+
+void tangent(const Cubic& cubic, double t, _Point& result) {
+ result.x = tangent(&cubic[0].x, t);
+ result.y = tangent(&cubic[0].y, t);
+}
+
+// unit test to return and validate parametric coefficients
+#include "CubicParameterization_TestUtility.cpp"
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicParameterizationCode.cpp b/chromium/third_party/skia/experimental/Intersection/CubicParameterizationCode.cpp
new file mode 100644
index 00000000000..7a7908e67f9
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicParameterizationCode.cpp
@@ -0,0 +1,405 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include <vector>
+
+/* Given:
+ * Resultant[a*t^3 + b*t^2 + c*t + d - x, e*t^3 + f*t^2 + g*t + h - y, t]
+ */
+
+const char result1[] =
+"-d^3 e^3 + c d^2 e^2 f - b d^2 e f^2 + a d^2 f^3 - c^2 d e^2 g + "
+" 2 b d^2 e^2 g + b c d e f g - 3 a d^2 e f g - a c d f^2 g - "
+" b^2 d e g^2 + 2 a c d e g^2 + a b d f g^2 - a^2 d g^3 + c^3 e^2 h - "
+" 3 b c d e^2 h + 3 a d^2 e^2 h - b c^2 e f h + 2 b^2 d e f h + "
+" a c d e f h + a c^2 f^2 h - 2 a b d f^2 h + b^2 c e g h - "
+" 2 a c^2 e g h - a b d e g h - a b c f g h + 3 a^2 d f g h + "
+" a^2 c g^2 h - b^3 e h^2 + 3 a b c e h^2 - 3 a^2 d e h^2 + "
+" a b^2 f h^2 - 2 a^2 c f h^2 - a^2 b g h^2 + a^3 h^3 + 3 d^2 e^3 x - "
+" 2 c d e^2 f x + 2 b d e f^2 x - 2 a d f^3 x + c^2 e^2 g x - "
+" 4 b d e^2 g x - b c e f g x + 6 a d e f g x + a c f^2 g x + "
+" b^2 e g^2 x - 2 a c e g^2 x - a b f g^2 x + a^2 g^3 x + "
+" 3 b c e^2 h x - 6 a d e^2 h x - 2 b^2 e f h x - a c e f h x + "
+" 2 a b f^2 h x + a b e g h x - 3 a^2 f g h x + 3 a^2 e h^2 x - "
+" 3 d e^3 x^2 + c e^2 f x^2 - b e f^2 x^2 + a f^3 x^2 + "
+" 2 b e^2 g x^2 - 3 a e f g x^2 + 3 a e^2 h x^2 + e^3 x^3 - "
+" c^3 e^2 y + 3 b c d e^2 y - 3 a d^2 e^2 y + b c^2 e f y - "
+" 2 b^2 d e f y - a c d e f y - a c^2 f^2 y + 2 a b d f^2 y - "
+" b^2 c e g y + 2 a c^2 e g y + a b d e g y + a b c f g y - "
+" 3 a^2 d f g y - a^2 c g^2 y + 2 b^3 e h y - 6 a b c e h y + "
+" 6 a^2 d e h y - 2 a b^2 f h y + 4 a^2 c f h y + 2 a^2 b g h y - "
+" 3 a^3 h^2 y - 3 b c e^2 x y + 6 a d e^2 x y + 2 b^2 e f x y + "
+" a c e f x y - 2 a b f^2 x y - a b e g x y + 3 a^2 f g x y - "
+" 6 a^2 e h x y - 3 a e^2 x^2 y - b^3 e y^2 + 3 a b c e y^2 - "
+" 3 a^2 d e y^2 + a b^2 f y^2 - 2 a^2 c f y^2 - a^2 b g y^2 + "
+" 3 a^3 h y^2 + 3 a^2 e x y^2 - a^3 y^3";
+
+const size_t len1 = sizeof(result1) - 1;
+
+/* Given:
+ * Expand[
+ * Det[{{a, b, c, (d - x), 0, 0},
+ * {0, a, b, c, (d - x), 0},
+ * {0, 0, a, b, c, (d - x)},
+ * {e, f, g, (h - y), 0, 0},
+ * {0, e, f, g, (h - y), 0},
+ * {0, 0, e, f, g, (h - y)}}]]
+ */
+ // result1 and result2 are the same. 102 factors:
+const char result2[] =
+"-d^3 e^3 + c d^2 e^2 f - b d^2 e f^2 + a d^2 f^3 - c^2 d e^2 g + "
+" 2 b d^2 e^2 g + b c d e f g - 3 a d^2 e f g - a c d f^2 g - "
+" b^2 d e g^2 + 2 a c d e g^2 + a b d f g^2 - a^2 d g^3 + c^3 e^2 h - "
+" 3 b c d e^2 h + 3 a d^2 e^2 h - b c^2 e f h + 2 b^2 d e f h + "
+" a c d e f h + a c^2 f^2 h - 2 a b d f^2 h + b^2 c e g h - "
+" 2 a c^2 e g h - a b d e g h - a b c f g h + 3 a^2 d f g h + "
+" a^2 c g^2 h - b^3 e h^2 + 3 a b c e h^2 - 3 a^2 d e h^2 + "
+" a b^2 f h^2 - 2 a^2 c f h^2 - a^2 b g h^2 + a^3 h^3 + 3 d^2 e^3 x - "
+" 2 c d e^2 f x + 2 b d e f^2 x - 2 a d f^3 x + c^2 e^2 g x - "
+" 4 b d e^2 g x - b c e f g x + 6 a d e f g x + a c f^2 g x + "
+" b^2 e g^2 x - 2 a c e g^2 x - a b f g^2 x + a^2 g^3 x + "
+" 3 b c e^2 h x - 6 a d e^2 h x - 2 b^2 e f h x - a c e f h x + "
+" 2 a b f^2 h x + a b e g h x - 3 a^2 f g h x + 3 a^2 e h^2 x - "
+" 3 d e^3 x^2 + c e^2 f x^2 - b e f^2 x^2 + a f^3 x^2 + "
+" 2 b e^2 g x^2 - 3 a e f g x^2 + 3 a e^2 h x^2 + e^3 x^3 - "
+" c^3 e^2 y + 3 b c d e^2 y - 3 a d^2 e^2 y + b c^2 e f y - "
+" 2 b^2 d e f y - a c d e f y - a c^2 f^2 y + 2 a b d f^2 y - "
+" b^2 c e g y + 2 a c^2 e g y + a b d e g y + a b c f g y - "
+" 3 a^2 d f g y - a^2 c g^2 y + 2 b^3 e h y - 6 a b c e h y + "
+" 6 a^2 d e h y - 2 a b^2 f h y + 4 a^2 c f h y + 2 a^2 b g h y - "
+" 3 a^3 h^2 y - 3 b c e^2 x y + 6 a d e^2 x y + 2 b^2 e f x y + "
+" a c e f x y - 2 a b f^2 x y - a b e g x y + 3 a^2 f g x y - "
+" 6 a^2 e h x y - 3 a e^2 x^2 y - b^3 e y^2 + 3 a b c e y^2 - "
+" 3 a^2 d e y^2 + a b^2 f y^2 - 2 a^2 c f y^2 - a^2 b g y^2 + "
+" 3 a^3 h y^2 + 3 a^2 e x y^2 - a^3 y^3";
+
+const size_t len2 = sizeof(result2) - 1;
+
+/* Given: r1 = Resultant[
+ * a*(1 - t)^3 + 3*b*(1 - t)^2*t + 3*c*(1 - t)*t^2 + d*t^3 - x,
+ * e*(1 - t)^3 + 3*f*(1 - t)^2*t + 3*g*(1 - t)*t^2 + h*t^3 - y, t]
+ * Collect[r1, {x, y}, Simplify]
+ * CForm[%]
+ * then use regex to replace Power\(([a-h]),3\) with \1*\1*\1
+ * and Power\(([a-h]),2\) with \1*\1
+ * yields:
+
+d*d*d*e*e*e - 3*d*d*(3*c*e*e*f + 3*b*e*(-3*f*f + 2*e*g) + a*(9*f*f*f - 9*e*f*g + e*e*h)) -
+ h*(27*c*c*c*e*e - 27*c*c*(3*b*e*f - 3*a*f*f + 2*a*e*g) +
+ h*(-27*b*b*b*e + 27*a*b*b*f - 9*a*a*b*g + a*a*a*h) +
+ 9*c*(9*b*b*e*g + a*b*(-9*f*g + 3*e*h) + a*a*(3*g*g - 2*f*h))) +
+ 3*d*(9*c*c*e*e*g + 9*b*b*e*(3*g*g - 2*f*h) + 3*a*b*(-9*f*g*g + 6*f*f*h + e*g*h) +
+ a*a*(9*g*g*g - 9*f*g*h + e*h*h) + 3*c*(3*b*e*(-3*f*g + e*h) + a*(9*f*f*g - 6*e*g*g - e*f*h)))
+
+- Power(e - 3*f + 3*g - h,3)*Power(x,3)
+
++ 3*(6*b*d*d*e*e - d*d*d*e*e + 18*b*b*d*e*f - 18*b*d*d*e*f -
+ 9*b*d*d*f*f - 54*b*b*d*e*g + 12*b*d*d*e*g - 27*b*b*d*g*g - 18*b*b*b*e*h + 18*b*b*d*e*h +
+ 18*b*b*d*f*h + a*a*a*h*h - 9*b*b*b*h*h + 9*c*c*c*e*(e + 2*h) +
+ a*a*(-3*b*h*(2*g + h) + d*(-27*g*g + 9*g*h - h*(2*e + h) + 9*f*(g + h))) +
+ a*(9*b*b*h*(2*f + h) - 3*b*d*(6*f*f - 6*f*(3*g - 2*h) + g*(-9*g + h) + e*(g + h)) +
+ d*d*(e*e + 9*f*(3*f - g) + e*(-9*f - 9*g + 2*h))) -
+ 9*c*c*(d*e*(e + 2*g) + 3*b*(f*h + e*(f + h)) + a*(-3*f*f - 6*f*h + 2*(g*h + e*(g + h)))) +
+ 3*c*(d*d*e*(e + 2*f) + a*a*(3*g*g + 6*g*h - 2*h*(2*f + h)) + 9*b*b*(g*h + e*(g + h)) +
+ a*d*(-9*f*f - 18*f*g + 6*g*g + f*h + e*(f + 12*g + h)) +
+ b*(d*(-3*e*e + 9*f*g + e*(9*f + 9*g - 6*h)) + 3*a*(h*(2*e - 3*g + h) - 3*f*(g + h)))))*y
+
+- 3*(18*c*c*c*e - 18*c*c*d*e + 6*c*d*d*e - d*d*d*e + 3*c*d*d*f - 9*c*c*d*g + a*a*a*h + 9*c*c*c*h -
+ 9*b*b*b*(e + 2*h) - a*a*(d*(e - 9*f + 18*g - 7*h) + 3*c*(2*f - 6*g + h)) +
+ a*(-9*c*c*(2*e - 6*f + 2*g - h) + d*d*(-7*e + 18*f - 9*g + h) + 3*c*d*(7*e - 17*f + 3*g + h)) +
+ 9*b*b*(3*c*(e + g + h) + a*(f + 2*h) - d*(e - 2*(f - 3*g + h))) -
+ 3*b*(-(d*d*(e - 6*f + 2*g)) - 3*c*d*(e + 3*f + 3*g - h) + 9*c*c*(e + f + h) + a*a*(g + 2*h) +
+ a*(c*(-3*e + 9*f + 9*g + 3*h) + d*(e + 3*f - 17*g + 7*h))))*Power(y,2)
+
++ Power(a - 3*b + 3*c - d,3)*Power(y,3)
+
++ Power(x,2)*(-3*(-9*b*e*f*f + 9*a*f*f*f + 6*b*e*e*g - 9*a*e*f*g + 27*b*e*f*g - 27*a*f*f*g + 18*a*e*g*g - 54*b*e*g*g +
+ 27*a*f*g*g + 27*b*f*g*g - 18*a*g*g*g + a*e*e*h - 9*b*e*e*h + 3*a*e*f*h + 9*b*e*f*h + 9*a*f*f*h -
+ 18*b*f*f*h - 21*a*e*g*h + 51*b*e*g*h - 9*a*f*g*h - 27*b*f*g*h + 18*a*g*g*h + 7*a*e*h*h - 18*b*e*h*h - 3*a*f*h*h +
+ 18*b*f*h*h - 6*a*g*h*h - 3*b*g*h*h + a*h*h*h +
+ 3*c*(-9*f*f*(g - 2*h) + 3*g*g*h - f*h*(9*g + 2*h) + e*e*(f - 6*g + 6*h) +
+ e*(9*f*g + 6*g*g - 17*f*h - 3*g*h + 3*h*h)) -
+ d*(e*e*e + e*e*(-6*f - 3*g + 7*h) - 9*(2*f - g)*(f*f + g*g - f*(g + h)) +
+ e*(18*f*f + 9*g*g + 3*g*h + h*h - 3*f*(3*g + 7*h)))) )
+
++ Power(x,2)*(3*(a - 3*b + 3*c - d)*Power(e - 3*f + 3*g - h,2)*y)
+
++ x*(-3*(27*b*b*e*g*g - 27*a*b*f*g*g + 9*a*a*g*g*g - 18*b*b*e*f*h + 18*a*b*f*f*h + 3*a*b*e*g*h -
+ 27*b*b*e*g*h - 9*a*a*f*g*h + 27*a*b*f*g*h - 9*a*a*g*g*h + a*a*e*h*h - 9*a*b*e*h*h +
+ 27*b*b*e*h*h + 6*a*a*f*h*h - 18*a*b*f*h*h - 9*b*b*f*h*h + 3*a*a*g*h*h +
+ 6*a*b*g*h*h - a*a*h*h*h + 9*c*c*(e*e*(g - 3*h) - 3*f*f*h + e*(3*f + 2*g)*h) +
+ d*d*(e*e*e - 9*f*f*f + 9*e*f*(f + g) - e*e*(3*f + 6*g + h)) +
+ d*(-3*c*(-9*f*f*g + e*e*(2*f - 6*g - 3*h) + e*(9*f*g + 6*g*g + f*h)) +
+ a*(-18*f*f*f - 18*e*g*g + 18*g*g*g - 2*e*e*h + 3*e*g*h + 2*e*h*h + 9*f*f*(3*g + 2*h) +
+ 3*f*(6*e*g - 9*g*g - e*h - 6*g*h)) - 3*b*(9*f*g*g + e*e*(4*g - 3*h) - 6*f*f*h -
+ e*(6*f*f + g*(18*g + h) - 3*f*(3*g + 4*h)))) +
+ 3*c*(3*b*(e*e*h + 3*f*g*h - e*(3*f*g - 6*f*h + 6*g*h + h*h)) +
+ a*(9*f*f*(g - 2*h) + f*h*(-e + 9*g + 4*h) - 3*(2*g*g*h + e*(2*g*g - 4*g*h + h*h))))) )
+
++ x*3*(-2*a*d*e*e - 7*d*d*e*e + 15*a*d*e*f + 21*d*d*e*f - 9*a*d*f*f - 18*d*d*f*f - 15*a*d*e*g -
+ 3*d*d*e*g - 9*a*a*f*g + 9*d*d*f*g + 18*a*a*g*g + 9*a*d*g*g + 2*a*a*e*h - 2*d*d*e*h +
+ 3*a*a*f*h + 15*a*d*f*h - 21*a*a*g*h - 15*a*d*g*h + 7*a*a*h*h + 2*a*d*h*h -
+ 9*c*c*(2*e*e + 3*f*f + 3*f*h - 2*g*h + e*(-3*f - 4*g + h)) +
+ 9*b*b*(3*g*g - 3*g*h + 2*h*(-2*f + h) + e*(-2*f + 3*g + h)) +
+ 3*b*(3*c*(e*e + 3*e*(f - 3*g) + (9*f - 3*g - h)*h) + a*(6*f*f + e*g - 9*f*g - 9*g*g - 5*e*h + 9*f*h + 14*g*h - 7*h*h) +
+ d*(-e*e + 12*f*f - 27*f*g + e*(-9*f + 20*g - 5*h) + g*(9*g + h))) +
+ 3*c*(a*(-(e*f) - 9*f*f + 27*f*g - 12*g*g + 5*e*h - 20*f*h + 9*g*h + h*h) +
+ d*(7*e*e + 9*f*f + 9*f*g - 6*g*g - f*h + e*(-14*f - 9*g + 5*h))))*y
+
+- x*3*Power(a - 3*b + 3*c - d,2)*(e - 3*f + 3*g - h)*Power(y,2)
+
+*/
+
+const int factors = 8;
+
+struct coeff {
+ int s; // constant and coefficient sign
+ int n[factors]; // 0 or power of a (1, 2, or 3) for a through h
+};
+
+enum {
+ xxx_coeff,
+ xxy_coeff,
+ xyy_coeff,
+ yyy_coeff,
+ xx_coeff,
+ xy_coeff,
+ yy_coeff,
+ x_coeff,
+ y_coeff,
+ c_coeff,
+ coeff_count
+};
+
+typedef std::vector<coeff> coeffs;
+typedef std::vector<coeffs> n_coeffs;
+
+static char skipSpace(const char* str, size_t& index) {
+ do {
+ ++index;
+ } while (str[index] == ' ');
+ return str[index];
+}
+
+static char backSkipSpace(const char* str, size_t& end) {
+ while (str[end - 1] == ' ') {
+ --end;
+ }
+ return str[end - 1];
+}
+
+static void match(const char* str, size_t len, coeffs& co, const char pattern[]) {
+ size_t patternLen = strlen(pattern);
+ size_t index = 0;
+ while (index < len) {
+ char ch = str[index];
+ if (ch != '-' && ch != '+') {
+ printf("missing sign\n");
+ }
+ size_t end = index + 1;
+ while (str[end] != '+' && str[end] != '-' && ++end < len) {
+ ;
+ }
+ backSkipSpace(str, end);
+ size_t idx = index;
+ index = end;
+ skipSpace(str, index);
+ if (!strncmp(&str[end - patternLen], pattern, patternLen) == 0) {
+ continue;
+ }
+ size_t endCoeff = end - patternLen;
+ char last = backSkipSpace(str, endCoeff);
+ if (last == '2' || last == '3') {
+ last = str[endCoeff - 3]; // skip ^2
+ }
+ if (last == 'x' || last == 'y') {
+ continue;
+ }
+ coeff c;
+ c.s = str[idx] == '-' ? -1 : 1;
+ bzero(c.n, sizeof(c.n));
+ ch = skipSpace(str, idx);
+ if (ch >= '2' && ch <= '6') {
+ c.s *= ch - '0';
+ ch = skipSpace(str, idx);
+ }
+ while (idx < endCoeff) {
+ char x = str[idx];
+ if (x < 'a' || x > 'a' + factors) {
+ printf("expected factor\n");
+ }
+ idx++;
+ int pow = 1;
+ if (str[idx] == '^') {
+ idx++;
+ char exp = str[idx];
+ if (exp < '2' || exp > '3') {
+ printf("expected exponent\n");
+ }
+ pow = exp - '0';
+ }
+ skipSpace(str, idx);
+ c.n[x - 'a'] = pow;
+ }
+ co.push_back(c);
+ }
+}
+
+void cubecode_test(int test);
+
+void cubecode_test(int test) {
+ const char* str = test ? result2 : result1;
+ size_t len = strlen(str);
+ n_coeffs c(coeff_count);
+ match(str, len, c[xxx_coeff], "x^3"); // 1 factor
+ match(str, len, c[xxy_coeff], "x^2 y"); // 1 factor
+ match(str, len, c[xyy_coeff], "x y^2"); // 1 factor
+ match(str, len, c[yyy_coeff], "y^3"); // 1 factor
+ match(str, len, c[xx_coeff], "x^2"); // 7 factors
+ match(str, len, c[xy_coeff], "x y"); // 8 factors
+ match(str, len, c[yy_coeff], "y^2"); // 7 factors
+ match(str, len, c[x_coeff], "x"); // 21 factors
+ match(str, len, c[y_coeff], "y"); // 21 factors
+ match(str, len, c[c_coeff], ""); // 34 factors : total 102
+#define COMPUTE_MOST_FREQUENT_EXPRESSION_TRIPLETS 0
+#define WRITE_AS_NONOPTIMIZED_C_CODE 0
+#if COMPUTE_MOST_FREQUENT_EXPRESSION_TRIPLETS
+ int count[factors][factors][factors];
+ bzero(count, sizeof(count));
+#endif
+#if WRITE_AS_NONOPTIMIZED_C_CODE
+ printf("// start of generated code");
+#endif
+ for (n_coeffs::iterator it = c.begin(); it < c.end(); ++it) {
+ coeffs& co = *it;
+#if WRITE_AS_NONOPTIMIZED_C_CODE
+ printf("\nstatic double calc_%c(double a, double b, double c, double d,"
+ "\n double e, double f, double g, double h) {"
+ "\n return"
+ "\n ", 'A' + (it - c.begin()));
+ if (co[0].s > 0) {
+ printf(" ");
+ }
+ if (abs(co[0].s) == 1) {
+ printf(" ");
+ }
+#endif
+ for (coeffs::iterator ct = co.begin(); ct < co.end(); ++ct) {
+ const coeff& cf = *ct;
+#if WRITE_AS_NONOPTIMIZED_C_CODE
+ printf(" ");
+ bool firstFactor = false;
+ if (ct - co.begin() > 0 || cf.s < 0) {
+ printf("%c", cf.s < 0 ? '-' : '+');
+ }
+ if (ct - co.begin() > 0) {
+ printf(" ");
+ }
+ if (abs(cf.s) > 1) {
+ printf("%d * ", abs(cf.s));
+ } else {
+ if (ct - co.begin() > 0) {
+ printf(" ");
+ }
+ }
+#endif
+ for (int x = 0; x < factors; ++x) {
+ if (cf.n[x] == 0) {
+ continue;
+ }
+#if WRITE_AS_NONOPTIMIZED_C_CODE
+ for (int y = 0 ; y < cf.n[x]; ++y) {
+ if (y > 0 || firstFactor) {
+ printf(" * ");
+ }
+ printf("%c", 'a' + x);
+ }
+ firstFactor = true;
+#endif
+#if COMPUTE_MOST_FREQUENT_EXPRESSION_TRIPLETS
+ for (int y = x; y < factors; ++y) {
+ if (cf.n[y] == 0) {
+ continue;
+ }
+ if (x == y && cf.n[y] == 1) {
+ continue;
+ }
+ for (int z = y; z < factors; ++z) {
+ if (cf.n[z] == 0) {
+ continue;
+ }
+ if ((x == z || y == z) && cf.n[z] == 1) {
+ continue;
+ }
+ if (x == y && y == z && cf.n[z] == 2) {
+ continue;
+ }
+ count[x][y][z]++;
+ }
+ }
+#endif
+ }
+#if WRITE_AS_NONOPTIMIZED_C_CODE
+ if (ct + 1 < co.end()) {
+ printf("\n");
+ }
+#endif
+ }
+#if WRITE_AS_NONOPTIMIZED_C_CODE
+ printf(";\n}\n");
+#endif
+ }
+#if WRITE_AS_NONOPTIMIZED_C_CODE
+ printf("// end of generated code\n");
+#endif
+#if COMPUTE_MOST_FREQUENT_EXPRESSION_TRIPLETS
+ const int bestCount = 20;
+ int best[bestCount][4];
+ bzero(best, sizeof(best));
+ for (int x = 0; x < factors; ++x) {
+ for (int y = x; y < factors; ++y) {
+ for (int z = y; z < factors; ++z) {
+ if (!count[x][y][z]) {
+ continue;
+ }
+ for (int w = 0; w < bestCount; ++w) {
+ if (best[w][0] < count[x][y][z]) {
+ best[w][0] = count[x][y][z];
+ best[w][1] = x;
+ best[w][2] = y;
+ best[w][3] = z;
+ break;
+ }
+ }
+ }
+ }
+ }
+ for (int w = 0; w < bestCount; ++w) {
+ printf("%c%c%c=%d\n", 'a' + best[w][1], 'a' + best[w][2],
+ 'a' + best[w][3], best[w][0]);
+ }
+#endif
+#if WRITE_AS_NONOPTIMIZED_C_CODE
+ printf("\n");
+#endif
+}
+
+/* results: variable triplets used 10 or more times:
+aah=14
+ade=14
+aeh=14
+dee=14
+bce=13
+beg=13
+beh=12
+bbe=11
+bef=11
+cee=11
+cef=11
+def=11
+ceh=10
+deg=10
+*/
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicParameterization_Test.cpp b/chromium/third_party/skia/experimental/Intersection/CubicParameterization_Test.cpp
new file mode 100644
index 00000000000..cc095b60fda
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicParameterization_Test.cpp
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "QuadraticUtilities.h"
+#include "CurveIntersection.h"
+#include "Intersection_Tests.h"
+#include "Parameterization_Test.h"
+#include "TestUtilities.h"
+
+const Quadratic quadratics[] = {
+ {{0, 0}, {1, 0}, {1, 1}},
+};
+
+const size_t quadratics_count = sizeof(quadratics) / sizeof(quadratics[0]);
+
+int firstCubicCoincidenceTest = 0;
+
+void CubicCoincidence_Test() {
+ // split large quadratic
+ // upscale quadratics to cubics
+ // compare original, parts, to see if the are coincident
+ for (size_t index = firstCubicCoincidenceTest; index < quadratics_count; ++index) {
+ const Quadratic& test = quadratics[index];
+ QuadraticPair split;
+ chop_at(test, split, 0.5);
+ Quadratic midThird;
+ sub_divide(test, 1.0/3, 2.0/3, midThird);
+ Cubic whole, first, second, mid;
+ quad_to_cubic(test, whole);
+ quad_to_cubic(split.first(), first);
+ quad_to_cubic(split.second(), second);
+ quad_to_cubic(midThird, mid);
+ if (!implicit_matches(whole, first)) {
+ SkDebugf("%s-1 %d\n", __FUNCTION__, (int)index);
+ }
+ if (!implicit_matches(whole, second)) {
+ SkDebugf("%s-2 %d\n", __FUNCTION__, (int)index);
+ }
+ if (!implicit_matches(mid, first)) {
+ SkDebugf("%s-3 %d\n", __FUNCTION__, (int)index);
+ }
+ if (!implicit_matches(mid, second)) {
+ SkDebugf("%s-4 %d\n", __FUNCTION__, (int)index);
+ }
+ if (!implicit_matches(first, second)) {
+ SkDebugf("%s-5 %d\n", __FUNCTION__, (int)index);
+ }
+ }
+}
+
+// pairs of coincident cubics
+// The on curve points of each cubic should be on both parameterized cubics.
+const Cubic cubics[] = {
+ {
+ { 1, -1},
+ { 1.0/3, 1},
+ {-1.0/3, -1},
+ {-1, 1}
+ },
+ {
+ {-1, 1},
+ {-1.0/3, -1},
+ { 1.0/3, 1},
+ { 1, -1}
+ },
+ {
+ {0, 2},
+ {0, 1},
+ {1, 0},
+ {2, 0}
+ }, {
+ {2, 0},
+ {1, 0},
+ {0, 1},
+ {0, 2}
+ },
+ {
+ {315.74799999999999, 312.83999999999997},
+ {312.64400000000001, 318.13400000000001},
+ {305.83600000000001, 319.90899999999999},
+ {300.54199999999997, 316.80399999999997}
+ }, {
+ {317.12200000000001, 309.05000000000001},
+ {316.11200000000002, 315.10199999999998},
+ {310.38499999999999, 319.19},
+ {304.33199999999999, 318.17899999999997}
+ }
+};
+
+const size_t cubics_count = sizeof(cubics) / sizeof(cubics[0]);
+
+int firstCubicParameterizationTest = 0;
+
+void CubicParameterization_Test() {
+ for (size_t index = firstCubicParameterizationTest; index < cubics_count; ++index) {
+ for (size_t inner = 0; inner < 4; inner += 3) {
+ if (!point_on_parameterized_curve(cubics[index], cubics[index][inner])) {
+ SkDebugf("%s [%zu,%zu] 1 parameterization failed\n",
+ __FUNCTION__, index, inner);
+ }
+ if (!point_on_parameterized_curve(cubics[index], cubics[index ^ 1][inner])) {
+ SkDebugf("%s [%zu,%zu] 2 parameterization failed\n",
+ __FUNCTION__, index, inner);
+ }
+ }
+ if (!implicit_matches(cubics[index], cubics[index ^ 1])) {
+ SkDebugf("%s %d\n", __FUNCTION__, (int)index);
+ }
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicParameterization_TestUtility.cpp b/chromium/third_party/skia/experimental/Intersection/CubicParameterization_TestUtility.cpp
new file mode 100644
index 00000000000..356ca88f857
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicParameterization_TestUtility.cpp
@@ -0,0 +1,53 @@
+// included by CubicParameterization.cpp
+// accesses internal functions to validate parameterized coefficients
+
+#include "Parameterization_Test.h"
+
+static void parameter_coeffs(const Cubic& cubic, double coeffs[coeff_count]) {
+#if USE_SYVESTER
+ double ax, bx, cx, dx;
+ if (try_alt)
+ alt_set_abcd(&cubic[0].x, ax, bx, cx, dx);
+ else
+ set_abcd(&cubic[0].x, ax, bx, cx, dx);
+ double ay, by, cy, dy;
+ if (try_alt)
+ alt_set_abcd(&cubic[0].y, ay, by, cy, dy);
+ else
+ set_abcd(&cubic[0].y, ay, by, cy, dy);
+ calc_ABCD(ax, ay, coeffs);
+ if (!try_alt) calc_bc(dx, bx, cx);
+ if (!try_alt) calc_bc(dy, by, cy);
+#else
+ double ax = cubic[0].x;
+ double bx = cubic[1].x;
+ double cx = cubic[2].x;
+ double dx = cubic[3].x;
+ double ay = cubic[0].y;
+ double by = cubic[1].y;
+ double cy = cubic[2].y;
+ double dy = cubic[3].y;
+ calc_ABCD(ax, bx, cx, dx, ay, by, cy, dy, coeffs);
+#endif
+ for (int index = xx_coeff; index < coeff_count; ++index) {
+ int procIndex = index - xx_coeff;
+ coeffs[index] = (*calc_proc[procIndex])(ax, bx, cx, dx, ay, by, cy, dy);
+ }
+}
+
+bool point_on_parameterized_curve(const Cubic& cubic, const _Point& point) {
+ double coeffs[coeff_count];
+ parameter_coeffs(cubic, coeffs);
+ double xxx = coeffs[xxx_coeff] * point.x * point.x * point.x;
+ double xxy = coeffs[xxy_coeff] * point.x * point.x * point.y;
+ double xyy = coeffs[xyy_coeff] * point.x * point.y * point.y;
+ double yyy = coeffs[yyy_coeff] * point.y * point.y * point.y;
+ double xx = coeffs[ xx_coeff] * point.x * point.x;
+ double xy = coeffs[ xy_coeff] * point.x * point.y;
+ double yy = coeffs[ yy_coeff] * point.y * point.y;
+ double x = coeffs[ x_coeff] * point.x;
+ double y = coeffs[ y_coeff] * point.y;
+ double c = coeffs[ c_coeff];
+ double sum = xxx + xxy + xyy + yyy + xx + xy + yy + x + y + c;
+ return approximately_zero(sum);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicReduceOrder.cpp b/chromium/third_party/skia/experimental/Intersection/CubicReduceOrder.cpp
new file mode 100644
index 00000000000..f7c0c12d4cc
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicReduceOrder.cpp
@@ -0,0 +1,254 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "Extrema.h"
+#include "IntersectionUtilities.h"
+#include "LineParameters.h"
+
+static double interp_cubic_coords(const double* src, double t)
+{
+ double ab = interp(src[0], src[2], t);
+ double bc = interp(src[2], src[4], t);
+ double cd = interp(src[4], src[6], t);
+ double abc = interp(ab, bc, t);
+ double bcd = interp(bc, cd, t);
+ return interp(abc, bcd, t);
+}
+
+static int coincident_line(const Cubic& cubic, Cubic& reduction) {
+ reduction[0] = reduction[1] = cubic[0];
+ return 1;
+}
+
+static int vertical_line(const Cubic& cubic, ReduceOrder_Styles reduceStyle, Cubic& reduction) {
+ double tValues[2];
+ reduction[0] = cubic[0];
+ reduction[1] = cubic[3];
+ if (reduceStyle == kReduceOrder_TreatAsFill) {
+ return 2;
+ }
+ int smaller = reduction[1].y > reduction[0].y;
+ int larger = smaller ^ 1;
+ int roots = findExtrema(cubic[0].y, cubic[1].y, cubic[2].y, cubic[3].y, tValues);
+ for (int index = 0; index < roots; ++index) {
+ double yExtrema = interp_cubic_coords(&cubic[0].y, tValues[index]);
+ if (reduction[smaller].y > yExtrema) {
+ reduction[smaller].y = yExtrema;
+ continue;
+ }
+ if (reduction[larger].y < yExtrema) {
+ reduction[larger].y = yExtrema;
+ }
+ }
+ return 2;
+}
+
+static int horizontal_line(const Cubic& cubic, ReduceOrder_Styles reduceStyle, Cubic& reduction) {
+ double tValues[2];
+ reduction[0] = cubic[0];
+ reduction[1] = cubic[3];
+ if (reduceStyle == kReduceOrder_TreatAsFill) {
+ return 2;
+ }
+ int smaller = reduction[1].x > reduction[0].x;
+ int larger = smaller ^ 1;
+ int roots = findExtrema(cubic[0].x, cubic[1].x, cubic[2].x, cubic[3].x, tValues);
+ for (int index = 0; index < roots; ++index) {
+ double xExtrema = interp_cubic_coords(&cubic[0].x, tValues[index]);
+ if (reduction[smaller].x > xExtrema) {
+ reduction[smaller].x = xExtrema;
+ continue;
+ }
+ if (reduction[larger].x < xExtrema) {
+ reduction[larger].x = xExtrema;
+ }
+ }
+ return 2;
+}
+
+// check to see if it is a quadratic or a line
+static int check_quadratic(const Cubic& cubic, Cubic& reduction) {
+ double dx10 = cubic[1].x - cubic[0].x;
+ double dx23 = cubic[2].x - cubic[3].x;
+ double midX = cubic[0].x + dx10 * 3 / 2;
+ if (!AlmostEqualUlps(midX - cubic[3].x, dx23 * 3 / 2)) {
+ return 0;
+ }
+ double dy10 = cubic[1].y - cubic[0].y;
+ double dy23 = cubic[2].y - cubic[3].y;
+ double midY = cubic[0].y + dy10 * 3 / 2;
+ if (!AlmostEqualUlps(midY - cubic[3].y, dy23 * 3 / 2)) {
+ return 0;
+ }
+ reduction[0] = cubic[0];
+ reduction[1].x = midX;
+ reduction[1].y = midY;
+ reduction[2] = cubic[3];
+ return 3;
+}
+
+static int check_linear(const Cubic& cubic, ReduceOrder_Styles reduceStyle,
+ int minX, int maxX, int minY, int maxY, Cubic& reduction) {
+ int startIndex = 0;
+ int endIndex = 3;
+ while (cubic[startIndex].approximatelyEqual(cubic[endIndex])) {
+ --endIndex;
+ if (endIndex == 0) {
+ printf("%s shouldn't get here if all four points are about equal\n", __FUNCTION__);
+ SkASSERT(0);
+ }
+ }
+ if (!isLinear(cubic, startIndex, endIndex)) {
+ return 0;
+ }
+ // four are colinear: return line formed by outside
+ reduction[0] = cubic[0];
+ reduction[1] = cubic[3];
+ if (reduceStyle == kReduceOrder_TreatAsFill) {
+ return 2;
+ }
+ int sameSide1;
+ int sameSide2;
+ bool useX = cubic[maxX].x - cubic[minX].x >= cubic[maxY].y - cubic[minY].y;
+ if (useX) {
+ sameSide1 = sign(cubic[0].x - cubic[1].x) + sign(cubic[3].x - cubic[1].x);
+ sameSide2 = sign(cubic[0].x - cubic[2].x) + sign(cubic[3].x - cubic[2].x);
+ } else {
+ sameSide1 = sign(cubic[0].y - cubic[1].y) + sign(cubic[3].y - cubic[1].y);
+ sameSide2 = sign(cubic[0].y - cubic[2].y) + sign(cubic[3].y - cubic[2].y);
+ }
+ if (sameSide1 == sameSide2 && (sameSide1 & 3) != 2) {
+ return 2;
+ }
+ double tValues[2];
+ int roots;
+ if (useX) {
+ roots = findExtrema(cubic[0].x, cubic[1].x, cubic[2].x, cubic[3].x, tValues);
+ } else {
+ roots = findExtrema(cubic[0].y, cubic[1].y, cubic[2].y, cubic[3].y, tValues);
+ }
+ for (int index = 0; index < roots; ++index) {
+ _Point extrema;
+ extrema.x = interp_cubic_coords(&cubic[0].x, tValues[index]);
+ extrema.y = interp_cubic_coords(&cubic[0].y, tValues[index]);
+ // sameSide > 0 means mid is smaller than either [0] or [3], so replace smaller
+ int replace;
+ if (useX) {
+ if (extrema.x < cubic[0].x ^ extrema.x < cubic[3].x) {
+ continue;
+ }
+ replace = (extrema.x < cubic[0].x | extrema.x < cubic[3].x)
+ ^ (cubic[0].x < cubic[3].x);
+ } else {
+ if (extrema.y < cubic[0].y ^ extrema.y < cubic[3].y) {
+ continue;
+ }
+ replace = (extrema.y < cubic[0].y | extrema.y < cubic[3].y)
+ ^ (cubic[0].y < cubic[3].y);
+ }
+ reduction[replace] = extrema;
+ }
+ return 2;
+}
+
+bool isLinear(const Cubic& cubic, int startIndex, int endIndex) {
+ LineParameters lineParameters;
+ lineParameters.cubicEndPoints(cubic, startIndex, endIndex);
+ // FIXME: maybe it's possible to avoid this and compare non-normalized
+ lineParameters.normalize();
+ double distance = lineParameters.controlPtDistance(cubic, 1);
+ if (!approximately_zero(distance)) {
+ return false;
+ }
+ distance = lineParameters.controlPtDistance(cubic, 2);
+ return approximately_zero(distance);
+}
+
+/* food for thought:
+http://objectmix.com/graphics/132906-fast-precision-driven-cubic-quadratic-piecewise-degree-reduction-algos-2-a.html
+
+Given points c1, c2, c3 and c4 of a cubic Bezier, the points of the
+corresponding quadratic Bezier are (given in convex combinations of
+points):
+
+q1 = (11/13)c1 + (3/13)c2 -(3/13)c3 + (2/13)c4
+q2 = -c1 + (3/2)c2 + (3/2)c3 - c4
+q3 = (2/13)c1 - (3/13)c2 + (3/13)c3 + (11/13)c4
+
+Of course, this curve does not interpolate the end-points, but it would
+be interesting to see the behaviour of such a curve in an applet.
+
+--
+Kalle Rutanen
+http://kaba.hilvi.org
+
+*/
+
+// reduce to a quadratic or smaller
+// look for identical points
+// look for all four points in a line
+ // note that three points in a line doesn't simplify a cubic
+// look for approximation with single quadratic
+ // save approximation with multiple quadratics for later
+int reduceOrder(const Cubic& cubic, Cubic& reduction, ReduceOrder_Quadratics allowQuadratics,
+ ReduceOrder_Styles reduceStyle) {
+ int index, minX, maxX, minY, maxY;
+ int minXSet, minYSet;
+ minX = maxX = minY = maxY = 0;
+ minXSet = minYSet = 0;
+ for (index = 1; index < 4; ++index) {
+ if (cubic[minX].x > cubic[index].x) {
+ minX = index;
+ }
+ if (cubic[minY].y > cubic[index].y) {
+ minY = index;
+ }
+ if (cubic[maxX].x < cubic[index].x) {
+ maxX = index;
+ }
+ if (cubic[maxY].y < cubic[index].y) {
+ maxY = index;
+ }
+ }
+ for (index = 0; index < 4; ++index) {
+ double cx = cubic[index].x;
+ double cy = cubic[index].y;
+ double denom = SkTMax(fabs(cx), SkTMax(fabs(cy),
+ SkTMax(fabs(cubic[minX].x), fabs(cubic[minY].y))));
+ if (denom == 0) {
+ minXSet |= 1 << index;
+ minYSet |= 1 << index;
+ continue;
+ }
+ double inv = 1 / denom;
+ if (approximately_equal_half(cx * inv, cubic[minX].x * inv)) {
+ minXSet |= 1 << index;
+ }
+ if (approximately_equal_half(cy * inv, cubic[minY].y * inv)) {
+ minYSet |= 1 << index;
+ }
+ }
+ if (minXSet == 0xF) { // test for vertical line
+ if (minYSet == 0xF) { // return 1 if all four are coincident
+ return coincident_line(cubic, reduction);
+ }
+ return vertical_line(cubic, reduceStyle, reduction);
+ }
+ if (minYSet == 0xF) { // test for horizontal line
+ return horizontal_line(cubic, reduceStyle, reduction);
+ }
+ int result = check_linear(cubic, reduceStyle, minX, maxX, minY, maxY, reduction);
+ if (result) {
+ return result;
+ }
+ if (allowQuadratics == kReduceOrder_QuadraticsAllowed
+ && (result = check_quadratic(cubic, reduction))) {
+ return result;
+ }
+ memcpy(reduction, cubic, sizeof(Cubic));
+ return 4;
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicReduceOrder_Test.cpp b/chromium/third_party/skia/experimental/Intersection/CubicReduceOrder_Test.cpp
new file mode 100644
index 00000000000..79b34288d3e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicReduceOrder_Test.cpp
@@ -0,0 +1,154 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "CubicIntersection_TestData.h"
+#include "Intersection_Tests.h"
+#include "QuadraticIntersection_TestData.h"
+#include "TestUtilities.h"
+
+void CubicReduceOrder_Test() {
+ size_t index;
+ Cubic reduce;
+ int order;
+ enum {
+ RunAll,
+ RunPointDegenerates,
+ RunNotPointDegenerates,
+ RunLines,
+ RunNotLines,
+ RunModEpsilonLines,
+ RunLessEpsilonLines,
+ RunNegEpsilonLines,
+ RunQuadraticLines,
+ RunQuadraticModLines,
+ RunComputedLines,
+ RunNone
+ } run = RunAll;
+ int firstTestIndex = 0;
+#if 0
+ run = RunComputedLines;
+ firstTestIndex = 18;
+#endif
+ int firstPointDegeneratesTest = run == RunAll ? 0 : run == RunPointDegenerates ? firstTestIndex : SK_MaxS32;
+ int firstNotPointDegeneratesTest = run == RunAll ? 0 : run == RunNotPointDegenerates ? firstTestIndex : SK_MaxS32;
+ int firstLinesTest = run == RunAll ? 0 : run == RunLines ? firstTestIndex : SK_MaxS32;
+ int firstNotLinesTest = run == RunAll ? 0 : run == RunNotLines ? firstTestIndex : SK_MaxS32;
+ int firstModEpsilonTest = run == RunAll ? 0 : run == RunModEpsilonLines ? firstTestIndex : SK_MaxS32;
+ int firstLessEpsilonTest = run == RunAll ? 0 : run == RunLessEpsilonLines ? firstTestIndex : SK_MaxS32;
+ int firstNegEpsilonTest = run == RunAll ? 0 : run == RunNegEpsilonLines ? firstTestIndex : SK_MaxS32;
+ int firstQuadraticLineTest = run == RunAll ? 0 : run == RunQuadraticLines ? firstTestIndex : SK_MaxS32;
+ int firstQuadraticModLineTest = run == RunAll ? 0 : run == RunQuadraticModLines ? firstTestIndex : SK_MaxS32;
+ int firstComputedLinesTest = run == RunAll ? 0 : run == RunComputedLines ? firstTestIndex : SK_MaxS32;
+
+ for (index = firstPointDegeneratesTest; index < pointDegenerates_count; ++index) {
+ const Cubic& cubic = pointDegenerates[index];
+ order = reduceOrder(cubic, reduce, kReduceOrder_QuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ if (order != 1) {
+ SkDebugf("[%d] pointDegenerates order=%d\n", (int) index, order);
+ }
+ }
+ for (index = firstNotPointDegeneratesTest; index < notPointDegenerates_count; ++index) {
+ const Cubic& cubic = notPointDegenerates[index];
+ order = reduceOrder(cubic, reduce, kReduceOrder_QuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ if (order == 1) {
+ SkDebugf("[%d] notPointDegenerates order=%d\n", (int) index, order);
+ }
+ }
+ for (index = firstLinesTest; index < lines_count; ++index) {
+ const Cubic& cubic = lines[index];
+ order = reduceOrder(cubic, reduce, kReduceOrder_QuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ if (order != 2) {
+ SkDebugf("[%d] lines order=%d\n", (int) index, order);
+ }
+ }
+ for (index = firstNotLinesTest; index < notLines_count; ++index) {
+ const Cubic& cubic = notLines[index];
+ order = reduceOrder(cubic, reduce, kReduceOrder_QuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ if (order == 2) {
+ SkDebugf("[%d] notLines order=%d\n", (int) index, order);
+ }
+ }
+ for (index = firstModEpsilonTest; index < modEpsilonLines_count; ++index) {
+ const Cubic& cubic = modEpsilonLines[index];
+ order = reduceOrder(cubic, reduce, kReduceOrder_QuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ if (order == 2) {
+ SkDebugf("[%d] line mod by epsilon order=%d\n", (int) index, order);
+ }
+ }
+ for (index = firstLessEpsilonTest; index < lessEpsilonLines_count; ++index) {
+ const Cubic& cubic = lessEpsilonLines[index];
+ order = reduceOrder(cubic, reduce, kReduceOrder_QuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ if (order != 2) {
+ SkDebugf("[%d] line less by epsilon/2 order=%d\n", (int) index, order);
+ }
+ }
+ for (index = firstNegEpsilonTest; index < negEpsilonLines_count; ++index) {
+ const Cubic& cubic = negEpsilonLines[index];
+ order = reduceOrder(cubic, reduce, kReduceOrder_QuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ if (order != 2) {
+ SkDebugf("[%d] line neg by epsilon/2 order=%d\n", (int) index, order);
+ }
+ }
+ for (index = firstQuadraticLineTest; index < quadraticLines_count; ++index) {
+ const Quadratic& quad = quadraticLines[index];
+ Cubic cubic;
+ quad_to_cubic(quad, cubic);
+ order = reduceOrder(cubic, reduce, kReduceOrder_QuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ if (order != 2) {
+ SkDebugf("[%d] line quad order=%d\n", (int) index, order);
+ }
+ }
+ for (index = firstQuadraticModLineTest; index < quadraticModEpsilonLines_count; ++index) {
+ const Quadratic& quad = quadraticModEpsilonLines[index];
+ Cubic cubic;
+ quad_to_cubic(quad, cubic);
+ order = reduceOrder(cubic, reduce, kReduceOrder_QuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ if (order != 3) {
+ SkDebugf("[%d] line mod quad order=%d\n", (int) index, order);
+ }
+ }
+
+ // test if computed line end points are valid
+ for (index = firstComputedLinesTest; index < lines_count; ++index) {
+ const Cubic& cubic = lines[index];
+ bool controlsInside = controls_inside(cubic);
+ order = reduceOrder(cubic, reduce, kReduceOrder_QuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ if (reduce[0].x == reduce[1].x && reduce[0].y == reduce[1].y) {
+ SkDebugf("[%d] line computed ends match order=%d\n", (int) index, order);
+ }
+ if (controlsInside) {
+ if ( (reduce[0].x != cubic[0].x && reduce[0].x != cubic[3].x)
+ || (reduce[0].y != cubic[0].y && reduce[0].y != cubic[3].y)
+ || (reduce[1].x != cubic[0].x && reduce[1].x != cubic[3].x)
+ || (reduce[1].y != cubic[0].y && reduce[1].y != cubic[3].y)) {
+ SkDebugf("[%d] line computed ends order=%d\n", (int) index, order);
+ }
+ } else {
+ // binary search for extrema, compare against actual results
+ // while a control point is outside of bounding box formed by end points, split
+ _Rect bounds = {DBL_MAX, DBL_MAX, -DBL_MAX, -DBL_MAX};
+ find_tight_bounds(cubic, bounds);
+ if ( (!AlmostEqualUlps(reduce[0].x, bounds.left) && !AlmostEqualUlps(reduce[0].x, bounds.right))
+ || (!AlmostEqualUlps(reduce[0].y, bounds.top) && !AlmostEqualUlps(reduce[0].y, bounds.bottom))
+ || (!AlmostEqualUlps(reduce[1].x, bounds.left) && !AlmostEqualUlps(reduce[1].x, bounds.right))
+ || (!AlmostEqualUlps(reduce[1].y, bounds.top) && !AlmostEqualUlps(reduce[1].y, bounds.bottom))) {
+ SkDebugf("[%d] line computed tight bounds order=%d\n", (int) index, order);
+ }
+
+ }
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicSubDivide.cpp b/chromium/third_party/skia/experimental/Intersection/CubicSubDivide.cpp
new file mode 100644
index 00000000000..ddf63cdc2af
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicSubDivide.cpp
@@ -0,0 +1,147 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CubicUtilities.h"
+#include "IntersectionUtilities.h"
+
+/*
+ Given a cubic c, t1, and t2, find a small cubic segment.
+
+ The new cubic is defined as points A, B, C, and D, where
+ s1 = 1 - t1
+ s2 = 1 - t2
+ A = c[0]*s1*s1*s1 + 3*c[1]*s1*s1*t1 + 3*c[2]*s1*t1*t1 + c[3]*t1*t1*t1
+ D = c[0]*s2*s2*s2 + 3*c[1]*s2*s2*t2 + 3*c[2]*s2*t2*t2 + c[3]*t2*t2*t2
+
+ We don't have B or C. So We define two equations to isolate them.
+ First, compute two reference T values 1/3 and 2/3 from t1 to t2:
+
+ c(at (2*t1 + t2)/3) == E
+ c(at (t1 + 2*t2)/3) == F
+
+ Next, compute where those values must be if we know the values of B and C:
+
+ _12 = A*2/3 + B*1/3
+ 12_ = A*1/3 + B*2/3
+ _23 = B*2/3 + C*1/3
+ 23_ = B*1/3 + C*2/3
+ _34 = C*2/3 + D*1/3
+ 34_ = C*1/3 + D*2/3
+ _123 = (A*2/3 + B*1/3)*2/3 + (B*2/3 + C*1/3)*1/3 = A*4/9 + B*4/9 + C*1/9
+ 123_ = (A*1/3 + B*2/3)*1/3 + (B*1/3 + C*2/3)*2/3 = A*1/9 + B*4/9 + C*4/9
+ _234 = (B*2/3 + C*1/3)*2/3 + (C*2/3 + D*1/3)*1/3 = B*4/9 + C*4/9 + D*1/9
+ 234_ = (B*1/3 + C*2/3)*1/3 + (C*1/3 + D*2/3)*2/3 = B*1/9 + C*4/9 + D*4/9
+ _1234 = (A*4/9 + B*4/9 + C*1/9)*2/3 + (B*4/9 + C*4/9 + D*1/9)*1/3
+ = A*8/27 + B*12/27 + C*6/27 + D*1/27
+ = E
+ 1234_ = (A*1/9 + B*4/9 + C*4/9)*1/3 + (B*1/9 + C*4/9 + D*4/9)*2/3
+ = A*1/27 + B*6/27 + C*12/27 + D*8/27
+ = F
+ E*27 = A*8 + B*12 + C*6 + D
+ F*27 = A + B*6 + C*12 + D*8
+
+Group the known values on one side:
+
+ M = E*27 - A*8 - D = B*12 + C* 6
+ N = F*27 - A - D*8 = B* 6 + C*12
+ M*2 - N = B*18
+ N*2 - M = C*18
+ B = (M*2 - N)/18
+ C = (N*2 - M)/18
+ */
+
+static double interp_cubic_coords(const double* src, double t)
+{
+ double ab = interp(src[0], src[2], t);
+ double bc = interp(src[2], src[4], t);
+ double cd = interp(src[4], src[6], t);
+ double abc = interp(ab, bc, t);
+ double bcd = interp(bc, cd, t);
+ double abcd = interp(abc, bcd, t);
+ return abcd;
+}
+
+void sub_divide(const Cubic& src, double t1, double t2, Cubic& dst) {
+ if (t1 == 0 && t2 == 1) {
+ dst[0] = src[0];
+ dst[1] = src[1];
+ dst[2] = src[2];
+ dst[3] = src[3];
+ return;
+ }
+ double ax = dst[0].x = interp_cubic_coords(&src[0].x, t1);
+ double ay = dst[0].y = interp_cubic_coords(&src[0].y, t1);
+ double ex = interp_cubic_coords(&src[0].x, (t1*2+t2)/3);
+ double ey = interp_cubic_coords(&src[0].y, (t1*2+t2)/3);
+ double fx = interp_cubic_coords(&src[0].x, (t1+t2*2)/3);
+ double fy = interp_cubic_coords(&src[0].y, (t1+t2*2)/3);
+ double dx = dst[3].x = interp_cubic_coords(&src[0].x, t2);
+ double dy = dst[3].y = interp_cubic_coords(&src[0].y, t2);
+ double mx = ex * 27 - ax * 8 - dx;
+ double my = ey * 27 - ay * 8 - dy;
+ double nx = fx * 27 - ax - dx * 8;
+ double ny = fy * 27 - ay - dy * 8;
+ /* bx = */ dst[1].x = (mx * 2 - nx) / 18;
+ /* by = */ dst[1].y = (my * 2 - ny) / 18;
+ /* cx = */ dst[2].x = (nx * 2 - mx) / 18;
+ /* cy = */ dst[2].y = (ny * 2 - my) / 18;
+}
+
+void sub_divide(const Cubic& src, const _Point& a, const _Point& d,
+ double t1, double t2, _Point dst[2]) {
+ double ex = interp_cubic_coords(&src[0].x, (t1 * 2 + t2) / 3);
+ double ey = interp_cubic_coords(&src[0].y, (t1 * 2 + t2) / 3);
+ double fx = interp_cubic_coords(&src[0].x, (t1 + t2 * 2) / 3);
+ double fy = interp_cubic_coords(&src[0].y, (t1 + t2 * 2) / 3);
+ double mx = ex * 27 - a.x * 8 - d.x;
+ double my = ey * 27 - a.y * 8 - d.y;
+ double nx = fx * 27 - a.x - d.x * 8;
+ double ny = fy * 27 - a.y - d.y * 8;
+ /* bx = */ dst[0].x = (mx * 2 - nx) / 18;
+ /* by = */ dst[0].y = (my * 2 - ny) / 18;
+ /* cx = */ dst[1].x = (nx * 2 - mx) / 18;
+ /* cy = */ dst[1].y = (ny * 2 - my) / 18;
+}
+
+/* classic one t subdivision */
+static void interp_cubic_coords(const double* src, double* dst, double t)
+{
+ double ab = interp(src[0], src[2], t);
+ double bc = interp(src[2], src[4], t);
+ double cd = interp(src[4], src[6], t);
+ double abc = interp(ab, bc, t);
+ double bcd = interp(bc, cd, t);
+ double abcd = interp(abc, bcd, t);
+
+ dst[0] = src[0];
+ dst[2] = ab;
+ dst[4] = abc;
+ dst[6] = abcd;
+ dst[8] = bcd;
+ dst[10] = cd;
+ dst[12] = src[6];
+}
+
+void chop_at(const Cubic& src, CubicPair& dst, double t)
+{
+ if (t == 0.5) {
+ dst.pts[0] = src[0];
+ dst.pts[1].x = (src[0].x + src[1].x) / 2;
+ dst.pts[1].y = (src[0].y + src[1].y) / 2;
+ dst.pts[2].x = (src[0].x + 2 * src[1].x + src[2].x) / 4;
+ dst.pts[2].y = (src[0].y + 2 * src[1].y + src[2].y) / 4;
+ dst.pts[3].x = (src[0].x + 3 * (src[1].x + src[2].x) + src[3].x) / 8;
+ dst.pts[3].y = (src[0].y + 3 * (src[1].y + src[2].y) + src[3].y) / 8;
+ dst.pts[4].x = (src[1].x + 2 * src[2].x + src[3].x) / 4;
+ dst.pts[4].y = (src[1].y + 2 * src[2].y + src[3].y) / 4;
+ dst.pts[5].x = (src[2].x + src[3].x) / 2;
+ dst.pts[5].y = (src[2].y + src[3].y) / 2;
+ dst.pts[6] = src[3];
+ return;
+ }
+ interp_cubic_coords(&src[0].x, &dst.pts[0].x, t);
+ interp_cubic_coords(&src[0].y, &dst.pts[0].y, t);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicToQuadratics.cpp b/chromium/third_party/skia/experimental/Intersection/CubicToQuadratics.cpp
new file mode 100644
index 00000000000..5eeaf19c9f3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicToQuadratics.cpp
@@ -0,0 +1,217 @@
+/*
+http://stackoverflow.com/questions/2009160/how-do-i-convert-the-2-control-points-of-a-cubic-curve-to-the-single-control-poi
+*/
+
+/*
+Let's call the control points of the cubic Q0..Q3 and the control points of the quadratic P0..P2.
+Then for degree elevation, the equations are:
+
+Q0 = P0
+Q1 = 1/3 P0 + 2/3 P1
+Q2 = 2/3 P1 + 1/3 P2
+Q3 = P2
+In your case you have Q0..Q3 and you're solving for P0..P2. There are two ways to compute P1 from
+ the equations above:
+
+P1 = 3/2 Q1 - 1/2 Q0
+P1 = 3/2 Q2 - 1/2 Q3
+If this is a degree-elevated cubic, then both equations will give the same answer for P1. Since
+ it's likely not, your best bet is to average them. So,
+
+P1 = -1/4 Q0 + 3/4 Q1 + 3/4 Q2 - 1/4 Q3
+
+
+Cubic defined by: P1/2 - anchor points, C1/C2 control points
+|x| is the euclidean norm of x
+mid-point approx of cubic: a quad that shares the same anchors with the cubic and has the
+ control point at C = (3·C2 - P2 + 3·C1 - P1)/4
+
+Algorithm
+
+pick an absolute precision (prec)
+Compute the Tdiv as the root of (cubic) equation
+sqrt(3)/18 · |P2 - 3·C2 + 3·C1 - P1|/2 · Tdiv ^ 3 = prec
+if Tdiv < 0.5 divide the cubic at Tdiv. First segment [0..Tdiv] can be approximated with by a
+ quadratic, with a defect less than prec, by the mid-point approximation.
+ Repeat from step 2 with the second resulted segment (corresponding to 1-Tdiv)
+0.5<=Tdiv<1 - simply divide the cubic in two. The two halves can be approximated by the mid-point
+ approximation
+Tdiv>=1 - the entire cubic can be approximated by the mid-point approximation
+
+confirmed by (maybe stolen from)
+http://www.caffeineowl.com/graphics/2d/vectorial/cubic2quad01.html
+// maybe in turn derived from http://www.cccg.ca/proceedings/2004/36.pdf
+// also stored at http://www.cis.usouthal.edu/~hain/general/Publications/Bezier/bezier%20cccg04%20paper.pdf
+
+*/
+
+#include "CubicUtilities.h"
+#include "CurveIntersection.h"
+#include "LineIntersection.h"
+#include "TSearch.h"
+
+const bool AVERAGE_END_POINTS = true; // results in better fitting curves
+
+#define USE_CUBIC_END_POINTS 1
+
+static double calcTDiv(const Cubic& cubic, double precision, double start) {
+ const double adjust = sqrt(3) / 36;
+ Cubic sub;
+ const Cubic* cPtr;
+ if (start == 0) {
+ cPtr = &cubic;
+ } else {
+ // OPTIMIZE: special-case half-split ?
+ sub_divide(cubic, start, 1, sub);
+ cPtr = &sub;
+ }
+ const Cubic& c = *cPtr;
+ double dx = c[3].x - 3 * (c[2].x - c[1].x) - c[0].x;
+ double dy = c[3].y - 3 * (c[2].y - c[1].y) - c[0].y;
+ double dist = sqrt(dx * dx + dy * dy);
+ double tDiv3 = precision / (adjust * dist);
+ double t = cube_root(tDiv3);
+ if (start > 0) {
+ t = start + (1 - start) * t;
+ }
+ return t;
+}
+
+void demote_cubic_to_quad(const Cubic& cubic, Quadratic& quad) {
+ quad[0] = cubic[0];
+if (AVERAGE_END_POINTS) {
+ const _Point fromC1 = { (3 * cubic[1].x - cubic[0].x) / 2, (3 * cubic[1].y - cubic[0].y) / 2 };
+ const _Point fromC2 = { (3 * cubic[2].x - cubic[3].x) / 2, (3 * cubic[2].y - cubic[3].y) / 2 };
+ quad[1].x = (fromC1.x + fromC2.x) / 2;
+ quad[1].y = (fromC1.y + fromC2.y) / 2;
+} else {
+ lineIntersect((const _Line&) cubic[0], (const _Line&) cubic[2], quad[1]);
+}
+ quad[2] = cubic[3];
+}
+
+int cubic_to_quadratics(const Cubic& cubic, double precision, SkTDArray<Quadratic>& quadratics) {
+ SkTDArray<double> ts;
+ cubic_to_quadratics(cubic, precision, ts);
+ int tsCount = ts.count();
+ double t1Start = 0;
+ int order = 0;
+ for (int idx = 0; idx <= tsCount; ++idx) {
+ double t1 = idx < tsCount ? ts[idx] : 1;
+ Cubic part;
+ sub_divide(cubic, t1Start, t1, part);
+ Quadratic q1;
+ demote_cubic_to_quad(part, q1);
+ Quadratic s1;
+ int o1 = reduceOrder(q1, s1, kReduceOrder_TreatAsFill);
+ if (order < o1) {
+ order = o1;
+ }
+ memcpy(quadratics.append(), o1 < 2 ? s1 : q1, sizeof(Quadratic));
+ t1Start = t1;
+ }
+ return order;
+}
+
+static bool addSimpleTs(const Cubic& cubic, double precision, SkTDArray<double>& ts) {
+ double tDiv = calcTDiv(cubic, precision, 0);
+ if (tDiv >= 1) {
+ return true;
+ }
+ if (tDiv >= 0.5) {
+ *ts.append() = 0.5;
+ return true;
+ }
+ return false;
+}
+
+static void addTs(const Cubic& cubic, double precision, double start, double end,
+ SkTDArray<double>& ts) {
+ double tDiv = calcTDiv(cubic, precision, 0);
+ double parts = ceil(1.0 / tDiv);
+ for (double index = 0; index < parts; ++index) {
+ double newT = start + (index / parts) * (end - start);
+ if (newT > 0 && newT < 1) {
+ *ts.append() = newT;
+ }
+ }
+}
+
+// flavor that returns T values only, deferring computing the quads until they are needed
+// FIXME: when called from recursive intersect 2, this could take the original cubic
+// and do a more precise job when calling chop at and sub divide by computing the fractional ts.
+// it would still take the prechopped cubic for reduce order and find cubic inflections
+void cubic_to_quadratics(const Cubic& cubic, double precision, SkTDArray<double>& ts) {
+ Cubic reduced;
+ int order = reduceOrder(cubic, reduced, kReduceOrder_QuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ if (order < 3) {
+ return;
+ }
+ double inflectT[5];
+ int inflections = find_cubic_inflections(cubic, inflectT);
+ SkASSERT(inflections <= 2);
+ if (!ends_are_extrema_in_x_or_y(cubic)) {
+ inflections += find_cubic_max_curvature(cubic, &inflectT[inflections]);
+ SkASSERT(inflections <= 5);
+ }
+ QSort<double>(inflectT, &inflectT[inflections - 1]);
+ // OPTIMIZATION: is this filtering common enough that it needs to be pulled out into its
+ // own subroutine?
+ while (inflections && approximately_less_than_zero(inflectT[0])) {
+ memcpy(inflectT, &inflectT[1], sizeof(inflectT[0]) * --inflections);
+ }
+ int start = 0;
+ do {
+ int next = start + 1;
+ if (next >= inflections) {
+ break;
+ }
+ if (!approximately_equal(inflectT[start], inflectT[next])) {
+ ++start;
+ continue;
+ }
+ memcpy(&inflectT[start], &inflectT[next], sizeof(inflectT[0]) * (--inflections - start));
+ } while (true);
+ while (inflections && approximately_greater_than_one(inflectT[inflections - 1])) {
+ --inflections;
+ }
+ CubicPair pair;
+ if (inflections == 1) {
+ chop_at(cubic, pair, inflectT[0]);
+ int orderP1 = reduceOrder(pair.first(), reduced, kReduceOrder_NoQuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ if (orderP1 < 2) {
+ --inflections;
+ } else {
+ int orderP2 = reduceOrder(pair.second(), reduced, kReduceOrder_NoQuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ if (orderP2 < 2) {
+ --inflections;
+ }
+ }
+ }
+ if (inflections == 0 && addSimpleTs(cubic, precision, ts)) {
+ return;
+ }
+ if (inflections == 1) {
+ chop_at(cubic, pair, inflectT[0]);
+ addTs(pair.first(), precision, 0, inflectT[0], ts);
+ addTs(pair.second(), precision, inflectT[0], 1, ts);
+ return;
+ }
+ if (inflections > 1) {
+ Cubic part;
+ sub_divide(cubic, 0, inflectT[0], part);
+ addTs(part, precision, 0, inflectT[0], ts);
+ int last = inflections - 1;
+ for (int idx = 0; idx < last; ++idx) {
+ sub_divide(cubic, inflectT[idx], inflectT[idx + 1], part);
+ addTs(part, precision, inflectT[idx], inflectT[idx + 1], ts);
+ }
+ sub_divide(cubic, inflectT[last], 1, part);
+ addTs(part, precision, inflectT[last], 1, ts);
+ return;
+ }
+ addTs(cubic, precision, 0, 1, ts);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicToQuadratics_Test.cpp b/chromium/third_party/skia/experimental/Intersection/CubicToQuadratics_Test.cpp
new file mode 100644
index 00000000000..b7e1252a46c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicToQuadratics_Test.cpp
@@ -0,0 +1,269 @@
+#include "CubicIntersection_TestData.h"
+#include "CubicUtilities.h"
+#include "Intersection_Tests.h"
+#include "QuadraticIntersection_TestData.h"
+#include "TestUtilities.h"
+#include "SkGeometry.h"
+
+static void test(const Cubic* cubics, const char* name, int firstTest, size_t testCount) {
+ SkTDArray<Quadratic> quads;
+ for (size_t index = firstTest; index < testCount; ++index) {
+ const Cubic& cubic = cubics[index];
+ double precision = calcPrecision(cubic);
+ (void) cubic_to_quadratics(cubic, precision, quads);
+ if (quads.count() != 1) {
+ printf("%s [%d] cubic to quadratics failed count=%d\n", name, (int) index,
+ quads.count());
+ }
+ }
+}
+
+static void test(const Quadratic* quadTests, const char* name, int firstTest, size_t testCount) {
+ SkTDArray<Quadratic> quads;
+ for (size_t index = firstTest; index < testCount; ++index) {
+ const Quadratic& quad = quadTests[index];
+ Cubic cubic;
+ quad_to_cubic(quad, cubic);
+ double precision = calcPrecision(cubic);
+ (void) cubic_to_quadratics(cubic, precision, quads);
+ if (quads.count() != 1) {
+ printf("%s [%d] cubic to quadratics failed count=%d\n", name, (int) index,
+ quads.count());
+ }
+ }
+}
+
+static void testC(const Cubic* cubics, const char* name, int firstTest, size_t testCount) {
+ SkTDArray<Quadratic> quads;
+ // test if computed line end points are valid
+ for (size_t index = firstTest; index < testCount; ++index) {
+ const Cubic& cubic = cubics[index];
+ double precision = calcPrecision(cubic);
+ int order = cubic_to_quadratics(cubic, precision, quads);
+ SkASSERT(order != 4);
+ if (order < 3) {
+ continue;
+ }
+ if (!AlmostEqualUlps(cubic[0].x, quads[0][0].x)
+ || !AlmostEqualUlps(cubic[0].y, quads[0][0].y)) {
+ printf("[%d] unmatched start\n", (int) index);
+ }
+ int last = quads.count() - 1;
+ if (!AlmostEqualUlps(cubic[3].x, quads[last][2].x)
+ || !AlmostEqualUlps(cubic[3].y, quads[last][2].y)) {
+ printf("[%d] unmatched end\n", (int) index);
+ }
+ }
+}
+
+static void testC(const Cubic(* cubics)[2], const char* name, int firstTest, size_t testCount) {
+ SkTDArray<Quadratic> quads;
+ for (size_t index = firstTest; index < testCount; ++index) {
+ for (int idx2 = 0; idx2 < 2; ++idx2) {
+ const Cubic& cubic = cubics[index][idx2];
+ double precision = calcPrecision(cubic);
+ int order = cubic_to_quadratics(cubic, precision, quads);
+ SkASSERT(order != 4);
+ if (order < 3) {
+ continue;
+ }
+ if (!AlmostEqualUlps(cubic[0].x, quads[0][0].x)
+ || !AlmostEqualUlps(cubic[0].y, quads[0][0].y)) {
+ printf("[%d][%d] unmatched start\n", (int) index, idx2);
+ }
+ int last = quads.count() - 1;
+ if (!AlmostEqualUlps(cubic[3].x, quads[last][2].x)
+ || !AlmostEqualUlps(cubic[3].y, quads[last][2].y)) {
+ printf("[%d][%d] unmatched end\n", (int) index, idx2);
+ }
+ }
+ }
+}
+
+void CubicToQuadratics_Test() {
+ enum {
+ RunAll,
+ RunPointDegenerates,
+ RunNotPointDegenerates,
+ RunLines,
+ RunNotLines,
+ RunModEpsilonLines,
+ RunLessEpsilonLines,
+ RunNegEpsilonLines,
+ RunQuadraticLines,
+ RunQuadraticModLines,
+ RunComputedLines,
+ RunComputedTests,
+ RunNone
+ } run = RunAll;
+ int firstTestIndex = 0;
+#if 0
+ run = RunComputedLines;
+ firstTestIndex = 18;
+#endif
+ int firstPointDegeneratesTest = run == RunAll ? 0 : run == RunPointDegenerates ? firstTestIndex : SK_MaxS32;
+ int firstNotPointDegeneratesTest = run == RunAll ? 0 : run == RunNotPointDegenerates ? firstTestIndex : SK_MaxS32;
+ int firstLinesTest = run == RunAll ? 0 : run == RunLines ? firstTestIndex : SK_MaxS32;
+ int firstNotLinesTest = run == RunAll ? 0 : run == RunNotLines ? firstTestIndex : SK_MaxS32;
+ int firstModEpsilonTest = run == RunAll ? 0 : run == RunModEpsilonLines ? firstTestIndex : SK_MaxS32;
+ int firstLessEpsilonTest = run == RunAll ? 0 : run == RunLessEpsilonLines ? firstTestIndex : SK_MaxS32;
+ int firstNegEpsilonTest = run == RunAll ? 0 : run == RunNegEpsilonLines ? firstTestIndex : SK_MaxS32;
+ int firstQuadraticLineTest = run == RunAll ? 0 : run == RunQuadraticLines ? firstTestIndex : SK_MaxS32;
+ int firstQuadraticModLineTest = run == RunAll ? 0 : run == RunQuadraticModLines ? firstTestIndex : SK_MaxS32;
+ int firstComputedLinesTest = run == RunAll ? 0 : run == RunComputedLines ? firstTestIndex : SK_MaxS32;
+ int firstComputedCubicsTest = run == RunAll ? 0 : run == RunComputedTests ? firstTestIndex : SK_MaxS32;
+
+ test(pointDegenerates, "pointDegenerates", firstPointDegeneratesTest, pointDegenerates_count);
+ test(notPointDegenerates, "notPointDegenerates", firstNotPointDegeneratesTest, notPointDegenerates_count);
+ test(lines, "lines", firstLinesTest, lines_count);
+ test(notLines, "notLines", firstNotLinesTest, notLines_count);
+ test(modEpsilonLines, "modEpsilonLines", firstModEpsilonTest, modEpsilonLines_count);
+ test(lessEpsilonLines, "lessEpsilonLines", firstLessEpsilonTest, lessEpsilonLines_count);
+ test(negEpsilonLines, "negEpsilonLines", firstNegEpsilonTest, negEpsilonLines_count);
+ test(quadraticLines, "quadraticLines", firstQuadraticLineTest, quadraticLines_count);
+ test(quadraticModEpsilonLines, "quadraticModEpsilonLines", firstQuadraticModLineTest,
+ quadraticModEpsilonLines_count);
+ testC(lines, "computed lines", firstComputedLinesTest, lines_count);
+ testC(tests, "computed tests", firstComputedCubicsTest, tests_count);
+ printf("%s end\n", __FUNCTION__);
+}
+
+static Cubic locals[] = {
+{{0, 1}, {1.9274705288631189e-19, 1.0000000000000002}, {0.0017190297609673323, 0.99828097023903239},
+ {0.0053709083094631276, 0.99505672974365911}},
+
+ {{14.5975863, 41.632436}, {16.3518929, 26.2639684}, {18.5165519, 7.68775139}, {8.03767257, 89.1628526}},
+ {{69.7292014, 38.6877352}, {24.7648688, 23.1501713}, {84.9283191, 90.2588441}, {80.392774, 61.3533852}},
+ {{
+ 60.776536520932126,
+ 71.249307306133829
+ }, {
+ 87.107894191103014,
+ 22.377669868235323
+ }, {
+ 1.4974754310666936,
+ 68.069569937917208
+ }, {
+ 45.261946574441133,
+ 17.536076632112298
+ }},
+};
+
+static size_t localsCount = sizeof(locals) / sizeof(locals[0]);
+
+#define DEBUG_CRASH 0
+#define TEST_AVERAGE_END_POINTS 0 // must take const off to test
+extern const bool AVERAGE_END_POINTS;
+
+static void oneOff(size_t x) {
+ const Cubic& cubic = locals[x];
+ const SkPoint skcubic[4] = {{(float) cubic[0].x, (float) cubic[0].y},
+ {(float) cubic[1].x, (float) cubic[1].y}, {(float) cubic[2].x, (float) cubic[2].y},
+ {(float) cubic[3].x, (float) cubic[3].y}};
+ SkScalar skinflect[2];
+ int skin = SkFindCubicInflections(skcubic, skinflect);
+ SkDebugf("%s %d %1.9g\n", __FUNCTION__, skin, skinflect[0]);
+ SkTDArray<Quadratic> quads;
+ double precision = calcPrecision(cubic);
+ (void) cubic_to_quadratics(cubic, precision, quads);
+ SkDebugf("%s quads=%d\n", __FUNCTION__, quads.count());
+}
+
+void CubicsToQuadratics_OneOffTests() {
+ for (size_t x = 0; x < localsCount; ++x) {
+ oneOff(x);
+ }
+}
+
+void CubicsToQuadratics_OneOffTest() {
+ oneOff(0);
+}
+
+void CubicsToQuadratics_RandTest() {
+ srand(0);
+ const int arrayMax = 8;
+ const int sampleMax = 10;
+ const int tests = 1000000; // 10000000;
+ int quadDist[arrayMax];
+ bzero(quadDist, sizeof(quadDist));
+ Cubic samples[arrayMax][sampleMax];
+ int sampleCount[arrayMax];
+ bzero(sampleCount, sizeof(sampleCount));
+ for (int x = 0; x < tests; ++x) {
+ Cubic cubic;
+ for (int i = 0; i < 4; ++i) {
+ cubic[i].x = (double) rand() / RAND_MAX * 100;
+ cubic[i].y = (double) rand() / RAND_MAX * 100;
+ }
+ #if DEBUG_CRASH
+ char str[1024];
+ sprintf(str, "{{%1.9g, %1.9g}, {%1.9g, %1.9g}, {%1.9g, %1.9g}, {%1.9g, %1.9g}},\n",
+ cubic[0].x, cubic[0].y, cubic[1].x, cubic[1].y, cubic[2].x, cubic[2].y,
+ cubic[3].x, cubic[3].y);
+ #endif
+ SkTDArray<Quadratic> quads;
+ double precision = calcPrecision(cubic);
+ (void) cubic_to_quadratics(cubic, precision, quads);
+ int count = quads.count();
+ SkASSERT(count > 0);
+ SkASSERT(--count < arrayMax);
+ quadDist[count]++;
+ int sCount = sampleCount[count];
+ if (sCount < sampleMax) {
+ memcpy(samples[count][sCount], cubic, sizeof(Cubic));
+ sampleCount[count]++;
+ }
+ }
+ for (int x = 0; x < arrayMax; ++x) {
+ if (!quadDist[x]) {
+ continue;
+ }
+ SkDebugf("%d %1.9g%%\n", x + 1, (double) quadDist[x] / tests * 100);
+ }
+ SkDebugf("\n");
+ for (int x = 0; x < arrayMax; ++x) {
+ for (int y = 0; y < sampleCount[x]; ++y) {
+#if TEST_AVERAGE_END_POINTS
+ for (int w = 0; w < 2; ++w) {
+ AVERAGE_END_POINTS = w;
+#else
+ int w = 0;
+#endif
+ SkDebugf("<div id=\"cubic%dx%d%s\">\n", x + 1, y, w ? "x" : "");
+ const Cubic& cubic = samples[x][y];
+ SkDebugf("{{%1.9g, %1.9g}, {%1.9g, %1.9g}, {%1.9g, %1.9g}, {%1.9g, %1.9g}},\n",
+ cubic[0].x, cubic[0].y, cubic[1].x, cubic[1].y, cubic[2].x, cubic[2].y,
+ cubic[3].x, cubic[3].y);
+ SkTDArray<Quadratic> quads;
+ double precision = calcPrecision(cubic);
+ (void) cubic_to_quadratics(cubic, precision, quads);
+ for (int z = 0; z < quads.count(); ++z) {
+ const Quadratic& quad = quads[z];
+ SkDebugf("{{%1.9g, %1.9g}, {%1.9g, %1.9g}, {%1.9g, %1.9g}},\n",
+ quad[0].x, quad[0].y, quad[1].x, quad[1].y, quad[2].x, quad[2].y);
+ }
+ SkDebugf("</div>\n\n");
+#if TEST_AVERAGE_END_POINTS
+ }
+#endif
+ }
+ }
+ SkDebugf("</div>\n\n");
+ SkDebugf("<script type=\"text/javascript\">\n\n");
+ SkDebugf("var testDivs = [\n");
+ for (int x = 0; x < arrayMax; ++x) {
+ for (int y = 0; y < sampleCount[x]; ++y) {
+#if TEST_AVERAGE_END_POINTS
+ for (int w = 0; w < 2; ++w) {
+#else
+ int w = 0;
+#endif
+ SkDebugf(" cubic%dx%d%s,\n", x + 1, y, w ? "x" : "");
+#if TEST_AVERAGE_END_POINTS
+ }
+#endif
+ }
+ }
+ SkDebugf("\n\n\n");
+ SkDebugf("%s end\n", __FUNCTION__);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicUtilities.cpp b/chromium/third_party/skia/experimental/Intersection/CubicUtilities.cpp
new file mode 100644
index 00000000000..c9881c14809
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicUtilities.cpp
@@ -0,0 +1,424 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CubicUtilities.h"
+#include "Extrema.h"
+#include "LineUtilities.h"
+#include "QuadraticUtilities.h"
+
+const int gPrecisionUnit = 256; // FIXME: arbitrary -- should try different values in test framework
+
+// FIXME: cache keep the bounds and/or precision with the caller?
+double calcPrecision(const Cubic& cubic) {
+ _Rect dRect;
+ dRect.setBounds(cubic); // OPTIMIZATION: just use setRawBounds ?
+ double width = dRect.right - dRect.left;
+ double height = dRect.bottom - dRect.top;
+ return (width > height ? width : height) / gPrecisionUnit;
+}
+
+#if SK_DEBUG
+double calcPrecision(const Cubic& cubic, double t, double scale) {
+ Cubic part;
+ sub_divide(cubic, SkTMax(0., t - scale), SkTMin(1., t + scale), part);
+ return calcPrecision(part);
+}
+#endif
+
+bool clockwise(const Cubic& c) {
+ double sum = (c[0].x - c[3].x) * (c[0].y + c[3].y);
+ for (int idx = 0; idx < 3; ++idx){
+ sum += (c[idx + 1].x - c[idx].x) * (c[idx + 1].y + c[idx].y);
+ }
+ return sum <= 0;
+}
+
+void coefficients(const double* cubic, double& A, double& B, double& C, double& D) {
+ A = cubic[6]; // d
+ B = cubic[4] * 3; // 3*c
+ C = cubic[2] * 3; // 3*b
+ D = cubic[0]; // a
+ A -= D - C + B; // A = -a + 3*b - 3*c + d
+ B += 3 * D - 2 * C; // B = 3*a - 6*b + 3*c
+ C -= 3 * D; // C = -3*a + 3*b
+}
+
+bool controls_contained_by_ends(const Cubic& c) {
+ _Vector startTan = c[1] - c[0];
+ if (startTan.x == 0 && startTan.y == 0) {
+ startTan = c[2] - c[0];
+ }
+ _Vector endTan = c[2] - c[3];
+ if (endTan.x == 0 && endTan.y == 0) {
+ endTan = c[1] - c[3];
+ }
+ if (startTan.dot(endTan) >= 0) {
+ return false;
+ }
+ _Line startEdge = {c[0], c[0]};
+ startEdge[1].x -= startTan.y;
+ startEdge[1].y += startTan.x;
+ _Line endEdge = {c[3], c[3]};
+ endEdge[1].x -= endTan.y;
+ endEdge[1].y += endTan.x;
+ double leftStart1 = is_left(startEdge, c[1]);
+ if (leftStart1 * is_left(startEdge, c[2]) < 0) {
+ return false;
+ }
+ double leftEnd1 = is_left(endEdge, c[1]);
+ if (leftEnd1 * is_left(endEdge, c[2]) < 0) {
+ return false;
+ }
+ return leftStart1 * leftEnd1 >= 0;
+}
+
+bool ends_are_extrema_in_x_or_y(const Cubic& c) {
+ return (between(c[0].x, c[1].x, c[3].x) && between(c[0].x, c[2].x, c[3].x))
+ || (between(c[0].y, c[1].y, c[3].y) && between(c[0].y, c[2].y, c[3].y));
+}
+
+bool monotonic_in_y(const Cubic& c) {
+ return between(c[0].y, c[1].y, c[3].y) && between(c[0].y, c[2].y, c[3].y);
+}
+
+bool serpentine(const Cubic& c) {
+ if (!controls_contained_by_ends(c)) {
+ return false;
+ }
+ double wiggle = (c[0].x - c[2].x) * (c[0].y + c[2].y);
+ for (int idx = 0; idx < 2; ++idx){
+ wiggle += (c[idx + 1].x - c[idx].x) * (c[idx + 1].y + c[idx].y);
+ }
+ double waggle = (c[1].x - c[3].x) * (c[1].y + c[3].y);
+ for (int idx = 1; idx < 3; ++idx){
+ waggle += (c[idx + 1].x - c[idx].x) * (c[idx + 1].y + c[idx].y);
+ }
+ return wiggle * waggle < 0;
+}
+
+// cubic roots
+
+const double PI = 4 * atan(1);
+
+// from SkGeometry.cpp (and Numeric Solutions, 5.6)
+int cubicRootsValidT(double A, double B, double C, double D, double t[3]) {
+#if 0
+ if (approximately_zero(A)) { // we're just a quadratic
+ return quadraticRootsValidT(B, C, D, t);
+ }
+ double a, b, c;
+ {
+ double invA = 1 / A;
+ a = B * invA;
+ b = C * invA;
+ c = D * invA;
+ }
+ double a2 = a * a;
+ double Q = (a2 - b * 3) / 9;
+ double R = (2 * a2 * a - 9 * a * b + 27 * c) / 54;
+ double Q3 = Q * Q * Q;
+ double R2MinusQ3 = R * R - Q3;
+ double adiv3 = a / 3;
+ double* roots = t;
+ double r;
+
+ if (R2MinusQ3 < 0) // we have 3 real roots
+ {
+ double theta = acos(R / sqrt(Q3));
+ double neg2RootQ = -2 * sqrt(Q);
+
+ r = neg2RootQ * cos(theta / 3) - adiv3;
+ if (is_unit_interval(r))
+ *roots++ = r;
+
+ r = neg2RootQ * cos((theta + 2 * PI) / 3) - adiv3;
+ if (is_unit_interval(r))
+ *roots++ = r;
+
+ r = neg2RootQ * cos((theta - 2 * PI) / 3) - adiv3;
+ if (is_unit_interval(r))
+ *roots++ = r;
+ }
+ else // we have 1 real root
+ {
+ double A = fabs(R) + sqrt(R2MinusQ3);
+ A = cube_root(A);
+ if (R > 0) {
+ A = -A;
+ }
+ if (A != 0) {
+ A += Q / A;
+ }
+ r = A - adiv3;
+ if (is_unit_interval(r))
+ *roots++ = r;
+ }
+ return (int)(roots - t);
+#else
+ double s[3];
+ int realRoots = cubicRootsReal(A, B, C, D, s);
+ int foundRoots = add_valid_ts(s, realRoots, t);
+ return foundRoots;
+#endif
+}
+
+int cubicRootsReal(double A, double B, double C, double D, double s[3]) {
+#if SK_DEBUG
+ // create a string mathematica understands
+ // GDB set print repe 15 # if repeated digits is a bother
+ // set print elements 400 # if line doesn't fit
+ char str[1024];
+ bzero(str, sizeof(str));
+ sprintf(str, "Solve[%1.19g x^3 + %1.19g x^2 + %1.19g x + %1.19g == 0, x]", A, B, C, D);
+ mathematica_ize(str, sizeof(str));
+#if ONE_OFF_DEBUG && ONE_OFF_DEBUG_MATHEMATICA
+ SkDebugf("%s\n", str);
+#endif
+#endif
+ if (approximately_zero(A)
+ && approximately_zero_when_compared_to(A, B)
+ && approximately_zero_when_compared_to(A, C)
+ && approximately_zero_when_compared_to(A, D)) { // we're just a quadratic
+ return quadraticRootsReal(B, C, D, s);
+ }
+ if (approximately_zero_when_compared_to(D, A)
+ && approximately_zero_when_compared_to(D, B)
+ && approximately_zero_when_compared_to(D, C)) { // 0 is one root
+ int num = quadraticRootsReal(A, B, C, s);
+ for (int i = 0; i < num; ++i) {
+ if (approximately_zero(s[i])) {
+ return num;
+ }
+ }
+ s[num++] = 0;
+ return num;
+ }
+ if (approximately_zero(A + B + C + D)) { // 1 is one root
+ int num = quadraticRootsReal(A, A + B, -D, s);
+ for (int i = 0; i < num; ++i) {
+ if (AlmostEqualUlps(s[i], 1)) {
+ return num;
+ }
+ }
+ s[num++] = 1;
+ return num;
+ }
+ double a, b, c;
+ {
+ double invA = 1 / A;
+ a = B * invA;
+ b = C * invA;
+ c = D * invA;
+ }
+ double a2 = a * a;
+ double Q = (a2 - b * 3) / 9;
+ double R = (2 * a2 * a - 9 * a * b + 27 * c) / 54;
+ double R2 = R * R;
+ double Q3 = Q * Q * Q;
+ double R2MinusQ3 = R2 - Q3;
+ double adiv3 = a / 3;
+ double r;
+ double* roots = s;
+#if 0
+ if (approximately_zero_squared(R2MinusQ3) && AlmostEqualUlps(R2, Q3)) {
+ if (approximately_zero_squared(R)) {/* one triple solution */
+ *roots++ = -adiv3;
+ } else { /* one single and one double solution */
+
+ double u = cube_root(-R);
+ *roots++ = 2 * u - adiv3;
+ *roots++ = -u - adiv3;
+ }
+ }
+ else
+#endif
+ if (R2MinusQ3 < 0) // we have 3 real roots
+ {
+ double theta = acos(R / sqrt(Q3));
+ double neg2RootQ = -2 * sqrt(Q);
+
+ r = neg2RootQ * cos(theta / 3) - adiv3;
+ *roots++ = r;
+
+ r = neg2RootQ * cos((theta + 2 * PI) / 3) - adiv3;
+ if (!AlmostEqualUlps(s[0], r)) {
+ *roots++ = r;
+ }
+ r = neg2RootQ * cos((theta - 2 * PI) / 3) - adiv3;
+ if (!AlmostEqualUlps(s[0], r) && (roots - s == 1 || !AlmostEqualUlps(s[1], r))) {
+ *roots++ = r;
+ }
+ }
+ else // we have 1 real root
+ {
+ double sqrtR2MinusQ3 = sqrt(R2MinusQ3);
+ double A = fabs(R) + sqrtR2MinusQ3;
+ A = cube_root(A);
+ if (R > 0) {
+ A = -A;
+ }
+ if (A != 0) {
+ A += Q / A;
+ }
+ r = A - adiv3;
+ *roots++ = r;
+ if (AlmostEqualUlps(R2, Q3)) {
+ r = -A / 2 - adiv3;
+ if (!AlmostEqualUlps(s[0], r)) {
+ *roots++ = r;
+ }
+ }
+ }
+ return (int)(roots - s);
+}
+
+// from http://www.cs.sunysb.edu/~qin/courses/geometry/4.pdf
+// c(t) = a(1-t)^3 + 3bt(1-t)^2 + 3c(1-t)t^2 + dt^3
+// c'(t) = -3a(1-t)^2 + 3b((1-t)^2 - 2t(1-t)) + 3c(2t(1-t) - t^2) + 3dt^2
+// = 3(b-a)(1-t)^2 + 6(c-b)t(1-t) + 3(d-c)t^2
+static double derivativeAtT(const double* cubic, double t) {
+ double one_t = 1 - t;
+ double a = cubic[0];
+ double b = cubic[2];
+ double c = cubic[4];
+ double d = cubic[6];
+ return 3 * ((b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t);
+}
+
+double dx_at_t(const Cubic& cubic, double t) {
+ return derivativeAtT(&cubic[0].x, t);
+}
+
+double dy_at_t(const Cubic& cubic, double t) {
+ return derivativeAtT(&cubic[0].y, t);
+}
+
+// OPTIMIZE? compute t^2, t(1-t), and (1-t)^2 and pass them to another version of derivative at t?
+_Vector dxdy_at_t(const Cubic& cubic, double t) {
+ _Vector result = { derivativeAtT(&cubic[0].x, t), derivativeAtT(&cubic[0].y, t) };
+ return result;
+}
+
+// OPTIMIZE? share code with formulate_F1DotF2
+int find_cubic_inflections(const Cubic& src, double tValues[])
+{
+ double Ax = src[1].x - src[0].x;
+ double Ay = src[1].y - src[0].y;
+ double Bx = src[2].x - 2 * src[1].x + src[0].x;
+ double By = src[2].y - 2 * src[1].y + src[0].y;
+ double Cx = src[3].x + 3 * (src[1].x - src[2].x) - src[0].x;
+ double Cy = src[3].y + 3 * (src[1].y - src[2].y) - src[0].y;
+ return quadraticRootsValidT(Bx * Cy - By * Cx, Ax * Cy - Ay * Cx, Ax * By - Ay * Bx, tValues);
+}
+
+static void formulate_F1DotF2(const double src[], double coeff[4])
+{
+ double a = src[2] - src[0];
+ double b = src[4] - 2 * src[2] + src[0];
+ double c = src[6] + 3 * (src[2] - src[4]) - src[0];
+ coeff[0] = c * c;
+ coeff[1] = 3 * b * c;
+ coeff[2] = 2 * b * b + c * a;
+ coeff[3] = a * b;
+}
+
+/* from SkGeometry.cpp
+ Looking for F' dot F'' == 0
+
+ A = b - a
+ B = c - 2b + a
+ C = d - 3c + 3b - a
+
+ F' = 3Ct^2 + 6Bt + 3A
+ F'' = 6Ct + 6B
+
+ F' dot F'' -> CCt^3 + 3BCt^2 + (2BB + CA)t + AB
+*/
+int find_cubic_max_curvature(const Cubic& src, double tValues[])
+{
+ double coeffX[4], coeffY[4];
+ int i;
+ formulate_F1DotF2(&src[0].x, coeffX);
+ formulate_F1DotF2(&src[0].y, coeffY);
+ for (i = 0; i < 4; i++) {
+ coeffX[i] = coeffX[i] + coeffY[i];
+ }
+ return cubicRootsValidT(coeffX[0], coeffX[1], coeffX[2], coeffX[3], tValues);
+}
+
+
+bool rotate(const Cubic& cubic, int zero, int index, Cubic& rotPath) {
+ double dy = cubic[index].y - cubic[zero].y;
+ double dx = cubic[index].x - cubic[zero].x;
+ if (approximately_zero(dy)) {
+ if (approximately_zero(dx)) {
+ return false;
+ }
+ memcpy(rotPath, cubic, sizeof(Cubic));
+ return true;
+ }
+ for (int index = 0; index < 4; ++index) {
+ rotPath[index].x = cubic[index].x * dx + cubic[index].y * dy;
+ rotPath[index].y = cubic[index].y * dx - cubic[index].x * dy;
+ }
+ return true;
+}
+
+#if 0 // unused for now
+double secondDerivativeAtT(const double* cubic, double t) {
+ double a = cubic[0];
+ double b = cubic[2];
+ double c = cubic[4];
+ double d = cubic[6];
+ return (c - 2 * b + a) * (1 - t) + (d - 2 * c + b) * t;
+}
+#endif
+
+_Point top(const Cubic& cubic, double startT, double endT) {
+ Cubic sub;
+ sub_divide(cubic, startT, endT, sub);
+ _Point topPt = sub[0];
+ if (topPt.y > sub[3].y || (topPt.y == sub[3].y && topPt.x > sub[3].x)) {
+ topPt = sub[3];
+ }
+ double extremeTs[2];
+ if (!monotonic_in_y(sub)) {
+ int roots = findExtrema(sub[0].y, sub[1].y, sub[2].y, sub[3].y, extremeTs);
+ for (int index = 0; index < roots; ++index) {
+ _Point mid;
+ double t = startT + (endT - startT) * extremeTs[index];
+ xy_at_t(cubic, t, mid.x, mid.y);
+ if (topPt.y > mid.y || (topPt.y == mid.y && topPt.x > mid.x)) {
+ topPt = mid;
+ }
+ }
+ }
+ return topPt;
+}
+
+// OPTIMIZE: avoid computing the unused half
+void xy_at_t(const Cubic& cubic, double t, double& x, double& y) {
+ _Point xy = xy_at_t(cubic, t);
+ if (&x) {
+ x = xy.x;
+ }
+ if (&y) {
+ y = xy.y;
+ }
+}
+
+_Point xy_at_t(const Cubic& cubic, double t) {
+ double one_t = 1 - t;
+ double one_t2 = one_t * one_t;
+ double a = one_t2 * one_t;
+ double b = 3 * one_t2 * t;
+ double t2 = t * t;
+ double c = 3 * one_t * t2;
+ double d = t2 * t;
+ _Point result = {a * cubic[0].x + b * cubic[1].x + c * cubic[2].x + d * cubic[3].x,
+ a * cubic[0].y + b * cubic[1].y + c * cubic[2].y + d * cubic[3].y};
+ return result;
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicUtilities.h b/chromium/third_party/skia/experimental/Intersection/CubicUtilities.h
new file mode 100644
index 00000000000..b0556191fdd
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicUtilities.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#if !defined CUBIC_UTILITIES_H
+#define CUBIC_UTILITIES_H
+
+#include "DataTypes.h"
+#include "SkTDArray.h"
+
+double calcPrecision(const Cubic& cubic);
+#if SK_DEBUG
+double calcPrecision(const Cubic& cubic, double t, double scale);
+#endif
+void chop_at(const Cubic& src, CubicPair& dst, double t);
+bool clockwise(const Cubic& c);
+double cube_root(double x);
+int cubic_to_quadratics(const Cubic& cubic, double precision,
+ SkTDArray<Quadratic>& quadratics);
+void cubic_to_quadratics(const Cubic& cubic, double precision, SkTDArray<double>& ts);
+void coefficients(const double* cubic, double& A, double& B, double& C, double& D);
+bool controls_contained_by_ends(const Cubic& c);
+int cubicRootsValidT(double A, double B, double C, double D, double t[3]);
+int cubicRootsReal(double A, double B, double C, double D, double s[3]);
+void demote_cubic_to_quad(const Cubic& cubic, Quadratic& quad);
+double dx_at_t(const Cubic& , double t);
+double dy_at_t(const Cubic& , double t);
+//void dxdy_at_t(const Cubic& , double t, _Point& y);
+_Vector dxdy_at_t(const Cubic& cubic, double t);
+bool ends_are_extrema_in_x_or_y(const Cubic& );
+int find_cubic_inflections(const Cubic& src, double tValues[]);
+int find_cubic_max_curvature(const Cubic& src, double tValues[]);
+bool monotonic_in_y(const Cubic& c);
+bool rotate(const Cubic& cubic, int zero, int index, Cubic& rotPath);
+bool serpentine(const Cubic& c);
+void sub_divide(const Cubic& src, double t1, double t2, Cubic& dst);
+void sub_divide(const Cubic& , const _Point& a, const _Point& d, double t1, double t2, _Point [2]);
+_Point top(const Cubic& , double startT, double endT);
+void xy_at_t(const Cubic& , double t, double& x, double& y);
+_Point xy_at_t(const Cubic& , double t);
+
+extern const int gPrecisionUnit;
+
+#endif
diff --git a/chromium/third_party/skia/experimental/Intersection/CubicUtilities_Test.cpp b/chromium/third_party/skia/experimental/Intersection/CubicUtilities_Test.cpp
new file mode 100644
index 00000000000..ee278c108e7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CubicUtilities_Test.cpp
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "Intersection_Tests.h"
+#include "CubicUtilities.h"
+
+const Cubic tests[] = {
+ {{2, 0}, {3, 1}, {2, 2}, {1, 1}},
+ {{3, 1}, {2, 2}, {1, 1}, {2, 0}},
+ {{3, 0}, {2, 1}, {3, 2}, {1, 1}},
+};
+
+const size_t tests_count = sizeof(tests) / sizeof(tests[0]);
+static size_t firstLineParameterTest = 0;
+
+void CubicUtilities_Test() {
+ for (size_t index = firstLineParameterTest; index < tests_count; ++index) {
+ const Cubic& cubic = tests[index];
+ bool result = clockwise(cubic);
+ if (!result) {
+ SkDebugf("%s [%d] expected clockwise\n", __FUNCTION__, index);
+ SkASSERT(0);
+ }
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/CurveIntersection.h b/chromium/third_party/skia/experimental/Intersection/CurveIntersection.h
new file mode 100644
index 00000000000..cbcda764526
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CurveIntersection.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#ifndef CurveIntersection_DEFINE
+#define CurveIntersection_DEFINE
+
+#include "DataTypes.h"
+
+class Intersections;
+
+// unit-testable utilities
+double axialIntersect(const Quadratic& q1, const _Point& p, bool vert);
+bool bezier_clip(const Cubic& cubic1, const Cubic& cubic2, double& minT, double& maxT);
+bool bezier_clip(const Quadratic& q1, const Quadratic& q2, double& minT, double& maxT);
+int convex_hull(const Cubic& cubic, char order[4]);
+bool convex_x_hull(const Cubic& cubic, char connectTo0[2], char connectTo3[2]);
+bool implicit_matches(const Cubic& cubic1, const Cubic& cubic2);
+bool implicit_matches(const _Line& line1, const _Line& line2);
+bool implicit_matches_ulps(const _Line& one, const _Line& two, int ulps);
+bool implicit_matches(const Quadratic& quad1, const Quadratic& quad2);
+void tangent(const Cubic& cubic, double t, _Point& result);
+void tangent(const _Line& line, _Point& result);
+void tangent(const Quadratic& quad, double t, _Point& result);
+
+// main functions
+enum ReduceOrder_Quadratics {
+ kReduceOrder_NoQuadraticsAllowed,
+ kReduceOrder_QuadraticsAllowed
+};
+enum ReduceOrder_Styles {
+ kReduceOrder_TreatAsStroke,
+ kReduceOrder_TreatAsFill
+};
+int reduceOrder(const Cubic& cubic, Cubic& reduction, ReduceOrder_Quadratics ,
+ ReduceOrder_Styles );
+int reduceOrder(const _Line& line, _Line& reduction);
+int reduceOrder(const Quadratic& quad, Quadratic& reduction, ReduceOrder_Styles );
+int horizontalIntersect(const Cubic& cubic, double y, double tRange[3]);
+int horizontalIntersect(const Cubic& cubic, double left, double right, double y,
+ double tRange[3]);
+int horizontalIntersect(const Cubic& cubic, double left, double right, double y,
+ bool flipped, Intersections&);
+int horizontalIntersect(const _Line& line, double left, double right,
+ double y, bool flipped, Intersections& );
+int horizontalIntersect(const Quadratic& quad, double left, double right,
+ double y, double tRange[2]);
+int horizontalIntersect(const Quadratic& quad, double left, double right,
+ double y, bool flipped, Intersections& );
+bool intersect(const Cubic& cubic1, const Cubic& cubic2, Intersections& );
+// the following flavor uses quadratic approximation instead of convex hulls
+//bool intersect2(const Cubic& cubic1, const Cubic& cubic2, Intersections& );
+// like '2', but iterates on centers instead of possible edges
+bool intersect3(const Cubic& cubic1, const Cubic& cubic2, Intersections& );
+int intersect(const Cubic& cubic, Intersections& i); // return true if cubic self-intersects
+int intersect(const Cubic& cubic, const Quadratic& quad, Intersections& );
+int intersect(const Cubic& cubic, const _Line& line, Intersections& );
+int intersectRay(const Cubic& quad, const _Line& line, Intersections& i);
+bool intersect(const Quadratic& q1, const Quadratic& q2, Intersections& );
+int intersect(const Quadratic& quad, const _Line& line, Intersections& );
+// the following flavor uses the implicit form instead of convex hulls
+bool intersect2(const Quadratic& q1, const Quadratic& q2, Intersections& i);
+int intersectRay(const Quadratic& quad, const _Line& line, Intersections& i);
+
+
+bool isLinear(const Quadratic& quad, int startIndex, int endIndex);
+bool isLinear(const Cubic& cubic, int startIndex, int endIndex);
+double leftMostT(const Cubic& , double startT, double endT);
+double leftMostT(const _Line& , double startT, double endT);
+double leftMostT(const Quadratic& , double startT, double endT);
+int verticalIntersect(const Cubic& cubic, double top, double bottom, double x,
+ bool flipped, Intersections& );
+int verticalIntersect(const _Line& line, double top, double bottom, double x,
+ bool flipped, Intersections& );
+int verticalIntersect(const Quadratic& quad, double top, double bottom,
+ double x, bool flipped, Intersections& );
+
+#endif
diff --git a/chromium/third_party/skia/experimental/Intersection/CurveUtilities.h b/chromium/third_party/skia/experimental/Intersection/CurveUtilities.h
new file mode 100644
index 00000000000..4d346327eb8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/CurveUtilities.h
@@ -0,0 +1,15 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef CurveUtilities_DEFINE
+#define CurveUtilities_DEFINE
+
+#include "CubicUtilities.h"
+#include "LineUtilities.h"
+#include "QuadraticUtilities.h"
+
+#endif
diff --git a/chromium/third_party/skia/experimental/Intersection/DataTypes.cpp b/chromium/third_party/skia/experimental/Intersection/DataTypes.cpp
new file mode 100644
index 00000000000..a4a3039cd57
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/DataTypes.cpp
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "DataTypes.h"
+
+#include <sys/types.h>
+#include <stdlib.h>
+
+#if USE_EPSILON
+const double PointEpsilon = 0.000001;
+const double SquaredEpsilon = PointEpsilon * PointEpsilon;
+#endif
+
+const int UlpsEpsilon = 16;
+
+_Vector operator-(const _Point& a, const _Point& b) {
+ _Vector v = {a.x - b.x, a.y - b.y};
+ return v;
+}
+
+_Point operator+(const _Point& a, const _Vector& b) {
+ _Point v = {a.x + b.x, a.y + b.y};
+ return v;
+}
+
+// from http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
+union Float_t
+{
+ Float_t(float num = 0.0f) : f(num) {}
+ // Portable extraction of components.
+ bool negative() const { return (i >> 31) != 0; }
+#if 0 // unused
+ int32_t RawMantissa() const { return i & ((1 << 23) - 1); }
+ int32_t RawExponent() const { return (i >> 23) & 0xFF; }
+#endif
+ int32_t i;
+ float f;
+#if SK_DEBUG
+ struct
+ { // Bitfields for exploration. Do not use in production code.
+ uint32_t mantissa : 23;
+ uint32_t exponent : 8;
+ uint32_t sign : 1;
+ } parts;
+#endif
+};
+
+bool AlmostEqualUlps(float A, float B)
+{
+ Float_t uA(A);
+ Float_t uB(B);
+
+ // Different signs means they do not match.
+ if (uA.negative() != uB.negative())
+ {
+ // Check for equality to make sure +0==-0
+ return A == B;
+ }
+
+ // Find the difference in ULPs.
+ int ulpsDiff = abs(uA.i - uB.i);
+ return ulpsDiff <= UlpsEpsilon;
+}
+
+// FIXME: obsolete, delete
+#if 1
+int UlpsDiff(float A, float B)
+{
+ Float_t uA(A);
+ Float_t uB(B);
+
+ return abs(uA.i - uB.i);
+}
+#endif
+
+#if SK_DEBUG
+void mathematica_ize(char* str, size_t bufferLen) {
+ size_t len = strlen(str);
+ bool num = false;
+ for (size_t idx = 0; idx < len; ++idx) {
+ if (num && str[idx] == 'e') {
+ if (len + 2 >= bufferLen) {
+ return;
+ }
+ memmove(&str[idx + 2], &str[idx + 1], len - idx);
+ str[idx] = '*';
+ str[idx + 1] = '^';
+ ++len;
+ }
+ num = str[idx] >= '0' && str[idx] <= '9';
+ }
+}
+
+bool valid_wind(int wind) {
+ return wind > SK_MinS32 + 0xFFFF && wind < SK_MaxS32 - 0xFFFF;
+}
+
+void winding_printf(int wind) {
+ if (wind == SK_MinS32) {
+ SkDebugf("?");
+ } else {
+ SkDebugf("%d", wind);
+ }
+}
+#endif
diff --git a/chromium/third_party/skia/experimental/Intersection/DataTypes.h b/chromium/third_party/skia/experimental/Intersection/DataTypes.h
new file mode 100644
index 00000000000..20dbef87513
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/DataTypes.h
@@ -0,0 +1,418 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#ifndef __DataTypes_h__
+#define __DataTypes_h__
+
+#include <float.h> // for FLT_EPSILON
+#include <math.h> // for fabs, sqrt
+
+#include "SkPoint.h"
+
+#define FORCE_RELEASE 0 // set force release to 1 for multiple thread -- no debugging
+#define ONE_OFF_DEBUG 1
+#define ONE_OFF_DEBUG_MATHEMATICA 0
+
+// FIXME: move these into SkTypes.h
+template <typename T> inline T SkTMax(T a, T b) {
+ if (a < b)
+ a = b;
+ return a;
+}
+
+template <typename T> inline T SkTMin(T a, T b) {
+ if (a > b)
+ a = b;
+ return a;
+}
+
+extern bool AlmostEqualUlps(float A, float B);
+inline bool AlmostEqualUlps(double A, double B) { return AlmostEqualUlps((float) A, (float) B); }
+
+// FIXME: delete
+int UlpsDiff(float A, float B);
+
+// FLT_EPSILON == 1.19209290E-07 == 1 / (2 ^ 23)
+// DBL_EPSILON == 2.22045e-16
+const double FLT_EPSILON_CUBED = FLT_EPSILON * FLT_EPSILON * FLT_EPSILON;
+const double FLT_EPSILON_HALF = FLT_EPSILON / 2;
+const double FLT_EPSILON_SQUARED = FLT_EPSILON * FLT_EPSILON;
+const double FLT_EPSILON_SQRT = sqrt(FLT_EPSILON);
+const double FLT_EPSILON_INVERSE = 1 / FLT_EPSILON;
+const double DBL_EPSILON_ERR = DBL_EPSILON * 4; // tune -- allow a few bits of error
+const double ROUGH_EPSILON = FLT_EPSILON * 64;
+const double MORE_ROUGH_EPSILON = FLT_EPSILON * 256;
+
+inline bool approximately_zero(double x) {
+ return fabs(x) < FLT_EPSILON;
+}
+
+inline bool precisely_zero(double x) {
+ return fabs(x) < DBL_EPSILON_ERR;
+}
+
+inline bool approximately_zero(float x) {
+ return fabs(x) < FLT_EPSILON;
+}
+
+inline bool approximately_zero_cubed(double x) {
+ return fabs(x) < FLT_EPSILON_CUBED;
+}
+
+inline bool approximately_zero_half(double x) {
+ return fabs(x) < FLT_EPSILON_HALF;
+}
+
+inline bool approximately_zero_squared(double x) {
+ return fabs(x) < FLT_EPSILON_SQUARED;
+}
+
+inline bool approximately_zero_sqrt(double x) {
+ return fabs(x) < FLT_EPSILON_SQRT;
+}
+
+inline bool approximately_zero_inverse(double x) {
+ return fabs(x) > FLT_EPSILON_INVERSE;
+}
+
+// FIXME: if called multiple times with the same denom, we want to pass 1/y instead
+inline bool approximately_zero_when_compared_to(double x, double y) {
+ return x == 0 || fabs(x / y) < FLT_EPSILON;
+}
+
+// Use this for comparing Ts in the range of 0 to 1. For general numbers (larger and smaller) use
+// AlmostEqualUlps instead.
+inline bool approximately_equal(double x, double y) {
+#if 1
+ return approximately_zero(x - y);
+#else
+// see http://visualstudiomagazine.com/blogs/tool-tracker/2011/11/compare-floating-point-numbers.aspx
+// this allows very small (e.g. degenerate) values to compare unequally, but in this case,
+// AlmostEqualUlps should be used instead.
+ if (x == y) {
+ return true;
+ }
+ double absY = fabs(y);
+ if (x == 0) {
+ return absY < FLT_EPSILON;
+ }
+ double absX = fabs(x);
+ if (y == 0) {
+ return absX < FLT_EPSILON;
+ }
+ return fabs(x - y) < (absX > absY ? absX : absY) * FLT_EPSILON;
+#endif
+}
+
+inline bool precisely_equal(double x, double y) {
+ return precisely_zero(x - y);
+}
+
+inline bool approximately_equal_half(double x, double y) {
+ return approximately_zero_half(x - y);
+}
+
+inline bool approximately_equal_squared(double x, double y) {
+ return approximately_equal(x, y);
+}
+
+inline bool approximately_greater(double x, double y) {
+ return x - FLT_EPSILON >= y;
+}
+
+inline bool approximately_greater_or_equal(double x, double y) {
+ return x + FLT_EPSILON > y;
+}
+
+inline bool approximately_lesser(double x, double y) {
+ return x + FLT_EPSILON <= y;
+}
+
+inline bool approximately_lesser_or_equal(double x, double y) {
+ return x - FLT_EPSILON < y;
+}
+
+inline double approximately_pin(double x) {
+ return approximately_zero(x) ? 0 : x;
+}
+
+inline float approximately_pin(float x) {
+ return approximately_zero(x) ? 0 : x;
+}
+
+inline bool approximately_greater_than_one(double x) {
+ return x > 1 - FLT_EPSILON;
+}
+
+inline bool precisely_greater_than_one(double x) {
+ return x > 1 - DBL_EPSILON_ERR;
+}
+
+inline bool approximately_less_than_zero(double x) {
+ return x < FLT_EPSILON;
+}
+
+inline bool precisely_less_than_zero(double x) {
+ return x < DBL_EPSILON_ERR;
+}
+
+inline bool approximately_negative(double x) {
+ return x < FLT_EPSILON;
+}
+
+inline bool precisely_negative(double x) {
+ return x < DBL_EPSILON_ERR;
+}
+
+inline bool approximately_one_or_less(double x) {
+ return x < 1 + FLT_EPSILON;
+}
+
+inline bool approximately_positive(double x) {
+ return x > -FLT_EPSILON;
+}
+
+inline bool approximately_positive_squared(double x) {
+ return x > -(FLT_EPSILON_SQUARED);
+}
+
+inline bool approximately_zero_or_more(double x) {
+ return x > -FLT_EPSILON;
+}
+
+inline bool approximately_between(double a, double b, double c) {
+ return a <= c ? approximately_negative(a - b) && approximately_negative(b - c)
+ : approximately_negative(b - a) && approximately_negative(c - b);
+}
+
+// returns true if (a <= b <= c) || (a >= b >= c)
+inline bool between(double a, double b, double c) {
+ SkASSERT(((a <= b && b <= c) || (a >= b && b >= c)) == ((a - b) * (c - b) <= 0));
+ return (a - b) * (c - b) <= 0;
+}
+
+inline bool more_roughly_equal(double x, double y) {
+ return fabs(x - y) < MORE_ROUGH_EPSILON;
+}
+
+inline bool roughly_equal(double x, double y) {
+ return fabs(x - y) < ROUGH_EPSILON;
+}
+
+struct _Point;
+
+struct _Vector {
+ double x;
+ double y;
+
+ friend _Point operator+(const _Point& a, const _Vector& b);
+
+ void operator+=(const _Vector& v) {
+ x += v.x;
+ y += v.y;
+ }
+
+ void operator-=(const _Vector& v) {
+ x -= v.x;
+ y -= v.y;
+ }
+
+ void operator/=(const double s) {
+ x /= s;
+ y /= s;
+ }
+
+ void operator*=(const double s) {
+ x *= s;
+ y *= s;
+ }
+
+ double cross(const _Vector& a) const {
+ return x * a.y - y * a.x;
+ }
+
+ double dot(const _Vector& a) const {
+ return x * a.x + y * a.y;
+ }
+
+ double length() const {
+ return sqrt(lengthSquared());
+ }
+
+ double lengthSquared() const {
+ return x * x + y * y;
+ }
+
+ SkVector asSkVector() const {
+ SkVector v = {SkDoubleToScalar(x), SkDoubleToScalar(y)};
+ return v;
+ }
+};
+
+struct _Point {
+ double x;
+ double y;
+
+ friend _Vector operator-(const _Point& a, const _Point& b);
+
+ void operator+=(const _Vector& v) {
+ x += v.x;
+ y += v.y;
+ }
+
+ void operator-=(const _Vector& v) {
+ x -= v.x;
+ y -= v.y;
+ }
+
+ friend bool operator==(const _Point& a, const _Point& b) {
+ return a.x == b.x && a.y == b.y;
+ }
+
+ friend bool operator!=(const _Point& a, const _Point& b) {
+ return a.x != b.x || a.y != b.y;
+ }
+
+ // note: this can not be implemented with
+ // return approximately_equal(a.y, y) && approximately_equal(a.x, x);
+ // because that will not take the magnitude of the values
+ bool approximatelyEqual(const _Point& a) const {
+ double denom = SkTMax(fabs(x), SkTMax(fabs(y), SkTMax(fabs(a.x), fabs(a.y))));
+ if (denom == 0) {
+ return true;
+ }
+ double inv = 1 / denom;
+ return approximately_equal(x * inv, a.x * inv) && approximately_equal(y * inv, a.y * inv);
+ }
+
+ bool approximatelyEqual(const SkPoint& a) const {
+ double denom = SkTMax(fabs(x), SkTMax(fabs(y), SkTMax(fabs(a.fX), fabs(a.fY))));
+ if (denom == 0) {
+ return true;
+ }
+ double inv = 1 / denom;
+ return approximately_equal(x * inv, a.fX * inv) && approximately_equal(y * inv, a.fY * inv);
+ }
+
+ bool approximatelyEqualHalf(const _Point& a) const {
+ double denom = SkTMax(fabs(x), SkTMax(fabs(y), SkTMax(fabs(a.x), fabs(a.y))));
+ if (denom == 0) {
+ return true;
+ }
+ double inv = 1 / denom;
+ return approximately_equal_half(x * inv, a.x * inv)
+ && approximately_equal_half(y * inv, a.y * inv);
+ }
+
+ bool approximatelyZero() const {
+ return approximately_zero(x) && approximately_zero(y);
+ }
+
+ SkPoint asSkPoint() const {
+ SkPoint pt = {SkDoubleToScalar(x), SkDoubleToScalar(y)};
+ return pt;
+ }
+
+ double distance(const _Point& a) const {
+ _Vector temp = *this - a;
+ return temp.length();
+ }
+
+ double distanceSquared(const _Point& a) const {
+ _Vector temp = *this - a;
+ return temp.lengthSquared();
+ }
+
+ double moreRoughlyEqual(const _Point& a) const {
+ return more_roughly_equal(a.y, y) && more_roughly_equal(a.x, x);
+ }
+
+ double roughlyEqual(const _Point& a) const {
+ return roughly_equal(a.y, y) && roughly_equal(a.x, x);
+ }
+};
+
+typedef _Point _Line[2];
+typedef _Point Quadratic[3];
+typedef _Point Triangle[3];
+typedef _Point Cubic[4];
+
+struct _Rect {
+ double left;
+ double top;
+ double right;
+ double bottom;
+
+ void add(const _Point& pt) {
+ if (left > pt.x) {
+ left = pt.x;
+ }
+ if (top > pt.y) {
+ top = pt.y;
+ }
+ if (right < pt.x) {
+ right = pt.x;
+ }
+ if (bottom < pt.y) {
+ bottom = pt.y;
+ }
+ }
+
+ // FIXME: used by debugging only ?
+ bool contains(const _Point& pt) const {
+ return approximately_between(left, pt.x, right)
+ && approximately_between(top, pt.y, bottom);
+ }
+
+ bool intersects(_Rect& r) const {
+ SkASSERT(left <= right);
+ SkASSERT(top <= bottom);
+ SkASSERT(r.left <= r.right);
+ SkASSERT(r.top <= r.bottom);
+ return r.left <= right && left <= r.right && r.top <= bottom && top <= r.bottom;
+ }
+
+ void set(const _Point& pt) {
+ left = right = pt.x;
+ top = bottom = pt.y;
+ }
+
+ void setBounds(const _Line& line) {
+ set(line[0]);
+ add(line[1]);
+ }
+
+ void setBounds(const Cubic& );
+ void setBounds(const Quadratic& );
+ void setRawBounds(const Cubic& );
+ void setRawBounds(const Quadratic& );
+};
+
+struct CubicPair {
+ const Cubic& first() const { return (const Cubic&) pts[0]; }
+ const Cubic& second() const { return (const Cubic&) pts[3]; }
+ _Point pts[7];
+};
+
+struct QuadraticPair {
+ const Quadratic& first() const { return (const Quadratic&) pts[0]; }
+ const Quadratic& second() const { return (const Quadratic&) pts[2]; }
+ _Point pts[5];
+};
+
+// FIXME: move these into SkFloatingPoint.h
+#include "SkFloatingPoint.h"
+
+#define sk_double_isnan(a) sk_float_isnan(a)
+
+// FIXME: move these to debugging file
+#if SK_DEBUG
+void mathematica_ize(char* str, size_t bufferSize);
+bool valid_wind(int winding);
+void winding_printf(int winding);
+#endif
+
+#endif // __DataTypes_h__
diff --git a/chromium/third_party/skia/experimental/Intersection/DataTypes_Test.h b/chromium/third_party/skia/experimental/Intersection/DataTypes_Test.h
new file mode 100644
index 00000000000..a8f14fa1126
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/DataTypes_Test.h
@@ -0,0 +1,7 @@
+#ifndef __DataTypes_Test_h__
+#define __DataTypes_Test_h__
+
+const double PointEpsilon = 0.000001;
+const double SquaredEpsilon = PointEpsilon * PointEpsilon;
+
+#endif
diff --git a/chromium/third_party/skia/experimental/Intersection/EdgeDemo.cpp b/chromium/third_party/skia/experimental/Intersection/EdgeDemo.cpp
new file mode 100644
index 00000000000..684dfd99b74
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/EdgeDemo.cpp
@@ -0,0 +1,347 @@
+#include "EdgeDemo.h"
+#include "EdgeWalker_Test.h"
+#include "ShapeOps.h"
+#import "SkCanvas.h"
+#import "SkPaint.h"
+
+extern void showPath(const SkPath& path, const char* str);
+
+static bool drawPaths(SkCanvas* canvas, const SkPath& path, bool useOld)
+{
+ SkPath out;
+#define SHOW_PATH 0
+#if SHOW_PATH
+ showPath(path, "original:");
+#endif
+ if (useOld) {
+ simplify(path, true, out);
+ } else {
+ simplifyx(path, out);
+ }
+#if SHOW_PATH
+ showPath(out, "simplified:");
+#endif
+ SkPaint paint;
+ paint.setAntiAlias(true);
+ paint.setStyle(SkPaint::kStroke_Style);
+// paint.setStrokeWidth(6);
+ // paint.setColor(0x1F003f7f);
+ // canvas->drawPath(path, paint);
+ paint.setColor(0xFF305F00);
+ paint.setStrokeWidth(1);
+ canvas->drawPath(out, paint);
+ return true;
+}
+
+// Three circles bounce inside a rectangle. The circles describe three, four
+// or five points which in turn describe a polygon. The polygon points
+// bounce inside the circles. The circles rotate and scale over time. The
+// polygons are combined into a single path, simplified, and stroked.
+static bool drawCircles(SkCanvas* canvas, int step, bool useOld)
+{
+ const int circles = 3;
+ int scales[circles];
+ int angles[circles];
+ int locs[circles * 2];
+ int pts[circles * 2 * 4];
+ int c, p;
+ for (c = 0; c < circles; ++c) {
+ scales[c] = abs(10 - (step + c * 4) % 21);
+ angles[c] = (step + c * 6) % 600;
+ locs[c * 2] = abs(130 - (step + c * 9) % 261);
+ locs[c * 2 + 1] = abs(170 - (step + c * 11) % 341);
+ for (p = 0; p < 4; ++p) {
+ pts[c * 8 + p * 2] = abs(90 - ((step + c * 121 + p * 13) % 190));
+ pts[c * 8 + p * 2 + 1] = abs(110 - ((step + c * 223 + p * 17) % 230));
+ }
+ }
+ SkPath path;
+ for (c = 0; c < circles; ++c) {
+ for (p = 0; p < 4; ++p) {
+ SkScalar x = pts[c * 8 + p * 2];
+ SkScalar y = pts[c * 8 + p * 2 + 1];
+ x *= 3 + scales[c] / 10.0f;
+ y *= 3 + scales[c] / 10.0f;
+ SkScalar angle = angles[c] * 3.1415f * 2 / 600;
+ SkScalar temp = (SkScalar) (x * cos(angle) - y * sin(angle));
+ y = (SkScalar) (x * sin(angle) + y * cos(angle));
+ x = temp;
+ x += locs[c * 2] * 200 / 130.0f;
+ y += locs[c * 2 + 1] * 200 / 170.0f;
+ x += 50;
+ // y += 200;
+ if (p == 0) {
+ path.moveTo(x, y);
+ } else {
+ path.lineTo(x, y);
+ }
+ }
+ path.close();
+ }
+ return drawPaths(canvas, path, useOld);
+}
+
+static void createStar(SkPath& path, SkScalar innerRadius, SkScalar outerRadius,
+ SkScalar startAngle, int points, SkPoint center) {
+ SkScalar angle = startAngle;
+ for (int index = 0; index < points * 2; ++index) {
+ SkScalar radius = index & 1 ? outerRadius : innerRadius;
+ SkScalar x = (SkScalar) (radius * cos(angle));
+ SkScalar y = (SkScalar) (radius * sin(angle));
+ x += center.fX;
+ y += center.fY;
+ if (index == 0) {
+ path.moveTo(x, y);
+ } else {
+ path.lineTo(x, y);
+ }
+ angle += 3.1415f / points;
+ }
+ path.close();
+}
+
+static bool drawStars(SkCanvas* canvas, int step, bool useOld)
+{
+ SkPath path;
+ const int stars = 25;
+ int pts[stars];
+ // static bool initialize = true;
+ int s;
+ for (s = 0; s < stars; ++s) {
+ pts[s] = 4 + (s % 7);
+ }
+ SkPoint locs[stars];
+ SkScalar angles[stars];
+ SkScalar innerRadius[stars];
+ SkScalar outerRadius[stars];
+ const int width = 640;
+ const int height = 480;
+ const int margin = 30;
+ const int minRadius = 120;
+ const int maxInner = 800;
+ const int maxOuter = 1153;
+ for (s = 0; s < stars; ++s) {
+ int starW = (int) (width - margin * 2 + (SkScalar) s * (stars - s) / stars);
+ locs[s].fX = (int) (step * (1.3f * (s + 1) / stars) + s * 121) % (starW * 2);
+ if (locs[s].fX > starW) {
+ locs[s].fX = starW * 2 - locs[s].fX;
+ }
+ locs[s].fX += margin;
+ int starH = (int) (height - margin * 2 + (SkScalar) s * s / stars);
+ locs[s].fY = (int) (step * (1.7f * (s + 1) / stars) + s * 183) % (starH * 2);
+ if (locs[s].fY > starH) {
+ locs[s].fY = starH * 2 - locs[s].fY;
+ }
+ locs[s].fY += margin;
+ angles[s] = ((step + s * 47) % (360 * 4)) * 3.1415f / 180 / 4;
+ innerRadius[s] = (step + s * 30) % (maxInner * 2);
+ if (innerRadius[s] > maxInner) {
+ innerRadius[s] = (maxInner * 2) - innerRadius[s];
+ }
+ innerRadius[s] = innerRadius[s] / 4 + minRadius;
+ outerRadius[s] = (step + s * 70) % (maxOuter * 2);
+ if (outerRadius[s] > maxOuter) {
+ outerRadius[s] = (maxOuter * 2) - outerRadius[s];
+ }
+ outerRadius[s] = outerRadius[s] / 4 + minRadius;
+ createStar(path, innerRadius[s] / 4.0f, outerRadius[s] / 4.0f,
+ angles[s], pts[s], locs[s]);
+ }
+ return drawPaths(canvas, path, useOld);
+}
+
+#if 0
+static void tryRoncoOnce(const SkPath& path, const SkRect& target, bool show) {
+ // capture everything in a desired rectangle
+ SkPath tiny;
+ bool closed = true;
+ SkPath::Iter iter(path, false);
+ SkPoint pts[4];
+ SkPath::Verb verb;
+ int count = 0;
+ SkPoint lastPt;
+ while ((verb = iter.next(pts)) != SkPath::kDone_Verb) {
+ switch (verb) {
+ case SkPath::kMove_Verb:
+ count = 0;
+ break;
+ case SkPath::kLine_Verb:
+ count = 1;
+ break;
+ case SkPath::kQuad_Verb:
+ count = 2;
+ break;
+ case SkPath::kCubic_Verb:
+ count = 3;
+ break;
+ case SkPath::kClose_Verb:
+ if (!closed) {
+ tiny.close();
+ closed = true;
+ }
+ count = 0;
+ break;
+ default:
+ SkDEBUGFAIL("bad verb");
+ }
+ if (!count) {
+ continue;
+ }
+ SkRect bounds;
+ bounds.set(pts[0].fX, pts[0].fY, pts[0].fX, pts[0].fY);
+ for (int i = 1; i <= count; ++i) {
+ bounds.growToInclude(pts[i].fX + 0.1f, pts[i].fY + 0.1f);
+ }
+ if (!SkRect::Intersects(target, bounds)) {
+ continue;
+ }
+ if (closed) {
+ tiny.moveTo(pts[0].fX, pts[0].fY);
+ closed = false;
+ } else if (pts[0] != lastPt) {
+ tiny.lineTo(pts[0].fX, pts[0].fY);
+ }
+ switch (verb) {
+ case SkPath::kLine_Verb:
+ tiny.lineTo(pts[1].fX, pts[1].fY);
+ lastPt = pts[1];
+ break;
+ case SkPath::kQuad_Verb:
+ tiny.quadTo(pts[1].fX, pts[1].fY, pts[2].fX, pts[2].fY);
+ lastPt = pts[2];
+ break;
+ case SkPath::kCubic_Verb:
+ tiny.cubicTo(pts[1].fX, pts[1].fY, pts[2].fX, pts[2].fY, pts[3].fX, pts[3].fY);
+ lastPt = pts[3];
+ break;
+ default:
+ SkDEBUGFAIL("bad verb");
+ }
+ }
+ if (!closed) {
+ tiny.close();
+ }
+ if (show) {
+ showPath(tiny, NULL);
+ SkDebugf("simplified:\n");
+ }
+ testSimplifyx(tiny);
+}
+#endif
+
+#if 0
+static void tryRonco(const SkPath& path) {
+ int divMax = 64;
+ int divMin = 1;
+ int xDivMin = 0;
+ int yDivMin = 0;
+ bool allYs = true;
+ bool allXs = true;
+ if (1) {
+ divMax = divMin = 64;
+ xDivMin = 11;
+ yDivMin = 0;
+ allXs = true;
+ allYs = true;
+ }
+ for (int divs = divMax; divs >= divMin; divs /= 2) {
+ SkDebugf("divs=%d\n",divs);
+ const SkRect& overall = path.getBounds();
+ SkScalar cellWidth = overall.width() / divs * 2;
+ SkScalar cellHeight = overall.height() / divs * 2;
+ SkRect target;
+ int xDivMax = divMax == divMin && !allXs ? xDivMin + 1 : divs;
+ int yDivMax = divMax == divMin && !allYs ? yDivMin + 1 : divs;
+ for (int xDiv = xDivMin; xDiv < xDivMax; ++xDiv) {
+ SkDebugf("xDiv=%d\n",xDiv);
+ for (int yDiv = yDivMin; yDiv < yDivMax; ++yDiv) {
+ SkDebugf("yDiv=%d\n",yDiv);
+ target.setXYWH(overall.fLeft + (overall.width() - cellWidth) * xDiv / divs,
+ overall.fTop + (overall.height() - cellHeight) * yDiv / divs,
+ cellWidth, cellHeight);
+ tryRoncoOnce(path, target, divMax == divMin);
+ }
+ }
+ }
+}
+#endif
+
+static bool drawLetters(SkCanvas* canvas, int step, bool useOld)
+{
+ SkPath path;
+ const int width = 640;
+ const int height = 480;
+ const char testStr[] = "Merge";
+ const int testStrLen = sizeof(testStr) - 1;
+ SkPoint textPos[testStrLen];
+ SkScalar widths[testStrLen];
+ SkPaint paint;
+ paint.setTextSize(40);
+ paint.setAntiAlias(true);
+ paint.getTextWidths(testStr, testStrLen, widths, NULL);
+ SkScalar running = 0;
+ for (int x = 0; x < testStrLen; ++x) {
+ SkScalar width = widths[x];
+ widths[x] = running;
+ running += width;
+ }
+ SkScalar bias = (width - widths[testStrLen - 1]) / 2;
+ for (int x = 0; x < testStrLen; ++x) {
+ textPos[x].fX = bias + widths[x];
+ textPos[x].fY = height / 2;
+ }
+ paint.setTextSize(40 + step / 100.0f);
+#if 0
+ bool oneShot = false;
+ for (int mask = 0; mask < 1 << testStrLen; ++mask) {
+ char maskStr[testStrLen];
+#if 1
+ mask = 12;
+ oneShot = true;
+#endif
+ SkDebugf("mask=%d\n", mask);
+ for (int letter = 0; letter < testStrLen; ++letter) {
+ maskStr[letter] = mask & (1 << letter) ? testStr[letter] : ' ';
+ }
+ paint.getPosTextPath(maskStr, testStrLen, textPos, &path);
+ // showPath(path, NULL);
+ // SkDebugf("%d simplified:\n", mask);
+ tryRonco(path);
+ // testSimplifyx(path);
+ if (oneShot) {
+ break;
+ }
+ }
+#endif
+ paint.getPosTextPath(testStr, testStrLen, textPos, &path);
+#if 0
+ tryRonco(path);
+ SkDebugf("RoncoDone!\n");
+#endif
+#if 0
+ showPath(path, NULL);
+ SkDebugf("simplified:\n");
+#endif
+ return drawPaths(canvas, path, false);
+}
+
+static bool (*drawDemos[])(SkCanvas* , int , bool ) = {
+ drawStars,
+ drawCircles,
+ drawLetters,
+};
+
+static size_t drawDemosCount = sizeof(drawDemos) / sizeof(drawDemos[0]);
+
+static bool (*firstTest)(SkCanvas* , int , bool) = drawStars;
+
+
+bool DrawEdgeDemo(SkCanvas* canvas, int step, bool useOld) {
+ size_t index = 0;
+ if (firstTest) {
+ while (index < drawDemosCount && drawDemos[index] != firstTest) {
+ ++index;
+ }
+ }
+ return (*drawDemos[index])(canvas, step, useOld);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/EdgeDemo.h b/chromium/third_party/skia/experimental/Intersection/EdgeDemo.h
new file mode 100644
index 00000000000..934e546efec
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/EdgeDemo.h
@@ -0,0 +1,3 @@
+class SkCanvas;
+
+bool DrawEdgeDemo(SkCanvas* canvas, int step, bool useOld);
diff --git a/chromium/third_party/skia/experimental/Intersection/EdgeDemoApp-Info.plist b/chromium/third_party/skia/experimental/Intersection/EdgeDemoApp-Info.plist
new file mode 100644
index 00000000000..8e102020bcf
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/EdgeDemoApp-Info.plist
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>com.googlecode.skia.${PRODUCT_NAME:rfc1034identifier}</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>${MACOSX_DEPLOYMENT_TARGET}</string>
+ <key>NSMainNibFile</key>
+ <string>EdgeDemoApp</string>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+</dict>
+</plist>
diff --git a/chromium/third_party/skia/experimental/Intersection/EdgeDemoApp.mm b/chromium/third_party/skia/experimental/Intersection/EdgeDemoApp.mm
new file mode 100644
index 00000000000..7c50fea6171
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/EdgeDemoApp.mm
@@ -0,0 +1,94 @@
+#include "EdgeDemo.h"
+#import "SkCanvas.h"
+#import "SkWindow.h"
+#include "SkGraphics.h"
+#include "SkCGUtils.h"
+
+#include <time.h>
+#include <sys/time.h>
+
+class SkSampleView : public SkView {
+public:
+ SkSampleView() {
+ this->setVisibleP(true);
+ this->setClipToBounds(false);
+ useOld = false;
+ };
+protected:
+ virtual void onDraw(SkCanvas* canvas) {
+ static int step = 0; // 17907 drawLetters first error
+ // drawStars triggers error at 33348
+ // drawStars error not easy to debug last time I checked
+ static double seconds;
+ if (step == -1) {
+ timeval t;
+ gettimeofday(&t, NULL);
+ seconds = t.tv_sec+t.tv_usec/1000000.0;
+ step = 0;
+ }
+ canvas->drawColor(SK_ColorWHITE);
+ if (DrawEdgeDemo(canvas, step, useOld)) {
+ ++step;
+ if (step == -1) {
+ timeval t;
+ gettimeofday(&t, NULL);
+ double last = seconds;
+ seconds = t.tv_sec+t.tv_usec/1000000.0;
+ SkDebugf("old=%d seconds=%g\n", useOld, seconds - last);
+ useOld ^= true;
+ step = 0;
+ }
+ inval(NULL);
+ }
+ }
+
+ virtual Click* onFindClickHandler(SkScalar , SkScalar ) {
+ useOld ^= true;
+ return NULL;
+ }
+
+private:
+ bool useOld;
+ typedef SkView INHERITED;
+};
+
+void application_init();
+void application_term();
+
+void application_init() {
+ SkGraphics::Init();
+ SkEvent::Init();
+}
+
+void application_term() {
+ SkGraphics::Term();
+ SkEvent::Term();
+}
+
+class FillLayout : public SkView::Layout {
+protected:
+ virtual void onLayoutChildren(SkView* parent) {
+ SkView* view = SkView::F2BIter(parent).next();
+ view->setSize(parent->width(), parent->height());
+ }
+};
+
+#import "SimpleApp.h"
+
+@implementation SimpleNSView
+
+- (id)initWithDefaults {
+ if ((self = [super initWithDefaults])) {
+ fWind = new SkOSWindow(self);
+ fWind->setLayout(new FillLayout, false);
+ fWind->attachChildToFront(new SkSampleView)->unref();
+ }
+ return self;
+}
+
+- (void)drawRect:(NSRect)dirtyRect {
+ CGContextRef ctx = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
+ SkCGDrawBitmap(ctx, fWind->getBitmap(), 0, 0);
+}
+
+@end
diff --git a/chromium/third_party/skia/experimental/Intersection/EdgeDemoApp.xib b/chromium/third_party/skia/experimental/Intersection/EdgeDemoApp.xib
new file mode 100644
index 00000000000..863ead1eaa6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/EdgeDemoApp.xib
@@ -0,0 +1,3115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
+ <data>
+ <int key="IBDocument.SystemTarget">1060</int>
+ <string key="IBDocument.SystemVersion">10K549</string>
+ <string key="IBDocument.InterfaceBuilderVersion">851</string>
+ <string key="IBDocument.AppKitVersion">1038.36</string>
+ <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">851</string>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="261"/>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+ <integer value="1" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="110858478">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomObject" id="762632889">
+ <string key="NSClassName">IBInspector</string>
+ </object>
+ <object class="NSCustomObject" id="932410077">
+ <string key="NSClassName">FirstResponder</string>
+ </object>
+ <object class="NSCustomObject" id="858592610">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSMenu" id="403715256">
+ <string key="NSTitle">AMainMenu</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="65739106">
+ <reference key="NSMenu" ref="403715256"/>
+ <string key="NSTitle">hello</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <object class="NSCustomResource" key="NSOnImage" id="573986354">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuCheckmark</string>
+ </object>
+ <object class="NSCustomResource" key="NSMixedImage" id="622334842">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuMixedState</string>
+ </object>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="964556876">
+ <string key="NSTitle">hello</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="627636549">
+ <reference key="NSMenu" ref="964556876"/>
+ <string key="NSTitle">About hello</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="938722355">
+ <reference key="NSMenu" ref="964556876"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="1026802975">
+ <reference key="NSMenu" ref="964556876"/>
+ <string key="NSTitle">Preferences…</string>
+ <string key="NSKeyEquiv">,</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="200976220">
+ <reference key="NSMenu" ref="964556876"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="226934908">
+ <reference key="NSMenu" ref="964556876"/>
+ <string key="NSTitle">Services</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="785419060">
+ <string key="NSTitle">Services</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <string key="NSName">_NSServicesMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="1031569584">
+ <reference key="NSMenu" ref="964556876"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="650251791">
+ <reference key="NSMenu" ref="964556876"/>
+ <string key="NSTitle">Hide hello</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="890704348">
+ <reference key="NSMenu" ref="964556876"/>
+ <string key="NSTitle">Hide Others</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="373184661">
+ <reference key="NSMenu" ref="964556876"/>
+ <string key="NSTitle">Show All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="140060996">
+ <reference key="NSMenu" ref="964556876"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="674334250">
+ <reference key="NSMenu" ref="964556876"/>
+ <string key="NSTitle">Quit hello</string>
+ <string key="NSKeyEquiv">q</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ <string key="NSName">_NSAppleMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="849503563">
+ <reference key="NSMenu" ref="403715256"/>
+ <string key="NSTitle">File</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="899147076">
+ <string key="NSTitle">File</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="940143719">
+ <reference key="NSMenu" ref="899147076"/>
+ <string key="NSTitle">New</string>
+ <string key="NSKeyEquiv">n</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="416202392">
+ <reference key="NSMenu" ref="899147076"/>
+ <string key="NSTitle">Open…</string>
+ <string key="NSKeyEquiv">o</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="802841280">
+ <reference key="NSMenu" ref="899147076"/>
+ <string key="NSTitle">Open Recent</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="250982885">
+ <string key="NSTitle">Open Recent</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="940066582">
+ <reference key="NSMenu" ref="250982885"/>
+ <string key="NSTitle">Clear Menu</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ <string key="NSName">_NSRecentDocumentsMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="646964482">
+ <reference key="NSMenu" ref="899147076"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="113331390">
+ <reference key="NSMenu" ref="899147076"/>
+ <string key="NSTitle">Close</string>
+ <string key="NSKeyEquiv">w</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="717042078">
+ <reference key="NSMenu" ref="899147076"/>
+ <string key="NSTitle">Save</string>
+ <string key="NSKeyEquiv">s</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="259193863">
+ <reference key="NSMenu" ref="899147076"/>
+ <string key="NSTitle">Save As…</string>
+ <string key="NSKeyEquiv">S</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="523869872">
+ <reference key="NSMenu" ref="899147076"/>
+ <string key="NSTitle">Revert to Saved</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="425999990">
+ <reference key="NSMenu" ref="899147076"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="917170545">
+ <reference key="NSMenu" ref="899147076"/>
+ <string key="NSTitle">Page Setup...</string>
+ <string key="NSKeyEquiv">P</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSToolTip"/>
+ </object>
+ <object class="NSMenuItem" id="600825955">
+ <reference key="NSMenu" ref="899147076"/>
+ <string key="NSTitle">Print…</string>
+ <string key="NSKeyEquiv">p</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="825040645">
+ <reference key="NSMenu" ref="403715256"/>
+ <string key="NSTitle">Edit</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="411995980">
+ <string key="NSTitle">Edit</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="155877797">
+ <reference key="NSMenu" ref="411995980"/>
+ <string key="NSTitle">Undo</string>
+ <string key="NSKeyEquiv">z</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="278282207">
+ <reference key="NSMenu" ref="411995980"/>
+ <string key="NSTitle">Redo</string>
+ <string key="NSKeyEquiv">Z</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="287041942">
+ <reference key="NSMenu" ref="411995980"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="761075222">
+ <reference key="NSMenu" ref="411995980"/>
+ <string key="NSTitle">Cut</string>
+ <string key="NSKeyEquiv">x</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="617541932">
+ <reference key="NSMenu" ref="411995980"/>
+ <string key="NSTitle">Copy</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="404580975">
+ <reference key="NSMenu" ref="411995980"/>
+ <string key="NSTitle">Paste</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="890043556">
+ <reference key="NSMenu" ref="411995980"/>
+ <string key="NSTitle">Paste and Match Style</string>
+ <string key="NSKeyEquiv">V</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="572775670">
+ <reference key="NSMenu" ref="411995980"/>
+ <string key="NSTitle">Delete</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="826813329">
+ <reference key="NSMenu" ref="411995980"/>
+ <string key="NSTitle">Select All</string>
+ <string key="NSKeyEquiv">a</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="393301673">
+ <reference key="NSMenu" ref="411995980"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="726470551">
+ <reference key="NSMenu" ref="411995980"/>
+ <string key="NSTitle">Find</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="759421779">
+ <string key="NSTitle">Find</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="871728498">
+ <reference key="NSMenu" ref="759421779"/>
+ <string key="NSTitle">Find…</string>
+ <string key="NSKeyEquiv">f</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="392793967">
+ <reference key="NSMenu" ref="759421779"/>
+ <string key="NSTitle">Find Next</string>
+ <string key="NSKeyEquiv">g</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="209754492">
+ <reference key="NSMenu" ref="759421779"/>
+ <string key="NSTitle">Find Previous</string>
+ <string key="NSKeyEquiv">G</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="300840686">
+ <reference key="NSMenu" ref="759421779"/>
+ <string key="NSTitle">Use Selection for Find</string>
+ <string key="NSKeyEquiv">e</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <int key="NSTag">7</int>
+ </object>
+ <object class="NSMenuItem" id="339241627">
+ <reference key="NSMenu" ref="759421779"/>
+ <string key="NSTitle">Jump to Selection</string>
+ <string key="NSKeyEquiv">j</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="394001634">
+ <reference key="NSMenu" ref="411995980"/>
+ <string key="NSTitle">Spelling and Grammar</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="48019006">
+ <string key="NSTitle">Spelling and Grammar</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="641875902">
+ <reference key="NSMenu" ref="48019006"/>
+ <string key="NSTitle">Show Spelling and Grammar</string>
+ <string key="NSKeyEquiv">:</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="519234687">
+ <reference key="NSMenu" ref="48019006"/>
+ <string key="NSTitle">Check Document Now</string>
+ <string key="NSKeyEquiv">;</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="566175535">
+ <reference key="NSMenu" ref="48019006"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="32560783">
+ <reference key="NSMenu" ref="48019006"/>
+ <string key="NSTitle">Check Spelling While Typing</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="74735022">
+ <reference key="NSMenu" ref="48019006"/>
+ <string key="NSTitle">Check Grammar With Spelling</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="440900682">
+ <reference key="NSMenu" ref="48019006"/>
+ <string key="NSTitle">Correct Spelling Automatically</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="723250450">
+ <reference key="NSMenu" ref="411995980"/>
+ <string key="NSTitle">Substitutions</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="60916223">
+ <string key="NSTitle">Substitutions</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="499113305">
+ <reference key="NSMenu" ref="60916223"/>
+ <string key="NSTitle">Show Substitutions</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="604095584">
+ <reference key="NSMenu" ref="60916223"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="1037848121">
+ <reference key="NSMenu" ref="60916223"/>
+ <string key="NSTitle">Smart Copy/Paste</string>
+ <string key="NSKeyEquiv">f</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="253602211">
+ <reference key="NSMenu" ref="60916223"/>
+ <string key="NSTitle">Smart Quotes</string>
+ <string key="NSKeyEquiv">g</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="870101879">
+ <reference key="NSMenu" ref="60916223"/>
+ <string key="NSTitle">Smart Dashes</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="818701236">
+ <reference key="NSMenu" ref="60916223"/>
+ <string key="NSTitle">Smart Links</string>
+ <string key="NSKeyEquiv">G</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="682811574">
+ <reference key="NSMenu" ref="60916223"/>
+ <string key="NSTitle">Text Replacement</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="1022343180">
+ <reference key="NSMenu" ref="411995980"/>
+ <string key="NSTitle">Transformations</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="799869067">
+ <string key="NSTitle">Transformations</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="242386505">
+ <reference key="NSMenu" ref="799869067"/>
+ <string key="NSTitle">Make Upper Case</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="980071763">
+ <reference key="NSMenu" ref="799869067"/>
+ <string key="NSTitle">Make Lower Case</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="138959048">
+ <reference key="NSMenu" ref="799869067"/>
+ <string key="NSTitle">Capitalize</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="538735815">
+ <reference key="NSMenu" ref="411995980"/>
+ <string key="NSTitle">Speech</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="92848229">
+ <string key="NSTitle">Speech</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="242466330">
+ <reference key="NSMenu" ref="92848229"/>
+ <string key="NSTitle">Start Speaking</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="892418348">
+ <reference key="NSMenu" ref="92848229"/>
+ <string key="NSTitle">Stop Speaking</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="126299768">
+ <reference key="NSMenu" ref="403715256"/>
+ <string key="NSTitle">Format</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="473359030">
+ <string key="NSTitle">Format</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="543679380">
+ <reference key="NSMenu" ref="473359030"/>
+ <string key="NSTitle">Font</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="420125509">
+ <string key="NSTitle">Font</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="1066858">
+ <reference key="NSMenu" ref="420125509"/>
+ <string key="NSTitle">Show Fonts</string>
+ <string key="NSKeyEquiv">t</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="890909023">
+ <reference key="NSMenu" ref="420125509"/>
+ <string key="NSTitle">Bold</string>
+ <string key="NSKeyEquiv">b</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="460689417">
+ <reference key="NSMenu" ref="420125509"/>
+ <string key="NSTitle">Italic</string>
+ <string key="NSKeyEquiv">i</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="648810690">
+ <reference key="NSMenu" ref="420125509"/>
+ <string key="NSTitle">Underline</string>
+ <string key="NSKeyEquiv">u</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="648523518">
+ <reference key="NSMenu" ref="420125509"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="554361477">
+ <reference key="NSMenu" ref="420125509"/>
+ <string key="NSTitle">Bigger</string>
+ <string key="NSKeyEquiv">+</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="509852642">
+ <reference key="NSMenu" ref="420125509"/>
+ <string key="NSTitle">Smaller</string>
+ <string key="NSKeyEquiv">-</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <int key="NSTag">4</int>
+ </object>
+ <object class="NSMenuItem" id="684419220">
+ <reference key="NSMenu" ref="420125509"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="300760265">
+ <reference key="NSMenu" ref="420125509"/>
+ <string key="NSTitle">Kern</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="692426030">
+ <string key="NSTitle">Kern</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="827985012">
+ <reference key="NSMenu" ref="692426030"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="114397248">
+ <reference key="NSMenu" ref="692426030"/>
+ <string key="NSTitle">Use None</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="464129683">
+ <reference key="NSMenu" ref="692426030"/>
+ <string key="NSTitle">Tighten</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="984558289">
+ <reference key="NSMenu" ref="692426030"/>
+ <string key="NSTitle">Loosen</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="764895229">
+ <reference key="NSMenu" ref="420125509"/>
+ <string key="NSTitle">Ligature</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="1027046122">
+ <string key="NSTitle">Ligature</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="170445579">
+ <reference key="NSMenu" ref="1027046122"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="1054539967">
+ <reference key="NSMenu" ref="1027046122"/>
+ <string key="NSTitle">Use None</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="193227140">
+ <reference key="NSMenu" ref="1027046122"/>
+ <string key="NSTitle">Use All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="185308913">
+ <reference key="NSMenu" ref="420125509"/>
+ <string key="NSTitle">Baseline</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="412235399">
+ <string key="NSTitle">Baseline</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="708934364">
+ <reference key="NSMenu" ref="412235399"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="660376852">
+ <reference key="NSMenu" ref="412235399"/>
+ <string key="NSTitle">Superscript</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="887484660">
+ <reference key="NSMenu" ref="412235399"/>
+ <string key="NSTitle">Subscript</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="239990007">
+ <reference key="NSMenu" ref="412235399"/>
+ <string key="NSTitle">Raise</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="794052095">
+ <reference key="NSMenu" ref="412235399"/>
+ <string key="NSTitle">Lower</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="770408504">
+ <reference key="NSMenu" ref="420125509"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="968537172">
+ <reference key="NSMenu" ref="420125509"/>
+ <string key="NSTitle">Show Colors</string>
+ <string key="NSKeyEquiv">C</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="576239163">
+ <reference key="NSMenu" ref="420125509"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="951733979">
+ <reference key="NSMenu" ref="420125509"/>
+ <string key="NSTitle">Copy Style</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="726071842">
+ <reference key="NSMenu" ref="420125509"/>
+ <string key="NSTitle">Paste Style</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ <string key="NSName">_NSFontMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="432500292">
+ <reference key="NSMenu" ref="473359030"/>
+ <string key="NSTitle">Text</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="239792765">
+ <string key="NSTitle">Text</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="209955373">
+ <reference key="NSMenu" ref="239792765"/>
+ <string key="NSTitle">Align Left</string>
+ <string key="NSKeyEquiv">{</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="940415998">
+ <reference key="NSMenu" ref="239792765"/>
+ <string key="NSTitle">Center</string>
+ <string key="NSKeyEquiv">|</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="667530981">
+ <reference key="NSMenu" ref="239792765"/>
+ <string key="NSTitle">Justify</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="518803967">
+ <reference key="NSMenu" ref="239792765"/>
+ <string key="NSTitle">Align Right</string>
+ <string key="NSKeyEquiv">}</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="755110083">
+ <reference key="NSMenu" ref="239792765"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="970864302">
+ <reference key="NSMenu" ref="239792765"/>
+ <string key="NSTitle">Writing Direction</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="394707630">
+ <string key="NSTitle">Writing Direction</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="295941739">
+ <reference key="NSMenu" ref="394707630"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <string key="NSTitle">Paragraph</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="1016781112">
+ <reference key="NSMenu" ref="394707630"/>
+ <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="909594320">
+ <reference key="NSMenu" ref="394707630"/>
+ <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="294875881">
+ <reference key="NSMenu" ref="394707630"/>
+ <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="125873089">
+ <reference key="NSMenu" ref="394707630"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="448907901">
+ <reference key="NSMenu" ref="394707630"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <string key="NSTitle">Selection</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="719807015">
+ <reference key="NSMenu" ref="394707630"/>
+ <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="551093393">
+ <reference key="NSMenu" ref="394707630"/>
+ <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="968290247">
+ <reference key="NSMenu" ref="394707630"/>
+ <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="624010617">
+ <reference key="NSMenu" ref="239792765"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="178871919">
+ <reference key="NSMenu" ref="239792765"/>
+ <string key="NSTitle">Show Ruler</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="19133321">
+ <reference key="NSMenu" ref="239792765"/>
+ <string key="NSTitle">Copy Ruler</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1310720</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="971682598">
+ <reference key="NSMenu" ref="239792765"/>
+ <string key="NSTitle">Paste Ruler</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1310720</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="474036278">
+ <reference key="NSMenu" ref="403715256"/>
+ <string key="NSTitle">View</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="1011573215">
+ <string key="NSTitle">View</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="84198938">
+ <reference key="NSMenu" ref="1011573215"/>
+ <string key="NSTitle">Show Toolbar</string>
+ <string key="NSKeyEquiv">t</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="468947355">
+ <reference key="NSMenu" ref="1011573215"/>
+ <string key="NSTitle">Customize Toolbar…</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="179474997">
+ <reference key="NSMenu" ref="403715256"/>
+ <string key="NSTitle">Window</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="722436082">
+ <string key="NSTitle">Window</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="715853698">
+ <reference key="NSMenu" ref="722436082"/>
+ <string key="NSTitle">Minimize</string>
+ <string key="NSKeyEquiv">m</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="639724461">
+ <reference key="NSMenu" ref="722436082"/>
+ <string key="NSTitle">Zoom</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="541256952">
+ <reference key="NSMenu" ref="722436082"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ <object class="NSMenuItem" id="801808839">
+ <reference key="NSMenu" ref="722436082"/>
+ <string key="NSTitle">Bring All to Front</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ <string key="NSName">_NSWindowsMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="964815204">
+ <reference key="NSMenu" ref="403715256"/>
+ <string key="NSTitle">Help</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="445400279">
+ <string key="NSTitle">Help</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="820408786">
+ <reference key="NSMenu" ref="445400279"/>
+ <string key="NSTitle">hello Help</string>
+ <string key="NSKeyEquiv">?</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="573986354"/>
+ <reference key="NSMixedImage" ref="622334842"/>
+ </object>
+ </object>
+ <string key="NSName">_NSHelpMenu</string>
+ </object>
+ </object>
+ </object>
+ <string key="NSName">_NSMainMenu</string>
+ </object>
+ <object class="NSWindowTemplate" id="407166972">
+ <int key="NSWindowStyleMask">15</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{335, 289}, {640, 461}}</string>
+ <int key="NSWTFlags">1954021376</int>
+ <string key="NSWindowTitle">hello</string>
+ <string key="NSWindowClass">NSWindow</string>
+ <nil key="NSViewClass"/>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <object class="NSView" key="NSWindowView" id="813288216">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomView" id="410337987">
+ <reference key="NSNextResponder" ref="813288216"/>
+ <int key="NSvFlags">286</int>
+ <string key="NSFrameSize">{640, 480}</string>
+ <reference key="NSSuperview" ref="813288216"/>
+ <string key="NSClassName">SimpleNSView</string>
+ </object>
+ </object>
+ <string key="NSFrameSize">{640, 461}</string>
+ <reference key="NSSuperview"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1600, 2538}}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <object class="NSArray" key="object" id="485438096">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <reference key="children" ref="110858478"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="762632889"/>
+ <reference key="parent" ref="485438096"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="932410077"/>
+ <reference key="parent" ref="485438096"/>
+ <string key="objectName">First Responder</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="858592610"/>
+ <reference key="parent" ref="485438096"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">114</int>
+ <reference key="object" ref="403715256"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="964815204"/>
+ <reference ref="126299768"/>
+ <reference ref="474036278"/>
+ <reference ref="849503563"/>
+ <reference ref="825040645"/>
+ <reference ref="65739106"/>
+ <reference ref="179474997"/>
+ </object>
+ <reference key="parent" ref="485438096"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">115</int>
+ <reference key="object" ref="964815204"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="445400279"/>
+ </object>
+ <reference key="parent" ref="403715256"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">116</int>
+ <reference key="object" ref="126299768"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="473359030"/>
+ </object>
+ <reference key="parent" ref="403715256"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">117</int>
+ <reference key="object" ref="474036278"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1011573215"/>
+ </object>
+ <reference key="parent" ref="403715256"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">118</int>
+ <reference key="object" ref="849503563"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="899147076"/>
+ </object>
+ <reference key="parent" ref="403715256"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">119</int>
+ <reference key="object" ref="825040645"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="411995980"/>
+ </object>
+ <reference key="parent" ref="403715256"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">120</int>
+ <reference key="object" ref="65739106"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="964556876"/>
+ </object>
+ <reference key="parent" ref="403715256"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">121</int>
+ <reference key="object" ref="179474997"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="722436082"/>
+ </object>
+ <reference key="parent" ref="403715256"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">122</int>
+ <reference key="object" ref="722436082"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="715853698"/>
+ <reference ref="639724461"/>
+ <reference ref="801808839"/>
+ <reference ref="541256952"/>
+ </object>
+ <reference key="parent" ref="179474997"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">123</int>
+ <reference key="object" ref="715853698"/>
+ <reference key="parent" ref="722436082"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">124</int>
+ <reference key="object" ref="639724461"/>
+ <reference key="parent" ref="722436082"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">125</int>
+ <reference key="object" ref="801808839"/>
+ <reference key="parent" ref="722436082"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">126</int>
+ <reference key="object" ref="541256952"/>
+ <reference key="parent" ref="722436082"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">127</int>
+ <reference key="object" ref="964556876"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="890704348"/>
+ <reference ref="140060996"/>
+ <reference ref="226934908"/>
+ <reference ref="938722355"/>
+ <reference ref="200976220"/>
+ <reference ref="1026802975"/>
+ <reference ref="1031569584"/>
+ <reference ref="674334250"/>
+ <reference ref="373184661"/>
+ <reference ref="650251791"/>
+ <reference ref="627636549"/>
+ </object>
+ <reference key="parent" ref="65739106"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">128</int>
+ <reference key="object" ref="890704348"/>
+ <reference key="parent" ref="964556876"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">129</int>
+ <reference key="object" ref="140060996"/>
+ <reference key="parent" ref="964556876"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">130</int>
+ <reference key="object" ref="226934908"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="785419060"/>
+ </object>
+ <reference key="parent" ref="964556876"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">131</int>
+ <reference key="object" ref="938722355"/>
+ <reference key="parent" ref="964556876"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">132</int>
+ <reference key="object" ref="200976220"/>
+ <reference key="parent" ref="964556876"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">133</int>
+ <reference key="object" ref="1026802975"/>
+ <reference key="parent" ref="964556876"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">134</int>
+ <reference key="object" ref="1031569584"/>
+ <reference key="parent" ref="964556876"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">135</int>
+ <reference key="object" ref="674334250"/>
+ <reference key="parent" ref="964556876"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">136</int>
+ <reference key="object" ref="373184661"/>
+ <reference key="parent" ref="964556876"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">137</int>
+ <reference key="object" ref="650251791"/>
+ <reference key="parent" ref="964556876"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">138</int>
+ <reference key="object" ref="627636549"/>
+ <reference key="parent" ref="964556876"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">139</int>
+ <reference key="object" ref="785419060"/>
+ <reference key="parent" ref="226934908"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">140</int>
+ <reference key="object" ref="411995980"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="890043556"/>
+ <reference ref="1022343180"/>
+ <reference ref="723250450"/>
+ <reference ref="538735815"/>
+ <reference ref="394001634"/>
+ <reference ref="726470551"/>
+ <reference ref="278282207"/>
+ <reference ref="287041942"/>
+ <reference ref="617541932"/>
+ <reference ref="404580975"/>
+ <reference ref="761075222"/>
+ <reference ref="393301673"/>
+ <reference ref="155877797"/>
+ <reference ref="826813329"/>
+ <reference ref="572775670"/>
+ </object>
+ <reference key="parent" ref="825040645"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">141</int>
+ <reference key="object" ref="890043556"/>
+ <reference key="parent" ref="411995980"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">142</int>
+ <reference key="object" ref="1022343180"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="799869067"/>
+ </object>
+ <reference key="parent" ref="411995980"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">143</int>
+ <reference key="object" ref="723250450"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="60916223"/>
+ </object>
+ <reference key="parent" ref="411995980"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">144</int>
+ <reference key="object" ref="538735815"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="92848229"/>
+ </object>
+ <reference key="parent" ref="411995980"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">145</int>
+ <reference key="object" ref="394001634"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="48019006"/>
+ </object>
+ <reference key="parent" ref="411995980"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">146</int>
+ <reference key="object" ref="726470551"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="759421779"/>
+ </object>
+ <reference key="parent" ref="411995980"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">147</int>
+ <reference key="object" ref="278282207"/>
+ <reference key="parent" ref="411995980"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">148</int>
+ <reference key="object" ref="287041942"/>
+ <reference key="parent" ref="411995980"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">149</int>
+ <reference key="object" ref="617541932"/>
+ <reference key="parent" ref="411995980"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">150</int>
+ <reference key="object" ref="404580975"/>
+ <reference key="parent" ref="411995980"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">151</int>
+ <reference key="object" ref="761075222"/>
+ <reference key="parent" ref="411995980"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">152</int>
+ <reference key="object" ref="393301673"/>
+ <reference key="parent" ref="411995980"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">153</int>
+ <reference key="object" ref="155877797"/>
+ <reference key="parent" ref="411995980"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">154</int>
+ <reference key="object" ref="826813329"/>
+ <reference key="parent" ref="411995980"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">155</int>
+ <reference key="object" ref="572775670"/>
+ <reference key="parent" ref="411995980"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">156</int>
+ <reference key="object" ref="759421779"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="871728498"/>
+ <reference ref="392793967"/>
+ <reference ref="300840686"/>
+ <reference ref="339241627"/>
+ <reference ref="209754492"/>
+ </object>
+ <reference key="parent" ref="726470551"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">157</int>
+ <reference key="object" ref="871728498"/>
+ <reference key="parent" ref="759421779"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">158</int>
+ <reference key="object" ref="392793967"/>
+ <reference key="parent" ref="759421779"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">159</int>
+ <reference key="object" ref="300840686"/>
+ <reference key="parent" ref="759421779"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">160</int>
+ <reference key="object" ref="339241627"/>
+ <reference key="parent" ref="759421779"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">161</int>
+ <reference key="object" ref="209754492"/>
+ <reference key="parent" ref="759421779"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">162</int>
+ <reference key="object" ref="48019006"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="440900682"/>
+ <reference ref="566175535"/>
+ <reference ref="74735022"/>
+ <reference ref="641875902"/>
+ <reference ref="519234687"/>
+ <reference ref="32560783"/>
+ </object>
+ <reference key="parent" ref="394001634"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">163</int>
+ <reference key="object" ref="440900682"/>
+ <reference key="parent" ref="48019006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">164</int>
+ <reference key="object" ref="566175535"/>
+ <reference key="parent" ref="48019006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">165</int>
+ <reference key="object" ref="74735022"/>
+ <reference key="parent" ref="48019006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">166</int>
+ <reference key="object" ref="641875902"/>
+ <reference key="parent" ref="48019006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">167</int>
+ <reference key="object" ref="519234687"/>
+ <reference key="parent" ref="48019006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">168</int>
+ <reference key="object" ref="32560783"/>
+ <reference key="parent" ref="48019006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">169</int>
+ <reference key="object" ref="92848229"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="242466330"/>
+ <reference ref="892418348"/>
+ </object>
+ <reference key="parent" ref="538735815"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">170</int>
+ <reference key="object" ref="242466330"/>
+ <reference key="parent" ref="92848229"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">171</int>
+ <reference key="object" ref="892418348"/>
+ <reference key="parent" ref="92848229"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">172</int>
+ <reference key="object" ref="60916223"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="682811574"/>
+ <reference ref="870101879"/>
+ <reference ref="604095584"/>
+ <reference ref="499113305"/>
+ <reference ref="818701236"/>
+ <reference ref="253602211"/>
+ <reference ref="1037848121"/>
+ </object>
+ <reference key="parent" ref="723250450"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">173</int>
+ <reference key="object" ref="682811574"/>
+ <reference key="parent" ref="60916223"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">174</int>
+ <reference key="object" ref="870101879"/>
+ <reference key="parent" ref="60916223"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">175</int>
+ <reference key="object" ref="604095584"/>
+ <reference key="parent" ref="60916223"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">176</int>
+ <reference key="object" ref="499113305"/>
+ <reference key="parent" ref="60916223"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">177</int>
+ <reference key="object" ref="818701236"/>
+ <reference key="parent" ref="60916223"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">178</int>
+ <reference key="object" ref="253602211"/>
+ <reference key="parent" ref="60916223"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">179</int>
+ <reference key="object" ref="1037848121"/>
+ <reference key="parent" ref="60916223"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">180</int>
+ <reference key="object" ref="799869067"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="138959048"/>
+ <reference ref="980071763"/>
+ <reference ref="242386505"/>
+ </object>
+ <reference key="parent" ref="1022343180"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">181</int>
+ <reference key="object" ref="138959048"/>
+ <reference key="parent" ref="799869067"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">182</int>
+ <reference key="object" ref="980071763"/>
+ <reference key="parent" ref="799869067"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">183</int>
+ <reference key="object" ref="242386505"/>
+ <reference key="parent" ref="799869067"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">184</int>
+ <reference key="object" ref="899147076"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="425999990"/>
+ <reference ref="523869872"/>
+ <reference ref="646964482"/>
+ <reference ref="113331390"/>
+ <reference ref="917170545"/>
+ <reference ref="802841280"/>
+ <reference ref="940143719"/>
+ <reference ref="416202392"/>
+ <reference ref="600825955"/>
+ <reference ref="259193863"/>
+ <reference ref="717042078"/>
+ </object>
+ <reference key="parent" ref="849503563"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">185</int>
+ <reference key="object" ref="425999990"/>
+ <reference key="parent" ref="899147076"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">186</int>
+ <reference key="object" ref="523869872"/>
+ <reference key="parent" ref="899147076"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">187</int>
+ <reference key="object" ref="646964482"/>
+ <reference key="parent" ref="899147076"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">188</int>
+ <reference key="object" ref="113331390"/>
+ <reference key="parent" ref="899147076"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">189</int>
+ <reference key="object" ref="917170545"/>
+ <reference key="parent" ref="899147076"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">190</int>
+ <reference key="object" ref="802841280"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="250982885"/>
+ </object>
+ <reference key="parent" ref="899147076"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">191</int>
+ <reference key="object" ref="940143719"/>
+ <reference key="parent" ref="899147076"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">192</int>
+ <reference key="object" ref="416202392"/>
+ <reference key="parent" ref="899147076"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">193</int>
+ <reference key="object" ref="600825955"/>
+ <reference key="parent" ref="899147076"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">194</int>
+ <reference key="object" ref="259193863"/>
+ <reference key="parent" ref="899147076"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">195</int>
+ <reference key="object" ref="717042078"/>
+ <reference key="parent" ref="899147076"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">196</int>
+ <reference key="object" ref="250982885"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="940066582"/>
+ </object>
+ <reference key="parent" ref="802841280"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">197</int>
+ <reference key="object" ref="940066582"/>
+ <reference key="parent" ref="250982885"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">198</int>
+ <reference key="object" ref="1011573215"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="468947355"/>
+ <reference ref="84198938"/>
+ </object>
+ <reference key="parent" ref="474036278"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">199</int>
+ <reference key="object" ref="468947355"/>
+ <reference key="parent" ref="1011573215"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">200</int>
+ <reference key="object" ref="84198938"/>
+ <reference key="parent" ref="1011573215"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">201</int>
+ <reference key="object" ref="473359030"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="432500292"/>
+ <reference ref="543679380"/>
+ </object>
+ <reference key="parent" ref="126299768"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">202</int>
+ <reference key="object" ref="432500292"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="239792765"/>
+ </object>
+ <reference key="parent" ref="473359030"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">203</int>
+ <reference key="object" ref="543679380"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="420125509"/>
+ </object>
+ <reference key="parent" ref="473359030"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">204</int>
+ <reference key="object" ref="420125509"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="726071842"/>
+ <reference ref="951733979"/>
+ <reference ref="576239163"/>
+ <reference ref="968537172"/>
+ <reference ref="770408504"/>
+ <reference ref="185308913"/>
+ <reference ref="764895229"/>
+ <reference ref="300760265"/>
+ <reference ref="684419220"/>
+ <reference ref="509852642"/>
+ <reference ref="554361477"/>
+ <reference ref="648523518"/>
+ <reference ref="648810690"/>
+ <reference ref="460689417"/>
+ <reference ref="890909023"/>
+ <reference ref="1066858"/>
+ </object>
+ <reference key="parent" ref="543679380"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">205</int>
+ <reference key="object" ref="726071842"/>
+ <reference key="parent" ref="420125509"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">206</int>
+ <reference key="object" ref="951733979"/>
+ <reference key="parent" ref="420125509"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">207</int>
+ <reference key="object" ref="576239163"/>
+ <reference key="parent" ref="420125509"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">208</int>
+ <reference key="object" ref="968537172"/>
+ <reference key="parent" ref="420125509"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">209</int>
+ <reference key="object" ref="770408504"/>
+ <reference key="parent" ref="420125509"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">210</int>
+ <reference key="object" ref="185308913"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="412235399"/>
+ </object>
+ <reference key="parent" ref="420125509"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">211</int>
+ <reference key="object" ref="764895229"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1027046122"/>
+ </object>
+ <reference key="parent" ref="420125509"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">212</int>
+ <reference key="object" ref="300760265"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="692426030"/>
+ </object>
+ <reference key="parent" ref="420125509"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">213</int>
+ <reference key="object" ref="684419220"/>
+ <reference key="parent" ref="420125509"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">214</int>
+ <reference key="object" ref="509852642"/>
+ <reference key="parent" ref="420125509"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">215</int>
+ <reference key="object" ref="554361477"/>
+ <reference key="parent" ref="420125509"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">216</int>
+ <reference key="object" ref="648523518"/>
+ <reference key="parent" ref="420125509"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">217</int>
+ <reference key="object" ref="648810690"/>
+ <reference key="parent" ref="420125509"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">218</int>
+ <reference key="object" ref="460689417"/>
+ <reference key="parent" ref="420125509"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">219</int>
+ <reference key="object" ref="890909023"/>
+ <reference key="parent" ref="420125509"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">220</int>
+ <reference key="object" ref="1066858"/>
+ <reference key="parent" ref="420125509"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">221</int>
+ <reference key="object" ref="692426030"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="984558289"/>
+ <reference ref="464129683"/>
+ <reference ref="114397248"/>
+ <reference ref="827985012"/>
+ </object>
+ <reference key="parent" ref="300760265"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">222</int>
+ <reference key="object" ref="984558289"/>
+ <reference key="parent" ref="692426030"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">223</int>
+ <reference key="object" ref="464129683"/>
+ <reference key="parent" ref="692426030"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">224</int>
+ <reference key="object" ref="114397248"/>
+ <reference key="parent" ref="692426030"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">225</int>
+ <reference key="object" ref="827985012"/>
+ <reference key="parent" ref="692426030"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">226</int>
+ <reference key="object" ref="1027046122"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="193227140"/>
+ <reference ref="1054539967"/>
+ <reference ref="170445579"/>
+ </object>
+ <reference key="parent" ref="764895229"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">227</int>
+ <reference key="object" ref="193227140"/>
+ <reference key="parent" ref="1027046122"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">228</int>
+ <reference key="object" ref="1054539967"/>
+ <reference key="parent" ref="1027046122"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">229</int>
+ <reference key="object" ref="170445579"/>
+ <reference key="parent" ref="1027046122"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">230</int>
+ <reference key="object" ref="412235399"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="794052095"/>
+ <reference ref="239990007"/>
+ <reference ref="887484660"/>
+ <reference ref="660376852"/>
+ <reference ref="708934364"/>
+ </object>
+ <reference key="parent" ref="185308913"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">231</int>
+ <reference key="object" ref="794052095"/>
+ <reference key="parent" ref="412235399"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">232</int>
+ <reference key="object" ref="239990007"/>
+ <reference key="parent" ref="412235399"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">233</int>
+ <reference key="object" ref="887484660"/>
+ <reference key="parent" ref="412235399"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">234</int>
+ <reference key="object" ref="660376852"/>
+ <reference key="parent" ref="412235399"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">235</int>
+ <reference key="object" ref="708934364"/>
+ <reference key="parent" ref="412235399"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">236</int>
+ <reference key="object" ref="239792765"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="971682598"/>
+ <reference ref="19133321"/>
+ <reference ref="178871919"/>
+ <reference ref="624010617"/>
+ <reference ref="970864302"/>
+ <reference ref="755110083"/>
+ <reference ref="518803967"/>
+ <reference ref="667530981"/>
+ <reference ref="940415998"/>
+ <reference ref="209955373"/>
+ </object>
+ <reference key="parent" ref="432500292"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">237</int>
+ <reference key="object" ref="971682598"/>
+ <reference key="parent" ref="239792765"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">238</int>
+ <reference key="object" ref="19133321"/>
+ <reference key="parent" ref="239792765"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">239</int>
+ <reference key="object" ref="178871919"/>
+ <reference key="parent" ref="239792765"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">240</int>
+ <reference key="object" ref="624010617"/>
+ <reference key="parent" ref="239792765"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">241</int>
+ <reference key="object" ref="970864302"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="394707630"/>
+ </object>
+ <reference key="parent" ref="239792765"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">242</int>
+ <reference key="object" ref="755110083"/>
+ <reference key="parent" ref="239792765"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">243</int>
+ <reference key="object" ref="518803967"/>
+ <reference key="parent" ref="239792765"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">244</int>
+ <reference key="object" ref="667530981"/>
+ <reference key="parent" ref="239792765"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">245</int>
+ <reference key="object" ref="940415998"/>
+ <reference key="parent" ref="239792765"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">246</int>
+ <reference key="object" ref="209955373"/>
+ <reference key="parent" ref="239792765"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">247</int>
+ <reference key="object" ref="394707630"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="968290247"/>
+ <reference ref="551093393"/>
+ <reference ref="719807015"/>
+ <reference ref="448907901"/>
+ <reference ref="125873089"/>
+ <reference ref="294875881"/>
+ <reference ref="909594320"/>
+ <reference ref="1016781112"/>
+ <reference ref="295941739"/>
+ </object>
+ <reference key="parent" ref="970864302"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">248</int>
+ <reference key="object" ref="968290247"/>
+ <reference key="parent" ref="394707630"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">249</int>
+ <reference key="object" ref="551093393"/>
+ <reference key="parent" ref="394707630"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">250</int>
+ <reference key="object" ref="719807015"/>
+ <reference key="parent" ref="394707630"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">251</int>
+ <reference key="object" ref="448907901"/>
+ <reference key="parent" ref="394707630"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">252</int>
+ <reference key="object" ref="125873089"/>
+ <reference key="parent" ref="394707630"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">253</int>
+ <reference key="object" ref="294875881"/>
+ <reference key="parent" ref="394707630"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">254</int>
+ <reference key="object" ref="909594320"/>
+ <reference key="parent" ref="394707630"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">255</int>
+ <reference key="object" ref="1016781112"/>
+ <reference key="parent" ref="394707630"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">256</int>
+ <reference key="object" ref="295941739"/>
+ <reference key="parent" ref="394707630"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">257</int>
+ <reference key="object" ref="445400279"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="820408786"/>
+ </object>
+ <reference key="parent" ref="964815204"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">258</int>
+ <reference key="object" ref="820408786"/>
+ <reference key="parent" ref="445400279"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">259</int>
+ <reference key="object" ref="407166972"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="813288216"/>
+ </object>
+ <reference key="parent" ref="485438096"/>
+ <string key="objectName">Window (SimpleApp)</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">260</int>
+ <reference key="object" ref="813288216"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="410337987"/>
+ </object>
+ <reference key="parent" ref="407166972"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">261</int>
+ <reference key="object" ref="410337987"/>
+ <reference key="parent" ref="813288216"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-3.IBPluginDependency</string>
+ <string>-3.ImportedFromIB2</string>
+ <string>114.IBEditorWindowLastContentRect</string>
+ <string>114.IBPluginDependency</string>
+ <string>114.ImportedFromIB2</string>
+ <string>114.WindowOrigin</string>
+ <string>114.editorWindowContentRectSynchronizationRect</string>
+ <string>115.IBPluginDependency</string>
+ <string>116.IBPluginDependency</string>
+ <string>117.IBPluginDependency</string>
+ <string>118.IBPluginDependency</string>
+ <string>118.ImportedFromIB2</string>
+ <string>119.IBPluginDependency</string>
+ <string>119.ImportedFromIB2</string>
+ <string>120.IBPluginDependency</string>
+ <string>120.ImportedFromIB2</string>
+ <string>121.IBPluginDependency</string>
+ <string>121.ImportedFromIB2</string>
+ <string>122.IBEditorWindowLastContentRect</string>
+ <string>122.IBPluginDependency</string>
+ <string>122.ImportedFromIB2</string>
+ <string>122.editorWindowContentRectSynchronizationRect</string>
+ <string>123.IBPluginDependency</string>
+ <string>123.ImportedFromIB2</string>
+ <string>124.IBPluginDependency</string>
+ <string>124.ImportedFromIB2</string>
+ <string>125.IBPluginDependency</string>
+ <string>125.ImportedFromIB2</string>
+ <string>126.IBPluginDependency</string>
+ <string>126.ImportedFromIB2</string>
+ <string>127.IBEditorWindowLastContentRect</string>
+ <string>127.IBPluginDependency</string>
+ <string>127.ImportedFromIB2</string>
+ <string>127.editorWindowContentRectSynchronizationRect</string>
+ <string>128.IBPluginDependency</string>
+ <string>128.ImportedFromIB2</string>
+ <string>129.IBPluginDependency</string>
+ <string>129.ImportedFromIB2</string>
+ <string>130.IBPluginDependency</string>
+ <string>130.ImportedFromIB2</string>
+ <string>131.IBPluginDependency</string>
+ <string>131.ImportedFromIB2</string>
+ <string>132.IBPluginDependency</string>
+ <string>132.ImportedFromIB2</string>
+ <string>133.IBPluginDependency</string>
+ <string>133.ImportedFromIB2</string>
+ <string>134.IBPluginDependency</string>
+ <string>134.ImportedFromIB2</string>
+ <string>135.IBPluginDependency</string>
+ <string>135.ImportedFromIB2</string>
+ <string>136.IBPluginDependency</string>
+ <string>136.ImportedFromIB2</string>
+ <string>137.IBPluginDependency</string>
+ <string>137.ImportedFromIB2</string>
+ <string>138.IBPluginDependency</string>
+ <string>138.ImportedFromIB2</string>
+ <string>139.IBPluginDependency</string>
+ <string>139.ImportedFromIB2</string>
+ <string>139.editorWindowContentRectSynchronizationRect</string>
+ <string>140.IBEditorWindowLastContentRect</string>
+ <string>140.IBPluginDependency</string>
+ <string>140.ImportedFromIB2</string>
+ <string>140.editorWindowContentRectSynchronizationRect</string>
+ <string>141.IBPluginDependency</string>
+ <string>142.IBPluginDependency</string>
+ <string>143.IBPluginDependency</string>
+ <string>143.ImportedFromIB2</string>
+ <string>144.IBPluginDependency</string>
+ <string>144.ImportedFromIB2</string>
+ <string>145.IBPluginDependency</string>
+ <string>145.ImportedFromIB2</string>
+ <string>146.IBPluginDependency</string>
+ <string>146.ImportedFromIB2</string>
+ <string>147.IBPluginDependency</string>
+ <string>147.ImportedFromIB2</string>
+ <string>148.IBPluginDependency</string>
+ <string>148.ImportedFromIB2</string>
+ <string>149.IBPluginDependency</string>
+ <string>149.ImportedFromIB2</string>
+ <string>150.IBPluginDependency</string>
+ <string>150.ImportedFromIB2</string>
+ <string>151.IBPluginDependency</string>
+ <string>151.ImportedFromIB2</string>
+ <string>152.IBPluginDependency</string>
+ <string>152.ImportedFromIB2</string>
+ <string>153.IBPluginDependency</string>
+ <string>153.ImportedFromIB2</string>
+ <string>154.IBPluginDependency</string>
+ <string>154.ImportedFromIB2</string>
+ <string>155.IBPluginDependency</string>
+ <string>155.ImportedFromIB2</string>
+ <string>156.IBEditorWindowLastContentRect</string>
+ <string>156.IBPluginDependency</string>
+ <string>156.ImportedFromIB2</string>
+ <string>156.editorWindowContentRectSynchronizationRect</string>
+ <string>157.IBPluginDependency</string>
+ <string>157.ImportedFromIB2</string>
+ <string>158.IBPluginDependency</string>
+ <string>158.ImportedFromIB2</string>
+ <string>159.IBPluginDependency</string>
+ <string>159.ImportedFromIB2</string>
+ <string>160.IBPluginDependency</string>
+ <string>160.ImportedFromIB2</string>
+ <string>161.IBPluginDependency</string>
+ <string>161.ImportedFromIB2</string>
+ <string>162.IBEditorWindowLastContentRect</string>
+ <string>162.IBPluginDependency</string>
+ <string>162.ImportedFromIB2</string>
+ <string>162.editorWindowContentRectSynchronizationRect</string>
+ <string>163.IBPluginDependency</string>
+ <string>164.IBPluginDependency</string>
+ <string>165.IBPluginDependency</string>
+ <string>165.ImportedFromIB2</string>
+ <string>166.IBPluginDependency</string>
+ <string>166.ImportedFromIB2</string>
+ <string>167.IBPluginDependency</string>
+ <string>167.ImportedFromIB2</string>
+ <string>168.IBPluginDependency</string>
+ <string>168.ImportedFromIB2</string>
+ <string>169.IBPluginDependency</string>
+ <string>169.ImportedFromIB2</string>
+ <string>169.editorWindowContentRectSynchronizationRect</string>
+ <string>170.IBPluginDependency</string>
+ <string>170.ImportedFromIB2</string>
+ <string>171.IBPluginDependency</string>
+ <string>171.ImportedFromIB2</string>
+ <string>172.IBEditorWindowLastContentRect</string>
+ <string>172.IBPluginDependency</string>
+ <string>172.ImportedFromIB2</string>
+ <string>172.editorWindowContentRectSynchronizationRect</string>
+ <string>173.IBPluginDependency</string>
+ <string>174.IBPluginDependency</string>
+ <string>175.IBPluginDependency</string>
+ <string>176.IBPluginDependency</string>
+ <string>177.IBPluginDependency</string>
+ <string>177.ImportedFromIB2</string>
+ <string>178.IBPluginDependency</string>
+ <string>178.ImportedFromIB2</string>
+ <string>179.IBPluginDependency</string>
+ <string>179.ImportedFromIB2</string>
+ <string>180.IBEditorWindowLastContentRect</string>
+ <string>180.IBPluginDependency</string>
+ <string>181.IBPluginDependency</string>
+ <string>182.IBPluginDependency</string>
+ <string>183.IBPluginDependency</string>
+ <string>184.IBEditorWindowLastContentRect</string>
+ <string>184.IBPluginDependency</string>
+ <string>184.ImportedFromIB2</string>
+ <string>184.editorWindowContentRectSynchronizationRect</string>
+ <string>185.IBPluginDependency</string>
+ <string>185.ImportedFromIB2</string>
+ <string>186.IBPluginDependency</string>
+ <string>186.ImportedFromIB2</string>
+ <string>187.IBPluginDependency</string>
+ <string>187.ImportedFromIB2</string>
+ <string>188.IBPluginDependency</string>
+ <string>188.ImportedFromIB2</string>
+ <string>189.IBPluginDependency</string>
+ <string>189.ImportedFromIB2</string>
+ <string>190.IBPluginDependency</string>
+ <string>190.ImportedFromIB2</string>
+ <string>191.IBPluginDependency</string>
+ <string>191.ImportedFromIB2</string>
+ <string>192.IBPluginDependency</string>
+ <string>192.ImportedFromIB2</string>
+ <string>193.IBPluginDependency</string>
+ <string>193.ImportedFromIB2</string>
+ <string>194.IBPluginDependency</string>
+ <string>194.ImportedFromIB2</string>
+ <string>195.IBPluginDependency</string>
+ <string>195.ImportedFromIB2</string>
+ <string>196.IBPluginDependency</string>
+ <string>196.ImportedFromIB2</string>
+ <string>196.editorWindowContentRectSynchronizationRect</string>
+ <string>197.IBPluginDependency</string>
+ <string>197.ImportedFromIB2</string>
+ <string>198.IBEditorWindowLastContentRect</string>
+ <string>198.IBPluginDependency</string>
+ <string>198.editorWindowContentRectSynchronizationRect</string>
+ <string>199.IBPluginDependency</string>
+ <string>200.IBPluginDependency</string>
+ <string>201.IBEditorWindowLastContentRect</string>
+ <string>201.IBPluginDependency</string>
+ <string>202.IBPluginDependency</string>
+ <string>203.IBPluginDependency</string>
+ <string>204.IBEditorWindowLastContentRect</string>
+ <string>204.IBPluginDependency</string>
+ <string>205.IBPluginDependency</string>
+ <string>206.IBPluginDependency</string>
+ <string>207.IBPluginDependency</string>
+ <string>208.IBPluginDependency</string>
+ <string>209.IBPluginDependency</string>
+ <string>210.IBPluginDependency</string>
+ <string>211.IBPluginDependency</string>
+ <string>212.IBPluginDependency</string>
+ <string>213.IBPluginDependency</string>
+ <string>214.IBPluginDependency</string>
+ <string>215.IBPluginDependency</string>
+ <string>216.IBPluginDependency</string>
+ <string>217.IBPluginDependency</string>
+ <string>218.IBPluginDependency</string>
+ <string>219.IBPluginDependency</string>
+ <string>220.IBPluginDependency</string>
+ <string>221.IBPluginDependency</string>
+ <string>222.IBPluginDependency</string>
+ <string>223.IBPluginDependency</string>
+ <string>224.IBPluginDependency</string>
+ <string>225.IBPluginDependency</string>
+ <string>226.IBPluginDependency</string>
+ <string>227.IBPluginDependency</string>
+ <string>228.IBPluginDependency</string>
+ <string>229.IBPluginDependency</string>
+ <string>230.IBPluginDependency</string>
+ <string>231.IBPluginDependency</string>
+ <string>232.IBPluginDependency</string>
+ <string>233.IBPluginDependency</string>
+ <string>234.IBPluginDependency</string>
+ <string>235.IBPluginDependency</string>
+ <string>236.IBEditorWindowLastContentRect</string>
+ <string>236.IBPluginDependency</string>
+ <string>237.IBPluginDependency</string>
+ <string>238.IBPluginDependency</string>
+ <string>239.IBPluginDependency</string>
+ <string>240.IBPluginDependency</string>
+ <string>241.IBPluginDependency</string>
+ <string>242.IBPluginDependency</string>
+ <string>243.IBPluginDependency</string>
+ <string>244.IBPluginDependency</string>
+ <string>245.IBPluginDependency</string>
+ <string>246.IBPluginDependency</string>
+ <string>247.IBEditorWindowLastContentRect</string>
+ <string>247.IBPluginDependency</string>
+ <string>248.IBPluginDependency</string>
+ <string>249.IBPluginDependency</string>
+ <string>250.IBPluginDependency</string>
+ <string>251.IBPluginDependency</string>
+ <string>252.IBPluginDependency</string>
+ <string>253.IBPluginDependency</string>
+ <string>254.IBPluginDependency</string>
+ <string>255.IBPluginDependency</string>
+ <string>256.IBPluginDependency</string>
+ <string>257.IBEditorWindowLastContentRect</string>
+ <string>257.IBPluginDependency</string>
+ <string>258.IBPluginDependency</string>
+ <string>259.IBEditorWindowLastContentRect</string>
+ <string>259.IBPluginDependency</string>
+ <string>259.IBWindowTemplateEditedContentRect</string>
+ <string>259.NSWindowTemplate.visibleAtLaunch</string>
+ <string>259.editorWindowContentRectSynchronizationRect</string>
+ <string>259.windowTemplate.maxSize</string>
+ <string>260.IBPluginDependency</string>
+ <string>261.IBPluginDependency</string>
+ <string>261.IBViewBoundsToFrameTransform</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{380, 836}, {400, 20}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{74, 862}</string>
+ <string>{{6, 978}, {478, 20}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{654, 239}, {194, 73}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{525, 802}, {197, 73}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{286, 129}, {275, 183}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{23, 794}, {245, 183}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{436, 809}, {64, 6}}</string>
+ <string>{{547, 180}, {254, 283}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{187, 434}, {243, 243}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{753, 217}, {238, 103}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{608, 612}, {241, 103}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{753, 187}, {275, 113}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{608, 612}, {275, 83}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{608, 612}, {167, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{746, 287}, {220, 133}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{608, 612}, {215, 63}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{753, 197}, {170, 63}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{452, 109}, {196, 203}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{145, 474}, {199, 203}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{522, 812}, {146, 23}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{604, 269}, {231, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{475, 832}, {234, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{591, 420}, {83, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{523, 2}, {178, 283}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{674, 260}, {204, 183}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{878, 180}, {164, 173}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{725, 289}, {246, 23}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{451, 1180}, {640, 461}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{451, 1180}, {640, 461}}</string>
+ <integer value="1"/>
+ <string>{{33, 99}, {480, 360}}</string>
+ <string>{3.40282e+38, 3.40282e+38}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <object class="NSAffineTransform"/>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="485438096"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="485438096"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">263</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">PrintCore.framework/Headers/PDEPluginInterface.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">QuartzCore.framework/Headers/CIImageProvider.h</string>
+ </object>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <integer value="1060" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+ <integer value="3000" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <string key="IBDocument.LastKnownRelativeProjectPath">../../out/gyp/shapeops_demo.xcodeproj</string>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSMenuCheckmark</string>
+ <string>NSMenuMixedState</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>{9, 8}</string>
+ <string>{7, 2}</string>
+ </object>
+ </object>
+ </data>
+</archive>
diff --git a/chromium/third_party/skia/experimental/Intersection/EdgeMain.cpp b/chromium/third_party/skia/experimental/Intersection/EdgeMain.cpp
new file mode 100644
index 00000000000..442c629c1ab
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/EdgeMain.cpp
@@ -0,0 +1,13 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Intersection_Tests.h"
+
+int main(int /*argc*/, char** /*argv*/) {
+ Intersection_Tests();
+ return 0;
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/EdgeWalker.cpp b/chromium/third_party/skia/experimental/Intersection/EdgeWalker.cpp
new file mode 100644
index 00000000000..be3f57fcdb3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/EdgeWalker.cpp
@@ -0,0 +1,2705 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Simplify.h"
+
+#undef SkASSERT
+#define SkASSERT(cond) while (!(cond)) { sk_throw(); }
+
+// FIXME: remove once debugging is complete
+#if 01 // set to 1 for no debugging whatsoever
+
+//const bool gRunTestsInOneThread = false;
+
+#define DEBUG_ACTIVE_LESS_THAN 0
+#define DEBUG_ADD 0
+#define DEBUG_ADD_BOTTOM_TS 0
+#define DEBUG_ADD_INTERSECTING_TS 0
+#define DEBUG_ADJUST_COINCIDENT 0
+#define DEBUG_ASSEMBLE 0
+#define DEBUG_BOTTOM 0
+#define DEBUG_BRIDGE 0
+#define DEBUG_DUMP 0
+#define DEBUG_SORT_HORIZONTAL 0
+#define DEBUG_OUT 0
+#define DEBUG_OUT_LESS_THAN 0
+#define DEBUG_SPLIT 0
+#define DEBUG_STITCH_EDGE 0
+#define DEBUG_TRIM_LINE 0
+
+#else
+
+//const bool gRunTestsInOneThread = true;
+
+#define DEBUG_ACTIVE_LESS_THAN 0
+#define DEBUG_ADD 01
+#define DEBUG_ADD_BOTTOM_TS 0
+#define DEBUG_ADD_INTERSECTING_TS 0
+#define DEBUG_ADJUST_COINCIDENT 1
+#define DEBUG_ASSEMBLE 1
+#define DEBUG_BOTTOM 0
+#define DEBUG_BRIDGE 1
+#define DEBUG_DUMP 1
+#define DEBUG_SORT_HORIZONTAL 01
+#define DEBUG_OUT 01
+#define DEBUG_OUT_LESS_THAN 0
+#define DEBUG_SPLIT 1
+#define DEBUG_STITCH_EDGE 1
+#define DEBUG_TRIM_LINE 1
+
+#endif
+
+#if DEBUG_ASSEMBLE || DEBUG_BRIDGE
+static const char* kLVerbStr[] = {"", "line", "quad", "cubic"};
+#endif
+#if DEBUG_STITCH_EDGE
+static const char* kUVerbStr[] = {"", "Line", "Quad", "Cubic"};
+#endif
+
+static int LineIntersect(const SkPoint a[2], const SkPoint b[2],
+ Intersections& intersections) {
+ const _Line aLine = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY}};
+ const _Line bLine = {{b[0].fX, b[0].fY}, {b[1].fX, b[1].fY}};
+ return intersect(aLine, bLine, intersections);
+}
+
+static int QuadLineIntersect(const SkPoint a[3], const SkPoint b[2],
+ Intersections& intersections) {
+ const Quadratic aQuad = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY}, {a[2].fX, a[2].fY}};
+ const _Line bLine = {{b[0].fX, b[0].fY}, {b[1].fX, b[1].fY}};
+ intersect(aQuad, bLine, intersections);
+ return intersections.fUsed;
+}
+
+static int CubicLineIntersect(const SkPoint a[2], const SkPoint b[3],
+ Intersections& intersections) {
+ const Cubic aCubic = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY}, {a[2].fX, a[2].fY},
+ {a[3].fX, a[3].fY}};
+ const _Line bLine = {{b[0].fX, b[0].fY}, {b[1].fX, b[1].fY}};
+ return intersect(aCubic, bLine, intersections);
+}
+
+static int QuadIntersect(const SkPoint a[3], const SkPoint b[3],
+ Intersections& intersections) {
+ const Quadratic aQuad = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY}, {a[2].fX, a[2].fY}};
+ const Quadratic bQuad = {{b[0].fX, b[0].fY}, {b[1].fX, b[1].fY}, {b[2].fX, b[2].fY}};
+ intersect2(aQuad, bQuad, intersections);
+ return intersections.fUsed;
+}
+
+static int CubicIntersect(const SkPoint a[4], const SkPoint b[4],
+ Intersections& intersections) {
+ const Cubic aCubic = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY}, {a[2].fX, a[2].fY},
+ {a[3].fX, a[3].fY}};
+ const Cubic bCubic = {{b[0].fX, b[0].fY}, {b[1].fX, b[1].fY}, {b[2].fX, b[2].fY},
+ {b[3].fX, b[3].fY}};
+ intersect(aCubic, bCubic, intersections);
+ return intersections.fUsed;
+}
+
+static int LineIntersect(const SkPoint a[2], SkScalar left, SkScalar right,
+ SkScalar y, double aRange[2]) {
+ const _Line aLine = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY}};
+ return horizontalLineIntersect(aLine, left, right, y, aRange);
+}
+
+static int QuadIntersect(const SkPoint a[3], SkScalar left, SkScalar right,
+ SkScalar y, double aRange[3]) {
+ const Quadratic aQuad = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY}, {a[2].fX, a[2].fY}};
+ return horizontalIntersect(aQuad, left, right, y, aRange);
+}
+
+static int CubicIntersect(const SkPoint a[4], SkScalar left, SkScalar right,
+ SkScalar y, double aRange[4]) {
+ const Cubic aCubic = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY}, {a[2].fX, a[2].fY},
+ {a[3].fX, a[3].fY}};
+ return horizontalIntersect(aCubic, left, right, y, aRange);
+}
+
+static void LineXYAtT(const SkPoint a[2], double t, SkPoint* out) {
+ const _Line line = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY}};
+ double x, y;
+ xy_at_t(line, t, x, y);
+ out->fX = SkDoubleToScalar(x);
+ out->fY = SkDoubleToScalar(y);
+}
+
+static void QuadXYAtT(const SkPoint a[3], double t, SkPoint* out) {
+ const Quadratic quad = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY}, {a[2].fX, a[2].fY}};
+ double x, y;
+ xy_at_t(quad, t, x, y);
+ out->fX = SkDoubleToScalar(x);
+ out->fY = SkDoubleToScalar(y);
+}
+
+static void CubicXYAtT(const SkPoint a[4], double t, SkPoint* out) {
+ const Cubic cubic = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY}, {a[2].fX, a[2].fY},
+ {a[3].fX, a[3].fY}};
+ double x, y;
+ xy_at_t(cubic, t, x, y);
+ out->fX = SkDoubleToScalar(x);
+ out->fY = SkDoubleToScalar(y);
+}
+
+static SkScalar LineYAtT(const SkPoint a[2], double t) {
+ const _Line aLine = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY}};
+ double y;
+ xy_at_t(aLine, t, *(double*) 0, y);
+ return SkDoubleToScalar(y);
+}
+
+static SkScalar QuadYAtT(const SkPoint a[3], double t) {
+ const Quadratic quad = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY}, {a[2].fX, a[2].fY}};
+ double y;
+ xy_at_t(quad, t, *(double*) 0, y);
+ return SkDoubleToScalar(y);
+}
+
+static SkScalar CubicYAtT(const SkPoint a[4], double t) {
+ const Cubic cubic = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY}, {a[2].fX, a[2].fY},
+ {a[3].fX, a[3].fY}};
+ double y;
+ xy_at_t(cubic, t, *(double*) 0, y);
+ return SkDoubleToScalar(y);
+}
+
+static void LineSubDivide(const SkPoint a[2], double startT, double endT,
+ SkPoint sub[2]) {
+ const _Line aLine = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY}};
+ _Line dst;
+ sub_divide(aLine, startT, endT, dst);
+ sub[0].fX = SkDoubleToScalar(dst[0].x);
+ sub[0].fY = SkDoubleToScalar(dst[0].y);
+ sub[1].fX = SkDoubleToScalar(dst[1].x);
+ sub[1].fY = SkDoubleToScalar(dst[1].y);
+}
+
+static void QuadSubDivide(const SkPoint a[3], double startT, double endT,
+ SkPoint sub[3]) {
+ const Quadratic aQuad = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY},
+ {a[2].fX, a[2].fY}};
+ Quadratic dst;
+ sub_divide(aQuad, startT, endT, dst);
+ sub[0].fX = SkDoubleToScalar(dst[0].x);
+ sub[0].fY = SkDoubleToScalar(dst[0].y);
+ sub[1].fX = SkDoubleToScalar(dst[1].x);
+ sub[1].fY = SkDoubleToScalar(dst[1].y);
+ sub[2].fX = SkDoubleToScalar(dst[2].x);
+ sub[2].fY = SkDoubleToScalar(dst[2].y);
+}
+
+static void CubicSubDivide(const SkPoint a[4], double startT, double endT,
+ SkPoint sub[4]) {
+ const Cubic aCubic = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY},
+ {a[2].fX, a[2].fY}, {a[3].fX, a[3].fY}};
+ Cubic dst;
+ sub_divide(aCubic, startT, endT, dst);
+ sub[0].fX = SkDoubleToScalar(dst[0].x);
+ sub[0].fY = SkDoubleToScalar(dst[0].y);
+ sub[1].fX = SkDoubleToScalar(dst[1].x);
+ sub[1].fY = SkDoubleToScalar(dst[1].y);
+ sub[2].fX = SkDoubleToScalar(dst[2].x);
+ sub[2].fY = SkDoubleToScalar(dst[2].y);
+ sub[3].fX = SkDoubleToScalar(dst[3].x);
+ sub[3].fY = SkDoubleToScalar(dst[3].y);
+}
+
+static void QuadSubBounds(const SkPoint a[3], double startT, double endT,
+ SkRect& bounds) {
+ SkPoint dst[3];
+ QuadSubDivide(a, startT, endT, dst);
+ bounds.fLeft = bounds.fRight = dst[0].fX;
+ bounds.fTop = bounds.fBottom = dst[0].fY;
+ for (int index = 1; index < 3; ++index) {
+ bounds.growToInclude(dst[index].fX, dst[index].fY);
+ }
+}
+
+static void CubicSubBounds(const SkPoint a[4], double startT, double endT,
+ SkRect& bounds) {
+ SkPoint dst[4];
+ CubicSubDivide(a, startT, endT, dst);
+ bounds.fLeft = bounds.fRight = dst[0].fX;
+ bounds.fTop = bounds.fBottom = dst[0].fY;
+ for (int index = 1; index < 4; ++index) {
+ bounds.growToInclude(dst[index].fX, dst[index].fY);
+ }
+}
+
+static SkPath::Verb QuadReduceOrder(SkPoint a[4]) {
+ const Quadratic aQuad = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY},
+ {a[2].fX, a[2].fY}};
+ Quadratic dst;
+ int order = reduceOrder(aQuad, dst, kReduceOrder_TreatAsFill);
+ for (int index = 0; index < order; ++index) {
+ a[index].fX = SkDoubleToScalar(dst[index].x);
+ a[index].fY = SkDoubleToScalar(dst[index].y);
+ }
+ if (order == 1) { // FIXME: allow returning points, caller should discard
+ a[1] = a[0];
+ return (SkPath::Verb) order;
+ }
+ return (SkPath::Verb) (order - 1);
+}
+
+static SkPath::Verb CubicReduceOrder(SkPoint a[4]) {
+ const Cubic aCubic = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY},
+ {a[2].fX, a[2].fY}, {a[3].fX, a[3].fY}};
+ Cubic dst;
+ int order = reduceOrder(aCubic, dst, kReduceOrder_QuadraticsAllowed, kReduceOrder_TreatAsFill);
+ for (int index = 0; index < order; ++index) {
+ a[index].fX = SkDoubleToScalar(dst[index].x);
+ a[index].fY = SkDoubleToScalar(dst[index].y);
+ }
+ if (order == 1) { // FIXME: allow returning points, caller should discard
+ a[1] = a[0];
+ return (SkPath::Verb) order;
+ }
+ return (SkPath::Verb) (order - 1);
+}
+
+static bool IsCoincident(const SkPoint a[2], const SkPoint& above,
+ const SkPoint& below) {
+ const _Line aLine = {{a[0].fX, a[0].fY}, {a[1].fX, a[1].fY}};
+ const _Line bLine = {{above.fX, above.fY}, {below.fX, below.fY}};
+ return implicit_matches_ulps(aLine, bLine, 32);
+}
+
+/*
+list of edges
+bounds for edge
+sort
+active T
+
+if a contour's bounds is outside of the active area, no need to create edges
+*/
+
+/* given one or more paths,
+ find the bounds of each contour, select the active contours
+ for each active contour, compute a set of edges
+ each edge corresponds to one or more lines and curves
+ leave edges unbroken as long as possible
+ when breaking edges, compute the t at the break but leave the control points alone
+
+ */
+
+void contourBounds(const SkPath& path, SkTDArray<SkRect>& boundsArray) {
+ SkPath::Iter iter(path, false);
+ SkPoint pts[4];
+ SkPath::Verb verb;
+ SkRect bounds;
+ bounds.setEmpty();
+ int count = 0;
+ while ((verb = iter.next(pts)) != SkPath::kDone_Verb) {
+ switch (verb) {
+ case SkPath::kMove_Verb:
+ if (!bounds.isEmpty()) {
+ *boundsArray.append() = bounds;
+ }
+ bounds.set(pts[0].fX, pts[0].fY, pts[0].fX, pts[0].fY);
+ count = 0;
+ break;
+ case SkPath::kLine_Verb:
+ count = 1;
+ break;
+ case SkPath::kQuad_Verb:
+ count = 2;
+ break;
+ case SkPath::kCubic_Verb:
+ count = 3;
+ break;
+ case SkPath::kClose_Verb:
+ count = 0;
+ break;
+ default:
+ SkDEBUGFAIL("bad verb");
+ return;
+ }
+ for (int i = 1; i <= count; ++i) {
+ bounds.growToInclude(pts[i].fX, pts[i].fY);
+ }
+ }
+}
+
+static bool extendLine(const SkPoint line[2], const SkPoint& add) {
+ // FIXME: allow this to extend lines that have slopes that are nearly equal
+ SkScalar dx1 = line[1].fX - line[0].fX;
+ SkScalar dy1 = line[1].fY - line[0].fY;
+ SkScalar dx2 = add.fX - line[0].fX;
+ SkScalar dy2 = add.fY - line[0].fY;
+ return dx1 * dy2 == dx2 * dy1;
+}
+
+// OPTIMIZATION: this should point to a list of input data rather than duplicating
+// the line data here. This would reduce the need to assemble the results.
+struct OutEdge {
+ bool operator<(const OutEdge& rh) const {
+ const SkPoint& first = fPts[0];
+ const SkPoint& rhFirst = rh.fPts[0];
+ return first.fY == rhFirst.fY
+ ? first.fX < rhFirst.fX
+ : first.fY < rhFirst.fY;
+ }
+
+ SkPoint fPts[4];
+ int fID; // id of edge generating data
+ uint8_t fVerb; // FIXME: not read from everywhere
+ bool fCloseCall; // edge is trimmable if not originally coincident
+};
+
+class OutEdgeBuilder {
+public:
+ OutEdgeBuilder(bool fill)
+ : fFill(fill) {
+ }
+
+ void addCurve(const SkPoint line[4], SkPath::Verb verb, int id,
+ bool closeCall) {
+ OutEdge& newEdge = fEdges.push_back();
+ memcpy(newEdge.fPts, line, (verb + 1) * sizeof(SkPoint));
+ newEdge.fVerb = verb;
+ newEdge.fID = id;
+ newEdge.fCloseCall = closeCall;
+ }
+
+ bool trimLine(SkScalar y, int id) {
+ size_t count = fEdges.count();
+ while (count-- != 0) {
+ OutEdge& edge = fEdges[count];
+ if (edge.fID != id) {
+ continue;
+ }
+ if (edge.fCloseCall) {
+ return false;
+ }
+ SkASSERT(edge.fPts[0].fY <= y);
+ if (edge.fPts[1].fY <= y) {
+ continue;
+ }
+ edge.fPts[1].fX = edge.fPts[0].fX + (y - edge.fPts[0].fY)
+ * (edge.fPts[1].fX - edge.fPts[0].fX)
+ / (edge.fPts[1].fY - edge.fPts[0].fY);
+ edge.fPts[1].fY = y;
+#if DEBUG_TRIM_LINE
+ SkDebugf("%s edge=%d %1.9g,%1.9g\n", __FUNCTION__, id,
+ edge.fPts[1].fX, y);
+#endif
+ return true;
+ }
+ return false;
+ }
+
+ void assemble(SkPath& simple) {
+ size_t listCount = fEdges.count();
+ if (listCount == 0) {
+ return;
+ }
+ do {
+ size_t listIndex = 0;
+ int advance = 1;
+ while (listIndex < listCount && fTops[listIndex] == 0) {
+ ++listIndex;
+ }
+ if (listIndex >= listCount) {
+ break;
+ }
+ int closeEdgeIndex = -listIndex - 1;
+ // the curve is deferred and not added right away because the
+ // following edge may extend the first curve.
+ SkPoint firstPt, lastCurve[4];
+ uint8_t lastVerb;
+#if DEBUG_ASSEMBLE
+ int firstIndex, lastIndex;
+ const int tab = 8;
+#endif
+ bool doMove = true;
+ int edgeIndex;
+ do {
+ SkPoint* ptArray = fEdges[listIndex].fPts;
+ uint8_t verb = fEdges[listIndex].fVerb;
+ SkPoint* curve[4];
+ if (advance < 0) {
+ curve[0] = &ptArray[verb];
+ if (verb == SkPath::kCubic_Verb) {
+ curve[1] = &ptArray[2];
+ curve[2] = &ptArray[1];
+ }
+ curve[verb] = &ptArray[0];
+ } else {
+ curve[0] = &ptArray[0];
+ if (verb == SkPath::kCubic_Verb) {
+ curve[1] = &ptArray[1];
+ curve[2] = &ptArray[2];
+ }
+ curve[verb] = &ptArray[verb];
+ }
+ if (verb == SkPath::kQuad_Verb) {
+ curve[1] = &ptArray[1];
+ }
+ if (doMove) {
+ firstPt = *curve[0];
+ simple.moveTo(curve[0]->fX, curve[0]->fY);
+#if DEBUG_ASSEMBLE
+ SkDebugf("%s %d moveTo (%g,%g)\n", __FUNCTION__,
+ listIndex + 1, curve[0]->fX, curve[0]->fY);
+ firstIndex = listIndex;
+#endif
+ for (int index = 0; index <= verb; ++index) {
+ lastCurve[index] = *curve[index];
+ }
+ doMove = false;
+ } else {
+ bool gap = lastCurve[lastVerb] != *curve[0];
+ if (gap || lastVerb != SkPath::kLine_Verb) { // output the accumulated curve before the gap
+ // FIXME: see comment in bridge -- this probably
+ // conceals errors
+ SkASSERT(fFill && UlpsDiff(lastCurve[lastVerb].fY,
+ curve[0]->fY) <= 10);
+ switch (lastVerb) {
+ case SkPath::kLine_Verb:
+ simple.lineTo(lastCurve[1].fX, lastCurve[1].fY);
+ break;
+ case SkPath::kQuad_Verb:
+ simple.quadTo(lastCurve[1].fX, lastCurve[1].fY,
+ lastCurve[2].fX, lastCurve[2].fY);
+ break;
+ case SkPath::kCubic_Verb:
+ simple.cubicTo(lastCurve[1].fX, lastCurve[1].fY,
+ lastCurve[2].fX, lastCurve[2].fY,
+ lastCurve[3].fX, lastCurve[3].fY);
+ break;
+ }
+#if DEBUG_ASSEMBLE
+ SkDebugf("%*s %d %sTo (%g,%g)\n", tab, "", lastIndex + 1,
+ kLVerbStr[lastVerb], lastCurve[lastVerb].fX,
+ lastCurve[lastVerb].fY);
+#endif
+ }
+ int firstCopy = 1;
+ if (gap || (lastVerb == SkPath::kLine_Verb
+ && (verb != SkPath::kLine_Verb
+ || !extendLine(lastCurve, *curve[verb])))) {
+ // FIXME: see comment in bridge -- this probably
+ // conceals errors
+ SkASSERT(lastCurve[lastVerb] == *curve[0] ||
+ (fFill && UlpsDiff(lastCurve[lastVerb].fY,
+ curve[0]->fY) <= 10));
+ simple.lineTo(curve[0]->fX, curve[0]->fY);
+#if DEBUG_ASSEMBLE
+ SkDebugf("%*s %d gap lineTo (%g,%g)\n", tab, "",
+ lastIndex + 1, curve[0]->fX, curve[0]->fY);
+#endif
+ firstCopy = 0;
+ } else if (lastVerb != SkPath::kLine_Verb) {
+ firstCopy = 0;
+ }
+ for (int index = firstCopy; index <= verb; ++index) {
+ lastCurve[index] = *curve[index];
+ }
+ }
+ lastVerb = verb;
+#if DEBUG_ASSEMBLE
+ lastIndex = listIndex;
+#endif
+ if (advance < 0) {
+ edgeIndex = fTops[listIndex];
+ fTops[listIndex] = 0;
+ } else {
+ edgeIndex = fBottoms[listIndex];
+ fBottoms[listIndex] = 0;
+ }
+ if (edgeIndex) {
+ listIndex = abs(edgeIndex) - 1;
+ if (edgeIndex < 0) {
+ fTops[listIndex] = 0;
+ } else {
+ fBottoms[listIndex] = 0;
+ }
+ }
+ if (edgeIndex == closeEdgeIndex || edgeIndex == 0) {
+ switch (lastVerb) {
+ case SkPath::kLine_Verb:
+ simple.lineTo(lastCurve[1].fX, lastCurve[1].fY);
+ break;
+ case SkPath::kQuad_Verb:
+ simple.quadTo(lastCurve[1].fX, lastCurve[1].fY,
+ lastCurve[2].fX, lastCurve[2].fY);
+ break;
+ case SkPath::kCubic_Verb:
+ simple.cubicTo(lastCurve[1].fX, lastCurve[1].fY,
+ lastCurve[2].fX, lastCurve[2].fY,
+ lastCurve[3].fX, lastCurve[3].fY);
+ break;
+ }
+#if DEBUG_ASSEMBLE
+ SkDebugf("%*s %d %sTo last (%g, %g)\n", tab, "",
+ lastIndex + 1, kLVerbStr[lastVerb],
+ lastCurve[lastVerb].fX, lastCurve[lastVerb].fY);
+#endif
+ if (lastCurve[lastVerb] != firstPt) {
+ simple.lineTo(firstPt.fX, firstPt.fY);
+#if DEBUG_ASSEMBLE
+ SkDebugf("%*s %d final line (%g, %g)\n", tab, "",
+ firstIndex + 1, firstPt.fX, firstPt.fY);
+#endif
+ }
+ simple.close();
+#if DEBUG_ASSEMBLE
+ SkDebugf("%*s close\n", tab, "");
+#endif
+ break;
+ }
+ // if this and next edge go different directions
+#if DEBUG_ASSEMBLE
+ SkDebugf("%*s advance=%d edgeIndex=%d flip=%s\n", tab, "",
+ advance, edgeIndex, advance > 0 ^ edgeIndex < 0 ?
+ "true" : "false");
+#endif
+ if (advance > 0 ^ edgeIndex < 0) {
+ advance = -advance;
+ }
+ } while (edgeIndex);
+ } while (true);
+ }
+
+ // sort points by y, then x
+ // if x/y is identical, sort bottoms before tops
+ // if identical and both tops/bottoms, sort by angle
+ static bool lessThan(SkTArray<OutEdge>& edges, const int one,
+ const int two) {
+ const OutEdge& oneEdge = edges[abs(one) - 1];
+ int oneIndex = one < 0 ? 0 : oneEdge.fVerb;
+ const SkPoint& startPt1 = oneEdge.fPts[oneIndex];
+ const OutEdge& twoEdge = edges[abs(two) - 1];
+ int twoIndex = two < 0 ? 0 : twoEdge.fVerb;
+ const SkPoint& startPt2 = twoEdge.fPts[twoIndex];
+ if (startPt1.fY != startPt2.fY) {
+ #if DEBUG_OUT_LESS_THAN
+ SkDebugf("%s %d<%d (%g,%g) %s startPt1.fY < startPt2.fY\n", __FUNCTION__,
+ one, two, startPt1.fY, startPt2.fY,
+ startPt1.fY < startPt2.fY ? "true" : "false");
+ #endif
+ return startPt1.fY < startPt2.fY;
+ }
+ if (startPt1.fX != startPt2.fX) {
+ #if DEBUG_OUT_LESS_THAN
+ SkDebugf("%s %d<%d (%g,%g) %s startPt1.fX < startPt2.fX\n", __FUNCTION__,
+ one, two, startPt1.fX, startPt2.fX,
+ startPt1.fX < startPt2.fX ? "true" : "false");
+ #endif
+ return startPt1.fX < startPt2.fX;
+ }
+ const SkPoint& endPt1 = oneEdge.fPts[oneIndex ^ oneEdge.fVerb];
+ const SkPoint& endPt2 = twoEdge.fPts[twoIndex ^ twoEdge.fVerb];
+ SkScalar dy1 = startPt1.fY - endPt1.fY;
+ SkScalar dy2 = startPt2.fY - endPt2.fY;
+ SkScalar dy1y2 = dy1 * dy2;
+ if (dy1y2 < 0) { // different signs
+ #if DEBUG_OUT_LESS_THAN
+ SkDebugf("%s %d<%d %s dy1 > 0\n", __FUNCTION__, one, two,
+ dy1 > 0 ? "true" : "false");
+ #endif
+ return dy1 > 0; // one < two if one goes up and two goes down
+ }
+ if (dy1y2 == 0) {
+ #if DEBUG_OUT_LESS_THAN
+ SkDebugf("%s %d<%d %s endPt1.fX < endPt2.fX\n", __FUNCTION__,
+ one, two, endPt1.fX < endPt2.fX ? "true" : "false");
+ #endif
+ return endPt1.fX < endPt2.fX;
+ }
+ SkScalar dx1y2 = (startPt1.fX - endPt1.fX) * dy2;
+ SkScalar dx2y1 = (startPt2.fX - endPt2.fX) * dy1;
+ #if DEBUG_OUT_LESS_THAN
+ SkDebugf("%s %d<%d %s dy2 < 0 ^ dx1y2 < dx2y1\n", __FUNCTION__,
+ one, two, dy2 < 0 ^ dx1y2 < dx2y1 ? "true" : "false");
+ #endif
+ return dy2 > 0 ^ dx1y2 < dx2y1;
+ }
+
+ // Sort the indices of paired points and then create more indices so
+ // assemble() can find the next edge and connect the top or bottom
+ void bridge() {
+ size_t index;
+ size_t count = fEdges.count();
+ if (!count) {
+ return;
+ }
+ SkASSERT(!fFill || count > 1);
+ fTops.setCount(count);
+ sk_bzero(fTops.begin(), sizeof(fTops[0]) * count);
+ fBottoms.setCount(count);
+ sk_bzero(fBottoms.begin(), sizeof(fBottoms[0]) * count);
+ SkTDArray<int> order;
+ for (index = 1; index <= count; ++index) {
+ *order.append() = -index;
+ }
+ for (index = 1; index <= count; ++index) {
+ *order.append() = index;
+ }
+ QSort<SkTArray<OutEdge>, int>(fEdges, order.begin(), order.end() - 1, lessThan);
+ int* lastPtr = order.end() - 1;
+ int* leftPtr = order.begin();
+ while (leftPtr < lastPtr) {
+ int leftIndex = *leftPtr;
+ int leftOutIndex = abs(leftIndex) - 1;
+ const OutEdge& left = fEdges[leftOutIndex];
+ int* rightPtr = leftPtr + 1;
+ int rightIndex = *rightPtr;
+ int rightOutIndex = abs(rightIndex) - 1;
+ const OutEdge& right = fEdges[rightOutIndex];
+ bool pairUp = fFill;
+ if (!pairUp) {
+ const SkPoint& leftMatch =
+ left.fPts[leftIndex < 0 ? 0 : left.fVerb];
+ const SkPoint& rightMatch =
+ right.fPts[rightIndex < 0 ? 0 : right.fVerb];
+ pairUp = leftMatch == rightMatch;
+ } else {
+ #if DEBUG_OUT
+ // FIXME : not happy that error in low bit is allowed
+ // this probably conceals error elsewhere
+ if (UlpsDiff(left.fPts[leftIndex < 0 ? 0 : left.fVerb].fY,
+ right.fPts[rightIndex < 0 ? 0 : right.fVerb].fY) > 1) {
+ *fMismatches.append() = leftIndex;
+ if (rightPtr == lastPtr) {
+ *fMismatches.append() = rightIndex;
+ }
+ pairUp = false;
+ }
+ #else
+ SkASSERT(UlpsDiff(left.fPts[leftIndex < 0 ? 0 : left.fVerb].fY,
+ right.fPts[rightIndex < 0 ? 0 : right.fVerb].fY) <= 10);
+ #endif
+ }
+ if (pairUp) {
+ if (leftIndex < 0) {
+ fTops[leftOutIndex] = rightIndex;
+ } else {
+ fBottoms[leftOutIndex] = rightIndex;
+ }
+ if (rightIndex < 0) {
+ fTops[rightOutIndex] = leftIndex;
+ } else {
+ fBottoms[rightOutIndex] = leftIndex;
+ }
+ ++rightPtr;
+ }
+ leftPtr = rightPtr;
+ }
+#if DEBUG_OUT
+ int* mismatch = fMismatches.begin();
+ while (mismatch != fMismatches.end()) {
+ int leftIndex = *mismatch++;
+ int leftOutIndex = abs(leftIndex) - 1;
+ const OutEdge& left = fEdges[leftOutIndex];
+ const SkPoint& leftPt = left.fPts[leftIndex < 0 ? 0 : left.fVerb];
+ SkDebugf("%s left=%d %s (%1.9g,%1.9g)\n",
+ __FUNCTION__, left.fID, leftIndex < 0 ? "top" : "bot",
+ leftPt.fX, leftPt.fY);
+ }
+ SkASSERT(fMismatches.count() == 0);
+#endif
+#if DEBUG_BRIDGE
+ for (index = 0; index < count; ++index) {
+ const OutEdge& edge = fEdges[index];
+ uint8_t verb = edge.fVerb;
+ SkDebugf("%s %d edge=%d %s (%1.9g,%1.9g) (%1.9g,%1.9g)\n",
+ index == 0 ? __FUNCTION__ : " ",
+ index + 1, edge.fID, kLVerbStr[verb], edge.fPts[0].fX,
+ edge.fPts[0].fY, edge.fPts[verb].fX, edge.fPts[verb].fY);
+ }
+ for (index = 0; index < count; ++index) {
+ SkDebugf(" top of % 2d connects to %s of % 2d\n", index + 1,
+ fTops[index] < 0 ? "top " : "bottom", abs(fTops[index]));
+ SkDebugf(" bottom of % 2d connects to %s of % 2d\n", index + 1,
+ fBottoms[index] < 0 ? "top " : "bottom", abs(fBottoms[index]));
+ }
+#endif
+ }
+
+protected:
+ SkTArray<OutEdge> fEdges;
+ SkTDArray<int> fTops;
+ SkTDArray<int> fBottoms;
+ bool fFill;
+#if DEBUG_OUT
+ SkTDArray<int> fMismatches;
+#endif
+};
+
+// Bounds, unlike Rect, does not consider a vertical line to be empty.
+struct Bounds : public SkRect {
+ static bool Intersects(const Bounds& a, const Bounds& b) {
+ return a.fLeft <= b.fRight && b.fLeft <= a.fRight &&
+ a.fTop <= b.fBottom && b.fTop <= a.fBottom;
+ }
+
+ bool isEmpty() {
+ return fLeft > fRight || fTop > fBottom
+ || (fLeft == fRight && fTop == fBottom)
+ || isnan(fLeft) || isnan(fRight)
+ || isnan(fTop) || isnan(fBottom);
+ }
+};
+
+class Intercepts {
+public:
+ Intercepts()
+ : fTopIntercepts(0)
+ , fBottomIntercepts(0)
+ , fExplicit(false) {
+ }
+
+ Intercepts& operator=(const Intercepts& src) {
+ fTs = src.fTs;
+ fTopIntercepts = src.fTopIntercepts;
+ fBottomIntercepts = src.fBottomIntercepts;
+ return *this;
+ }
+
+ // OPTIMIZATION: remove this function if it's never called
+ double t(int tIndex) const {
+ if (tIndex == 0) {
+ return 0;
+ }
+ if (tIndex > fTs.count()) {
+ return 1;
+ }
+ return fTs[tIndex - 1];
+ }
+
+#if DEBUG_DUMP
+ void dump(const SkPoint* pts, SkPath::Verb verb) {
+ const char className[] = "Intercepts";
+ const int tab = 8;
+ for (int i = 0; i < fTs.count(); ++i) {
+ SkPoint out;
+ switch (verb) {
+ case SkPath::kLine_Verb:
+ LineXYAtT(pts, fTs[i], &out);
+ break;
+ case SkPath::kQuad_Verb:
+ QuadXYAtT(pts, fTs[i], &out);
+ break;
+ case SkPath::kCubic_Verb:
+ CubicXYAtT(pts, fTs[i], &out);
+ break;
+ default:
+ SkASSERT(0);
+ }
+ SkDebugf("%*s.fTs[%d]=%1.9g (%1.9g,%1.9g)\n", tab + sizeof(className),
+ className, i, fTs[i], out.fX, out.fY);
+ }
+ SkDebugf("%*s.fTopIntercepts=%u\n", tab + sizeof(className),
+ className, fTopIntercepts);
+ SkDebugf("%*s.fBottomIntercepts=%u\n", tab + sizeof(className),
+ className, fBottomIntercepts);
+ SkDebugf("%*s.fExplicit=%d\n", tab + sizeof(className),
+ className, fExplicit);
+ }
+#endif
+
+ SkTDArray<double> fTs;
+ unsigned char fTopIntercepts; // 0=init state 1=1 edge >1=multiple edges
+ unsigned char fBottomIntercepts;
+ bool fExplicit; // if set, suppress 0 and 1
+
+};
+
+struct HorizontalEdge {
+ bool operator<(const HorizontalEdge& rh) const {
+ return fY == rh.fY ? fLeft == rh.fLeft ? fRight < rh.fRight
+ : fLeft < rh.fLeft : fY < rh.fY;
+ }
+
+#if DEBUG_DUMP
+ void dump() {
+ const char className[] = "HorizontalEdge";
+ const int tab = 4;
+ SkDebugf("%*s.fLeft=%1.9g\n", tab + sizeof(className), className, fLeft);
+ SkDebugf("%*s.fRight=%1.9g\n", tab + sizeof(className), className, fRight);
+ SkDebugf("%*s.fY=%1.9g\n", tab + sizeof(className), className, fY);
+ }
+#endif
+
+ SkScalar fLeft;
+ SkScalar fRight;
+ SkScalar fY;
+};
+
+struct InEdge {
+ bool operator<(const InEdge& rh) const {
+ return fBounds.fTop == rh.fBounds.fTop
+ ? fBounds.fLeft < rh.fBounds.fLeft
+ : fBounds.fTop < rh.fBounds.fTop;
+ }
+
+ // Avoid collapsing t values that are close to the same since
+ // we walk ts to describe consecutive intersections. Since a pair of ts can
+ // be nearly equal, any problems caused by this should be taken care
+ // of later.
+ int add(double* ts, size_t count, ptrdiff_t verbIndex) {
+ // FIXME: in the pathological case where there is a ton of intercepts, binary search?
+ bool foundIntercept = false;
+ int insertedAt = -1;
+ Intercepts& intercepts = fIntercepts[verbIndex];
+ for (size_t index = 0; index < count; ++index) {
+ double t = ts[index];
+ if (t <= 0) {
+ intercepts.fTopIntercepts <<= 1;
+ fContainsIntercepts |= ++intercepts.fTopIntercepts > 1;
+ continue;
+ }
+ if (t >= 1) {
+ intercepts.fBottomIntercepts <<= 1;
+ fContainsIntercepts |= ++intercepts.fBottomIntercepts > 1;
+ continue;
+ }
+ fIntersected = true;
+ foundIntercept = true;
+ size_t tCount = intercepts.fTs.count();
+ double delta;
+ for (size_t idx2 = 0; idx2 < tCount; ++idx2) {
+ if (t <= intercepts.fTs[idx2]) {
+ // FIXME: ? if (t < intercepts.fTs[idx2]) // failed
+ delta = intercepts.fTs[idx2] - t;
+ if (delta > 0) {
+ insertedAt = idx2;
+ *intercepts.fTs.insert(idx2) = t;
+ }
+ goto nextPt;
+ }
+ }
+ if (tCount == 0 || (delta = t - intercepts.fTs[tCount - 1]) > 0) {
+ insertedAt = tCount;
+ *intercepts.fTs.append() = t;
+ }
+ nextPt:
+ ;
+ }
+ fContainsIntercepts |= foundIntercept;
+ return insertedAt;
+ }
+
+ void addPartial(SkTArray<InEdge>& edges, int ptStart, int ptEnd,
+ int verbStart, int verbEnd) {
+ InEdge* edge = edges.push_back_n(1);
+ int verbCount = verbEnd - verbStart;
+ edge->fIntercepts.push_back_n(verbCount);
+ // uint8_t* verbs = &fVerbs[verbStart];
+ for (int ceptIdx = 0; ceptIdx < verbCount; ++ceptIdx) {
+ edge->fIntercepts[ceptIdx] = fIntercepts[verbStart + ceptIdx];
+ }
+ edge->fPts.append(ptEnd - ptStart, &fPts[ptStart]);
+ edge->fVerbs.append(verbCount, &fVerbs[verbStart]);
+ edge->setBounds();
+ edge->fWinding = fWinding;
+ edge->fContainsIntercepts = fContainsIntercepts; // FIXME: may not be correct -- but do we need to know?
+ }
+
+ void addSplit(SkTArray<InEdge>& edges, SkPoint* pts, uint8_t verb,
+ Intercepts& intercepts, int firstT, int lastT, bool flipped) {
+ InEdge* edge = edges.push_back_n(1);
+ edge->fIntercepts.push_back_n(1);
+ if (firstT == 0) {
+ *edge->fIntercepts[0].fTs.append() = 0;
+ } else {
+ *edge->fIntercepts[0].fTs.append() = intercepts.fTs[firstT - 1];
+ }
+ bool add1 = lastT == intercepts.fTs.count();
+ edge->fIntercepts[0].fTs.append(lastT - firstT, &intercepts.fTs[firstT]);
+ if (add1) {
+ *edge->fIntercepts[0].fTs.append() = 1;
+ }
+ edge->fIntercepts[0].fExplicit = true;
+ edge->fPts.append(verb + 1, pts);
+ edge->fVerbs.append(1, &verb);
+ // FIXME: bounds could be better for partial Ts
+ edge->setSubBounds();
+ edge->fContainsIntercepts = fContainsIntercepts; // FIXME: may not be correct -- but do we need to know?
+ if (flipped) {
+ edge->flipTs();
+ edge->fWinding = -fWinding;
+ } else {
+ edge->fWinding = fWinding;
+ }
+ }
+
+ bool cached(const InEdge* edge) {
+ // FIXME: in the pathological case where there is a ton of edges, binary search?
+ size_t count = fCached.count();
+ for (size_t index = 0; index < count; ++index) {
+ if (edge == fCached[index]) {
+ return true;
+ }
+ if (edge < fCached[index]) {
+ *fCached.insert(index) = edge;
+ return false;
+ }
+ }
+ *fCached.append() = edge;
+ return false;
+ }
+
+ void complete(signed char winding) {
+ setBounds();
+ fIntercepts.push_back_n(fVerbs.count());
+ if ((fWinding = winding) < 0) { // reverse verbs, pts, if bottom to top
+ flip();
+ }
+ fContainsIntercepts = fIntersected = false;
+ }
+
+ void flip() {
+ size_t index;
+ size_t last = fPts.count() - 1;
+ for (index = 0; index < last; ++index, --last) {
+ SkTSwap<SkPoint>(fPts[index], fPts[last]);
+ }
+ last = fVerbs.count() - 1;
+ for (index = 0; index < last; ++index, --last) {
+ SkTSwap<uint8_t>(fVerbs[index], fVerbs[last]);
+ }
+ }
+
+ void flipTs() {
+ SkASSERT(fIntercepts.count() == 1);
+ Intercepts& intercepts = fIntercepts[0];
+ SkASSERT(intercepts.fExplicit);
+ SkTDArray<double>& ts = intercepts.fTs;
+ size_t index;
+ size_t last = ts.count() - 1;
+ for (index = 0; index < last; ++index, --last) {
+ SkTSwap<double>(ts[index], ts[last]);
+ }
+ }
+
+ void reset() {
+ fCached.reset();
+ fIntercepts.reset();
+ fPts.reset();
+ fVerbs.reset();
+ fBounds.set(SK_ScalarMax, SK_ScalarMax, SK_ScalarMax, SK_ScalarMax);
+ fWinding = 0;
+ fContainsIntercepts = false;
+ fIntersected = false;
+ }
+
+ void setBounds() {
+ SkPoint* ptPtr = fPts.begin();
+ SkPoint* ptLast = fPts.end();
+ if (ptPtr == ptLast) {
+ SkDebugf("%s empty edge\n", __FUNCTION__);
+ SkASSERT(0);
+ // FIXME: delete empty edge?
+ return;
+ }
+ fBounds.set(ptPtr->fX, ptPtr->fY, ptPtr->fX, ptPtr->fY);
+ ++ptPtr;
+ while (ptPtr != ptLast) {
+ fBounds.growToInclude(ptPtr->fX, ptPtr->fY);
+ ++ptPtr;
+ }
+ }
+
+ // recompute bounds based on subrange of T values
+ void setSubBounds() {
+ SkASSERT(fIntercepts.count() == 1);
+ Intercepts& intercepts = fIntercepts[0];
+ SkASSERT(intercepts.fExplicit);
+ SkASSERT(fVerbs.count() == 1);
+ SkTDArray<double>& ts = intercepts.fTs;
+ if (fVerbs[0] == SkPath::kQuad_Verb) {
+ SkASSERT(fPts.count() == 3);
+ QuadSubBounds(fPts.begin(), ts[0], ts[ts.count() - 1], fBounds);
+ } else {
+ SkASSERT(fVerbs[0] == SkPath::kCubic_Verb);
+ SkASSERT(fPts.count() == 4);
+ CubicSubBounds(fPts.begin(), ts[0], ts[ts.count() - 1], fBounds);
+ }
+ }
+
+ void splitInflectionPts(SkTArray<InEdge>& edges) {
+ if (!fIntersected) {
+ return;
+ }
+ uint8_t* verbs = fVerbs.begin();
+ SkPoint* pts = fPts.begin();
+ int lastVerb = 0;
+ int lastPt = 0;
+ uint8_t verb;
+ bool edgeSplit = false;
+ for (int ceptIdx = 0; ceptIdx < fIntercepts.count(); ++ceptIdx, pts += verb) {
+ Intercepts& intercepts = fIntercepts[ceptIdx];
+ verb = *verbs++;
+ if (verb <= SkPath::kLine_Verb) {
+ continue;
+ }
+ size_t tCount = intercepts.fTs.count();
+ if (!tCount) {
+ continue;
+ }
+ size_t tIndex = (size_t) -1;
+ SkScalar y = pts[0].fY;
+ int lastSplit = 0;
+ int firstSplit = -1;
+ bool curveSplit = false;
+ while (++tIndex < tCount) {
+ double nextT = intercepts.fTs[tIndex];
+ SkScalar nextY = verb == SkPath::kQuad_Verb
+ ? QuadYAtT(pts, nextT) : CubicYAtT(pts, nextT);
+ if (nextY < y) {
+ edgeSplit = curveSplit = true;
+ if (firstSplit < 0) {
+ firstSplit = tIndex;
+ int nextPt = pts - fPts.begin();
+ int nextVerb = verbs - 1 - fVerbs.begin();
+ if (lastVerb < nextVerb) {
+ addPartial(edges, lastPt, nextPt, lastVerb, nextVerb);
+ #if DEBUG_SPLIT
+ SkDebugf("%s addPartial 1\n", __FUNCTION__);
+ #endif
+ }
+ lastPt = nextPt;
+ lastVerb = nextVerb;
+ }
+ } else {
+ if (firstSplit >= 0) {
+ if (lastSplit < firstSplit) {
+ addSplit(edges, pts, verb, intercepts,
+ lastSplit, firstSplit, false);
+ #if DEBUG_SPLIT
+ SkDebugf("%s addSplit 1 tIndex=%d,%d\n",
+ __FUNCTION__, lastSplit, firstSplit);
+ #endif
+ }
+ addSplit(edges, pts, verb, intercepts,
+ firstSplit, tIndex, true);
+ #if DEBUG_SPLIT
+ SkDebugf("%s addSplit 2 tIndex=%d,%d flip\n",
+ __FUNCTION__, firstSplit, tIndex);
+ #endif
+ lastSplit = tIndex;
+ firstSplit = -1;
+ }
+ }
+ y = nextY;
+ }
+ if (curveSplit) {
+ if (firstSplit < 0) {
+ firstSplit = lastSplit;
+ } else {
+ addSplit(edges, pts, verb, intercepts, lastSplit,
+ firstSplit, false);
+ #if DEBUG_SPLIT
+ SkDebugf("%s addSplit 3 tIndex=%d,%d\n", __FUNCTION__,
+ lastSplit, firstSplit);
+ #endif
+ }
+ addSplit(edges, pts, verb, intercepts, firstSplit,
+ tIndex, pts[verb].fY < y);
+ #if DEBUG_SPLIT
+ SkDebugf("%s addSplit 4 tIndex=%d,%d %s\n", __FUNCTION__,
+ firstSplit, tIndex, pts[verb].fY < y ? "flip" : "");
+ #endif
+ }
+ }
+ // collapse remainder -- if there's nothing left, clear it somehow?
+ if (edgeSplit) {
+ int nextVerb = verbs - 1 - fVerbs.begin();
+ if (lastVerb < nextVerb) {
+ int nextPt = pts - fPts.begin();
+ addPartial(edges, lastPt, nextPt, lastVerb, nextVerb);
+ #if DEBUG_SPLIT
+ SkDebugf("%s addPartial 2\n", __FUNCTION__);
+ #endif
+ }
+ // OPTIMIZATION: reuse the edge instead of marking it empty
+ reset();
+ }
+ }
+
+#if DEBUG_DUMP
+ void dump() {
+ int i;
+ const char className[] = "InEdge";
+ const int tab = 4;
+ SkDebugf("InEdge %p (edge=%d)\n", this, fID);
+ for (i = 0; i < fCached.count(); ++i) {
+ SkDebugf("%*s.fCached[%d]=0x%08x\n", tab + sizeof(className),
+ className, i, fCached[i]);
+ }
+ uint8_t* verbs = fVerbs.begin();
+ SkPoint* pts = fPts.begin();
+ for (i = 0; i < fIntercepts.count(); ++i) {
+ SkDebugf("%*s.fIntercepts[%d]:\n", tab + sizeof(className),
+ className, i);
+ fIntercepts[i].dump(pts, (SkPath::Verb) *verbs);
+ pts += *verbs++;
+ }
+ for (i = 0; i < fPts.count(); ++i) {
+ SkDebugf("%*s.fPts[%d]=(%1.9g,%1.9g)\n", tab + sizeof(className),
+ className, i, fPts[i].fX, fPts[i].fY);
+ }
+ for (i = 0; i < fVerbs.count(); ++i) {
+ SkDebugf("%*s.fVerbs[%d]=%d\n", tab + sizeof(className),
+ className, i, fVerbs[i]);
+ }
+ SkDebugf("%*s.fBounds=(%1.9g, %1.9g, %1.9g, %1.9g)\n", tab + sizeof(className),
+ className, fBounds.fLeft, fBounds.fTop,
+ fBounds.fRight, fBounds.fBottom);
+ SkDebugf("%*s.fWinding=%d\n", tab + sizeof(className), className,
+ fWinding);
+ SkDebugf("%*s.fContainsIntercepts=%d\n", tab + sizeof(className),
+ className, fContainsIntercepts);
+ SkDebugf("%*s.fIntersected=%d\n", tab + sizeof(className),
+ className, fIntersected);
+ }
+#endif
+
+ // FIXME: temporary data : move this to a separate struct?
+ SkTDArray<const InEdge*> fCached; // list of edges already intercepted
+ SkTArray<Intercepts> fIntercepts; // one per verb
+
+ // persistent data
+ SkTDArray<SkPoint> fPts;
+ SkTDArray<uint8_t> fVerbs;
+ Bounds fBounds;
+ int fID;
+ signed char fWinding;
+ bool fContainsIntercepts;
+ bool fIntersected;
+};
+
+class InEdgeBuilder {
+public:
+
+InEdgeBuilder(const SkPath& path, bool ignoreHorizontal, SkTArray<InEdge>& edges,
+ SkTDArray<HorizontalEdge>& horizontalEdges)
+ : fPath(path)
+ , fCurrentEdge(NULL)
+ , fEdges(edges)
+ , fHorizontalEdges(horizontalEdges)
+ , fIgnoreHorizontal(ignoreHorizontal)
+ , fContainsCurves(false)
+{
+ walk();
+}
+
+bool containsCurves() const {
+ return fContainsCurves;
+}
+
+protected:
+
+void addEdge() {
+ SkASSERT(fCurrentEdge);
+ fCurrentEdge->fPts.append(fPtCount - fPtOffset, &fPts[fPtOffset]);
+ fPtOffset = 1;
+ *fCurrentEdge->fVerbs.append() = fVerb;
+}
+
+bool complete() {
+ if (fCurrentEdge && fCurrentEdge->fVerbs.count()) {
+ fCurrentEdge->complete(fWinding);
+ fCurrentEdge = NULL;
+ return true;
+ }
+ return false;
+}
+
+int direction(SkPath::Verb verb) {
+ fPtCount = verb + 1;
+ if (fIgnoreHorizontal && isHorizontal()) {
+ return 0;
+ }
+ return fPts[0].fY == fPts[verb].fY
+ ? fPts[0].fX == fPts[verb].fX ? 0 : fPts[0].fX < fPts[verb].fX
+ ? 1 : -1 : fPts[0].fY < fPts[verb].fY ? 1 : -1;
+}
+
+bool isHorizontal() {
+ SkScalar y = fPts[0].fY;
+ for (int i = 1; i < fPtCount; ++i) {
+ if (fPts[i].fY != y) {
+ return false;
+ }
+ }
+ return true;
+}
+
+void startEdge() {
+ if (!fCurrentEdge) {
+ fCurrentEdge = fEdges.push_back_n(1);
+ }
+ fWinding = 0;
+ fPtOffset = 0;
+}
+
+void walk() {
+ SkPath::Iter iter(fPath, true);
+ int winding = 0;
+ while ((fVerb = iter.next(fPts)) != SkPath::kDone_Verb) {
+ switch (fVerb) {
+ case SkPath::kMove_Verb:
+ startEdge();
+ continue;
+ case SkPath::kLine_Verb:
+ winding = direction(SkPath::kLine_Verb);
+ break;
+ case SkPath::kQuad_Verb:
+ fVerb = QuadReduceOrder(fPts);
+ winding = direction(fVerb);
+ fContainsCurves |= fVerb == SkPath::kQuad_Verb;
+ break;
+ case SkPath::kCubic_Verb:
+ fVerb = CubicReduceOrder(fPts);
+ winding = direction(fVerb);
+ fContainsCurves |= fVerb >= SkPath::kQuad_Verb;
+ break;
+ case SkPath::kClose_Verb:
+ SkASSERT(fCurrentEdge);
+ complete();
+ continue;
+ default:
+ SkDEBUGFAIL("bad verb");
+ return;
+ }
+ if (winding == 0) {
+ HorizontalEdge* horizontalEdge = fHorizontalEdges.append();
+ // FIXME: for degenerate quads and cubics, compute x extremes
+ horizontalEdge->fLeft = fPts[0].fX;
+ horizontalEdge->fRight = fPts[fVerb].fX;
+ horizontalEdge->fY = fPts[0].fY;
+ if (horizontalEdge->fLeft > horizontalEdge->fRight) {
+ SkTSwap<SkScalar>(horizontalEdge->fLeft, horizontalEdge->fRight);
+ }
+ if (complete()) {
+ startEdge();
+ }
+ continue;
+ }
+ if (fWinding + winding == 0) {
+ // FIXME: if prior verb or this verb is a horizontal line, reverse
+ // it instead of starting a new edge
+ SkASSERT(fCurrentEdge);
+ if (complete()) {
+ startEdge();
+ }
+ }
+ fWinding = winding;
+ addEdge();
+ }
+ if (!complete()) {
+ if (fCurrentEdge) {
+ fEdges.pop_back();
+ }
+ }
+}
+
+private:
+ const SkPath& fPath;
+ InEdge* fCurrentEdge;
+ SkTArray<InEdge>& fEdges;
+ SkTDArray<HorizontalEdge>& fHorizontalEdges;
+ SkPoint fPts[4];
+ SkPath::Verb fVerb;
+ int fPtCount;
+ int fPtOffset;
+ int8_t fWinding;
+ bool fIgnoreHorizontal;
+ bool fContainsCurves;
+};
+
+struct WorkEdge {
+ SkScalar bottom() const {
+ return fPts[verb()].fY;
+ }
+
+ void init(const InEdge* edge) {
+ fEdge = edge;
+ fPts = edge->fPts.begin();
+ fVerb = edge->fVerbs.begin();
+ }
+
+ bool advance() {
+ SkASSERT(fVerb < fEdge->fVerbs.end());
+ fPts += *fVerb++;
+ return fVerb != fEdge->fVerbs.end();
+ }
+
+ const SkPoint* lastPoints() const {
+ SkASSERT(fPts >= fEdge->fPts.begin() + lastVerb());
+ return &fPts[-lastVerb()];
+ }
+
+ SkPath::Verb lastVerb() const {
+ SkASSERT(fVerb > fEdge->fVerbs.begin());
+ return (SkPath::Verb) fVerb[-1];
+ }
+
+ const SkPoint* points() const {
+ return fPts;
+ }
+
+ SkPath::Verb verb() const {
+ return (SkPath::Verb) *fVerb;
+ }
+
+ ptrdiff_t verbIndex() const {
+ return fVerb - fEdge->fVerbs.begin();
+ }
+
+ int winding() const {
+ return fEdge->fWinding;
+ }
+
+ const InEdge* fEdge;
+ const SkPoint* fPts;
+ const uint8_t* fVerb;
+};
+
+// always constructed with SkTDArray because new edges are inserted
+// this may be a inappropriate optimization, suggesting that a separate array of
+// ActiveEdge* may be faster to insert and search
+
+// OPTIMIZATION: Brian suggests that global sorting should be unnecessary, since
+// as active edges are introduced, only local sorting should be required
+class ActiveEdge {
+public:
+ // this logic must be kept in sync with tooCloseToCall
+ // callers expect this to only read fAbove, fTangent
+ bool operator<(const ActiveEdge& rh) const {
+ if (fVerb == rh.fVerb) {
+ // FIXME: don't know what to do if verb is quad, cubic
+ return abCompare(fAbove, fBelow, rh.fAbove, rh.fBelow);
+ }
+ // figure out which is quad, line
+ // if cached data says line did not intersect quad, use top/bottom
+ if (fVerb != SkPath::kLine_Verb ? noIntersect(rh) : rh.noIntersect(*this)) {
+ return abCompare(fAbove, fBelow, rh.fAbove, rh.fBelow);
+ }
+ // use whichever of top/tangent tangent/bottom overlaps more
+ // with line top/bot
+ // assumes quad/cubic can already be upconverted to cubic/cubic
+ const SkPoint* line[2];
+ const SkPoint* curve[4];
+ if (fVerb != SkPath::kLine_Verb) {
+ line[0] = &rh.fAbove;
+ line[1] = &rh.fBelow;
+ curve[0] = &fAbove;
+ curve[1] = &fTangent;
+ curve[2] = &fBelow;
+ } else {
+ line[0] = &fAbove;
+ line[1] = &fBelow;
+ curve[0] = &rh.fAbove;
+ curve[1] = &rh.fTangent;
+ curve[2] = &rh.fBelow;
+ }
+ // FIXME: code has been abandoned, incomplete....
+ return false;
+ }
+
+ bool abCompare(const SkPoint& a1, const SkPoint& a2, const SkPoint& b1,
+ const SkPoint& b2) const {
+ double topD = a1.fX - b1.fX;
+ if (b1.fY < a1.fY) {
+ topD = (b2.fY - b1.fY) * topD - (a1.fY - b1.fY) * (b2.fX - b1.fX);
+ } else if (b1.fY > a1.fY) {
+ topD = (a2.fY - a1.fY) * topD + (b1.fY - a1.fY) * (a2.fX - a1.fX);
+ }
+ double botD = a2.fX - b2.fX;
+ if (b2.fY > a2.fY) {
+ botD = (b2.fY - b1.fY) * botD - (a2.fY - b2.fY) * (b2.fX - b1.fX);
+ } else if (b2.fY < a2.fY) {
+ botD = (a2.fY - a1.fY) * botD + (b2.fY - a2.fY) * (a2.fX - a1.fX);
+ }
+ // return sign of greater absolute value
+ return (fabs(topD) > fabs(botD) ? topD : botD) < 0;
+ }
+
+ // If a pair of edges are nearly coincident for some span, add a T in the
+ // edge so it can be shortened to match the other edge. Note that another
+ // approach is to trim the edge after it is added to the OutBuilder list --
+ // FIXME: since this has no effect if the edge is already done (i.e.,
+ // fYBottom >= y) maybe this can only be done by calling trimLine later.
+ void addTatYBelow(SkScalar y) {
+ if (fBelow.fY <= y || fYBottom >= y) {
+ return;
+ }
+ addTatYInner(y);
+ fFixBelow = true;
+ }
+
+ void addTatYAbove(SkScalar y) {
+ if (fBelow.fY <= y) {
+ return;
+ }
+ addTatYInner(y);
+ }
+
+ void addTatYInner(SkScalar y) {
+ if (fWorkEdge.fPts[0].fY > y) {
+ backup(y);
+ }
+ SkScalar left = fWorkEdge.fPts[0].fX;
+ SkScalar right = fWorkEdge.fPts[1].fX;
+ if (left > right) {
+ SkTSwap(left, right);
+ }
+ double ts[2];
+ SkASSERT(fWorkEdge.fVerb[0] == SkPath::kLine_Verb);
+ int pts = LineIntersect(fWorkEdge.fPts, left, right, y, ts);
+ SkASSERT(pts == 1);
+ // An ActiveEdge or WorkEdge has no need to modify the T values computed
+ // in the InEdge, except in the following case. If a pair of edges are
+ // nearly coincident, this may not be detected when the edges are
+ // intersected. Later, when sorted, and this near-coincidence is found,
+ // an additional t value must be added, requiring the cast below.
+ InEdge* writable = const_cast<InEdge*>(fWorkEdge.fEdge);
+ int insertedAt = writable->add(ts, pts, fWorkEdge.verbIndex());
+ #if DEBUG_ADJUST_COINCIDENT
+ SkDebugf("%s edge=%d y=%1.9g t=%1.9g\n", __FUNCTION__, ID(), y, ts[0]);
+ #endif
+ if (insertedAt >= 0) {
+ if (insertedAt + 1 < fTIndex) {
+ SkASSERT(insertedAt + 2 == fTIndex);
+ --fTIndex;
+ }
+ }
+ }
+
+ bool advanceT() {
+ SkASSERT(fTIndex <= fTs->count() - fExplicitTs);
+ return ++fTIndex <= fTs->count() - fExplicitTs;
+ }
+
+ bool advance() {
+ // FIXME: flip sense of next
+ bool result = fWorkEdge.advance();
+ fDone = !result;
+ initT();
+ return result;
+ }
+
+ void backup(SkScalar y) {
+ do {
+ SkASSERT(fWorkEdge.fEdge->fVerbs.begin() < fWorkEdge.fVerb);
+ fWorkEdge.fPts -= *--fWorkEdge.fVerb;
+ SkASSERT(fWorkEdge.fEdge->fPts.begin() <= fWorkEdge.fPts);
+ } while (fWorkEdge.fPts[0].fY >= y);
+ initT();
+ SkASSERT(!fExplicitTs);
+ fTIndex = fTs->count() + 1;
+ }
+
+ void calcAboveBelow(double tAbove, double tBelow) {
+ fVerb = fWorkEdge.verb();
+ switch (fVerb) {
+ case SkPath::kLine_Verb:
+ LineXYAtT(fWorkEdge.fPts, tAbove, &fAbove);
+ LineXYAtT(fWorkEdge.fPts, tBelow, &fTangent);
+ fBelow = fTangent;
+ break;
+ case SkPath::kQuad_Verb:
+ // FIXME: put array in struct to avoid copy?
+ SkPoint quad[3];
+ QuadSubDivide(fWorkEdge.fPts, tAbove, tBelow, quad);
+ fAbove = quad[0];
+ fTangent = quad[0] != quad[1] ? quad[1] : quad[2];
+ fBelow = quad[2];
+ break;
+ case SkPath::kCubic_Verb:
+ SkPoint cubic[3];
+ CubicSubDivide(fWorkEdge.fPts, tAbove, tBelow, cubic);
+ fAbove = cubic[0];
+ // FIXME: can't see how quad logic for how tangent is used
+ // extends to cubic
+ fTangent = cubic[0] != cubic[1] ? cubic[1]
+ : cubic[0] != cubic[2] ? cubic[2] : cubic[3];
+ fBelow = cubic[3];
+ break;
+ default:
+ SkASSERT(0);
+ }
+ }
+
+ void calcLeft(SkScalar y) {
+ // OPTIMIZE: put a kDone_Verb at the end of the verb list?
+ if (fDone || fBelow.fY > y) {
+ return; // nothing to do; use last
+ }
+ calcLeft();
+ if (fAbove.fY == fBelow.fY) {
+ SkDebugf("%s edge=%d fAbove.fY != fBelow.fY %1.9g\n", __FUNCTION__,
+ ID(), fAbove.fY);
+ }
+ }
+
+ void calcLeft() {
+ int add = (fTIndex <= fTs->count() - fExplicitTs) - 1;
+ double tAbove = t(fTIndex + add);
+ double tBelow = t(fTIndex - ~add);
+ // OPTIMIZATION: if fAbove, fBelow have already been computed
+ // for the fTIndex, don't do it again
+ calcAboveBelow(tAbove, tBelow);
+ // For identical x, this lets us know which edge is first.
+ // If both edges have T values < 1, check x at next T (fBelow).
+ SkASSERT(tAbove != tBelow);
+ // FIXME: this can loop forever
+ // need a break if we hit the end
+ // FIXME: in unit test, figure out how explicit Ts work as well
+ while (fAbove.fY == fBelow.fY) {
+ if (add < 0 || fTIndex == fTs->count()) {
+ add -= 1;
+ SkASSERT(fTIndex + add >= 0);
+ tAbove = t(fTIndex + add);
+ } else {
+ add += 1;
+ SkASSERT(fTIndex - ~add <= fTs->count() + 1);
+ tBelow = t(fTIndex - ~add);
+ }
+ calcAboveBelow(tAbove, tBelow);
+ }
+ fTAbove = tAbove;
+ fTBelow = tBelow;
+ }
+
+ bool done(SkScalar bottom) const {
+ return fDone || fYBottom >= bottom;
+ }
+
+ void fixBelow() {
+ if (fFixBelow) {
+ fTBelow = nextT();
+ calcAboveBelow(fTAbove, fTBelow);
+ fFixBelow = false;
+ }
+ }
+
+ void init(const InEdge* edge) {
+ fWorkEdge.init(edge);
+ fDone = false;
+ initT();
+ fBelow.fY = SK_ScalarMin;
+ fYBottom = SK_ScalarMin;
+ }
+
+ void initT() {
+ const Intercepts& intercepts = fWorkEdge.fEdge->fIntercepts.front();
+ SkASSERT(fWorkEdge.verbIndex() <= fWorkEdge.fEdge->fIntercepts.count());
+ const Intercepts* interceptPtr = &intercepts + fWorkEdge.verbIndex();
+ fTs = &interceptPtr->fTs;
+ fExplicitTs = interceptPtr->fExplicit;
+ // the above is conceptually the same as
+ // fTs = &fWorkEdge.fEdge->fIntercepts[fWorkEdge.verbIndex()].fTs;
+ // but templated arrays don't allow returning a pointer to the end() element
+ fTIndex = 0;
+ if (!fDone) {
+ fVerb = fWorkEdge.verb();
+ }
+ SkASSERT(fVerb > SkPath::kMove_Verb);
+ }
+
+ // OPTIMIZATION: record if two edges are coincident when the are intersected
+ // It's unclear how to do this -- seems more complicated than recording the
+ // t values, since the same t values could exist intersecting non-coincident
+ // edges.
+ bool isCoincidentWith(const ActiveEdge* edge) const {
+ if (fAbove != edge->fAbove || fBelow != edge->fBelow) {
+ return false;
+ }
+ if (fVerb != edge->fVerb) {
+ return false;
+ }
+ switch (fVerb) {
+ case SkPath::kLine_Verb:
+ return true;
+ default:
+ // FIXME: add support for quads, cubics
+ SkASSERT(0);
+ return false;
+ }
+ return false;
+ }
+
+ bool isUnordered(const ActiveEdge* edge) const {
+ return fAbove == edge->fAbove && fBelow == edge->fBelow;
+ }
+
+// SkPath::Verb lastVerb() const {
+// return fDone ? fWorkEdge.lastVerb() : fWorkEdge.verb();
+// }
+
+ const SkPoint* lastPoints() const {
+ return fDone ? fWorkEdge.lastPoints() : fWorkEdge.points();
+ }
+
+ bool noIntersect(const ActiveEdge& ) const {
+ // incomplete
+ return false;
+ }
+
+ // The shortest close call edge should be moved into a position where
+ // it contributes if the winding is transitioning to or from zero.
+ bool swapClose(const ActiveEdge* next, int prev, int wind, int mask) const {
+#if DEBUG_ADJUST_COINCIDENT
+ SkDebugf("%s edge=%d (%g) next=%d (%g) prev=%d wind=%d nextWind=%d\n",
+ __FUNCTION__, ID(), fBelow.fY, next->ID(), next->fBelow.fY,
+ prev, wind, wind + next->fWorkEdge.winding());
+#endif
+ if ((prev & mask) == 0 || (wind & mask) == 0) {
+ return next->fBelow.fY < fBelow.fY;
+ }
+ int nextWinding = wind + next->fWorkEdge.winding();
+ if ((nextWinding & mask) == 0) {
+ return fBelow.fY < next->fBelow.fY;
+ }
+ return false;
+ }
+
+ bool swapCoincident(const ActiveEdge* edge, SkScalar bottom) const {
+ if (fBelow.fY >= bottom || fDone || edge->fDone) {
+ return false;
+ }
+ ActiveEdge thisWork = *this;
+ ActiveEdge edgeWork = *edge;
+ while ((thisWork.advanceT() || thisWork.advance())
+ && (edgeWork.advanceT() || edgeWork.advance())) {
+ thisWork.calcLeft();
+ edgeWork.calcLeft();
+ if (thisWork < edgeWork) {
+ return false;
+ }
+ if (edgeWork < thisWork) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ bool swapUnordered(const ActiveEdge* edge, SkScalar /* bottom */) const {
+ SkASSERT(fVerb != SkPath::kLine_Verb
+ || edge->fVerb != SkPath::kLine_Verb);
+ if (fDone || edge->fDone) {
+ return false;
+ }
+ ActiveEdge thisWork, edgeWork;
+ extractAboveBelow(thisWork);
+ edge->extractAboveBelow(edgeWork);
+ return edgeWork < thisWork;
+ }
+
+ bool tooCloseToCall(const ActiveEdge* edge) const {
+ int ulps;
+ double t1, t2, b1, b2;
+ // This logic must be kept in sync with operator <
+ if (edge->fAbove.fY < fAbove.fY) {
+ t1 = (edge->fTangent.fY - edge->fAbove.fY) * (fAbove.fX - edge->fAbove.fX);
+ t2 = (fAbove.fY - edge->fAbove.fY) * (edge->fTangent.fX - edge->fAbove.fX);
+ } else if (edge->fAbove.fY > fAbove.fY) {
+ t1 = (fTangent.fY - fAbove.fY) * (fAbove.fX - edge->fAbove.fX);
+ t2 = (fAbove.fY - edge->fAbove.fY) * (fTangent.fX - fAbove.fX);
+ } else {
+ t1 = fAbove.fX;
+ t2 = edge->fAbove.fX;
+ }
+ if (edge->fTangent.fY > fTangent.fY) {
+ b1 = (edge->fTangent.fY - edge->fAbove.fY) * (fTangent.fX - edge->fTangent.fX);
+ b2 = (fTangent.fY - edge->fTangent.fY) * (edge->fTangent.fX - edge->fAbove.fX);
+ } else if (edge->fTangent.fY < fTangent.fY) {
+ b1 = (fTangent.fY - fAbove.fY) * (fTangent.fX - edge->fTangent.fX);
+ b2 = (fTangent.fY - edge->fTangent.fY) * (fTangent.fX - fAbove.fX);
+ } else {
+ b1 = fTangent.fX;
+ b2 = edge->fTangent.fX;
+ }
+ if (fabs(t1 - t2) > fabs(b1 - b2)) {
+ ulps = UlpsDiff((float) t1, (float) t2);
+ } else {
+ ulps = UlpsDiff((float) b1, (float) b2);
+ }
+#if DEBUG_ADJUST_COINCIDENT
+ SkDebugf("%s this=%d edge=%d ulps=%d\n", __FUNCTION__, ID(), edge->ID(),
+ ulps);
+#endif
+ if (ulps < 0 || ulps > 32) {
+ return false;
+ }
+ if (fVerb == SkPath::kLine_Verb && edge->fVerb == SkPath::kLine_Verb) {
+ return true;
+ }
+ if (fVerb != SkPath::kLine_Verb && edge->fVerb != SkPath::kLine_Verb) {
+ return false;
+ }
+
+ double ts[2];
+ bool isLine = true;
+ bool curveQuad = true;
+ if (fVerb == SkPath::kCubic_Verb) {
+ ts[0] = (fTAbove * 2 + fTBelow) / 3;
+ ts[1] = (fTAbove + fTBelow * 2) / 3;
+ curveQuad = isLine = false;
+ } else if (edge->fVerb == SkPath::kCubic_Verb) {
+ ts[0] = (edge->fTAbove * 2 + edge->fTBelow) / 3;
+ ts[1] = (edge->fTAbove + edge->fTBelow * 2) / 3;
+ curveQuad = false;
+ } else if (fVerb == SkPath::kQuad_Verb) {
+ ts[0] = fTAbove;
+ ts[1] = (fTAbove + fTBelow) / 2;
+ isLine = false;
+ } else {
+ SkASSERT(edge->fVerb == SkPath::kQuad_Verb);
+ ts[0] = edge->fTAbove;
+ ts[1] = (edge->fTAbove + edge->fTBelow) / 2;
+ }
+ const SkPoint* curvePts = isLine ? edge->lastPoints() : lastPoints();
+ const ActiveEdge* lineEdge = isLine ? this : edge;
+ SkPoint curveSample[2];
+ for (int index = 0; index < 2; ++index) {
+ if (curveQuad) {
+ QuadXYAtT(curvePts, ts[index], &curveSample[index]);
+ } else {
+ CubicXYAtT(curvePts, ts[index], &curveSample[index]);
+ }
+ }
+ return IsCoincident(curveSample, lineEdge->fAbove, lineEdge->fBelow);
+ }
+
+ double nextT() const {
+ SkASSERT(fTIndex <= fTs->count() - fExplicitTs);
+ return t(fTIndex + 1);
+ }
+
+ double t() const {
+ return t(fTIndex);
+ }
+
+ double t(int tIndex) const {
+ if (fExplicitTs) {
+ SkASSERT(tIndex < fTs->count());
+ return (*fTs)[tIndex];
+ }
+ if (tIndex == 0) {
+ return 0;
+ }
+ if (tIndex > fTs->count()) {
+ return 1;
+ }
+ return (*fTs)[tIndex - 1];
+ }
+
+ // FIXME: debugging only
+ int ID() const {
+ return fWorkEdge.fEdge->fID;
+ }
+
+private:
+ // utility used only by swapUnordered
+ void extractAboveBelow(ActiveEdge& extracted) const {
+ SkPoint curve[4];
+ switch (fVerb) {
+ case SkPath::kLine_Verb:
+ extracted.fAbove = fAbove;
+ extracted.fTangent = fTangent;
+ return;
+ case SkPath::kQuad_Verb:
+ QuadSubDivide(lastPoints(), fTAbove, fTBelow, curve);
+ break;
+ case SkPath::kCubic_Verb:
+ CubicSubDivide(lastPoints(), fTAbove, fTBelow, curve);
+ break;
+ default:
+ SkASSERT(0);
+ }
+ extracted.fAbove = curve[0];
+ extracted.fTangent = curve[1];
+ }
+
+public:
+ WorkEdge fWorkEdge;
+ const SkTDArray<double>* fTs;
+ SkPoint fAbove;
+ SkPoint fTangent;
+ SkPoint fBelow;
+ double fTAbove; // OPTIMIZATION: only required if edge has quads or cubics
+ double fTBelow;
+ SkScalar fYBottom;
+ int fCoincident;
+ int fTIndex;
+ SkPath::Verb fVerb;
+ bool fSkip; // OPTIMIZATION: use bitfields?
+ bool fCloseCall;
+ bool fDone;
+ bool fFixBelow;
+ bool fExplicitTs;
+};
+
+static void addToActive(SkTDArray<ActiveEdge>& activeEdges, const InEdge* edge) {
+ size_t count = activeEdges.count();
+ for (size_t index = 0; index < count; ++index) {
+ if (edge == activeEdges[index].fWorkEdge.fEdge) {
+ return;
+ }
+ }
+ ActiveEdge* active = activeEdges.append();
+ active->init(edge);
+}
+
+// Find any intersections in the range of active edges. A pair of edges, on
+// either side of another edge, may change the winding contribution for part of
+// the edge.
+// Keep horizontal edges just for
+// the purpose of computing when edges change their winding contribution, since
+// this is essentially computing the horizontal intersection.
+static void addBottomT(InEdge** currentPtr, InEdge** lastPtr,
+ HorizontalEdge** horizontal) {
+ InEdge** testPtr = currentPtr - 1;
+ HorizontalEdge* horzEdge = *horizontal;
+ SkScalar left = horzEdge->fLeft;
+ SkScalar bottom = horzEdge->fY;
+ while (++testPtr != lastPtr) {
+ InEdge* test = *testPtr;
+ if (test->fBounds.fBottom <= bottom || test->fBounds.fRight <= left) {
+ continue;
+ }
+ WorkEdge wt;
+ wt.init(test);
+ do {
+ HorizontalEdge** sorted = horizontal;
+ horzEdge = *sorted;
+ do {
+ double wtTs[4];
+ int pts;
+ uint8_t verb = wt.verb();
+ switch (verb) {
+ case SkPath::kLine_Verb:
+ pts = LineIntersect(wt.fPts, horzEdge->fLeft,
+ horzEdge->fRight, horzEdge->fY, wtTs);
+ break;
+ case SkPath::kQuad_Verb:
+ pts = QuadIntersect(wt.fPts, horzEdge->fLeft,
+ horzEdge->fRight, horzEdge->fY, wtTs);
+ break;
+ case SkPath::kCubic_Verb:
+ pts = CubicIntersect(wt.fPts, horzEdge->fLeft,
+ horzEdge->fRight, horzEdge->fY, wtTs);
+ break;
+ }
+ if (pts) {
+#if DEBUG_ADD_BOTTOM_TS
+ for (int x = 0; x < pts; ++x) {
+ SkDebugf("%s y=%g wtTs[0]=%g (%g,%g", __FUNCTION__,
+ horzEdge->fY, wtTs[x], wt.fPts[0].fX, wt.fPts[0].fY);
+ for (int y = 0; y < verb; ++y) {
+ SkDebugf(" %g,%g", wt.fPts[y + 1].fX, wt.fPts[y + 1].fY));
+ }
+ SkDebugf(")\n");
+ }
+ if (pts > verb) {
+ SkASSERT(0); // FIXME ? should this work?
+ SkDebugf("%s wtTs[1]=%g\n", __FUNCTION__, wtTs[1]);
+ }
+#endif
+ test->add(wtTs, pts, wt.verbIndex());
+ }
+ horzEdge = *++sorted;
+ } while (horzEdge->fY == bottom
+ && horzEdge->fLeft <= test->fBounds.fRight);
+ } while (wt.advance());
+ }
+}
+
+#if DEBUG_ADD_INTERSECTING_TS
+static void debugShowLineIntersection(int pts, const WorkEdge& wt,
+ const WorkEdge& wn, const double wtTs[2], const double wnTs[2]) {
+ if (!pts) {
+ return;
+ }
+ SkPoint wtOutPt, wnOutPt;
+ LineXYAtT(wt.fPts, wtTs[0], &wtOutPt);
+ LineXYAtT(wn.fPts, wnTs[0], &wnOutPt);
+ SkDebugf("%s wtTs[0]=%g (%g,%g, %g,%g) (%g,%g)\n",
+ __FUNCTION__,
+ wtTs[0], wt.fPts[0].fX, wt.fPts[0].fY,
+ wt.fPts[1].fX, wt.fPts[1].fY, wtOutPt.fX, wtOutPt.fY);
+ if (pts == 2) {
+ SkDebugf("%s wtTs[1]=%g\n", __FUNCTION__, wtTs[1]);
+ }
+ SkDebugf("%s wnTs[0]=%g (%g,%g, %g,%g) (%g,%g)\n",
+ __FUNCTION__,
+ wnTs[0], wn.fPts[0].fX, wn.fPts[0].fY,
+ wn.fPts[1].fX, wn.fPts[1].fY, wnOutPt.fX, wnOutPt.fY);
+ if (pts == 2) {
+ SkDebugf("%s wnTs[1]=%g\n", __FUNCTION__, wnTs[1]);
+ }
+}
+#else
+static void debugShowLineIntersection(int , const WorkEdge& ,
+ const WorkEdge& , const double [2], const double [2]) {
+}
+#endif
+
+static void addIntersectingTs(InEdge** currentPtr, InEdge** lastPtr) {
+ InEdge** testPtr = currentPtr - 1;
+ // FIXME: lastPtr should be past the point of interest, so
+ // test below should be lastPtr - 2
+ // that breaks testSimplifyTriangle22, so further investigation is needed
+ while (++testPtr != lastPtr - 1) {
+ InEdge* test = *testPtr;
+ InEdge** nextPtr = testPtr;
+ do {
+ InEdge* next = *++nextPtr;
+ // FIXME: this compares against the sentinel sometimes
+ // OPTIMIZATION: this may never be needed since this gets called
+ // in two passes now. Verify that double hits are appropriate.
+ if (test->cached(next)) {
+ continue;
+ }
+ if (!Bounds::Intersects(test->fBounds, next->fBounds)) {
+ continue;
+ }
+ WorkEdge wt, wn;
+ wt.init(test);
+ wn.init(next);
+ do {
+ int pts;
+ Intersections ts;
+ bool swap = false;
+ switch (wt.verb()) {
+ case SkPath::kLine_Verb:
+ switch (wn.verb()) {
+ case SkPath::kLine_Verb: {
+ pts = LineIntersect(wt.fPts, wn.fPts, ts);
+ debugShowLineIntersection(pts, wt, wn,
+ ts.fT[0], ts.fT[1]);
+ break;
+ }
+ case SkPath::kQuad_Verb: {
+ swap = true;
+ pts = QuadLineIntersect(wn.fPts, wt.fPts, ts);
+ break;
+ }
+ case SkPath::kCubic_Verb: {
+ swap = true;
+ pts = CubicLineIntersect(wn.fPts, wt.fPts, ts);
+ break;
+ }
+ default:
+ SkASSERT(0);
+ }
+ break;
+ case SkPath::kQuad_Verb:
+ switch (wn.verb()) {
+ case SkPath::kLine_Verb: {
+ pts = QuadLineIntersect(wt.fPts, wn.fPts, ts);
+ break;
+ }
+ case SkPath::kQuad_Verb: {
+ pts = QuadIntersect(wt.fPts, wn.fPts, ts);
+ break;
+ }
+ case SkPath::kCubic_Verb: {
+ // FIXME: promote quad to cubic
+ pts = CubicIntersect(wt.fPts, wn.fPts, ts);
+ break;
+ }
+ default:
+ SkASSERT(0);
+ }
+ break;
+ case SkPath::kCubic_Verb:
+ switch (wn.verb()) {
+ case SkPath::kLine_Verb: {
+ pts = CubicLineIntersect(wt.fPts, wn.fPts, ts);
+ break;
+ }
+ case SkPath::kQuad_Verb: {
+ // FIXME: promote quad to cubic
+ pts = CubicIntersect(wt.fPts, wn.fPts, ts);
+ break;
+ }
+ case SkPath::kCubic_Verb: {
+ pts = CubicIntersect(wt.fPts, wn.fPts, ts);
+ break;
+ }
+ default:
+ SkASSERT(0);
+ }
+ break;
+ default:
+ SkASSERT(0);
+ }
+ test->add(ts.fT[swap], pts, wt.verbIndex());
+ next->add(ts.fT[!swap], pts, wn.verbIndex());
+ } while (wt.bottom() <= wn.bottom() ? wt.advance() : wn.advance());
+ } while (nextPtr != lastPtr);
+ }
+}
+
+static InEdge** advanceEdges(SkTDArray<ActiveEdge>* activeEdges,
+ InEdge** currentPtr, InEdge** lastPtr, SkScalar y) {
+ InEdge** testPtr = currentPtr - 1;
+ while (++testPtr != lastPtr) {
+ if ((*testPtr)->fBounds.fBottom > y) {
+ continue;
+ }
+ if (activeEdges) {
+ InEdge* test = *testPtr;
+ ActiveEdge* activePtr = activeEdges->begin() - 1;
+ ActiveEdge* lastActive = activeEdges->end();
+ while (++activePtr != lastActive) {
+ if (activePtr->fWorkEdge.fEdge == test) {
+ activeEdges->remove(activePtr - activeEdges->begin());
+ break;
+ }
+ }
+ }
+ if (testPtr == currentPtr) {
+ ++currentPtr;
+ }
+ }
+ return currentPtr;
+}
+
+// OPTIMIZE: inline?
+static HorizontalEdge** advanceHorizontal(HorizontalEdge** edge, SkScalar y) {
+ while ((*edge)->fY < y) {
+ ++edge;
+ }
+ return edge;
+}
+
+// compute bottom taking into account any intersected edges
+static SkScalar computeInterceptBottom(SkTDArray<ActiveEdge>& activeEdges,
+ SkScalar y, SkScalar bottom) {
+ ActiveEdge* activePtr = activeEdges.begin() - 1;
+ ActiveEdge* lastActive = activeEdges.end();
+ while (++activePtr != lastActive) {
+ const InEdge* test = activePtr->fWorkEdge.fEdge;
+ if (!test->fContainsIntercepts) {
+ continue;
+ }
+ WorkEdge wt;
+ wt.init(test);
+ do {
+ const Intercepts& intercepts = test->fIntercepts[wt.verbIndex()];
+ if (intercepts.fTopIntercepts > 1) {
+ SkScalar yTop = wt.fPts[0].fY;
+ if (yTop > y && bottom > yTop) {
+ bottom = yTop;
+ }
+ }
+ if (intercepts.fBottomIntercepts > 1) {
+ SkScalar yBottom = wt.fPts[wt.verb()].fY;
+ if (yBottom > y && bottom > yBottom) {
+ bottom = yBottom;
+ }
+ }
+ const SkTDArray<double>& fTs = intercepts.fTs;
+ size_t count = fTs.count();
+ for (size_t index = 0; index < count; ++index) {
+ SkScalar yIntercept;
+ switch (wt.verb()) {
+ case SkPath::kLine_Verb: {
+ yIntercept = LineYAtT(wt.fPts, fTs[index]);
+ break;
+ }
+ case SkPath::kQuad_Verb: {
+ yIntercept = QuadYAtT(wt.fPts, fTs[index]);
+ break;
+ }
+ case SkPath::kCubic_Verb: {
+ yIntercept = CubicYAtT(wt.fPts, fTs[index]);
+ break;
+ }
+ default:
+ SkASSERT(0); // should never get here
+ }
+ if (yIntercept > y && bottom > yIntercept) {
+ bottom = yIntercept;
+ }
+ }
+ } while (wt.advance());
+ }
+#if DEBUG_BOTTOM
+ SkDebugf("%s bottom=%1.9g\n", __FUNCTION__, bottom);
+#endif
+ return bottom;
+}
+
+static SkScalar findBottom(InEdge** currentPtr,
+ InEdge** edgeListEnd, SkTDArray<ActiveEdge>* activeEdges, SkScalar y,
+ bool /*asFill*/, InEdge**& testPtr) {
+ InEdge* current = *currentPtr;
+ SkScalar bottom = current->fBounds.fBottom;
+
+ // find the list of edges that cross y
+ InEdge* test = *testPtr;
+ while (testPtr != edgeListEnd) {
+ SkScalar testTop = test->fBounds.fTop;
+ if (bottom <= testTop) {
+ break;
+ }
+ SkScalar testBottom = test->fBounds.fBottom;
+ // OPTIMIZATION: Shortening the bottom is only interesting when filling
+ // and when the edge is to the left of a longer edge. If it's a framing
+ // edge, or part of the right, it won't effect the longer edges.
+ if (testTop > y) {
+ bottom = testTop;
+ break;
+ }
+ if (y < testBottom) {
+ if (bottom > testBottom) {
+ bottom = testBottom;
+ }
+ if (activeEdges) {
+ addToActive(*activeEdges, test);
+ }
+ }
+ test = *++testPtr;
+ }
+#if DEBUG_BOTTOM
+ SkDebugf("%s %d bottom=%1.9g\n", __FUNCTION__, activeEdges ? 2 : 1, bottom);
+#endif
+ return bottom;
+}
+
+static void makeEdgeList(SkTArray<InEdge>& edges, InEdge& edgeSentinel,
+ SkTDArray<InEdge*>& edgeList) {
+ size_t edgeCount = edges.count();
+ if (edgeCount == 0) {
+ return;
+ }
+ int id = 0;
+ for (size_t index = 0; index < edgeCount; ++index) {
+ InEdge& edge = edges[index];
+ if (!edge.fWinding) {
+ continue;
+ }
+ edge.fID = ++id;
+ *edgeList.append() = &edge;
+ }
+ *edgeList.append() = &edgeSentinel;
+ QSort<InEdge>(edgeList.begin(), edgeList.end() - 1);
+}
+
+static void makeHorizontalList(SkTDArray<HorizontalEdge>& edges,
+ HorizontalEdge& edgeSentinel, SkTDArray<HorizontalEdge*>& edgeList) {
+ size_t edgeCount = edges.count();
+ if (edgeCount == 0) {
+ return;
+ }
+ for (size_t index = 0; index < edgeCount; ++index) {
+ *edgeList.append() = &edges[index];
+ }
+ edgeSentinel.fLeft = edgeSentinel.fRight = edgeSentinel.fY = SK_ScalarMax;
+ *edgeList.append() = &edgeSentinel;
+ QSort<HorizontalEdge>(edgeList.begin(), edgeList.end() - 1);
+}
+
+static void skipCoincidence(int lastWinding, int winding, int windingMask,
+ ActiveEdge* activePtr, ActiveEdge* firstCoincident) {
+ if (((lastWinding & windingMask) == 0) ^ ((winding & windingMask) != 0)) {
+ return;
+ }
+ // FIXME: ? shouldn't this be if (lastWinding & windingMask) ?
+ if (lastWinding) {
+#if DEBUG_ADJUST_COINCIDENT
+ SkDebugf("%s edge=%d 1 set skip=false\n", __FUNCTION__, activePtr->ID());
+#endif
+ activePtr->fSkip = false;
+ } else {
+#if DEBUG_ADJUST_COINCIDENT
+ SkDebugf("%s edge=%d 2 set skip=false\n", __FUNCTION__, firstCoincident->ID());
+#endif
+ firstCoincident->fSkip = false;
+ }
+}
+
+static void sortHorizontal(SkTDArray<ActiveEdge>& activeEdges,
+ SkTDArray<ActiveEdge*>& edgeList, SkScalar y) {
+ size_t edgeCount = activeEdges.count();
+ if (edgeCount == 0) {
+ return;
+ }
+#if DEBUG_SORT_HORIZONTAL
+ const int tab = 3; // FIXME: debugging only
+ SkDebugf("%s y=%1.9g\n", __FUNCTION__, y);
+#endif
+ size_t index;
+ for (index = 0; index < edgeCount; ++index) {
+ ActiveEdge& activeEdge = activeEdges[index];
+ do {
+ activeEdge.calcLeft(y);
+ // skip segments that don't span y
+ if (activeEdge.fAbove != activeEdge.fBelow) {
+ break;
+ }
+ if (activeEdge.fDone) {
+#if DEBUG_SORT_HORIZONTAL
+ SkDebugf("%*s edge=%d done\n", tab, "", activeEdge.ID());
+#endif
+ goto nextEdge;
+ }
+#if DEBUG_SORT_HORIZONTAL
+ SkDebugf("%*s edge=%d above==below\n", tab, "", activeEdge.ID());
+#endif
+ } while (activeEdge.advanceT() || activeEdge.advance());
+#if DEBUG_SORT_HORIZONTAL
+ SkDebugf("%*s edge=%d above=(%1.9g,%1.9g) (%1.9g) below=(%1.9g,%1.9g)"
+ " (%1.9g)\n", tab, "", activeEdge.ID(),
+ activeEdge.fAbove.fX, activeEdge.fAbove.fY, activeEdge.fTAbove,
+ activeEdge.fBelow.fX, activeEdge.fBelow.fY, activeEdge.fTBelow);
+#endif
+ activeEdge.fSkip = activeEdge.fCloseCall = activeEdge.fFixBelow = false;
+ *edgeList.append() = &activeEdge;
+nextEdge:
+ ;
+ }
+ QSort<ActiveEdge>(edgeList.begin(), edgeList.end() - 1);
+}
+
+// remove coincident edges
+// OPTIMIZE: remove edges? This is tricky because the current logic expects
+// the winding count to be maintained while skipping coincident edges. In
+// addition to removing the coincident edges, the remaining edges would need
+// to have a different winding value, possibly different per intercept span.
+static SkScalar adjustCoincident(SkTDArray<ActiveEdge*>& edgeList,
+ int windingMask, SkScalar y, SkScalar bottom, OutEdgeBuilder& outBuilder)
+{
+#if DEBUG_ADJUST_COINCIDENT
+ SkDebugf("%s y=%1.9g bottom=%1.9g\n", __FUNCTION__, y, bottom);
+#endif
+ size_t edgeCount = edgeList.count();
+ if (edgeCount == 0) {
+ return bottom;
+ }
+ ActiveEdge* activePtr, * nextPtr = edgeList[0];
+ size_t index;
+ bool foundCoincident = false;
+ size_t firstIndex = 0;
+ for (index = 1; index < edgeCount; ++index) {
+ activePtr = nextPtr;
+ nextPtr = edgeList[index];
+ if (firstIndex != index - 1 && activePtr->fVerb > SkPath::kLine_Verb
+ && nextPtr->fVerb == SkPath::kLine_Verb
+ && activePtr->isUnordered(nextPtr)) {
+ // swap the line with the curve
+ // back up to the previous edge and retest
+ SkTSwap<ActiveEdge*>(edgeList[index - 1], edgeList[index]);
+ SkASSERT(index > 1);
+ index -= 2;
+ nextPtr = edgeList[index];
+ continue;
+ }
+ bool closeCall = false;
+ activePtr->fCoincident = firstIndex;
+ if (activePtr->isCoincidentWith(nextPtr)
+ || (closeCall = activePtr->tooCloseToCall(nextPtr))) {
+ activePtr->fSkip = nextPtr->fSkip = foundCoincident = true;
+ activePtr->fCloseCall = nextPtr->fCloseCall = closeCall;
+ } else if (activePtr->isUnordered(nextPtr)) {
+ foundCoincident = true;
+ } else {
+ firstIndex = index;
+ }
+ }
+ nextPtr->fCoincident = firstIndex;
+ if (!foundCoincident) {
+ return bottom;
+ }
+ int winding = 0;
+ nextPtr = edgeList[0];
+ for (index = 1; index < edgeCount; ++index) {
+ int priorWinding = winding;
+ winding += activePtr->fWorkEdge.winding();
+ activePtr = nextPtr;
+ nextPtr = edgeList[index];
+ SkASSERT(activePtr == edgeList[index - 1]);
+ SkASSERT(nextPtr == edgeList[index]);
+ if (activePtr->fCoincident != nextPtr->fCoincident) {
+ continue;
+ }
+ // the coincident edges may not have been sorted above -- advance
+ // the edges and resort if needed
+ // OPTIMIZE: if sorting is done incrementally as new edges are added
+ // and not all at once as is done here, fold this test into the
+ // current less than test.
+ while ((!activePtr->fSkip || !nextPtr->fSkip)
+ && activePtr->fCoincident == nextPtr->fCoincident) {
+ if (activePtr->swapUnordered(nextPtr, bottom)) {
+ winding -= activePtr->fWorkEdge.winding();
+ SkASSERT(activePtr == edgeList[index - 1]);
+ SkASSERT(nextPtr == edgeList[index]);
+ SkTSwap<ActiveEdge*>(edgeList[index - 1], edgeList[index]);
+ if (--index == 0) {
+ winding += activePtr->fWorkEdge.winding();
+ break;
+ }
+ // back up one
+ activePtr = edgeList[index - 1];
+ continue;
+ }
+ SkASSERT(activePtr == edgeList[index - 1]);
+ SkASSERT(nextPtr == edgeList[index]);
+ break;
+ }
+ if (activePtr->fSkip && nextPtr->fSkip) {
+ if (activePtr->fCloseCall ? activePtr->swapClose(nextPtr,
+ priorWinding, winding, windingMask)
+ : activePtr->swapCoincident(nextPtr, bottom)) {
+ winding -= activePtr->fWorkEdge.winding();
+ SkASSERT(activePtr == edgeList[index - 1]);
+ SkASSERT(nextPtr == edgeList[index]);
+ SkTSwap<ActiveEdge*>(edgeList[index - 1], edgeList[index]);
+ SkTSwap<ActiveEdge*>(activePtr, nextPtr);
+ winding += activePtr->fWorkEdge.winding();
+ SkASSERT(activePtr == edgeList[index - 1]);
+ SkASSERT(nextPtr == edgeList[index]);
+ }
+ }
+ }
+ int firstCoincidentWinding = 0;
+ ActiveEdge* firstCoincident = NULL;
+ winding = 0;
+ activePtr = edgeList[0];
+ for (index = 1; index < edgeCount; ++index) {
+ int priorWinding = winding;
+ winding += activePtr->fWorkEdge.winding();
+ nextPtr = edgeList[index];
+ if (activePtr->fSkip && nextPtr->fSkip
+ && activePtr->fCoincident == nextPtr->fCoincident) {
+ if (!firstCoincident) {
+ firstCoincident = activePtr;
+ firstCoincidentWinding = priorWinding;
+ }
+ if (activePtr->fCloseCall) {
+ // If one of the edges has already been added to out as a non
+ // coincident edge, trim it back to the top of this span
+ if (outBuilder.trimLine(y, activePtr->ID())) {
+ activePtr->addTatYAbove(y);
+ #if DEBUG_ADJUST_COINCIDENT
+ SkDebugf("%s 1 edge=%d y=%1.9g (was fYBottom=%1.9g)\n",
+ __FUNCTION__, activePtr->ID(), y, activePtr->fYBottom);
+ #endif
+ activePtr->fYBottom = y;
+ }
+ if (outBuilder.trimLine(y, nextPtr->ID())) {
+ nextPtr->addTatYAbove(y);
+ #if DEBUG_ADJUST_COINCIDENT
+ SkDebugf("%s 2 edge=%d y=%1.9g (was fYBottom=%1.9g)\n",
+ __FUNCTION__, nextPtr->ID(), y, nextPtr->fYBottom);
+ #endif
+ nextPtr->fYBottom = y;
+ }
+ // add missing t values so edges can be the same length
+ SkScalar testY = activePtr->fBelow.fY;
+ nextPtr->addTatYBelow(testY);
+ if (bottom > testY && testY > y) {
+ #if DEBUG_ADJUST_COINCIDENT
+ SkDebugf("%s 3 edge=%d bottom=%1.9g (was bottom=%1.9g)\n",
+ __FUNCTION__, activePtr->ID(), testY, bottom);
+ #endif
+ bottom = testY;
+ }
+ testY = nextPtr->fBelow.fY;
+ activePtr->addTatYBelow(testY);
+ if (bottom > testY && testY > y) {
+ #if DEBUG_ADJUST_COINCIDENT
+ SkDebugf("%s 4 edge=%d bottom=%1.9g (was bottom=%1.9g)\n",
+ __FUNCTION__, nextPtr->ID(), testY, bottom);
+ #endif
+ bottom = testY;
+ }
+ }
+ } else if (firstCoincident) {
+ skipCoincidence(firstCoincidentWinding, winding, windingMask,
+ activePtr, firstCoincident);
+ firstCoincident = NULL;
+ }
+ activePtr = nextPtr;
+ }
+ if (firstCoincident) {
+ winding += activePtr->fWorkEdge.winding();
+ skipCoincidence(firstCoincidentWinding, winding, windingMask, activePtr,
+ firstCoincident);
+ }
+ // fix up the bottom for close call edges. OPTIMIZATION: maybe this could
+ // be in the loop above, but moved here since loop above reads fBelow and
+ // it felt unsafe to write it in that loop
+ for (index = 0; index < edgeCount; ++index) {
+ (edgeList[index])->fixBelow();
+ }
+ return bottom;
+}
+
+// stitch edge and t range that satisfies operation
+static void stitchEdge(SkTDArray<ActiveEdge*>& edgeList, SkScalar
+#if DEBUG_STITCH_EDGE
+y
+#endif
+,
+ SkScalar bottom, int windingMask, bool fill, OutEdgeBuilder& outBuilder) {
+ int winding = 0;
+ ActiveEdge** activeHandle = edgeList.begin() - 1;
+ ActiveEdge** lastActive = edgeList.end();
+#if DEBUG_STITCH_EDGE
+ const int tab = 7; // FIXME: debugging only
+ SkDebugf("%s y=%1.9g bottom=%1.9g\n", __FUNCTION__, y, bottom);
+#endif
+ while (++activeHandle != lastActive) {
+ ActiveEdge* activePtr = *activeHandle;
+ const WorkEdge& wt = activePtr->fWorkEdge;
+ int lastWinding = winding;
+ winding += wt.winding();
+#if DEBUG_STITCH_EDGE
+ SkDebugf("%*s edge=%d lastWinding=%d winding=%d skip=%d close=%d"
+ " above=%1.9g below=%1.9g\n",
+ tab-4, "", activePtr->ID(), lastWinding,
+ winding, activePtr->fSkip, activePtr->fCloseCall,
+ activePtr->fTAbove, activePtr->fTBelow);
+#endif
+ if (activePtr->done(bottom)) {
+#if DEBUG_STITCH_EDGE
+ SkDebugf("%*s fDone=%d || fYBottom=%1.9g >= bottom\n", tab, "",
+ activePtr->fDone, activePtr->fYBottom);
+#endif
+ continue;
+ }
+ int opener = (lastWinding & windingMask) == 0;
+ bool closer = (winding & windingMask) == 0;
+ SkASSERT(!opener | !closer);
+ bool inWinding = opener | closer;
+ SkPoint clippedPts[4];
+ const SkPoint* clipped = NULL;
+ bool moreToDo, aboveBottom;
+ do {
+ double currentT = activePtr->t();
+ const SkPoint* points = wt.fPts;
+ double nextT;
+ SkPath::Verb verb = activePtr->fVerb;
+ do {
+ nextT = activePtr->nextT();
+ // FIXME: obtuse: want efficient way to say
+ // !currentT && currentT != 1 || !nextT && nextT != 1
+ if (currentT * nextT != 0 || currentT + nextT != 1) {
+ // OPTIMIZATION: if !inWinding, we only need
+ // clipped[1].fY
+ switch (verb) {
+ case SkPath::kLine_Verb:
+ LineSubDivide(points, currentT, nextT, clippedPts);
+ break;
+ case SkPath::kQuad_Verb:
+ QuadSubDivide(points, currentT, nextT, clippedPts);
+ break;
+ case SkPath::kCubic_Verb:
+ CubicSubDivide(points, currentT, nextT, clippedPts);
+ break;
+ default:
+ SkASSERT(0);
+ break;
+ }
+ clipped = clippedPts;
+ } else {
+ clipped = points;
+ }
+ if (inWinding && !activePtr->fSkip && (fill ? clipped[0].fY
+ != clipped[verb].fY : clipped[0] != clipped[verb])) {
+#if DEBUG_STITCH_EDGE
+ SkDebugf("%*s add%s %1.9g,%1.9g %1.9g,%1.9g edge=%d"
+ " v=%d t=(%1.9g,%1.9g)\n", tab, "",
+ kUVerbStr[verb], clipped[0].fX, clipped[0].fY,
+ clipped[verb].fX, clipped[verb].fY,
+ activePtr->ID(),
+ activePtr->fWorkEdge.fVerb
+ - activePtr->fWorkEdge.fEdge->fVerbs.begin(),
+ currentT, nextT);
+#endif
+ outBuilder.addCurve(clipped, (SkPath::Verb) verb,
+ activePtr->fWorkEdge.fEdge->fID,
+ activePtr->fCloseCall);
+ } else {
+#if DEBUG_STITCH_EDGE
+ SkDebugf("%*s skip%s %1.9g,%1.9g %1.9g,%1.9g"
+ " edge=%d v=%d t=(%1.9g,%1.9g)\n", tab, "",
+ kUVerbStr[verb], clipped[0].fX, clipped[0].fY,
+ clipped[verb].fX, clipped[verb].fY,
+ activePtr->ID(),
+ activePtr->fWorkEdge.fVerb
+ - activePtr->fWorkEdge.fEdge->fVerbs.begin(),
+ currentT, nextT);
+#endif
+ }
+ // by advancing fAbove/fBelow, the next call to sortHorizontal
+ // will use these values if they're still valid instead of
+ // recomputing
+ if (clipped[verb].fY > activePtr->fBelow.fY
+ && bottom >= activePtr->fBelow.fY
+ && verb == SkPath::kLine_Verb) {
+ activePtr->fAbove = activePtr->fBelow;
+ activePtr->fBelow = activePtr->fTangent = clipped[verb];
+ activePtr->fTAbove = activePtr->fTBelow < 1
+ ? activePtr->fTBelow : 0;
+ activePtr->fTBelow = nextT;
+ }
+ currentT = nextT;
+ moreToDo = activePtr->advanceT();
+ activePtr->fYBottom = clipped[verb].fY; // was activePtr->fCloseCall ? bottom :
+
+ // clearing the fSkip/fCloseCall bit here means that trailing edges
+ // fall out of sync, if one edge is long and another is a series of short pieces
+ // if fSkip/fCloseCall is set, need to recompute coincidence/too-close-to-call
+ // after advancing
+ // another approach would be to restrict bottom to smaller part of close call
+ // maybe this is already happening with coincidence when intersection is computed,
+ // and needs to be added to the close call computation as well
+ // this is hard to do because that the bottom is important is not known when
+ // the lines are intersected; only when the computation for edge sorting is done
+ // does the need for new bottoms become apparent.
+ // maybe this is good incentive to scrap the current sort and do an insertion
+ // sort that can take this into consideration when the x value is computed
+
+ // FIXME: initialized in sortHorizontal, cleared here as well so
+ // that next edge is not skipped -- but should skipped edges ever
+ // continue? (probably not)
+ aboveBottom = clipped[verb].fY < bottom;
+ if (clipped[0].fY != clipped[verb].fY) {
+ activePtr->fSkip = false;
+ activePtr->fCloseCall = false;
+ aboveBottom &= !activePtr->fCloseCall;
+ }
+#if DEBUG_STITCH_EDGE
+ else {
+ if (activePtr->fSkip || activePtr->fCloseCall) {
+ SkDebugf("%s skip or close == %1.9g\n", __FUNCTION__,
+ clippedPts[0].fY);
+ }
+ }
+#endif
+ } while (moreToDo & aboveBottom);
+ } while ((moreToDo || activePtr->advance()) & aboveBottom);
+ }
+}
+
+#if DEBUG_DUMP
+static void dumpEdgeList(const SkTDArray<InEdge*>& edgeList,
+ const InEdge& edgeSentinel) {
+ InEdge** debugPtr = edgeList.begin();
+ do {
+ (*debugPtr++)->dump();
+ } while (*debugPtr != &edgeSentinel);
+}
+#else
+static void dumpEdgeList(const SkTDArray<InEdge*>& ,
+ const InEdge& ) {
+}
+#endif
+
+void simplify(const SkPath& path, bool asFill, SkPath& simple) {
+ // returns 1 for evenodd, -1 for winding, regardless of inverse-ness
+ int windingMask = (path.getFillType() & 1) ? 1 : -1;
+ simple.reset();
+ simple.setFillType(SkPath::kEvenOdd_FillType);
+ // turn path into list of edges increasing in y
+ // if an edge is a quad or a cubic with a y extrema, note it, but leave it
+ // unbroken. Once we have a list, sort it, then walk the list (walk edges
+ // twice that have y extrema's on top) and detect crossings -- look for raw
+ // bounds that cross over, then tight bounds that cross
+ SkTArray<InEdge> edges;
+ SkTDArray<HorizontalEdge> horizontalEdges;
+ InEdgeBuilder builder(path, asFill, edges, horizontalEdges);
+ SkTDArray<InEdge*> edgeList;
+ InEdge edgeSentinel;
+ edgeSentinel.reset();
+ makeEdgeList(edges, edgeSentinel, edgeList);
+ SkTDArray<HorizontalEdge*> horizontalList;
+ HorizontalEdge horizontalSentinel;
+ makeHorizontalList(horizontalEdges, horizontalSentinel, horizontalList);
+ InEdge** currentPtr = edgeList.begin();
+ if (!currentPtr) {
+ return;
+ }
+ // find all intersections between edges
+// beyond looking for horizontal intercepts, we need to know if any active edges
+// intersect edges below 'bottom', but above the active edge segment.
+// maybe it makes more sense to compute all intercepts before doing anything
+// else, since the intercept list is long-lived, at least in the current design.
+ SkScalar y = (*currentPtr)->fBounds.fTop;
+ HorizontalEdge** currentHorizontal = horizontalList.begin();
+ do {
+ InEdge** lastPtr = currentPtr; // find the edge below the bottom of the first set
+ SkScalar bottom = findBottom(currentPtr, edgeList.end(),
+ NULL, y, asFill, lastPtr);
+ if (lastPtr > currentPtr) {
+ if (currentHorizontal) {
+ if ((*currentHorizontal)->fY < SK_ScalarMax) {
+ addBottomT(currentPtr, lastPtr, currentHorizontal);
+ }
+ currentHorizontal = advanceHorizontal(currentHorizontal, bottom);
+ }
+ addIntersectingTs(currentPtr, lastPtr);
+ }
+ y = bottom;
+ currentPtr = advanceEdges(NULL, currentPtr, lastPtr, y);
+ } while (*currentPtr != &edgeSentinel);
+ // if a quadratic or cubic now has an intermediate T value, see if the Ts
+ // on either side cause the Y values to monotonically increase. If not, split
+ // the curve at the new T.
+
+ // try an alternate approach which does not split curves or stitch edges
+ // (may still need adjustCoincident, though)
+ // the idea is to output non-intersecting contours, then figure out their
+ // respective winding contribution
+ // each contour will need to know whether it is CW or CCW, and then whether
+ // a ray from that contour hits any a contour that contains it. The ray can
+ // move to the left and then arbitrarily move up or down (as long as it never
+ // moves to the right) to find a reference sibling contour or containing
+ // contour. If the contour is part of an intersection, the companion contour
+ // that is part of the intersection can determine the containership.
+ if (builder.containsCurves()) {
+ currentPtr = edgeList.begin();
+ SkTArray<InEdge> splits;
+ do {
+ (*currentPtr)->splitInflectionPts(splits);
+ } while (*++currentPtr != &edgeSentinel);
+ if (splits.count()) {
+ for (int index = 0; index < splits.count(); ++index) {
+ edges.push_back(splits[index]);
+ }
+ edgeList.reset();
+ makeEdgeList(edges, edgeSentinel, edgeList);
+ }
+ }
+ dumpEdgeList(edgeList, edgeSentinel);
+ // walk the sorted edges from top to bottom, computing accumulated winding
+ SkTDArray<ActiveEdge> activeEdges;
+ OutEdgeBuilder outBuilder(asFill);
+ currentPtr = edgeList.begin();
+ y = (*currentPtr)->fBounds.fTop;
+ do {
+ InEdge** lastPtr = currentPtr; // find the edge below the bottom of the first set
+ SkScalar bottom = findBottom(currentPtr, edgeList.end(),
+ &activeEdges, y, asFill, lastPtr);
+ if (lastPtr > currentPtr) {
+ bottom = computeInterceptBottom(activeEdges, y, bottom);
+ SkTDArray<ActiveEdge*> activeEdgeList;
+ sortHorizontal(activeEdges, activeEdgeList, y);
+ bottom = adjustCoincident(activeEdgeList, windingMask, y, bottom,
+ outBuilder);
+ stitchEdge(activeEdgeList, y, bottom, windingMask, asFill, outBuilder);
+ }
+ y = bottom;
+ // OPTIMIZATION: as edges expire, InEdge allocations could be released
+ currentPtr = advanceEdges(&activeEdges, currentPtr, lastPtr, y);
+ } while (*currentPtr != &edgeSentinel);
+ // assemble output path from string of pts, verbs
+ outBuilder.bridge();
+ outBuilder.assemble(simple);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/EdgeWalkerPolygon4x4_Test.cpp b/chromium/third_party/skia/experimental/Intersection/EdgeWalkerPolygon4x4_Test.cpp
new file mode 100755
index 00000000000..9a5c1d01e3a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/EdgeWalkerPolygon4x4_Test.cpp
@@ -0,0 +1,290 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "EdgeWalker_Test.h"
+#include "Intersection_Tests.h"
+
+static void* testSimplify4x4QuadralateralsMain(void* data)
+{
+ SkASSERT(data);
+ State4& state = *(State4*) data;
+ char pathStr[1024];
+ bzero(pathStr, sizeof(pathStr));
+ do {
+ int ax = state.a & 0x03;
+ int ay = state.a >> 2;
+ int bx = state.b & 0x03;
+ int by = state.b >> 2;
+ int cx = state.c & 0x03;
+ int cy = state.c >> 2;
+ int dx = state.d & 0x03;
+ int dy = state.d >> 2;
+ for (int e = 0 ; e < 16; ++e) {
+ int ex = e & 0x03;
+ int ey = e >> 2;
+ for (int f = e ; f < 16; ++f) {
+ int fx = f & 0x03;
+ int fy = f >> 2;
+ for (int g = f ; g < 16; ++g) {
+ int gx = g & 0x03;
+ int gy = g >> 2;
+ for (int h = g ; h < 16; ++h) {
+ int hx = h & 0x03;
+ int hy = h >> 2;
+ SkPath path, out;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(ax, ay);
+ path.lineTo(bx, by);
+ path.lineTo(cx, cy);
+ path.lineTo(dx, dy);
+ path.close();
+ path.moveTo(ex, ey);
+ path.lineTo(fx, fy);
+ path.lineTo(gx, gy);
+ path.lineTo(hx, hy);
+ path.close();
+ if (1) { // gdb: set print elements 400
+ char* str = pathStr;
+ str += sprintf(str, " path.moveTo(%d, %d);\n", ax, ay);
+ str += sprintf(str, " path.lineTo(%d, %d);\n", bx, by);
+ str += sprintf(str, " path.lineTo(%d, %d);\n", cx, cy);
+ str += sprintf(str, " path.lineTo(%d, %d);\n", dx, dy);
+ str += sprintf(str, " path.close();\n");
+ str += sprintf(str, " path.moveTo(%d, %d);\n", ex, ey);
+ str += sprintf(str, " path.lineTo(%d, %d);\n", fx, fy);
+ str += sprintf(str, " path.lineTo(%d, %d);\n", gx, gy);
+ str += sprintf(str, " path.lineTo(%d, %d);\n", hx, hy);
+ str += sprintf(str, " path.close();\n");
+ }
+ outputProgress(state, pathStr, SkPath::kWinding_FillType);
+ testSimplifyx(path, false, out, state, pathStr);
+ state.testsRun++;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ outputProgress(state, pathStr, SkPath::kEvenOdd_FillType);
+ testSimplifyx(path, true, out, state, pathStr);
+ state.testsRun++;
+ }
+ }
+ }
+ }
+ } while (runNextTestSet(state));
+ return NULL;
+}
+
+void Simplify4x4QuadralateralsThreaded_Test(int& testsRun)
+{
+ SkDebugf("%s\n", __FUNCTION__);
+#ifdef SK_DEBUG
+ gDebugMaxWindSum = 4; // FIXME: 3?
+ gDebugMaxWindValue = 4;
+#endif
+ const char testStr[] = "testQuadralateral";
+ initializeTests(testStr, sizeof(testStr));
+ int testsStart = testsRun;
+ for (int a = 0; a < 16; ++a) {
+ for (int b = a ; b < 16; ++b) {
+ for (int c = b ; c < 16; ++c) {
+ for (int d = c; d < 16; ++d) {
+ testsRun += dispatchTest4(testSimplify4x4QuadralateralsMain,
+ a, b, c, d);
+ }
+ if (!gRunTestsInOneThread) SkDebugf(".");
+ }
+ if (!gRunTestsInOneThread) SkDebugf("%d", b);
+ }
+ if (!gRunTestsInOneThread) SkDebugf("\n%d", a);
+ }
+ testsRun += waitForCompletion();
+ SkDebugf("%s tests=%d total=%d\n", __FUNCTION__, testsRun - testsStart, testsRun);
+}
+
+
+static void* testSimplify4x4NondegeneratesMain(void* data) {
+ SkASSERT(data);
+ State4& state = *(State4*) data;
+ char pathStr[1024];
+ bzero(pathStr, sizeof(pathStr));
+ do {
+ int ax = state.a & 0x03;
+ int ay = state.a >> 2;
+ int bx = state.b & 0x03;
+ int by = state.b >> 2;
+ int cx = state.c & 0x03;
+ int cy = state.c >> 2;
+ for (int d = 0; d < 15; ++d) {
+ int dx = d & 0x03;
+ int dy = d >> 2;
+ for (int e = d + 1; e < 16; ++e) {
+ int ex = e & 0x03;
+ int ey = e >> 2;
+ for (int f = d + 1; f < 16; ++f) {
+ if (e == f) {
+ continue;
+ }
+ int fx = f & 0x03;
+ int fy = f >> 2;
+ if ((ex - dx) * (fy - dy) == (ey - dy) * (fx - dx)) {
+ continue;
+ }
+ SkPath path, out;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(ax, ay);
+ path.lineTo(bx, by);
+ path.lineTo(cx, cy);
+ path.close();
+ path.moveTo(dx, dy);
+ path.lineTo(ex, ey);
+ path.lineTo(fx, fy);
+ path.close();
+ if (1) {
+ char* str = pathStr;
+ str += sprintf(str, " path.moveTo(%d, %d);\n", ax, ay);
+ str += sprintf(str, " path.lineTo(%d, %d);\n", bx, by);
+ str += sprintf(str, " path.lineTo(%d, %d);\n", cx, cy);
+ str += sprintf(str, " path.close();\n");
+ str += sprintf(str, " path.moveTo(%d, %d);\n", dx, dy);
+ str += sprintf(str, " path.lineTo(%d, %d);\n", ex, ey);
+ str += sprintf(str, " path.lineTo(%d, %d);\n", fx, fy);
+ str += sprintf(str, " path.close();\n");
+ }
+ outputProgress(state, pathStr, SkPath::kWinding_FillType);
+ testSimplifyx(path, false, out, state, pathStr);
+ state.testsRun++;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ outputProgress(state, pathStr, SkPath::kEvenOdd_FillType);
+ testSimplifyx(path, true, out, state, pathStr);
+ state.testsRun++;
+ }
+ }
+ }
+ } while (runNextTestSet(state));
+ return NULL;
+}
+
+void SimplifyNondegenerate4x4TrianglesThreaded_Test(int& testsRun) {
+ SkDebugf("%s\n", __FUNCTION__);
+#ifdef SK_DEBUG
+ gDebugMaxWindSum = 2;
+ gDebugMaxWindValue = 2;
+#endif
+ const char testStr[] = "testNondegenerate";
+ initializeTests(testStr, sizeof(testStr));
+ int testsStart = testsRun;
+ for (int a = 0; a < 15; ++a) {
+ int ax = a & 0x03;
+ int ay = a >> 2;
+ for (int b = a + 1; b < 16; ++b) {
+ int bx = b & 0x03;
+ int by = b >> 2;
+ for (int c = a + 1; c < 16; ++c) {
+ if (b == c) {
+ continue;
+ }
+ int cx = c & 0x03;
+ int cy = c >> 2;
+ if ((bx - ax) * (cy - ay) == (by - ay) * (cx - ax)) {
+ continue;
+ }
+ testsRun += dispatchTest4(testSimplify4x4NondegeneratesMain,
+ a, b, c, 0);
+ }
+ if (!gRunTestsInOneThread) SkDebugf(".");
+ }
+ if (!gRunTestsInOneThread) SkDebugf("\n%d", a);
+ }
+ testsRun += waitForCompletion();
+ SkDebugf("%s tests=%d total=%d\n", __FUNCTION__, testsRun - testsStart, testsRun);
+}
+
+static void* testSimplify4x4DegeneratesMain(void* data) {
+ SkASSERT(data);
+ State4& state = *(State4*) data;
+ char pathStr[1024];
+ bzero(pathStr, sizeof(pathStr));
+ do {
+ int ax = state.a & 0x03;
+ int ay = state.a >> 2;
+ int bx = state.b & 0x03;
+ int by = state.b >> 2;
+ int cx = state.c & 0x03;
+ int cy = state.c >> 2;
+ for (int d = 0; d < 16; ++d) {
+ int dx = d & 0x03;
+ int dy = d >> 2;
+ for (int e = d ; e < 16; ++e) {
+ int ex = e & 0x03;
+ int ey = e >> 2;
+ for (int f = d ; f < 16; ++f) {
+ int fx = f & 0x03;
+ int fy = f >> 2;
+ if (state.d && (ex - dx) * (fy - dy)
+ != (ey - dy) * (fx - dx)) {
+ continue;
+ }
+ SkPath path, out;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(ax, ay);
+ path.lineTo(bx, by);
+ path.lineTo(cx, cy);
+ path.close();
+ path.moveTo(dx, dy);
+ path.lineTo(ex, ey);
+ path.lineTo(fx, fy);
+ path.close();
+ if (1) {
+ char* str = pathStr;
+ str += sprintf(str, " path.moveTo(%d, %d);\n", ax, ay);
+ str += sprintf(str, " path.lineTo(%d, %d);\n", bx, by);
+ str += sprintf(str, " path.lineTo(%d, %d);\n", cx, cy);
+ str += sprintf(str, " path.close();\n");
+ str += sprintf(str, " path.moveTo(%d, %d);\n", dx, dy);
+ str += sprintf(str, " path.lineTo(%d, %d);\n", ex, ey);
+ str += sprintf(str, " path.lineTo(%d, %d);\n", fx, fy);
+ str += sprintf(str, " path.close();\n");
+ }
+ outputProgress(state, pathStr, SkPath::kWinding_FillType);
+ testSimplifyx(path, false, out, state, pathStr);
+ state.testsRun++;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ outputProgress(state, pathStr, SkPath::kEvenOdd_FillType);
+ testSimplifyx(path, true, out, state, pathStr);
+ state.testsRun++;
+ }
+ }
+ }
+ } while (runNextTestSet(state));
+ return NULL;
+}
+
+void SimplifyDegenerate4x4TrianglesThreaded_Test(int& testsRun) {
+ SkDebugf("%s\n", __FUNCTION__);
+#ifdef SK_DEBUG
+ gDebugMaxWindSum = 2;
+ gDebugMaxWindValue = 2;
+#endif
+ const char testStr[] = "testDegenerate";
+ initializeTests(testStr, sizeof(testStr));
+ int testsStart = testsRun;
+ for (int a = 0; a < 16; ++a) {
+ int ax = a & 0x03;
+ int ay = a >> 2;
+ for (int b = a ; b < 16; ++b) {
+ int bx = b & 0x03;
+ int by = b >> 2;
+ for (int c = a ; c < 16; ++c) {
+ int cx = c & 0x03;
+ int cy = c >> 2;
+ bool abcIsATriangle = (bx - ax) * (cy - ay) != (by - ay) * (cx - ax);
+ testsRun += dispatchTest4(testSimplify4x4DegeneratesMain,
+ a, b, c, abcIsATriangle);
+ }
+ if (!gRunTestsInOneThread) SkDebugf(".");
+ }
+ if (!gRunTestsInOneThread) SkDebugf("\n%d", a);
+ }
+ testsRun += waitForCompletion();
+ SkDebugf("%s tests=%d total=%d\n", __FUNCTION__, testsRun - testsStart, testsRun);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/EdgeWalkerPolygons_Mismatches.cpp b/chromium/third_party/skia/experimental/Intersection/EdgeWalkerPolygons_Mismatches.cpp
new file mode 100644
index 00000000000..a20e2e64a73
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/EdgeWalkerPolygons_Mismatches.cpp
@@ -0,0 +1,1622 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "EdgeWalker_Test.h"
+#include "Intersection_Tests.h"
+#include "SkBitmap.h"
+
+// edges that didn't match
+struct misMatch {
+ SkPath::FillType fType;
+ int a, b, c, d, e, f, g, h;
+} misMatches[] = {
+/*
+___________________________________|___________________________________
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx__|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx__
+__xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx___|__xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx___
+__xxxxxxxxxxxxxxxxxxxxxxxxxxxx_____|__xxxxxxxxxxxxxxxxxxxxxxxxxxxx_____
+___xxxxxxxxxx__xxxxxxxxxxxxxx______|___xxxxxxxxxx__xxxxxxxxxxxxxx______
+___xxxxxxx______xxxxxxxxxxx________|___xxxxxxx______xxxxxxxxxxx________
+____xxx__________xxxxxxxxx_________|____xxx__________xxxxxxxxx_________
+____x_____________xxxxxxx__________|____x_____________xxxxxxx__________
+__xx_______________xxxx____________|__xxx______________xxxx____________
+___xx_______________xx_____________|___xx_______________xx_____________
+____________________x______________|____________________x______________
+______x____________xxx_____________|______x____________xxx_____________
+______xxx_________xxxxx____________|______xxx_________xxxxx____________
+_______xxxx_____xxxxxxxx___________|_______xxxx_____xxxxxxxx___________
+_______xxxxxx__xxxxxxxxx___________|_______xxxxxx__xxxxxxxxxx__________
+________xxxxx__xxxxxxxxxx__________|________xxxxx__xxxxxxxxxx__________
+________xxxx_____xxxxxxxxx_________|________xxxx_____xxxxxxxxx_________
+_________xxx_______xxxxxxxx________|_________xxx_______xxxxxxxx________
+_________xxx_________xxxxxxx_______|_________xxx_________xxxxxxx_______
+__________xx____________xxxxx______|__________xx____________xxxxx______
+__________xx______________xxxx_____|__________xx______________xxxx_____
+___________x________________xxx____|___________x________________xxx____
+___________x__________________xx___|___________x__________________xx___
+___________x____________________x__|___________x____________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kWinding_FillType, 0, 3, 9, 13, 1, 2, 4, 15 },
+/*
+___________________________________|___________________________________
+_xxxxxxxxxxx_________xxxxxxxxxxxx__|_xxxxxxxxxxx_________xxxxxxxxxxxx__
+__xxxxxxxxxxx______xxxxxxxxxxxxx___|__xxxxxxxxxxx______xxxxxxxxxxxxx___
+__xxxxxxxxxxxx__xxxxxxxxxxxxxx_____|__xxxxxxxxxxxx__xxxxxxxxxxxxxx_____
+___xxxxxxxxxx__xxxxxxxxxxxxxx______|___xxxxxxxxxx__xxxxxxxxxxxxxx______
+___xxxxxxx______xxxxxxxxxxx________|___xxxxxxx______xxxxxxxxxxx________
+____xxx__________xxxxxxxxx_________|____xxx__________xxxxxxxxx_________
+____x_____________xxxxxxx__________|____x_____________xxxxxxx__________
+__xx_______________xxxx____________|__xxx______________xxxx____________
+___xx_______________xx_____________|___xx_______________xx_____________
+____________________x______________|____________________x______________
+______x____________xxx_____________|______x____________xxx_____________
+______xxx_________xxxxx____________|______xxx_________xxxxx____________
+_______xxxx_____xxxxxxxx___________|_______xxxx_____xxxxxxxx___________
+_______xxxxxx__xxxxxxxxx___________|_______xxxxxx__xxxxxxxxxx__________
+________xxxxx__xxxxxxxxxx__________|________xxxxx__xxxxxxxxxx__________
+________xxxx_____xxxxxxxxx_________|________xxxx_____xxxxxxxxx_________
+_________xxx_______xxxxxxxx________|_________xxx_______xxxxxxxx________
+_________xxx_________xxxxxxx_______|_________xxx_________xxxxxxx_______
+__________xx____________xxxxx______|__________xx____________xxxxx______
+__________xx______________xxxx_____|__________xx______________xxxx_____
+___________x________________xxx____|___________x________________xxx____
+___________x__________________xx___|___________x__________________xx___
+___________x____________________x__|___________x____________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 0, 3, 9, 13, 1, 2, 4, 15 },
+/*
+___________________________________|___________________________________
+_x__________xxxxxxxxx______________|_x__________xxxxxxxxx______________
+__xxx________xxxxxx________________|__xxx________xxxxxx________________
+__xxxxxx______xx___________________|__xxxxxx______xx___________________
+___xxxxxxxx__xx____________________|___xxxxxxxx__xx____________________
+___xxxxxxx____xx___________________|___xxxxxxx____xx___________________
+____xxx_________x__________________|____xxx_________x__________________
+____x_____________x________________|____x_____________x________________
+__xx_______________xxx_____________|__xxx______________xxx_____________
+___xx_______________xx_____________|___xx_______________xx_____________
+____________________x______________|____________________x______________
+______x____________xxx_____________|______x____________xxx_____________
+______xxx_________xxxxx____________|______xxx_________xxxxx____________
+_______xxxx_____xxxxxxxx___________|_______xxxx_____xxxxxxxx___________
+_______xxxxxx__xxxxxxxxx___________|_______xxxxxx__xxxxxxxxxx__________
+________xxxxx__xxxxxxxxxx__________|________xxxxx__xxxxxxxxxx__________
+________xxxx_____xxxxxxxxx_________|________xxxx_____xxxxxxxxx_________
+_________xxx_______xxxxxxxx________|_________xxx_______xxxxxxxx________
+_________xxx_________xxxxxxx_______|_________xxx_________xxxxxxx_______
+__________xx____________xxxxx______|__________xx____________xxxxx______
+__________xx______________xxxx_____|__________xx______________xxxx_____
+___________x________________xxx____|___________x________________xxx____
+___________x__________________xx___|___________x__________________xx___
+___________x____________________x__|___________x____________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kWinding_FillType, 0, 6, 9, 13, 1, 2, 4, 15 },
+/*
+___________________________________|___________________________________
+_x__________xxxxxxxxx______________|_x__________xxxxxxxxx______________
+__xxx________xxxxxx________________|__xxx________xxxxxx________________
+__xxxxxx______xx___________________|__xxxxxx______xx___________________
+___xxxxxxxx__xx____________________|___xxxxxxxx__xx____________________
+___xxxxxxx____xx___________________|___xxxxxxx____xx___________________
+____xxx_________x__________________|____xxx_________x__________________
+____x_____________x________________|____x_____________x________________
+__xx_______________xxx_____________|__xxx______________xxx_____________
+___xx_______________xx_____________|___xx_______________xx_____________
+____________________x______________|____________________x______________
+______x____________xxx_____________|______x____________xxx_____________
+______xxx_________xxxxx____________|______xxx_________xxxxx____________
+_______xxxx_____xxxxxxxx___________|_______xxxx_____xxxxxxxx___________
+_______xxxxxx__xxxxxxxxx___________|_______xxxxxx__xxxxxxxxxx__________
+________xxxxx__xxxxxxxxxx__________|________xxxxx__xxxxxxxxxx__________
+________xxxx_____xxxxxxxxx_________|________xxxx_____xxxxxxxxx_________
+_________xxx_______xxxxxxxx________|_________xxx_______xxxxxxxx________
+_________xxx_________xxxxxxx_______|_________xxx_________xxxxxxx_______
+__________xx____________xxxxx______|__________xx____________xxxxx______
+__________xx______________xxxx_____|__________xx______________xxxx_____
+___________x________________xxx____|___________x________________xxx____
+___________x__________________xx___|___________x__________________xx___
+___________x____________________x__|___________x____________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 0, 6, 9, 13, 1, 2, 4, 15 },
+/*
+___________________________________|___________________________________
+_xx__________________x_____________|_xx__________________x_____________
+__xxxxx____________xx______________|__xxxxx____________xx______________
+__xxxxxxxxxx____xxxx_______________|__xxxxxxxxxx____xxxx_______________
+___xxxxxxxxxx___xxx________________|___xxxxxxxxxx___xxx________________
+___xxxxxxx_________x_______________|___xxxxxxx_________x_______________
+____xxx___________xxxxxx___________|____xxx___________xxxxxx___________
+____x____________xxxxxxxxxxx_______|____x____________xxxxxxxxxxx_______
+__xx____________xxxxxxxxxxxxxxxxx__|__xxx___________xxxxxxxxxxxxxxxxx__
+__xxx__________xxxxxxxxxxxxxxxx____|__xxx__________xxxxxxxxxxxxxxxx____
+___xx_________xxxxxxxxxxxx_________|___xx_________xxxxxxxxxxxx_________
+_____x_______xxxxxxxxx_____________|_____x_______xxxxxxxxx_____________
+____________xxxxxx_________________|____________xxxxxx_________________
+_______x___xxx_____________________|_______x___xxx_____________________
+_______xx__________________________|_______xx__________________________
+_____xxx_x_________________________|_____xxx_x_________________________
+_xxxxxxxxxxx_______________________|_xxxxxxxxxxx_______________________
+__xxxxx__xx________________________|__xxxxx__xx________________________
+____xx_____________________________|____xx_____________________________
+________xx_________________________|________xx_________________________
+_____x_xxx_________________________|_____x_xxx_________________________
+____x___xxx________________________|____x___xxx________________________
+___x_____xx________________________|___x_____xx________________________
+___________________________________|___________________________________
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kWinding_FillType, 0, 7, 8, 13, 2, 4, 9, 12 },
+/*
+___________________________________|___________________________________
+_xx__________________x_____________|_xx__________________x_____________
+__xxxxx____________xx______________|__xxxxx____________xx______________
+__xxxxxxxxxx____xxxx_______________|__xxxxxxxxxx____xxxx_______________
+___xxxxxxxxxx___xxx________________|___xxxxxxxxxx___xxx________________
+___xxxxxxx_________x_______________|___xxxxxxx_________x_______________
+____xxx___________xxxxxx___________|____xxx___________xxxxxx___________
+____x____________xxxxxxxxxxx_______|____x____________xxxxxxxxxxx_______
+__xx____________xxxxxxxxxxxxxxxxx__|__xxx___________xxxxxxxxxxxxxxxxx__
+__xxx__________xxxxxxxxxxxxxxxx____|__xxx__________xxxxxxxxxxxxxxxx____
+___xx_________xxxxxxxxxxxx_________|___xx_________xxxxxxxxxxxx_________
+_____x_______xxxxxxxxx_____________|_____x_______xxxxxxxxx_____________
+____________xxxxxx_________________|____________xxxxxx_________________
+_______x___xxx_____________________|_______x___xxx_____________________
+_______xx__________________________|_______xx__________________________
+_____xxx_x_________________________|_____xxx_x_________________________
+_xxxxxxxxxxx_______________________|_xxxxxxxxxxx_______________________
+__xxxxx__xx________________________|__xxxxx__xx________________________
+____xx_____________________________|____xx_____________________________
+________xx_________________________|________xx_________________________
+_____x_xxx_________________________|_____x_xxx_________________________
+____x___xxx________________________|____x___xxx________________________
+___x_____xx________________________|___x_____xx________________________
+___________________________________|___________________________________
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 0, 7, 8, 13, 2, 4, 9, 12 },
+/*
+___________________________________|___________________________________
+_x_________x_______________________|_x_________x_______________________
+__x_______xxx______________________|__x_______xxx______________________
+___x____xxxxxx_____________________|___x____xxxxxx_____________________
+____xx_xxxxxxxx____________________|____xx_xxxxxxxx____________________
+_____x_xxxxxxxxx___________________|_____x_xxxxxxxxx___________________
+____xx___xxxxxxxx__________________|____xx___xxxxxxxx__________________
+___xxxx___xxxxxxxx_________________|___xxxx___xxxxxxxx_________________
+_xxxxxxx___xxxxxxxx________________|_xxxxxxx____xxxxxxx________________
+__xxxxxxx____xxxxxxx_______________|__xxxxxxx____xxxxxxx_______________
+___xxxxxxx____xxxxxxx______________|___xxxxxxx____xxxxxxx______________
+_____xxxxxx_____xxxxxx_____________|_____xxxxxx_____xxxxxx_____________
+______xxxxxx_____xxxxxx____________|______xxxxxx_____xxxxxx____________
+________xxxxx______xxxxx___________|________xxxxx______xxxxx___________
+_________xxxxx______xxxx___________|_________xxxxx______xxxx___________
+__________xxxxx______xxxx__________|__________xxxxx______xxxx__________
+____________xxx________xxx_________|____________xxx________xxx_________
+_______________x___________xxxxx___|_______________x___________xxxxx___
+____________________________xxx____|____________________________xxx____
+__________________xx_______________|__________________xx_________x_____
+___________________xxxx_____xx_____|___________________xxxx_____xx_____
+____________________xxxxxx_xxxx____|____________________xxxxxx_xxxx____
+_____________________xxxx____xxx___|_____________________xxxx____xxx___
+______________________xx_______xx__|______________________xx_______xx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kWinding_FillType, 0, 10, 11, 14, 1, 4, 9, 15 },
+/*
+___________________________________|___________________________________
+_x_________x_______________________|_x_________x_______________________
+__x_______xxx______________________|__x_______xxx______________________
+___x____xxxxxx_____________________|___x____xxxxxx_____________________
+____xx_xxxxxxxx____________________|____xx_xxxxxxxx____________________
+_____x_xxxxxxxxx___________________|_____x_xxxxxxxxx___________________
+____xx___xxxxxxxx__________________|____xx___xxxxxxxx__________________
+___xxxx___xxxxxxxx_________________|___xxxx___xxxxxxxx_________________
+_xxxxxxx___xxxxxxxx________________|_xxxxxxx____xxxxxxx________________
+__xxxxxxx____xxxxxxx_______________|__xxxxxxx____xxxxxxx_______________
+___xxxxxxx____xxxxxxx______________|___xxxxxxx____xxxxxxx______________
+_____xxxxxx_____xxxxxx_____________|_____xxxxxx_____xxxxxx_____________
+______xxxxxx_____xxxxxx____________|______xxxxxx_____xxxxxx____________
+________xxxxx______xxxxx___________|________xxxxx______xxxxx___________
+_________xxxxx______xxxx___________|_________xxxxx______xxxx___________
+__________xxxxx______xxxx__________|__________xxxxx______xxxx__________
+____________xxx________xxx_________|____________xxx________xxx_________
+_______________x___________xxxxx___|_______________x___________xxxxx___
+____________________________xxx____|____________________________xxx____
+__________________xx_______________|__________________xx_________x_____
+___________________xxxx_____xx_____|___________________xxxx_____xx_____
+____________________xxxxxx_xxxx____|____________________xxxxxx_xxxx____
+_____________________xxxx____xxx___|_____________________xxxx____xxx___
+______________________xx_______xx__|______________________xx_______xx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 0, 10, 11, 14, 1, 4, 9, 15 },
+/*
+___________________________________|___________________________________
+_____________xxxxxxxxxxxxxxxxxxx___|_____________xxxxxxxxxxxxxxxxxxx___
+___________xx___xxxxxxxxxxx________|___________xx___xxxxxxxxxxx________
+___________xxx_____xxxx____________|___________xxx_____xxxx____________
+__________xxxxx____xxx_____________|__________xxxxx____xxx_____________
+__________xxxxx_xxxxxxxx___________|__________xxxxx_xxxxxxxxx__________
+_________xx______xxxxxxxxxx________|_________x_______xxxxxxxxxx________
+______xxx_________xxxxxxxxxxxx_____|______xxx_________xxxxxxxxxxxx_____
+__xxxxxx___________xxxxxxxxxxxxxx__|__xxxxxx___________xxxxxxxxxxxxxx__
+___xxxxx____________xxxxxxxxxxxx___|___xxxxx____________xxxxxxxxxxxx___
+_____xx______________xxxxxxxxx_____|_____xx______________xxxxxxxxx_____
+______________________xxxxxx_______|______________________xxxxxx_______
+_______xx______________xxx_________|_______xx______________xxx_________
+______xxxxx________________________|______xxxxx________________________
+______xxxxxxx_________xx___________|______xxxxxxx_________xxx__________
+_____xxxxxxxxxx____xxxxxx__________|_____xxxxxxxxxx____xxxxxx__________
+_____xxxxxxxxxxxxxxxxxxxxx_________|_____xxxxxxxxxxxxxxxxxxxxx_________
+____xxxxxxxxxxx____xxxxxxxx________|____xxxxxxxxxxx____xxxxxxxx________
+____xxxxxxxxx________xxxxxxx_______|____xxxxxxxxx________xxxxxxx_______
+___xxxxxxxx_____________xxxxx______|___xxxxxxxx_____________xxxxx______
+___xxxxxx_________________xxxx_____|___xxxxxx_________________xxxx_____
+__xxxxx_____________________xxx____|__xxxxx_____________________xxx____
+__xxx_________________________xx___|__xxx_________________________xx___
+_xx_____________________________x__|_xx_____________________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 1, 7, 12, 1, 3, 4, 15 },
+/*
+___________________________________|___________________________________
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx__|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx__
+__xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx___|__xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx___
+__xxxxxxxxxxxxxxxxxxxxxxxxxxxx_____|__xxxxxxxxxxxxxxxxxxxxxxxxxxxx_____
+___xxxxxxxxxx__xxxxxxxxxxxxxx______|___xxxxxxxxxx__xxxxxxxxxxxxxx______
+___xxxxxxx______xxxxxxxxxxx________|___xxxxxxx______xxxxxxxxxxx________
+____xxx__________xxxxxxxxx_________|____xxx__________xxxxxxxxx_________
+____x_____________xxxxxxx__________|____x_____________xxxxxxx__________
+__xx_______________xxxx____________|__xxx______________xxxx____________
+___xx_______________xx_____________|___xx_______________xx_____________
+____________________x______________|____________________x______________
+______x____________xxx_____________|______x____________xxx_____________
+______xxx_________xxxxx____________|______xxx_________xxxxx____________
+_______xxxx_____xxxxxxxx___________|_______xxxx_____xxxxxxxx___________
+_______xxxxxx__xxxxxxxxx___________|_______xxxxxx__xxxxxxxxxx__________
+________xxxxx__xxxxxxxxxx__________|________xxxxx__xxxxxxxxxx__________
+________xxxx_____xxxxxxxxx_________|________xxxx_____xxxxxxxxx_________
+_________xxx_______xxxxxxxx________|_________xxx_______xxxxxxxx________
+_________xxx_________xxxxxxx_______|_________xxx_________xxxxxxx_______
+__________xx____________xxxxx______|__________xx____________xxxxx______
+__________xx______________xxxx_____|__________xx______________xxxx_____
+___________x________________xxx____|___________x________________xxx____
+___________x__________________xx___|___________x__________________xx___
+___________x____________________x__|___________x____________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kWinding_FillType, 1, 2, 4, 15, 0, 3, 9, 13 },
+/*
+___________________________________|___________________________________
+_xxxxxxxxxxx_________xxxxxxxxxxxx__|_xxxxxxxxxxx_________xxxxxxxxxxxx__
+__xxxxxxxxxxx______xxxxxxxxxxxxx___|__xxxxxxxxxxx______xxxxxxxxxxxxx___
+__xxxxxxxxxxxx__xxxxxxxxxxxxxx_____|__xxxxxxxxxxxx__xxxxxxxxxxxxxx_____
+___xxxxxxxxxx__xxxxxxxxxxxxxx______|___xxxxxxxxxx__xxxxxxxxxxxxxx______
+___xxxxxxx______xxxxxxxxxxx________|___xxxxxxx______xxxxxxxxxxx________
+____xxx__________xxxxxxxxx_________|____xxx__________xxxxxxxxx_________
+____x_____________xxxxxxx__________|____x_____________xxxxxxx__________
+__xx_______________xxxx____________|__xxx______________xxxx____________
+___xx_______________xx_____________|___xx_______________xx_____________
+____________________x______________|____________________x______________
+______x____________xxx_____________|______x____________xxx_____________
+______xxx_________xxxxx____________|______xxx_________xxxxx____________
+_______xxxx_____xxxxxxxx___________|_______xxxx_____xxxxxxxx___________
+_______xxxxxx__xxxxxxxxx___________|_______xxxxxx__xxxxxxxxxx__________
+________xxxxx__xxxxxxxxxx__________|________xxxxx__xxxxxxxxxx__________
+________xxxx_____xxxxxxxxx_________|________xxxx_____xxxxxxxxx_________
+_________xxx_______xxxxxxxx________|_________xxx_______xxxxxxxx________
+_________xxx_________xxxxxxx_______|_________xxx_________xxxxxxx_______
+__________xx____________xxxxx______|__________xx____________xxxxx______
+__________xx______________xxxx_____|__________xx______________xxxx_____
+___________x________________xxx____|___________x________________xxx____
+___________x__________________xx___|___________x__________________xx___
+___________x____________________x__|___________x____________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 2, 4, 15, 0, 3, 9, 13 },
+/*
+___________________________________|___________________________________
+_x__________xxxxxxxxx______________|_x__________xxxxxxxxx______________
+__xxx________xxxxxx________________|__xxx________xxxxxx________________
+__xxxxxx______xx___________________|__xxxxxx______xx___________________
+___xxxxxxxx__xx____________________|___xxxxxxxx__xx____________________
+___xxxxxxx____xx___________________|___xxxxxxx____xx___________________
+____xxx_________x__________________|____xxx_________x__________________
+____x_____________x________________|____x_____________x________________
+__xx_______________xxx_____________|__xxx______________xxx_____________
+___xx_______________xx_____________|___xx_______________xx_____________
+____________________x______________|____________________x______________
+______x____________xxx_____________|______x____________xxx_____________
+______xxx_________xxxxx____________|______xxx_________xxxxx____________
+_______xxxx_____xxxxxxxx___________|_______xxxx_____xxxxxxxx___________
+_______xxxxxx__xxxxxxxxx___________|_______xxxxxx__xxxxxxxxxx__________
+________xxxxx__xxxxxxxxxx__________|________xxxxx__xxxxxxxxxx__________
+________xxxx_____xxxxxxxxx_________|________xxxx_____xxxxxxxxx_________
+_________xxx_______xxxxxxxx________|_________xxx_______xxxxxxxx________
+_________xxx_________xxxxxxx_______|_________xxx_________xxxxxxx_______
+__________xx____________xxxxx______|__________xx____________xxxxx______
+__________xx______________xxxx_____|__________xx______________xxxx_____
+___________x________________xxx____|___________x________________xxx____
+___________x__________________xx___|___________x__________________xx___
+___________x____________________x__|___________x____________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kWinding_FillType, 1, 2, 4, 15, 0, 6, 9, 13 },
+/*
+___________________________________|___________________________________
+_x__________xxxxxxxxx______________|_x__________xxxxxxxxx______________
+__xxx________xxxxxx________________|__xxx________xxxxxx________________
+__xxxxxx______xx___________________|__xxxxxx______xx___________________
+___xxxxxxxx__xx____________________|___xxxxxxxx__xx____________________
+___xxxxxxx____xx___________________|___xxxxxxx____xx___________________
+____xxx_________x__________________|____xxx_________x__________________
+____x_____________x________________|____x_____________x________________
+__xx_______________xxx_____________|__xxx______________xxx_____________
+___xx_______________xx_____________|___xx_______________xx_____________
+____________________x______________|____________________x______________
+______x____________xxx_____________|______x____________xxx_____________
+______xxx_________xxxxx____________|______xxx_________xxxxx____________
+_______xxxx_____xxxxxxxx___________|_______xxxx_____xxxxxxxx___________
+_______xxxxxx__xxxxxxxxx___________|_______xxxxxx__xxxxxxxxxx__________
+________xxxxx__xxxxxxxxxx__________|________xxxxx__xxxxxxxxxx__________
+________xxxx_____xxxxxxxxx_________|________xxxx_____xxxxxxxxx_________
+_________xxx_______xxxxxxxx________|_________xxx_______xxxxxxxx________
+_________xxx_________xxxxxxx_______|_________xxx_________xxxxxxx_______
+__________xx____________xxxxx______|__________xx____________xxxxx______
+__________xx______________xxxx_____|__________xx______________xxxx_____
+___________x________________xxx____|___________x________________xxx____
+___________x__________________xx___|___________x__________________xx___
+___________x____________________x__|___________x____________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 2, 4, 15, 0, 6, 9, 13 },
+/*
+___________________________________|___________________________________
+_______________________xxxxxxxxx___|_______________________xxxxxxxxx___
+___________xx____________xx________|___________xx____________xx________
+___________xxx_________xxx_________|___________xxx_________xxx_________
+__________xxxxx____xxxxxxxxx_______|__________xxxxx____xxxxxxxxx_______
+__________xxxxx_xxxxxxxxxxxxx______|__________xxxxx_xxxxxxxxxxxxx______
+_________xx______xxxxxxxxxxxxx_____|_________x_______xxxxxxxxxxxxx_____
+______xxx_________xxxxxxxxxxxxxx___|______xxx_________xxxxxxxxxxxxxx___
+__xxxxxx___________xxxxxxxxxxxxxx__|__xxxxxx___________xxxxxxxxxxxxxx__
+___xxxxx____________xxxxxxxxxxxx___|___xxxxx____________xxxxxxxxxxxx___
+_____xx______________xxxxxxxxx_____|_____xx______________xxxxxxxxx_____
+______________________xxxxxx_______|______________________xxxxxx_______
+_______xx______________xxx_________|_______xx______________xxx_________
+______xxxxx________________________|______xxxxx________________________
+______xxxxxxx_________xx___________|______xxxxxxx_________xxx__________
+_____xxxxxxxxxx____xxxxxx__________|_____xxxxxxxxxx____xxxxxx__________
+_____xxxxxxxxxxxxxxxxxxxxx_________|_____xxxxxxxxxxxxxxxxxxxxx_________
+____xxxxxxxxxxx____xxxxxxxx________|____xxxxxxxxxxx____xxxxxxxx________
+____xxxxxxxxx________xxxxxxx_______|____xxxxxxxxx________xxxxxxx_______
+___xxxxxxxx_____________xxxxx______|___xxxxxxxx_____________xxxxx______
+___xxxxxx_________________xxxx_____|___xxxxxx_________________xxxx_____
+__xxxxx_____________________xxx____|__xxxxx_____________________xxx____
+__xxx_________________________xx___|__xxx_________________________xx___
+_xx_____________________________x__|_xx_____________________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 2, 7, 12, 1, 3, 4, 15 },
+/*
+___________________________________|___________________________________
+_____________xxxxxxxxxxxxxxxxxxx___|_____________xxxxxxxxxxxxxxxxxxx___
+___________xx___xxxxxxxxxxx________|___________xx___xxxxxxxxxxx________
+___________xxx_____xxxx____________|___________xxx_____xxxx____________
+__________xxxxx____xxx_____________|__________xxxxx____xxx_____________
+__________xxxxx_xxxxxxxx___________|__________xxxxx_xxxxxxxxx__________
+_________xx______xxxxxxxxxx________|_________x_______xxxxxxxxxx________
+______xxx_________xxxxxxxxxxxx_____|______xxx_________xxxxxxxxxxxx_____
+__xxxxxx___________xxxxxxxxxxxxxx__|__xxxxxx___________xxxxxxxxxxxxxx__
+___xxxxx____________xxxxxxxxxxxx___|___xxxxx____________xxxxxxxxxxxx___
+_____xx______________xxxxxxxxx_____|_____xx______________xxxxxxxxx_____
+______________________xxxxxx_______|______________________xxxxxx_______
+_______xx______________xxx_________|_______xx______________xxx_________
+______xxxxx________________________|______xxxxx________________________
+______xxxxxxx_________xx___________|______xxxxxxx_________xxx__________
+_____xxxxxxxxxx____xxxxxx__________|_____xxxxxxxxxx____xxxxxx__________
+_____xxxxxxxxxxxxxxxxxxxxx_________|_____xxxxxxxxxxxxxxxxxxxxx_________
+____xxxxxxxxxxx____xxxxxxxx________|____xxxxxxxxxxx____xxxxxxxx________
+____xxxxxxxxx________xxxxxxx_______|____xxxxxxxxx________xxxxxxx_______
+___xxxxxxxx_____________xxxxx______|___xxxxxxxx_____________xxxxx______
+___xxxxxx_________________xxxx_____|___xxxxxx_________________xxxx_____
+__xxxxx_____________________xxx____|__xxxxx_____________________xxx____
+__xxx_________________________xx___|__xxx_________________________xx___
+_xx_____________________________x__|_xx_____________________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 3, 4, 15, 1, 1, 7, 12 },
+/*
+___________________________________|___________________________________
+_______________________xxxxxxxxx___|_______________________xxxxxxxxx___
+___________xx____________xx________|___________xx____________xx________
+___________xxx_________xxx_________|___________xxx_________xxx_________
+__________xxxxx____xxxxxxxxx_______|__________xxxxx____xxxxxxxxx_______
+__________xxxxx_xxxxxxxxxxxxx______|__________xxxxx_xxxxxxxxxxxxx______
+_________xx______xxxxxxxxxxxxx_____|_________x_______xxxxxxxxxxxxx_____
+______xxx_________xxxxxxxxxxxxxx___|______xxx_________xxxxxxxxxxxxxx___
+__xxxxxx___________xxxxxxxxxxxxxx__|__xxxxxx___________xxxxxxxxxxxxxx__
+___xxxxx____________xxxxxxxxxxxx___|___xxxxx____________xxxxxxxxxxxx___
+_____xx______________xxxxxxxxx_____|_____xx______________xxxxxxxxx_____
+______________________xxxxxx_______|______________________xxxxxx_______
+_______xx______________xxx_________|_______xx______________xxx_________
+______xxxxx________________________|______xxxxx________________________
+______xxxxxxx_________xx___________|______xxxxxxx_________xxx__________
+_____xxxxxxxxxx____xxxxxx__________|_____xxxxxxxxxx____xxxxxx__________
+_____xxxxxxxxxxxxxxxxxxxxx_________|_____xxxxxxxxxxxxxxxxxxxxx_________
+____xxxxxxxxxxx____xxxxxxxx________|____xxxxxxxxxxx____xxxxxxxx________
+____xxxxxxxxx________xxxxxxx_______|____xxxxxxxxx________xxxxxxx_______
+___xxxxxxxx_____________xxxxx______|___xxxxxxxx_____________xxxxx______
+___xxxxxx_________________xxxx_____|___xxxxxx_________________xxxx_____
+__xxxxx_____________________xxx____|__xxxxx_____________________xxx____
+__xxx_________________________xx___|__xxx_________________________xx___
+_xx_____________________________x__|_xx_____________________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 3, 4, 15, 1, 2, 7, 12 },
+/*
+___________________________________|___________________________________
+________________________________xx_|________________________________xx_
+___________xx______________xxxxxxx_|___________xx______________xxxxxxx_
+___________xxx_________xxxxxxxxxxx_|___________xxx_________xxxxxxxxxxx_
+__________xxxxx____xxxxxxxxxxxxxxx_|__________xxxxx____xxxxxxxxxxxxxxx_
+__________xxxxx_xxxxxxxxxxxxxxxxxx_|__________xxxxx_xxxxxxxxxxxxxxxxxx_
+_________xx______xxxxxxxxxxxxxxxxx_|_________x_______xxxxxxxxxxxxxxxxx_
+______xxx_________xxxxxxxxxxxxxxxx_|______xxx_________xxxxxxxxxxxxxxxx_
+__xxxxxx___________xxxxxxxxxxxxxxx_|__xxxxxx___________xxxxxxxxxxxxxxx_
+___xxxxx____________xxxxxxxxxxxx___|___xxxxx____________xxxxxxxxxxxx___
+_____xx______________xxxxxxxxx_____|_____xx______________xxxxxxxxx_____
+______________________xxxxxx_______|______________________xxxxxx_______
+_______xx______________xxx_________|_______xx______________xxx_________
+______xxxxx________________________|______xxxxx________________________
+______xxxxxxx_________xx___________|______xxxxxxx_________xxx__________
+_____xxxxxxxxxx____xxxxxx__________|_____xxxxxxxxxx____xxxxxx__________
+_____xxxxxxxxxxxxxxxxxxxxx_________|_____xxxxxxxxxxxxxxxxxxxxx_________
+____xxxxxxxxxxx____xxxxxxxx________|____xxxxxxxxxxx____xxxxxxxx________
+____xxxxxxxxx________xxxxxxx_______|____xxxxxxxxx________xxxxxxx_______
+___xxxxxxxx_____________xxxxx______|___xxxxxxxx_____________xxxxx______
+___xxxxxx_________________xxxx_____|___xxxxxx_________________xxxx_____
+__xxxxx_____________________xxx____|__xxxxx_____________________xxx____
+__xxx_________________________xx___|__xxx_________________________xx___
+_xx_____________________________x__|_xx_____________________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 3, 4, 15, 1, 3, 7, 12 },
+/*
+___________________________________|___________________________________
+_____________xxxxxxxxxxxxxxxxxxx___|_____________xxxxxxxxxxxxxxxxxxx___
+___________xx___xxxxxxxxxxx________|___________xx___xxxxxxxxxxx________
+___________xxx_____xxxx____________|___________xxx_____xxxx____________
+__________xxxxx____xxx_____________|__________xxxxx____xxx_____________
+__________xxxxx_xxxxxxxx___________|__________xxxxx_xxxxxxxxx__________
+_________xx______xxxxxxxxxx________|_________x_______xxxxxxxxxx________
+______xxx_________xxxxxxxxxxxx_____|______xxx_________xxxxxxxxxxxx_____
+__xxxxxx___________xxxxxxxxxxxxxx__|__xxxxxx___________xxxxxxxxxxxxxx__
+___xxxxx____________xxxxxxxxxxxx___|___xxxxx____________xxxxxxxxxxxx___
+_____xx______________xxxxxxxxx_____|_____xx______________xxxxxxxxx_____
+______________________xxxxxx_______|______________________xxxxxx_______
+_______xx______________xxx_________|_______xx______________xxx_________
+______xxxxx________________________|______xxxxx________________________
+______xxxxxxx_________xx___________|______xxxxxxx_________xxx__________
+_____xxxxxxxxxx____xxxxxx__________|_____xxxxxxxxxx____xxxxxx__________
+_____xxxxxxxxxxxxxxxxxxxxx_________|_____xxxxxxxxxxxxxxxxxxxxx_________
+____xxxxxxxxxxx____xxxxxxxx________|____xxxxxxxxxxx____xxxxxxxx________
+____xxxxxxxxx________xxxxxxx_______|____xxxxxxxxx________xxxxxxx_______
+___xxxxxxxx_____________xxxxx______|___xxxxxxxx_____________xxxxx______
+___xxxxxx_________________xxxx_____|___xxxxxx_________________xxxx_____
+__xxxxx_____________________xxx____|__xxxxx_____________________xxx____
+__xxx_________________________xx___|__xxx_________________________xx___
+_xx_____________________________x__|_xx_____________________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 3, 4, 15, 1, 7, 7, 12 },
+/*
+___________________________________|___________________________________
+_____________xxxxxxxxxxxxxxxxxxx___|_____________xxxxxxxxxxxxxxxxxxx___
+___________xx___xxxxxxxxxxx________|___________xx___xxxxxxxxxxx________
+___________xxx_____xxxx____________|___________xxx_____xxxx____________
+__________xxxxx____xxx_____________|__________xxxxx____xxx_____________
+__________xxxxx_xxxxxxxx___________|__________xxxxx_xxxxxxxxx__________
+_________xx______xxxxxxxxxx________|_________x_______xxxxxxxxxx________
+______xxx_________xxxxxxxxxxxx_____|______xxx_________xxxxxxxxxxxx_____
+__xxxxxx___________xxxxxxxxxxxxxx__|__xxxxxx___________xxxxxxxxxxxxxx__
+___xxxxx____________xxxxxxxxxxxx___|___xxxxx____________xxxxxxxxxxxx___
+_____xx______________xxxxxxxxx_____|_____xx______________xxxxxxxxx_____
+______________________xxxxxx_______|______________________xxxxxx_______
+_______xx______________xxx_________|_______xx______________xxx_________
+______xxxxx________________________|______xxxxx________________________
+______xxxxxxx_________xx___________|______xxxxxxx_________xxx__________
+_____xxxxxxxxxx____xxxxxx__________|_____xxxxxxxxxx____xxxxxx__________
+_____xxxxxxxxxxxxxxxxxxxxx_________|_____xxxxxxxxxxxxxxxxxxxxx_________
+____xxxxxxxxxxx____xxxxxxxx________|____xxxxxxxxxxx____xxxxxxxx________
+____xxxxxxxxx________xxxxxxx_______|____xxxxxxxxx________xxxxxxx_______
+___xxxxxxxx_____________xxxxx______|___xxxxxxxx_____________xxxxx______
+___xxxxxx_________________xxxx_____|___xxxxxx_________________xxxx_____
+__xxxxx_____________________xxx____|__xxxxx_____________________xxx____
+__xxx_________________________xx___|__xxx_________________________xx___
+_xx_____________________________x__|_xx_____________________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 3, 4, 15, 1, 7, 12, 12 },
+/*
+___________________________________|___________________________________
+________________________________xx_|________________________________xx_
+___________xx______________xxxxxxx_|___________xx______________xxxxxxx_
+___________xxx_________xxxxxxxxxxx_|___________xxx_________xxxxxxxxxxx_
+__________xxxxx____xxxxxxxxxxxxxxx_|__________xxxxx____xxxxxxxxxxxxxxx_
+__________xxxxx_xxxxxxxxxxxxxxxxxx_|__________xxxxx_xxxxxxxxxxxxxxxxxx_
+_________xx______xxxxxxxxxxxxxxxxx_|_________x_______xxxxxxxxxxxxxxxxx_
+______xxx_________xxxxxxxxxxxxxxxx_|______xxx_________xxxxxxxxxxxxxxxx_
+__xxxxxx___________xxxxxxxxxxxxxxx_|__xxxxxx___________xxxxxxxxxxxxxxx_
+___xxxxx____________xxxxxxxxxxxx___|___xxxxx____________xxxxxxxxxxxx___
+_____xx______________xxxxxxxxx_____|_____xx______________xxxxxxxxx_____
+______________________xxxxxx_______|______________________xxxxxx_______
+_______xx______________xxx_________|_______xx______________xxx_________
+______xxxxx________________________|______xxxxx________________________
+______xxxxxxx_________xx___________|______xxxxxxx_________xxx__________
+_____xxxxxxxxxx____xxxxxx__________|_____xxxxxxxxxx____xxxxxx__________
+_____xxxxxxxxxxxxxxxxxxxxx_________|_____xxxxxxxxxxxxxxxxxxxxx_________
+____xxxxxxxxxxx____xxxxxxxx________|____xxxxxxxxxxx____xxxxxxxx________
+____xxxxxxxxx________xxxxxxx_______|____xxxxxxxxx________xxxxxxx_______
+___xxxxxxxx_____________xxxxx______|___xxxxxxxx_____________xxxxx______
+___xxxxxx_________________xxxx_____|___xxxxxx_________________xxxx_____
+__xxxxx_____________________xxx____|__xxxxx_____________________xxx____
+__xxx_________________________xx___|__xxx_________________________xx___
+_xx_____________________________x__|_xx_____________________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 3, 7, 12, 1, 3, 4, 15 },
+/*
+___________________________________|___________________________________
+____________xxxxxxxxxxxxxxxxxxxxx__|____________xxxxxxxxxxxxxxxxxxxxx__
+_____________xxxxxxxxxxxxxxxxxxx___|_____________xxxxxxxxxxxxxxxxxxx___
+______________xxxxxxxxx_xxxxxx_____|______________xxxxxxxxx_xxxxxx_____
+_______________xxxxxxxx_xxxxx______|_______________xxxxxxxx_xxxxx______
+________________xxxxxxx__xx________|________________xxxxxxx__xx________
+_________________xxxxxx__x_________|_________________xxxxxx__x_________
+__________________xxxxx__x_________|__________________xxxxx__x_________
+___________________xxxxxxx_________|___________________xxxxxxx_________
+____________________x_xxxxx________|____________________x_xxxxx________
+__________________xx_xxxxxx________|__________________xx_xxxxxx________
+_______________xxxx___xxxxxx_______|_______________xxxx___xxxxxx_______
+____________xxxxxx_____xxxxx_______|____________xxxxxx_____xxxxx_______
+_________xxxxxxx________xxxxx______|_________xxxxxxx________xxxxx______
+_______xxxxxxxx_________xxxxx______|_______xxxxxxxx__________xxxx______
+____xxxxxxxxx____________xxxxx_____|____xxxxxxxxx____________xxxxx_____
+_xxxxxxxxxxx______________xxxx_____|_xxxxxxxxxxx______________xxxx_____
+_____xxxxxx________________xxx_____|_____xxxxxx________________xxx_____
+____________________________xxx____|____________________________xxx____
+________xxxxx________________xx____|________xxxxx________________xx____
+______xxxxxxxxxxxx____________xx___|______xxxxxxxxxxxx____________xx___
+_____xxxxxxxxxxxxxxxxx_________x___|_____xxxxxxxxxxxxxxxxx_________x___
+____xxxxxxxxxxxxxxxxxxxxxx______x__|____xxxxxxxxxxxxxxxxxxxxxx______x__
+__xxxxxxxxxxxxxxxxxxxxxxxxxxxx_____|__xxxxxxxxxxxxxxxxxxxxxxxxxxxx_____
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 3, 12, 15, 2, 6, 8, 15 },
+/*
+___________________________________|___________________________________
+_x_________x_______________________|_x_________x_______________________
+__x_______xxx______________________|__x_______xxx______________________
+___x____xxxxxx_____________________|___x____xxxxxx_____________________
+____xx_xxxxxxxx____________________|____xx_xxxxxxxx____________________
+_____x_xxxxxxxxx___________________|_____x_xxxxxxxxx___________________
+____xx___xxxxxxxx__________________|____xx___xxxxxxxx__________________
+___xxxx___xxxxxxxx_________________|___xxxx___xxxxxxxx_________________
+_xxxxxxx___xxxxxxxx________________|_xxxxxxx____xxxxxxx________________
+__xxxxxxx____xxxxxxx_______________|__xxxxxxx____xxxxxxx_______________
+___xxxxxxx____xxxxxxx______________|___xxxxxxx____xxxxxxx______________
+_____xxxxxx_____xxxxxx_____________|_____xxxxxx_____xxxxxx_____________
+______xxxxxx_____xxxxxx____________|______xxxxxx_____xxxxxx____________
+________xxxxx______xxxxx___________|________xxxxx______xxxxx___________
+_________xxxxx______xxxx___________|_________xxxxx______xxxx___________
+__________xxxxx______xxxx__________|__________xxxxx______xxxx__________
+____________xxx________xxx_________|____________xxx________xxx_________
+_______________x___________xxxxx___|_______________x___________xxxxx___
+____________________________xxx____|____________________________xxx____
+__________________xx_______________|__________________xx_________x_____
+___________________xxxx_____xx_____|___________________xxxx_____xx_____
+____________________xxxxxx_xxxx____|____________________xxxxxx_xxxx____
+_____________________xxxx____xxx___|_____________________xxxx____xxx___
+______________________xx_______xx__|______________________xx_______xx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kWinding_FillType, 1, 4, 9, 15, 0, 10, 11, 14 },
+/*
+___________________________________|___________________________________
+_x_________x_______________________|_x_________x_______________________
+__x_______xxx______________________|__x_______xxx______________________
+___x____xxxxxx_____________________|___x____xxxxxx_____________________
+____xx_xxxxxxxx____________________|____xx_xxxxxxxx____________________
+_____x_xxxxxxxxx___________________|_____x_xxxxxxxxx___________________
+____xx___xxxxxxxx__________________|____xx___xxxxxxxx__________________
+___xxxx___xxxxxxxx_________________|___xxxx___xxxxxxxx_________________
+_xxxxxxx___xxxxxxxx________________|_xxxxxxx____xxxxxxx________________
+__xxxxxxx____xxxxxxx_______________|__xxxxxxx____xxxxxxx_______________
+___xxxxxxx____xxxxxxx______________|___xxxxxxx____xxxxxxx______________
+_____xxxxxx_____xxxxxx_____________|_____xxxxxx_____xxxxxx_____________
+______xxxxxx_____xxxxxx____________|______xxxxxx_____xxxxxx____________
+________xxxxx______xxxxx___________|________xxxxx______xxxxx___________
+_________xxxxx______xxxx___________|_________xxxxx______xxxx___________
+__________xxxxx______xxxx__________|__________xxxxx______xxxx__________
+____________xxx________xxx_________|____________xxx________xxx_________
+_______________x___________xxxxx___|_______________x___________xxxxx___
+____________________________xxx____|____________________________xxx____
+__________________xx_______________|__________________xx_________x_____
+___________________xxxx_____xx_____|___________________xxxx_____xx_____
+____________________xxxxxx_xxxx____|____________________xxxxxx_xxxx____
+_____________________xxxx____xxx___|_____________________xxxx____xxx___
+______________________xx_______xx__|______________________xx_______xx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 4, 9, 15, 0, 10, 11, 14 },
+/*
+___________________________________|___________________________________
+____________x__________xxxxxxxxxx__|____________x__________xxxxxxxxxx__
+_____________x_________xxxxxxxxx___|_____________x_________xxxxxxxxx___
+______________x_________xxxxxx_____|______________x_________xxxxxx_____
+_______________xx_______xxxxx______|_______________xx_______xxxxx______
+________________xx_______xx________|________________xx_______xx________
+_________________xxx_____x_________|_________________xxx_____x_________
+__________________xxx____x_________|__________________xxx____x_________
+___________________xxx_xxx_________|___________________xxx_xxx_________
+____________________x_xxxxx________|____________________x_xxxxx________
+__________________xx_xxxxxx________|__________________xx_xxxxxx________
+_______________xxxx___xxxxxx_______|_______________xxxx___xxxxxx_______
+____________xxxxxx_____xxxxx_______|____________xxxxxx_____xxxxx_______
+_________xxxxxxx________xxxxx______|_________xxxxxxx________xxxxx______
+_______xxxxxxxx_________xxxxx______|_______xxxxxxxx__________xxxx______
+____xxxxxxxxx____________xxxxx_____|____xxxxxxxxx____________xxxxx_____
+_xxxxxxxxxxx______________xxxx_____|_xxxxxxxxxxx______________xxxx_____
+_____xxxxxx________________xxx_____|_____xxxxxx________________xxx_____
+____________________________xxx____|____________________________xxx____
+________xxxxx________________xx____|________xxxxx________________xx____
+______xxxxxxxxxxxx____________xx___|______xxxxxxxxxxxx____________xx___
+_____xxxxxxxxxxxxxxxxx_________x___|_____xxxxxxxxxxxxxxxxx_________x___
+____xxxxxxxxxxxxxxxxxxxxxx______x__|____xxxxxxxxxxxxxxxxxxxxxx______x__
+__xxxxxxxxxxxxxxxxxxxxxxxxxxxx_____|__xxxxxxxxxxxxxxxxxxxxxxxxxxxx_____
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 6, 8, 15, 2, 3, 12, 15 },
+/*
+___________________________________|___________________________________
+____________x________x_____________|____________x________x_____________
+_____________x_____xx______________|_____________x_____xx______________
+______________x_xxxx_______________|______________x_xxxx_______________
+_____________xx__xx________________|_____________xx__xx________________
+__________xxxxxx__x________________|__________xxxxxx__x________________
+_______xxxxxxxxxx_xx_______________|_______xxxxxxxxxx_xx_______________
+_____xxxxxxxxxxxx_xxx______________|_____xxxxxxxxxxxx_xxx______________
+__xxxxxxxxxxxxxx___xxx_____________|__xxxxxxxxxxxxxx___xxx_____________
+____xxxxxxxxxxx_____xx_____________|____xxxxxxxxxxx_____xx_____________
+________xxxxxx______x______________|________xxxxxx______x______________
+____________x______xxx_____________|____________x______xxx_____________
+____________xxxxx_xxxxx____________|____________xxxxx_xxxxx____________
+___________xxxxx_____xxx___________|___________xxxxx_____xxx___________
+__________xxxxx_________x__________|__________xxxxx____________________
+_________xxxx____________xxxx______|_________xxxx____________xxxx______
+________xxxx______________xxxxxxxx_|________xxxx______________xxxxxxxx_
+_______xxxxxxxx____________xxx_____|_______xxxxxxxx____________xxx_____
+______xxxxxxxxxxx________xxx_______|______xxxxxxxxxxx________xxx_______
+_____xxxxxxxxxxxxxxx_xxxxxxxx______|_____xxxxxxxxxxxxxxx_xxxxxxxx______
+_____xxxxxxxxxxxx______xxxxxxx_____|_____xxxxxxxxxxxx______xxxxxxx_____
+____xxxxxxxxx_____________xxxxx____|____xxxxxxxxx_____________xxxxx____
+___xxxxxx____________________xxx___|___xxxxxx____________________xxx___
+__xx___________________________xx__|__xx___________________________xx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kWinding_FillType, 1, 6, 9, 15, 2, 4, 11, 12 },
+/*
+___________________________________|___________________________________
+____________x________x_____________|____________x________x_____________
+_____________x_____xx______________|_____________x_____xx______________
+______________x_xxxx_______________|______________x_xxxx_______________
+_____________xx__xx________________|_____________xx__xx________________
+__________xxxxxx__x________________|__________xxxxxx__x________________
+_______xxxxxxxxxx_xx_______________|_______xxxxxxxxxx_xx_______________
+_____xxxxxxxxxxxx_xxx______________|_____xxxxxxxxxxxx_xxx______________
+__xxxxxxxxxxxxxx___xxx_____________|__xxxxxxxxxxxxxx___xxx_____________
+____xxxxxxxxxxx_____xx_____________|____xxxxxxxxxxx_____xx_____________
+________xxxxxx______x______________|________xxxxxx______x______________
+____________x______xxx_____________|____________x______xxx_____________
+____________xxxxx_xxxxx____________|____________xxxxx_xxxxx____________
+___________xxxxx_____xxx___________|___________xxxxx_____xxx___________
+__________xxxxx_________x__________|__________xxxxx____________________
+_________xxxx____________xxxx______|_________xxxx____________xxxx______
+________xxxx______________xxxxxxxx_|________xxxx______________xxxxxxxx_
+_______xxxxxxxx____________xxx_____|_______xxxxxxxx____________xxx_____
+______xxxxxxxxxxx________xxx_______|______xxxxxxxxxxx________xxx_______
+_____xxxxxxxxxxxxxxx_xxxxxxxx______|_____xxxxxxxxxxxxxxx_xxxxxxxx______
+_____xxxxxxxxxxxx______xxxxxxx_____|_____xxxxxxxxxxxx______xxxxxxx_____
+____xxxxxxxxx_____________xxxxx____|____xxxxxxxxx_____________xxxxx____
+___xxxxxx____________________xxx___|___xxxxxx____________________xxx___
+__xx___________________________xx__|__xx___________________________xx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 6, 9, 15, 2, 4, 11, 12 },
+/*
+___________________________________|___________________________________
+_____________xxxxxxxxxxxxxxxxxxx___|_____________xxxxxxxxxxxxxxxxxxx___
+___________xx___xxxxxxxxxxx________|___________xx___xxxxxxxxxxx________
+___________xxx_____xxxx____________|___________xxx_____xxxx____________
+__________xxxxx____xxx_____________|__________xxxxx____xxx_____________
+__________xxxxx_xxxxxxxx___________|__________xxxxx_xxxxxxxxx__________
+_________xx______xxxxxxxxxx________|_________x_______xxxxxxxxxx________
+______xxx_________xxxxxxxxxxxx_____|______xxx_________xxxxxxxxxxxx_____
+__xxxxxx___________xxxxxxxxxxxxxx__|__xxxxxx___________xxxxxxxxxxxxxx__
+___xxxxx____________xxxxxxxxxxxx___|___xxxxx____________xxxxxxxxxxxx___
+_____xx______________xxxxxxxxx_____|_____xx______________xxxxxxxxx_____
+______________________xxxxxx_______|______________________xxxxxx_______
+_______xx______________xxx_________|_______xx______________xxx_________
+______xxxxx________________________|______xxxxx________________________
+______xxxxxxx_________xx___________|______xxxxxxx_________xxx__________
+_____xxxxxxxxxx____xxxxxx__________|_____xxxxxxxxxx____xxxxxx__________
+_____xxxxxxxxxxxxxxxxxxxxx_________|_____xxxxxxxxxxxxxxxxxxxxx_________
+____xxxxxxxxxxx____xxxxxxxx________|____xxxxxxxxxxx____xxxxxxxx________
+____xxxxxxxxx________xxxxxxx_______|____xxxxxxxxx________xxxxxxx_______
+___xxxxxxxx_____________xxxxx______|___xxxxxxxx_____________xxxxx______
+___xxxxxx_________________xxxx_____|___xxxxxx_________________xxxx_____
+__xxxxx_____________________xxx____|__xxxxx_____________________xxx____
+__xxx_________________________xx___|__xxx_________________________xx___
+_xx_____________________________x__|_xx_____________________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 7, 7, 12, 1, 3, 4, 15 },
+/*
+___________________________________|___________________________________
+____________x____________________x_|____________x____________________x_
+_____________xxx_________________x_|_____________xxx_________________x_
+______________xxxxx_____________xx_|______________xxxxx_____________xx_
+_______________xxxxxxx__________xx_|_______________xxxxxxx__________xx_
+________________xxxxxxxx________xx_|________________xxxxxxxx________xx_
+_________________xxxxxxxxxx____xxx_|_________________xxxxxxxxxx____xxx_
+__________________xxxxxxxxxxxx_xxx_|__________________xxxxxxxxxxxx_xxx_
+___________________xxxxxxxxxxx___x_|___________________xxxxxxxxxxx___x_
+____________________xxxxxxxxxx_xxx_|____________________xxxxxxxxxx_xxx_
+_____________________xxxxx___xxxxx_|_____________________xxxxx___xxxxx_
+_____________________________xxxxx_|_____________________________xxxxx_
+__________________xxxxx_____xxxxxx_|__________________xxxxx_____xxxxxx_
+______________xxxxxxxxxx____xxxxxx_|______________xxxxxxxxxx____xxxxxx_
+__________xxxxxxxxxxxxxx___xxxxxxx_|__________xxxxxxxxxxxxxx___xxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxx__xxxxxxx_|_____xxxxxxxxxxxxxxxxxxxx__xxxxxxx_
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 7, 8, 15, 3, 3, 11, 14 },
+/*
+___________________________________|___________________________________
+____________x___________________x__|____________x___________________x__
+_____________xxx___________xxxxxx__|_____________xxx___________xxxxxx__
+______________xxxxx____xxxxxxxxx___|______________xxxxx____xxxxxxxxx___
+_______________xxxx___xxxxxxxxxx___|_______________xxxx___xxxxxxxxxx___
+_______________x________xxxxxxxx___|_______________x_________xxxxxxx___
+___________xxxxxx__________xxxx____|___________xxxxxx__________xxxx____
+______xxxxxxxxxxxx____________x____|______xxxxxxxxxxxx____________x____
+__xxxxxxxxxxxxxxxxx___________xxx__|__xxxxxxxxxxxxxxxxx___________xxx__
+____xxxxxxxxxxxxxxxx__________x____|____xxxxxxxxxxxxxxxx__________x____
+________xxxxxxxxxxxxx_____xxx______|________xxxxxxxxxxxxx_____xxx______
+____________xxxxxxxxxxxxxxxxx______|_____________xxxxxxxxxxxxxxxx______
+_________________xxxxxxxxxxx_______|_________________xxxxxxxxxxx_______
+______________xxxxxxxxxxxxxx_______|______________xxxxxxxxxxxxxx_______
+__________xxxxxxxxxxxxxx_xx________|__________xxxxxxxxxxxxxxxxx________
+_____xxxxxxxxxxxxxxxxxxxx__xx______|_____xxxxxxxxxxxxxxxxxxxx__xx______
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kWinding_FillType, 1, 7, 8, 15, 3, 4, 11, 14 },
+/*
+___________________________________|___________________________________
+____________x___________________x__|____________x___________________x__
+_____________xxx___________xxxxxx__|_____________xxx___________xxxxxx__
+______________xxxxx____xxxxxxxxx___|______________xxxxx____xxxxxxxxx___
+_______________xxxx___xxxxxxxxxx___|_______________xxxx___xxxxxxxxxx___
+_______________x________xxxxxxxx___|_______________x_________xxxxxxx___
+___________xxxxxx__________xxxx____|___________xxxxxx__________xxxx____
+______xxxxxxxxxxxx____________x____|______xxxxxxxxxxxx____________x____
+__xxxxxxxxxxxxxxxxx___________xxx__|__xxxxxxxxxxxxxxxxx___________xxx__
+____xxxxxxxxxxxxxxxx__________x____|____xxxxxxxxxxxxxxxx__________x____
+________xxxxxxxxxxxxx_____xxx______|________xxxxxxxxxxxxx_____xxx______
+____________xxxxxxxxxxxxxxxxx______|_____________xxxxxxxxxxxxxxxx______
+_________________x_____xxxxx_______|_________________x_____xxxxx_______
+______________xxxxxxx___xxxx_______|______________xxxxxxx___xxxx_______
+__________xxxxxxxxxxxxxx_xx________|__________xxxxxxxxxxxxxxxxx________
+_____xxxxxxxxxxxxxxxxxxxx__xx______|_____xxxxxxxxxxxxxxxxxxxx__xx______
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 7, 8, 15, 3, 4, 11, 14 },
+/*
+___________________________________|___________________________________
+____________x______________________|____________x______________________
+_____________xxx________________x__|_____________xxx________________x__
+______________xxxxx___________xx___|______________xxxxx___________xx___
+_______________xxxxxxx_______xxx___|_______________xxxxxxx_______xxx___
+________________xxxxxxxx___xxxxx___|________________xxxxxxxxx__xxxxx___
+_________________xxxxxxxxx_xxxx____|_________________xxxxxxxxx_xxxx____
+__________________xxxxxxx_____x____|__________________xxxxxxx_____x____
+___________________xxxx_______xxx__|___________________xxxx_______xxx__
+____________________xxxx______x____|____________________xxxx______x____
+_____________________xxxx_xxx______|_____________________xxxx_xxx______
+___________________________xx______|___________________________xx______
+__________________xxxxx____________|__________________xxxxx____________
+______________xxxxxxxxxx____x______|______________xxxxxxxxxx____x______
+__________xxxxxxxxxxxxxx___xxxx____|__________xxxxxxxxxxxxxx___xxxx____
+_____xxxxxxxxxxxxxxxxxxxx__xxxxx___|_____xxxxxxxxxxxxxxxxxxxx__xxxxx___
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kWinding_FillType, 1, 7, 8, 15, 3, 6, 11, 14 },
+/*
+___________________________________|___________________________________
+____________x______________________|____________x______________________
+_____________xxx________________x__|_____________xxx________________x__
+______________xxxxx___________xx___|______________xxxxx___________xx___
+_______________xxxxxxx_______xxx___|_______________xxxxxxx_______xxx___
+________________xxxxxxxx___xxxxx___|________________xxxxxxxxx__xxxxx___
+_________________xxxxxxxxx_xxxx____|_________________xxxxxxxxx_xxxx____
+__________________xxxxxxx_____x____|__________________xxxxxxx_____x____
+___________________xxxx_______xxx__|___________________xxxx_______xxx__
+____________________xxxx______x____|____________________xxxx______x____
+_____________________xxxx_xxx______|_____________________xxxx_xxx______
+___________________________xx______|___________________________xx______
+__________________xxxxx____________|__________________xxxxx____________
+______________xxxxxxxxxx____x______|______________xxxxxxxxxx____x______
+__________xxxxxxxxxxxxxx___xxxx____|__________xxxxxxxxxxxxxx___xxxx____
+_____xxxxxxxxxxxxxxxxxxxx__xxxxx___|_____xxxxxxxxxxxxxxxxxxxx__xxxxx___
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 7, 8, 15, 3, 6, 11, 14 },
+/*
+___________________________________|___________________________________
+____________x____________________x_|____________x____________________x_
+_____________xxx_________________x_|_____________xxx_________________x_
+______________xxxxx_____________xx_|______________xxxxx_____________xx_
+_______________xxxxxxx__________xx_|_______________xxxxxxx__________xx_
+________________xxxxxxxx________xx_|________________xxxxxxxx________xx_
+_________________xxxxxxxxxx____xxx_|_________________xxxxxxxxxx____xxx_
+__________________xxxxxxxxxxxx_xxx_|__________________xxxxxxxxxxxx_xxx_
+___________________xxxxxxxxxxx___x_|___________________xxxxxxxxxxx___x_
+____________________xxxxxxxxxx_xxx_|____________________xxxxxxxxxx_xxx_
+_____________________xxxxx___xxxxx_|_____________________xxxxx___xxxxx_
+_____________________________xxxxx_|_____________________________xxxxx_
+__________________xxxxx_____xxxxxx_|__________________xxxxx_____xxxxxx_
+______________xxxxxxxxxx____xxxxxx_|______________xxxxxxxxxx____xxxxxx_
+__________xxxxxxxxxxxxxx___xxxxxxx_|__________xxxxxxxxxxxxxx___xxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxx__xxxxxxx_|_____xxxxxxxxxxxxxxxxxxxx__xxxxxxx_
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 7, 8, 15, 3, 7, 11, 14 },
+/*
+___________________________________|___________________________________
+____________x______________________|____________x______________________
+_____________xxx___________________|_____________xxx___________________
+______________xxxxx________________|______________xxxxx________________
+_______________xxxxxxx_________x___|_______________xxxxxxx_________x___
+________________xxxxxxxx______xx___|________________xxxxxxxxx_____xx___
+_________________xxxxxxxxxx___x____|_________________xxxxxxxxxx___x____
+__________________xxxxxxxxxxx_x____|__________________xxxxxxxxxxx_x____
+___________________xxxxxxxxx__xxx__|___________________xxxxxxxxx__xxx__
+____________________xxxxxxxx__x____|____________________xxxxxxxx__x____
+_____________________xxxxx_xx______|_____________________xxxxx_xx______
+__________________________xxx______|__________________________xxx______
+__________________xxxxx___xx_______|__________________xxxxx___xx_______
+______________xxxxxxxxxx_xxx_______|______________xxxxxxxxxx_xxx_______
+__________xxxxxxxxxxxxxxxxx________|__________xxxxxxxxxxxxxxxxx________
+_____xxxxxxxxxxxxxxxxxxxxxx________|_____xxxxxxxxxxxxxxxxxxxxxx________
+_xxxxxxxxxxxxxxxxxxxxxxxxx_________|_xxxxxxxxxxxxxxxxxxxxxxxxx_________
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kWinding_FillType, 1, 7, 8, 15, 3, 10, 11, 14 },
+/*
+___________________________________|___________________________________
+____________x______________________|____________x______________________
+_____________xxx___________________|_____________xxx___________________
+______________xxxxx________________|______________xxxxx________________
+_______________xxxxxxx_________x___|_______________xxxxxxx_________x___
+________________xxxxxxxx______xx___|________________xxxxxxxxx_____xx___
+_________________xxxxxxxxxx___x____|_________________xxxxxxxxxx___x____
+__________________xxxxxxxxxxx_x____|__________________xxxxxxxxxxx_x____
+___________________xxxxxxxxx__xxx__|___________________xxxxxxxxx__xxx__
+____________________xxxxxxxx__x____|____________________xxxxxxxx__x____
+_____________________xxxxx_xx______|_____________________xxxxx_xx______
+__________________________xxx______|__________________________xxx______
+__________________xxxxx___xx_______|__________________xxxxx___xx_______
+______________xxxxxxxxxx_xxx_______|______________xxxxxxxxxx_xxx_______
+__________xxxxxxxxxxxxxxxxx________|__________xxxxxxxxxxxxxx_xx________
+_____xxxxxxxxxxxxxxxxxx__xx________|_____xxxxxxxxxxxxxxxxxx__xx________
+_xxxxxxxxxxxxxxxxxxxxxx____________|_xxxxxxxxxxxxxxxxxxxxxx____________
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 7, 8, 15, 3, 10, 11, 14 },
+/*
+___________________________________|___________________________________
+____________x____________________x_|____________x____________________x_
+_____________xxx_________________x_|_____________xxx_________________x_
+______________xxxxx_____________xx_|______________xxxxx_____________xx_
+_______________xxxxxxx__________xx_|_______________xxxxxxx__________xx_
+________________xxxxxxxx________xx_|________________xxxxxxxx________xx_
+_________________xxxxxxxxxx____xxx_|_________________xxxxxxxxxx____xxx_
+__________________xxxxxxxxxxxx_xxx_|__________________xxxxxxxxxxxx_xxx_
+___________________xxxxxxxxxxx___x_|___________________xxxxxxxxxxx___x_
+____________________xxxxxxxxxx_xxx_|____________________xxxxxxxxxx_xxx_
+_____________________xxxxx___xxxxx_|_____________________xxxxx___xxxxx_
+_____________________________xxxxx_|_____________________________xxxxx_
+__________________xxxxx_____xxxxxx_|__________________xxxxx_____xxxxxx_
+______________xxxxxxxxxx____xxxxxx_|______________xxxxxxxxxx____xxxxxx_
+__________xxxxxxxxxxxxxx___xxxxxxx_|__________xxxxxxxxxxxxxx___xxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxx__xxxxxxx_|_____xxxxxxxxxxxxxxxxxxxx__xxxxxxx_
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 7, 8, 15, 3, 11, 11, 14 },
+/*
+___________________________________|___________________________________
+____________x____________________x_|____________x____________________x_
+_____________xxx_________________x_|_____________xxx_________________x_
+______________xxxxx_____________xx_|______________xxxxx_____________xx_
+_______________xxxxxxx__________xx_|_______________xxxxxxx__________xx_
+________________xxxxxxxx________xx_|________________xxxxxxxx________xx_
+_________________xxxxxxxxxx____xxx_|_________________xxxxxxxxxx____xxx_
+__________________xxxxxxxxxxxx_xxx_|__________________xxxxxxxxxxxx_xxx_
+___________________xxxxxxxxxxx___x_|___________________xxxxxxxxxxx___x_
+____________________xxxxxxxxxx_xxx_|____________________xxxxxxxxxx_xxx_
+_____________________xxxxx___xxxxx_|_____________________xxxxx___xxxxx_
+_____________________________xxxxx_|_____________________________xxxxx_
+__________________xxxxx_____xxxxxx_|__________________xxxxx_____xxxxxx_
+______________xxxxxxxxxx____xxxxxx_|______________xxxxxxxxxx____xxxxxx_
+__________xxxxxxxxxxxxxx___xxxxxxx_|__________xxxxxxxxxxxxxx___xxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxx__xxxxxxx_|_____xxxxxxxxxxxxxxxxxxxx__xxxxxxx_
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 7, 8, 15, 3, 11, 14, 14 },
+/*
+___________________________________|___________________________________
+_____________xxxxxxxxxxxxxxxxxxx___|_____________xxxxxxxxxxxxxxxxxxx___
+___________xx___xxxxxxxxxxx________|___________xx___xxxxxxxxxxx________
+___________xxx_____xxxx____________|___________xxx_____xxxx____________
+__________xxxxx____xxx_____________|__________xxxxx____xxx_____________
+__________xxxxx_xxxxxxxx___________|__________xxxxx_xxxxxxxxx__________
+_________xx______xxxxxxxxxx________|_________x_______xxxxxxxxxx________
+______xxx_________xxxxxxxxxxxx_____|______xxx_________xxxxxxxxxxxx_____
+__xxxxxx___________xxxxxxxxxxxxxx__|__xxxxxx___________xxxxxxxxxxxxxx__
+___xxxxx____________xxxxxxxxxxxx___|___xxxxx____________xxxxxxxxxxxx___
+_____xx______________xxxxxxxxx_____|_____xx______________xxxxxxxxx_____
+______________________xxxxxx_______|______________________xxxxxx_______
+_______xx______________xxx_________|_______xx______________xxx_________
+______xxxxx________________________|______xxxxx________________________
+______xxxxxxx_________xx___________|______xxxxxxx_________xxx__________
+_____xxxxxxxxxx____xxxxxx__________|_____xxxxxxxxxx____xxxxxx__________
+_____xxxxxxxxxxxxxxxxxxxxx_________|_____xxxxxxxxxxxxxxxxxxxxx_________
+____xxxxxxxxxxx____xxxxxxxx________|____xxxxxxxxxxx____xxxxxxxx________
+____xxxxxxxxx________xxxxxxx_______|____xxxxxxxxx________xxxxxxx_______
+___xxxxxxxx_____________xxxxx______|___xxxxxxxx_____________xxxxx______
+___xxxxxx_________________xxxx_____|___xxxxxx_________________xxxx_____
+__xxxxx_____________________xxx____|__xxxxx_____________________xxx____
+__xxx_________________________xx___|__xxx_________________________xx___
+_xx_____________________________x__|_xx_____________________________x__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 1, 7, 12, 12, 1, 3, 4, 15 },
+/*
+___________________________________|___________________________________
+____________x__________xxxxxxxxxx__|____________x__________xxxxxxxxxx__
+_____________x_________xxxxxxxxx___|_____________x_________xxxxxxxxx___
+______________x_________xxxxxx_____|______________x_________xxxxxx_____
+_______________xx_______xxxxx______|_______________xx_______xxxxx______
+________________xx_______xx________|________________xx_______xx________
+_________________xxx_____x_________|_________________xxx_____x_________
+__________________xxx____x_________|__________________xxx____x_________
+___________________xxx_xxx_________|___________________xxx_xxx_________
+____________________x_xxxxx________|____________________x_xxxxx________
+__________________xx_xxxxxx________|__________________xx_xxxxxx________
+_______________xxxx___xxxxxx_______|_______________xxxx___xxxxxx_______
+____________xxxxxx_____xxxxx_______|____________xxxxxx_____xxxxx_______
+_________xxxxxxx________xxxxx______|_________xxxxxxx________xxxxx______
+_______xxxxxxxx_________xxxxx______|_______xxxxxxxx__________xxxx______
+____xxxxxxxxx____________xxxxx_____|____xxxxxxxxx____________xxxxx_____
+_xxxxxxxxxxx______________xxxx_____|_xxxxxxxxxxx______________xxxx_____
+_____xxxxxx________________xxx_____|_____xxxxxx________________xxx_____
+____________________________xxx____|____________________________xxx____
+________xxxxx________________xx____|________xxxxx________________xx____
+______xxxxxxxxxxxx____________xx___|______xxxxxxxxxxxx____________xx___
+_____xxxxxxxxxxxxxxxxx_________x___|_____xxxxxxxxxxxxxxxxx_________x___
+____xxxxxxxxxxxxxxxxxxxxxx______x__|____xxxxxxxxxxxxxxxxxxxxxx______x__
+__xxxxxxxxxxxxxxxxxxxxxxxxxxxx_____|__xxxxxxxxxxxxxxxxxxxxxxxxxxxx_____
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 2, 3, 12, 15, 1, 6, 8, 15 },
+/*
+___________________________________|___________________________________
+_xx__________________x_____________|_xx__________________x_____________
+__xxxxx____________xx______________|__xxxxx____________xx______________
+__xxxxxxxxxx____xxxx_______________|__xxxxxxxxxx____xxxx_______________
+___xxxxxxxxxx___xxx________________|___xxxxxxxxxx___xxx________________
+___xxxxxxx_________x_______________|___xxxxxxx_________x_______________
+____xxx___________xxxxxx___________|____xxx___________xxxxxx___________
+____x____________xxxxxxxxxxx_______|____x____________xxxxxxxxxxx_______
+__xx____________xxxxxxxxxxxxxxxxx__|__xxx___________xxxxxxxxxxxxxxxxx__
+__xxx__________xxxxxxxxxxxxxxxx____|__xxx__________xxxxxxxxxxxxxxxx____
+___xx_________xxxxxxxxxxxx_________|___xx_________xxxxxxxxxxxx_________
+_____x_______xxxxxxxxx_____________|_____x_______xxxxxxxxx_____________
+____________xxxxxx_________________|____________xxxxxx_________________
+_______x___xxx_____________________|_______x___xxx_____________________
+_______xx__________________________|_______xx__________________________
+_____xxx_x_________________________|_____xxx_x_________________________
+_xxxxxxxxxxx_______________________|_xxxxxxxxxxx_______________________
+__xxxxx__xx________________________|__xxxxx__xx________________________
+____xx_____________________________|____xx_____________________________
+________xx_________________________|________xx_________________________
+_____x_xxx_________________________|_____x_xxx_________________________
+____x___xxx________________________|____x___xxx________________________
+___x_____xx________________________|___x_____xx________________________
+___________________________________|___________________________________
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kWinding_FillType, 2, 4, 9, 12, 0, 7, 8, 13 },
+/*
+___________________________________|___________________________________
+_xx__________________x_____________|_xx__________________x_____________
+__xxxxx____________xx______________|__xxxxx____________xx______________
+__xxxxxxxxxx____xxxx_______________|__xxxxxxxxxx____xxxx_______________
+___xxxxxxxxxx___xxx________________|___xxxxxxxxxx___xxx________________
+___xxxxxxx_________x_______________|___xxxxxxx_________x_______________
+____xxx___________xxxxxx___________|____xxx___________xxxxxx___________
+____x____________xxxxxxxxxxx_______|____x____________xxxxxxxxxxx_______
+__xx____________xxxxxxxxxxxxxxxxx__|__xxx___________xxxxxxxxxxxxxxxxx__
+__xxx__________xxxxxxxxxxxxxxxx____|__xxx__________xxxxxxxxxxxxxxxx____
+___xx_________xxxxxxxxxxxx_________|___xx_________xxxxxxxxxxxx_________
+_____x_______xxxxxxxxx_____________|_____x_______xxxxxxxxx_____________
+____________xxxxxx_________________|____________xxxxxx_________________
+_______x___xxx_____________________|_______x___xxx_____________________
+_______xx__________________________|_______xx__________________________
+_____xxx_x_________________________|_____xxx_x_________________________
+_xxxxxxxxxxx_______________________|_xxxxxxxxxxx_______________________
+__xxxxx__xx________________________|__xxxxx__xx________________________
+____xx_____________________________|____xx_____________________________
+________xx_________________________|________xx_________________________
+_____x_xxx_________________________|_____x_xxx_________________________
+____x___xxx________________________|____x___xxx________________________
+___x_____xx________________________|___x_____xx________________________
+___________________________________|___________________________________
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 2, 4, 9, 12, 0, 7, 8, 13 },
+/*
+___________________________________|___________________________________
+____________x________x_____________|____________x________x_____________
+_____________x_____xx______________|_____________x_____xx______________
+______________x_xxxx_______________|______________x_xxxx_______________
+_____________xx__xx________________|_____________xx__xx________________
+__________xxxxxx__x________________|__________xxxxxx__x________________
+_______xxxxxxxxxx_xx_______________|_______xxxxxxxxxx_xx_______________
+_____xxxxxxxxxxxx_xxx______________|_____xxxxxxxxxxxx_xxx______________
+__xxxxxxxxxxxxxx___xxx_____________|__xxxxxxxxxxxxxx___xxx_____________
+____xxxxxxxxxxx_____xx_____________|____xxxxxxxxxxx_____xx_____________
+________xxxxxx______x______________|________xxxxxx______x______________
+____________x______xxx_____________|____________x______xxx_____________
+____________xxxxx_xxxxx____________|____________xxxxx_xxxxx____________
+___________xxxxx_____xxx___________|___________xxxxx_____xxx___________
+__________xxxxx_________x__________|__________xxxxx____________________
+_________xxxx____________xxxx______|_________xxxx____________xxxx______
+________xxxx______________xxxxxxxx_|________xxxx______________xxxxxxxx_
+_______xxxxxxxx____________xxx_____|_______xxxxxxxx____________xxx_____
+______xxxxxxxxxxx________xxx_______|______xxxxxxxxxxx________xxx_______
+_____xxxxxxxxxxxxxxx_xxxxxxxx______|_____xxxxxxxxxxxxxxx_xxxxxxxx______
+_____xxxxxxxxxxxx______xxxxxxx_____|_____xxxxxxxxxxxx______xxxxxxx_____
+____xxxxxxxxx_____________xxxxx____|____xxxxxxxxx_____________xxxxx____
+___xxxxxx____________________xxx___|___xxxxxx____________________xxx___
+__xx___________________________xx__|__xx___________________________xx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kWinding_FillType, 2, 4, 11, 12, 1, 6, 9, 15 },
+/*
+___________________________________|___________________________________
+____________x________x_____________|____________x________x_____________
+_____________x_____xx______________|_____________x_____xx______________
+______________x_xxxx_______________|______________x_xxxx_______________
+_____________xx__xx________________|_____________xx__xx________________
+__________xxxxxx__x________________|__________xxxxxx__x________________
+_______xxxxxxxxxx_xx_______________|_______xxxxxxxxxx_xx_______________
+_____xxxxxxxxxxxx_xxx______________|_____xxxxxxxxxxxx_xxx______________
+__xxxxxxxxxxxxxx___xxx_____________|__xxxxxxxxxxxxxx___xxx_____________
+____xxxxxxxxxxx_____xx_____________|____xxxxxxxxxxx_____xx_____________
+________xxxxxx______x______________|________xxxxxx______x______________
+____________x______xxx_____________|____________x______xxx_____________
+____________xxxxx_xxxxx____________|____________xxxxx_xxxxx____________
+___________xxxxx_____xxx___________|___________xxxxx_____xxx___________
+__________xxxxx_________x__________|__________xxxxx____________________
+_________xxxx____________xxxx______|_________xxxx____________xxxx______
+________xxxx______________xxxxxxxx_|________xxxx______________xxxxxxxx_
+_______xxxxxxxx____________xxx_____|_______xxxxxxxx____________xxx_____
+______xxxxxxxxxxx________xxx_______|______xxxxxxxxxxx________xxx_______
+_____xxxxxxxxxxxxxxx_xxxxxxxx______|_____xxxxxxxxxxxxxxx_xxxxxxxx______
+_____xxxxxxxxxxxx______xxxxxxx_____|_____xxxxxxxxxxxx______xxxxxxx_____
+____xxxxxxxxx_____________xxxxx____|____xxxxxxxxx_____________xxxxx____
+___xxxxxx____________________xxx___|___xxxxxx____________________xxx___
+__xx___________________________xx__|__xx___________________________xx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 2, 4, 11, 12, 1, 6, 9, 15 },
+/*
+___________________________________|___________________________________
+____________xxxxxxxxxxxxxxxxxxxxx__|____________xxxxxxxxxxxxxxxxxxxxx__
+_____________xxxxxxxxxxxxxxxxxxx___|_____________xxxxxxxxxxxxxxxxxxx___
+______________xxxxxxxxx_xxxxxx_____|______________xxxxxxxxx_xxxxxx_____
+_______________xxxxxxxx_xxxxx______|_______________xxxxxxxx_xxxxx______
+________________xxxxxxx__xx________|________________xxxxxxx__xx________
+_________________xxxxxx__x_________|_________________xxxxxx__x_________
+__________________xxxxx__x_________|__________________xxxxx__x_________
+___________________xxxxxxx_________|___________________xxxxxxx_________
+____________________x_xxxxx________|____________________x_xxxxx________
+__________________xx_xxxxxx________|__________________xx_xxxxxx________
+_______________xxxx___xxxxxx_______|_______________xxxx___xxxxxx_______
+____________xxxxxx_____xxxxx_______|____________xxxxxx_____xxxxx_______
+_________xxxxxxx________xxxxx______|_________xxxxxxx________xxxxx______
+_______xxxxxxxx_________xxxxx______|_______xxxxxxxx__________xxxx______
+____xxxxxxxxx____________xxxxx_____|____xxxxxxxxx____________xxxxx_____
+_xxxxxxxxxxx______________xxxx_____|_xxxxxxxxxxx______________xxxx_____
+_____xxxxxx________________xxx_____|_____xxxxxx________________xxx_____
+____________________________xxx____|____________________________xxx____
+________xxxxx________________xx____|________xxxxx________________xx____
+______xxxxxxxxxxxx____________xx___|______xxxxxxxxxxxx____________xx___
+_____xxxxxxxxxxxxxxxxx_________x___|_____xxxxxxxxxxxxxxxxx_________x___
+____xxxxxxxxxxxxxxxxxxxxxx______x__|____xxxxxxxxxxxxxxxxxxxxxx______x__
+__xxxxxxxxxxxxxxxxxxxxxxxxxxxx_____|__xxxxxxxxxxxxxxxxxxxxxxxxxxxx_____
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 2, 6, 8, 15, 1, 3, 12, 15 },
+/*
+___________________________________|___________________________________
+____________x____________________x_|____________x____________________x_
+_____________xxx_________________x_|_____________xxx_________________x_
+______________xxxxx_____________xx_|______________xxxxx_____________xx_
+_______________xxxxxxx__________xx_|_______________xxxxxxx__________xx_
+________________xxxxxxxx________xx_|________________xxxxxxxx________xx_
+_________________xxxxxxxxxx____xxx_|_________________xxxxxxxxxx____xxx_
+__________________xxxxxxxxxxxx_xxx_|__________________xxxxxxxxxxxx_xxx_
+___________________xxxxxxxxxxx___x_|___________________xxxxxxxxxxx___x_
+____________________xxxxxxxxxx_xxx_|____________________xxxxxxxxxx_xxx_
+_____________________xxxxx___xxxxx_|_____________________xxxxx___xxxxx_
+_____________________________xxxxx_|_____________________________xxxxx_
+__________________xxxxx_____xxxxxx_|__________________xxxxx_____xxxxxx_
+______________xxxxxxxxxx____xxxxxx_|______________xxxxxxxxxx____xxxxxx_
+__________xxxxxxxxxxxxxx___xxxxxxx_|__________xxxxxxxxxxxxxx___xxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxx__xxxxxxx_|_____xxxxxxxxxxxxxxxxxxxx__xxxxxxx_
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 3, 3, 11, 14, 1, 7, 8, 15 },
+/*
+___________________________________|___________________________________
+____________x___________________x__|____________x___________________x__
+_____________xxx___________xxxxxx__|_____________xxx___________xxxxxx__
+______________xxxxx____xxxxxxxxx___|______________xxxxx____xxxxxxxxx___
+_______________xxxx___xxxxxxxxxx___|_______________xxxx___xxxxxxxxxx___
+_______________x________xxxxxxxx___|_______________x_________xxxxxxx___
+___________xxxxxx__________xxxx____|___________xxxxxx__________xxxx____
+______xxxxxxxxxxxx____________x____|______xxxxxxxxxxxx____________x____
+__xxxxxxxxxxxxxxxxx___________xxx__|__xxxxxxxxxxxxxxxxx___________xxx__
+____xxxxxxxxxxxxxxxx__________x____|____xxxxxxxxxxxxxxxx__________x____
+________xxxxxxxxxxxxx_____xxx______|________xxxxxxxxxxxxx_____xxx______
+____________xxxxxxxxxxxxxxxxx______|_____________xxxxxxxxxxxxxxxx______
+_________________xxxxxxxxxxx_______|_________________xxxxxxxxxxx_______
+______________xxxxxxxxxxxxxx_______|______________xxxxxxxxxxxxxx_______
+__________xxxxxxxxxxxxxx_xx________|__________xxxxxxxxxxxxxxxxx________
+_____xxxxxxxxxxxxxxxxxxxx__xx______|_____xxxxxxxxxxxxxxxxxxxx__xx______
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kWinding_FillType, 3, 4, 11, 14, 1, 7, 8, 15 },
+/*
+___________________________________|___________________________________
+____________x___________________x__|____________x___________________x__
+_____________xxx___________xxxxxx__|_____________xxx___________xxxxxx__
+______________xxxxx____xxxxxxxxx___|______________xxxxx____xxxxxxxxx___
+_______________xxxx___xxxxxxxxxx___|_______________xxxx___xxxxxxxxxx___
+_______________x________xxxxxxxx___|_______________x_________xxxxxxx___
+___________xxxxxx__________xxxx____|___________xxxxxx__________xxxx____
+______xxxxxxxxxxxx____________x____|______xxxxxxxxxxxx____________x____
+__xxxxxxxxxxxxxxxxx___________xxx__|__xxxxxxxxxxxxxxxxx___________xxx__
+____xxxxxxxxxxxxxxxx__________x____|____xxxxxxxxxxxxxxxx__________x____
+________xxxxxxxxxxxxx_____xxx______|________xxxxxxxxxxxxx_____xxx______
+____________xxxxxxxxxxxxxxxxx______|_____________xxxxxxxxxxxxxxxx______
+_________________x_____xxxxx_______|_________________x_____xxxxx_______
+______________xxxxxxx___xxxx_______|______________xxxxxxx___xxxx_______
+__________xxxxxxxxxxxxxx_xx________|__________xxxxxxxxxxxxxxxxx________
+_____xxxxxxxxxxxxxxxxxxxx__xx______|_____xxxxxxxxxxxxxxxxxxxx__xx______
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 3, 4, 11, 14, 1, 7, 8, 15 },
+/*
+___________________________________|___________________________________
+____________x______________________|____________x______________________
+_____________xxx________________x__|_____________xxx________________x__
+______________xxxxx___________xx___|______________xxxxx___________xx___
+_______________xxxxxxx_______xxx___|_______________xxxxxxx_______xxx___
+________________xxxxxxxx___xxxxx___|________________xxxxxxxxx__xxxxx___
+_________________xxxxxxxxx_xxxx____|_________________xxxxxxxxx_xxxx____
+__________________xxxxxxx_____x____|__________________xxxxxxx_____x____
+___________________xxxx_______xxx__|___________________xxxx_______xxx__
+____________________xxxx______x____|____________________xxxx______x____
+_____________________xxxx_xxx______|_____________________xxxx_xxx______
+___________________________xx______|___________________________xx______
+__________________xxxxx____________|__________________xxxxx____________
+______________xxxxxxxxxx____x______|______________xxxxxxxxxx____x______
+__________xxxxxxxxxxxxxx___xxxx____|__________xxxxxxxxxxxxxx___xxxx____
+_____xxxxxxxxxxxxxxxxxxxx__xxxxx___|_____xxxxxxxxxxxxxxxxxxxx__xxxxx___
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kWinding_FillType, 3, 6, 11, 14, 1, 7, 8, 15 },
+/*
+___________________________________|___________________________________
+____________x______________________|____________x______________________
+_____________xxx________________x__|_____________xxx________________x__
+______________xxxxx___________xx___|______________xxxxx___________xx___
+_______________xxxxxxx_______xxx___|_______________xxxxxxx_______xxx___
+________________xxxxxxxx___xxxxx___|________________xxxxxxxxx__xxxxx___
+_________________xxxxxxxxx_xxxx____|_________________xxxxxxxxx_xxxx____
+__________________xxxxxxx_____x____|__________________xxxxxxx_____x____
+___________________xxxx_______xxx__|___________________xxxx_______xxx__
+____________________xxxx______x____|____________________xxxx______x____
+_____________________xxxx_xxx______|_____________________xxxx_xxx______
+___________________________xx______|___________________________xx______
+__________________xxxxx____________|__________________xxxxx____________
+______________xxxxxxxxxx____x______|______________xxxxxxxxxx____x______
+__________xxxxxxxxxxxxxx___xxxx____|__________xxxxxxxxxxxxxx___xxxx____
+_____xxxxxxxxxxxxxxxxxxxx__xxxxx___|_____xxxxxxxxxxxxxxxxxxxx__xxxxx___
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 3, 6, 11, 14, 1, 7, 8, 15 },
+/*
+___________________________________|___________________________________
+____________x____________________x_|____________x____________________x_
+_____________xxx_________________x_|_____________xxx_________________x_
+______________xxxxx_____________xx_|______________xxxxx_____________xx_
+_______________xxxxxxx__________xx_|_______________xxxxxxx__________xx_
+________________xxxxxxxx________xx_|________________xxxxxxxx________xx_
+_________________xxxxxxxxxx____xxx_|_________________xxxxxxxxxx____xxx_
+__________________xxxxxxxxxxxx_xxx_|__________________xxxxxxxxxxxx_xxx_
+___________________xxxxxxxxxxx___x_|___________________xxxxxxxxxxx___x_
+____________________xxxxxxxxxx_xxx_|____________________xxxxxxxxxx_xxx_
+_____________________xxxxx___xxxxx_|_____________________xxxxx___xxxxx_
+_____________________________xxxxx_|_____________________________xxxxx_
+__________________xxxxx_____xxxxxx_|__________________xxxxx_____xxxxxx_
+______________xxxxxxxxxx____xxxxxx_|______________xxxxxxxxxx____xxxxxx_
+__________xxxxxxxxxxxxxx___xxxxxxx_|__________xxxxxxxxxxxxxx___xxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxx__xxxxxxx_|_____xxxxxxxxxxxxxxxxxxxx__xxxxxxx_
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 3, 7, 11, 14, 1, 7, 8, 15 },
+/*
+___________________________________|___________________________________
+____________x______________________|____________x______________________
+_____________xxx___________________|_____________xxx___________________
+______________xxxxx________________|______________xxxxx________________
+_______________xxxxxxx_________x___|_______________xxxxxxx_________x___
+________________xxxxxxxx______xx___|________________xxxxxxxxx_____xx___
+_________________xxxxxxxxxx___x____|_________________xxxxxxxxxx___x____
+__________________xxxxxxxxxxx_x____|__________________xxxxxxxxxxx_x____
+___________________xxxxxxxxx__xxx__|___________________xxxxxxxxx__xxx__
+____________________xxxxxxxx__x____|____________________xxxxxxxx__x____
+_____________________xxxxx_xx______|_____________________xxxxx_xx______
+__________________________xxx______|__________________________xxx______
+__________________xxxxx___xx_______|__________________xxxxx___xx_______
+______________xxxxxxxxxx_xxx_______|______________xxxxxxxxxx_xxx_______
+__________xxxxxxxxxxxxxxxxx________|__________xxxxxxxxxxxxxxxxx________
+_____xxxxxxxxxxxxxxxxxxxxxx________|_____xxxxxxxxxxxxxxxxxxxxxx________
+_xxxxxxxxxxxxxxxxxxxxxxxxx_________|_xxxxxxxxxxxxxxxxxxxxxxxxx_________
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kWinding_FillType, 3, 10, 11, 14, 1, 7, 8, 15 },
+/*
+___________________________________|___________________________________
+____________x______________________|____________x______________________
+_____________xxx___________________|_____________xxx___________________
+______________xxxxx________________|______________xxxxx________________
+_______________xxxxxxx_________x___|_______________xxxxxxx_________x___
+________________xxxxxxxx______xx___|________________xxxxxxxxx_____xx___
+_________________xxxxxxxxxx___x____|_________________xxxxxxxxxx___x____
+__________________xxxxxxxxxxx_x____|__________________xxxxxxxxxxx_x____
+___________________xxxxxxxxx__xxx__|___________________xxxxxxxxx__xxx__
+____________________xxxxxxxx__x____|____________________xxxxxxxx__x____
+_____________________xxxxx_xx______|_____________________xxxxx_xx______
+__________________________xxx______|__________________________xxx______
+__________________xxxxx___xx_______|__________________xxxxx___xx_______
+______________xxxxxxxxxx_xxx_______|______________xxxxxxxxxx_xxx_______
+__________xxxxxxxxxxxxxxxxx________|__________xxxxxxxxxxxxxx_xx________
+_____xxxxxxxxxxxxxxxxxx__xx________|_____xxxxxxxxxxxxxxxxxx__xx________
+_xxxxxxxxxxxxxxxxxxxxxx____________|_xxxxxxxxxxxxxxxxxxxxxx____________
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 3, 10, 11, 14, 1, 7, 8, 15 },
+/*
+___________________________________|___________________________________
+____________x____________________x_|____________x____________________x_
+_____________xxx_________________x_|_____________xxx_________________x_
+______________xxxxx_____________xx_|______________xxxxx_____________xx_
+_______________xxxxxxx__________xx_|_______________xxxxxxx__________xx_
+________________xxxxxxxx________xx_|________________xxxxxxxx________xx_
+_________________xxxxxxxxxx____xxx_|_________________xxxxxxxxxx____xxx_
+__________________xxxxxxxxxxxx_xxx_|__________________xxxxxxxxxxxx_xxx_
+___________________xxxxxxxxxxx___x_|___________________xxxxxxxxxxx___x_
+____________________xxxxxxxxxx_xxx_|____________________xxxxxxxxxx_xxx_
+_____________________xxxxx___xxxxx_|_____________________xxxxx___xxxxx_
+_____________________________xxxxx_|_____________________________xxxxx_
+__________________xxxxx_____xxxxxx_|__________________xxxxx_____xxxxxx_
+______________xxxxxxxxxx____xxxxxx_|______________xxxxxxxxxx____xxxxxx_
+__________xxxxxxxxxxxxxx___xxxxxxx_|__________xxxxxxxxxxxxxx___xxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxx__xxxxxxx_|_____xxxxxxxxxxxxxxxxxxxx__xxxxxxx_
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 3, 11, 11, 14, 1, 7, 8, 15 },
+/*
+___________________________________|___________________________________
+____________x____________________x_|____________x____________________x_
+_____________xxx_________________x_|_____________xxx_________________x_
+______________xxxxx_____________xx_|______________xxxxx_____________xx_
+_______________xxxxxxx__________xx_|_______________xxxxxxx__________xx_
+________________xxxxxxxx________xx_|________________xxxxxxxx________xx_
+_________________xxxxxxxxxx____xxx_|_________________xxxxxxxxxx____xxx_
+__________________xxxxxxxxxxxx_xxx_|__________________xxxxxxxxxxxx_xxx_
+___________________xxxxxxxxxxx___x_|___________________xxxxxxxxxxx___x_
+____________________xxxxxxxxxx_xxx_|____________________xxxxxxxxxx_xxx_
+_____________________xxxxx___xxxxx_|_____________________xxxxx___xxxxx_
+_____________________________xxxxx_|_____________________________xxxxx_
+__________________xxxxx_____xxxxxx_|__________________xxxxx_____xxxxxx_
+______________xxxxxxxxxx____xxxxxx_|______________xxxxxxxxxx____xxxxxx_
+__________xxxxxxxxxxxxxx___xxxxxxx_|__________xxxxxxxxxxxxxx___xxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxx__xxxxxxx_|_____xxxxxxxxxxxxxxxxxxxx__xxxxxxx_
+_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_|_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_
+_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___|_____xxxxxxxxxxxxxxxxxxxxx_xxxxx___
+_________xxxxxxxxxxxxxxxx___xxx____|_________xxxxxxxxxxxxxxxx___xxx____
+_____________xxxxxxxxxxxx__________|_____________xxxxxxxxxxxx____x_____
+__________________xxxxxxx___xx_____|__________________xxxxxxx___xx_____
+______________________xx___xxxx____|______________________xx___xxxx____
+________________________x_xxxxxx___|________________________x_xxxxxx___
+_______________________x______xxx__|_______________________x______xxx__
+___________________________________|___________________________________
+___________________________________|___________________________________
+*/
+{ SkPath::kEvenOdd_FillType, 3, 11, 14, 14, 1, 7, 8, 15 },
+};
+
+size_t misMatchCount = sizeof(misMatches) / sizeof(misMatches[0]);
+
+void TestMismatches();
+
+void TestMismatches() {
+ SkBitmap bitmap;
+ for (size_t index = 0; index < misMatchCount; ++index) {
+ const misMatch& miss = misMatches[index];
+ int ax = miss.a & 0x03;
+ int ay = miss.a >> 2;
+ int bx = miss.b & 0x03;
+ int by = miss.b >> 2;
+ int cx = miss.c & 0x03;
+ int cy = miss.c >> 2;
+ int dx = miss.d & 0x03;
+ int dy = miss.d >> 2;
+ int ex = miss.e & 0x03;
+ int ey = miss.e >> 2;
+ int fx = miss.f & 0x03;
+ int fy = miss.f >> 2;
+ int gx = miss.g & 0x03;
+ int gy = miss.g >> 2;
+ int hx = miss.h & 0x03;
+ int hy = miss.h >> 2;
+ SkPath path, out;
+ path.setFillType(miss.fType);
+ path.moveTo(ax, ay);
+ path.lineTo(bx, by);
+ path.lineTo(cx, cy);
+ path.lineTo(dx, dy);
+ path.close();
+ path.moveTo(ex, ey);
+ path.lineTo(fx, fy);
+ path.lineTo(gx, gy);
+ path.lineTo(hx, hy);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/EdgeWalkerPolygons_Test.cpp b/chromium/third_party/skia/experimental/Intersection/EdgeWalkerPolygons_Test.cpp
new file mode 100644
index 00000000000..8cda8e6b565
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/EdgeWalkerPolygons_Test.cpp
@@ -0,0 +1,790 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "EdgeWalker_Test.h"
+#include "Intersection_Tests.h"
+#include "SkBitmap.h"
+
+static SkBitmap bitmap;
+
+static void testSimplifyTriangle() {
+ SkPath path, out;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(10,10); // triangle |\ .
+ path.lineTo(10,30); // |_\ .
+ path.lineTo(20,30);
+ path.close();
+ path.moveTo(20,10); // triangle /|
+ path.lineTo(10,30); // /_|
+ path.lineTo(20,30);
+ path.close();
+ testSimplify(path, true, out, bitmap); // expect |\/|
+ // |__|
+}
+
+static void testSimplifyTriangle3() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(3, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle4() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(2, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle5() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 1);
+ path.lineTo(2, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle6() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(0, 1);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.lineTo(3, 1);
+ path.lineTo(0, 0);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle7() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(0, 1);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 1);
+ path.lineTo(0, 2);
+ path.lineTo(0, 0);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle8() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(0, 1);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 1);
+ path.lineTo(1, 2);
+ path.lineTo(1, 3);
+ path.lineTo(0, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle9() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 1);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 1);
+ path.lineTo(2, 1);
+ path.lineTo(0, 0);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle10() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 1);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 0);
+ path.lineTo(0, 1);
+ path.lineTo(0, 0);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle11() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(0, 2);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 1);
+ path.lineTo(2, 2);
+ path.lineTo(0, 0);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle12() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 2);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(2, 0);
+ path.lineTo(0, 3);
+ path.lineTo(1, 1);
+ path.lineTo(2, 0);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle13() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(0, 3);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(0, 3);
+ path.lineTo(1, 1);
+ path.lineTo(3, 0);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle14() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(0, 1);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(0, 1);
+ path.lineTo(0, 0);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle15() {
+ SkPath path, out;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.lineTo(2, 2);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle16() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.lineTo(1, 3);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle17() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 3);
+ path.lineTo(0, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle18() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(0, 1);
+ path.lineTo(0, 3);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle19() {
+ SkPath path, out;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 1);
+ path.lineTo(2, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle20() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(2, 1);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(2, 0);
+ path.lineTo(3, 2);
+ path.lineTo(0, 3);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle21() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(2, 0);
+ path.lineTo(2, 1);
+ path.lineTo(0, 3);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyDegenerateTriangle1() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(0, 0);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyDegenerateTriangle2() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 1);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(2, 2);
+ path.lineTo(3, 3);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyWindingParallelogram() {
+ SkPath path, out;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(20,10); // parallelogram _
+ path.lineTo(30,30); // \ \ .
+ path.lineTo(40,30); // \_\ .
+ path.lineTo(30,10);
+ path.close();
+ path.moveTo(20,10); // parallelogram _
+ path.lineTo(10,30); // / /
+ path.lineTo(20,30); // /_/
+ path.lineTo(30,10);
+ path.close();
+ testSimplify(path, true, out, bitmap); // expect _
+ // / \ .
+} // /___\ .
+
+static void testSimplifyXorParallelogram() {
+ SkPath path, out;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(20,10); // parallelogram _
+ path.lineTo(30,30); // \ \ .
+ path.lineTo(40,30); // \_\ .
+ path.lineTo(30,10);
+ path.close();
+ path.moveTo(20,10); // parallelogram _
+ path.lineTo(10,30); // / /
+ path.lineTo(20,30); // /_/
+ path.lineTo(30,10);
+ path.close();
+ testSimplify(path, true, out, bitmap); // expect _
+} // \ /
+
+static void testSimplifyTriangle2() {
+ SkPath path, out;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(10,10); // triangle |\ .
+ path.lineTo(10,30); // |_\ .
+ path.lineTo(20,30);
+ path.close();
+ path.moveTo(10,10); // triangle _
+ path.lineTo(20,10); // \ |
+ path.lineTo(20,30); // \|
+ path.close(); // _
+ testSimplify(path, true, out, bitmap); // expect | |
+} // |_|
+
+#if 0
+static void testPathTriangleRendering() {
+ SkPath one, two;
+ one.moveTo(0, 0);
+ one.lineTo(3, 3);
+ one.lineTo(0, 3);
+ one.lineTo(1, 2);
+ one.close();
+ for (float x = .1f; x <= 2.9ff; x += .1f) {
+ SkDebugf("%s x=%g\n", __FUNCTION__, x);
+ two.moveTo(0, 0);
+ two.lineTo(x, x);
+ two.lineTo(3, 3);
+ two.lineTo(0, 3);
+ two.lineTo(1, 2);
+ two.close();
+ comparePaths(one, two);
+ two.reset();
+ }
+}
+#endif
+
+static void simplify(const char* functionName, const SkPath& path,
+ bool fill, SkPath& out) {
+ if (false) SkDebugf("%s\n", functionName);
+ simplify(path, fill, out);
+}
+
+static void testSimplifySkinnyTriangle1() {
+ for (int x = 1; x < 255; ++x) {
+ SkPath path, out;
+ path.moveTo((x * 101) % 10, 0);
+ path.lineTo((x * 91) % 10, 1000);
+ path.lineTo((x * 71) % 10, 2000);
+ path.lineTo((x * 51) % 10, 3000);
+ path.close();
+ path.moveTo((x * 101) % 20, 0);
+ path.lineTo((x * 91) % 20, 1000);
+ path.lineTo((x * 71) % 20, 2000);
+ path.lineTo((x * 51) % 20, 3000);
+ path.close();
+ path.moveTo((x * 101) % 30, 0);
+ path.lineTo((x * 91) % 30, 1000);
+ path.lineTo((x * 71) % 30, 2000);
+ path.lineTo((x * 51) % 30, 3000);
+ path.close();
+ simplify(path, true, out);
+ }
+}
+
+static void testSimplifySkinnyTriangle2() {
+ SkPath path, out;
+#if 01
+path.moveTo(591.091064f, 627.534851f);
+path.lineTo(541.088135f, 560.707642f);
+path.lineTo(491.085175f, 493.880310f);
+path.lineTo(441.082214f, 427.053101f);
+//path.lineTo(591.091064f, 627.534851f);
+path.close();
+#endif
+path.moveTo(317.093445f, 592.013306f);
+path.lineTo(366.316162f, 542.986572f);
+path.lineTo(416.051514f, 486.978577f);
+path.lineTo(465.786865f, 430.970581f);
+//path.lineTo(317.093445f, 592.013306f);
+path.close();
+#if 0
+path.moveTo(289.392517f, 517.138489f);
+path.lineTo(249.886078f, 508.598022f);
+path.lineTo(217.110916f, 450.916443f);
+path.lineTo(196.621033f, 394.917633f);
+//path.lineTo(289.392517f, 517.138489f);
+path.close();
+#endif
+ simplify(__FUNCTION__, path, true, out);
+}
+
+static void testSimplifySkinnyTriangle3() {
+ SkPath path, out;
+ path.moveTo(591, 627.534851f);
+ path.lineTo(541, 560.707642f);
+ path.lineTo(491, 493.880310f);
+ path.lineTo(441, 427.053101f);
+ path.close();
+ path.moveTo(317, 592.013306f);
+ path.lineTo(366, 542.986572f);
+ path.lineTo(416, 486.978577f);
+ path.lineTo(465, 430.970581f);
+ path.close();
+ simplify(__FUNCTION__, path, true, out);
+}
+
+static void testSimplifySkinnyTriangle4() {
+ SkPath path, out;
+path.moveTo(572.655212f, 614.959961f);
+path.lineTo(524.618896f, 549.339600f);
+path.lineTo(476.582581f, 483.719269f);
+path.lineTo(428.546265f, 418.098938f);
+path.lineTo(572.655212f, 614.959961f);
+path.close();
+path.moveTo(312.166382f, 583.723083f);
+path.lineTo(361.047791f, 529.824219f);
+path.lineTo(409.929230f, 475.925354f);
+path.lineTo(458.810669f, 422.026520f);
+path.lineTo(312.166382f, 583.723083f);
+path.close();
+path.moveTo(278.742737f, 508.065643f);
+path.lineTo(241.475800f, 493.465118f);
+path.lineTo(210.344177f, 437.315125f);
+path.lineTo(197.019455f, 383.794556f);
+path.lineTo(278.742737f, 508.065643f);
+path.close();
+ simplify(__FUNCTION__, path, true, out);
+}
+
+static void testSimplifySkinnyTriangle5() {
+ SkPath path, out;
+path.moveTo(554.690613f, 602.286072f);
+path.lineTo(508.590057f, 537.906250f);
+path.lineTo(462.489441f, 473.526520f);
+path.lineTo(416.388855f, 409.146729f);
+path.lineTo(554.690613f, 602.286072f);
+path.close();
+path.moveTo(307.216949f, 575.189270f);
+path.lineTo(355.826965f, 516.804688f);
+path.lineTo(403.815918f, 464.990753f);
+path.lineTo(451.804871f, 413.176819f);
+path.lineTo(307.216949f, 575.189270f);
+path.close();
+path.moveTo(271.998901f, 521.301025f);
+path.lineTo(234.619705f, 499.687683f);
+path.lineTo(203.059692f, 441.332336f);
+path.lineTo(195.994370f, 386.856506f);
+path.lineTo(271.998901f, 521.301025f);
+path.close();
+ simplify(__FUNCTION__, path, true, out);
+}
+
+static void testSimplifySkinnyTriangle6() {
+ SkPath path, out;
+path.moveTo(591.091064f, 627.534851f);
+path.lineTo(541.088135f, 560.707642f);
+path.lineTo(491.085175f, 493.880310f);
+path.lineTo(441.082214f, 427.053101f);
+path.lineTo(591.091064f, 627.534851f);
+path.close();
+path.moveTo(317.093445f, 592.013306f);
+path.lineTo(366.316162f, 542.986572f);
+path.lineTo(416.051514f, 486.978577f);
+path.lineTo(465.786865f, 430.970581f);
+path.lineTo(317.093445f, 592.013306f);
+path.close();
+path.moveTo(289.392517f, 517.138489f);
+path.lineTo(249.886078f, 508.598022f);
+path.lineTo(217.110916f, 450.916443f);
+path.lineTo(196.621033f, 394.917633f);
+path.lineTo(289.392517f, 517.138489f);
+path.close();
+ simplify(__FUNCTION__, path, true, out);
+}
+
+static void testSimplifyTriangle22() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(0, 2);
+ path.lineTo(0, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle23() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.lineTo(1, 2);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyTriangle24() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(0, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifySkinnyTriangle7() {
+ SkPath path, out;
+path.moveTo(487.502319f, 550.811279f);
+path.lineTo(448.826050f, 491.720123f);
+path.lineTo(410.149780f, 432.628967f);
+path.lineTo(371.473572f, 373.537781f);
+path.lineTo(487.502319f, 550.811279f);
+path.close();
+path.moveTo(295.817108f, 532.655579f);
+path.lineTo(342.896271f, 485.912292f);
+path.lineTo(389.975433f, 439.169006f);
+path.lineTo(437.054596f, 392.425781f);
+path.lineTo(295.817108f, 532.655579f);
+path.close();
+path.moveTo(239.726822f, 575.025269f);
+path.lineTo(204.117569f, 521.429688f);
+path.lineTo(171.275452f, 454.110382f);
+path.lineTo(193.328583f, 397.859497f);
+path.lineTo(239.726822f, 575.025269f);
+path.close();
+ simplify(__FUNCTION__, path, true, out);
+}
+
+static void testSimplifySkinnyTriangle8() {
+ SkPath path, out;
+path.moveTo(441.943115f, 511.678040f);
+path.lineTo(408.487549f, 456.880920f);
+path.lineTo(375.031952f, 402.083801f);
+path.lineTo(341.576385f, 347.286682f);
+path.lineTo(441.943115f, 511.678040f);
+path.close();
+path.moveTo(297.548492f, 557.246704f);
+path.lineTo(350.768494f, 507.627014f);
+path.lineTo(403.988525f, 458.007385f);
+path.lineTo(457.208527f, 408.387695f);
+path.lineTo(297.548492f, 557.246704f);
+path.close();
+path.moveTo(209.857895f, 615.802979f);
+path.lineTo(178.249481f, 534.230347f);
+path.lineTo(144.905640f, 460.056824f);
+path.lineTo(192.953125f, 404.972900f);
+path.lineTo(209.857895f, 615.802979f);
+path.close();
+ simplify(__FUNCTION__, path, true, out);
+}
+
+static void testSimplifySkinnyTriangle9() {
+ SkPath path, out;
+path.moveTo(439.867065f, 528.291931f);
+path.lineTo(405.413025f, 469.107178f);
+path.lineTo(370.958954f, 409.922363f);
+path.lineTo(336.504883f, 350.737610f);
+path.lineTo(439.867065f, 528.291931f);
+path.close();
+path.moveTo(298.922455f, 573.251953f);
+path.lineTo(356.360962f, 521.905090f);
+path.lineTo(413.799438f, 470.558228f);
+path.lineTo(471.237915f, 419.211365f);
+path.lineTo(298.922455f, 573.251953f);
+path.close();
+path.moveTo(187.200775f, 643.035156f);
+path.lineTo(159.713165f, 540.993774f);
+path.lineTo(126.257164f, 462.198517f);
+path.lineTo(193.534012f, 409.266235f);
+path.lineTo(187.200775f, 643.035156f);
+path.close();
+path.close();
+ simplify(__FUNCTION__, path, true, out);
+}
+
+static void testSimplifySkinnyTriangle10() {
+ SkPath path, out;
+#if 0
+path.moveTo(99.270325f, 239.365234f);
+path.lineTo(105.967056f, 173.361206f);
+path.lineTo(148.821381f, 141.309891f);
+path.lineTo(159.101013f, 189.235138f);
+path.lineTo(99.270325f, 239.365234f);
+path.close();
+#endif
+path.moveTo(213.673737f, 413.292938f);
+path.lineTo(225.200134f, 343.616821f);
+path.lineTo(236.726532f, 273.940704f);
+path.lineTo(219.386414f, 231.373322f);
+path.lineTo(213.673737f, 413.292938f);
+path.close();
+path.moveTo(43.485352f, 308.984497f);
+path.lineTo(122.610657f, 305.950134f);
+path.lineTo(201.735962f, 302.915802f);
+path.lineTo(280.861267f, 299.881470f);
+path.lineTo(43.485352f, 308.984497f);
+path.close();
+ simplify(__FUNCTION__, path, true, out);
+}
+
+static void testSimplifySkinnyTriangle11() {
+ SkPath path, out;
+path.moveTo(-177.878387f, 265.368988f);
+path.lineTo(-254.415771f, 303.709961f);
+path.lineTo(-317.465363f, 271.325562f);
+path.lineTo(-374.520386f, 207.507660f);
+path.lineTo(-177.878387f, 265.368988f);
+path.close();
+path.moveTo(-63.582489f, -3.679123f);
+path.lineTo(-134.496841f, 26.434566f);
+path.lineTo(-205.411209f, 56.548256f);
+path.lineTo(-276.325562f, 86.661942f);
+path.lineTo(-63.582489f, -3.679123f);
+path.close();
+path.moveTo(-57.078423f, 162.633453f);
+path.lineTo(-95.963928f, 106.261139f);
+path.lineTo(-134.849457f, 49.888824f);
+path.lineTo(-173.734955f, -6.483480f);
+path.lineTo(-57.078423f, 162.633453f);
+path.close();
+ simplify(__FUNCTION__, path, true, out);
+}
+
+static void testSimplifySkinnyTriangle12() {
+ SkPath path, out;
+path.moveTo(98.666489f, -94.295059f);
+path.lineTo(156.584320f, -61.939133f);
+path.lineTo(174.672974f, -12.343765f);
+path.lineTo(158.622345f, 52.028267f);
+path.lineTo(98.666489f, -94.295059f);
+path.close();
+path.moveTo(-133.225616f, -48.622055f);
+path.lineTo(-73.855499f, -10.375397f);
+path.lineTo(-14.485367f, 27.871277f);
+path.lineTo(44.884750f, 66.117935f);
+path.lineTo(-133.225616f, -48.622055f);
+path.close();
+path.moveTo( 9.030045f, -163.413132f);
+path.lineTo(-19.605331f, -89.588760f);
+path.lineTo(-48.240707f, -15.764404f);
+path.lineTo(-76.876053f, 58.059944f);
+path.lineTo( 9.030045f, -163.413132f);
+path.close();
+ simplify(__FUNCTION__, path, true, out);
+}
+
+static void testSimplifySkinnyTriangle13() {
+ SkPath path, out;
+path.moveTo(340.41568f, -170.97171f);
+path.lineTo(418.846893f, -142.428329f);
+path.lineTo(497.278107f, -113.884933f);
+path.lineTo(449.18222f, -45.6723022f);
+path.lineTo(340.41568f, -170.97171f);
+path.close();
+path.moveTo(326.610535f, 34.0393639f);
+path.lineTo(371.334595f, -14.9620667f);
+path.lineTo(416.058624f, -63.9634857f);
+path.lineTo(460.782654f, -112.96492f);
+path.lineTo(326.610535f, 34.0393639f);
+path.close();
+ simplify(__FUNCTION__, path, true, out);
+}
+
+static void (*simplifyTests[])() = {
+ testSimplifySkinnyTriangle13,
+ testSimplifySkinnyTriangle12,
+ testSimplifySkinnyTriangle11,
+ testSimplifySkinnyTriangle10,
+ testSimplifySkinnyTriangle9,
+ testSimplifySkinnyTriangle8,
+ testSimplifySkinnyTriangle7,
+ testSimplifySkinnyTriangle6,
+ testSimplifySkinnyTriangle5,
+ testSimplifySkinnyTriangle4,
+ testSimplifySkinnyTriangle3,
+ testSimplifySkinnyTriangle2,
+ testSimplifySkinnyTriangle1,
+ testSimplifyTriangle24,
+ testSimplifyTriangle23,
+ testSimplifyTriangle22,
+ testSimplifyDegenerateTriangle2,
+ testSimplifyDegenerateTriangle1,
+ testSimplifyTriangle21,
+ testSimplifyTriangle20,
+ testSimplifyTriangle19,
+ testSimplifyTriangle18,
+ testSimplifyTriangle17,
+ testSimplifyTriangle16,
+ testSimplifyTriangle15,
+ testSimplifyTriangle14,
+ testSimplifyTriangle13,
+ testSimplifyTriangle12,
+ testSimplifyTriangle11,
+ testSimplifyTriangle10,
+ testSimplifyTriangle7,
+ testSimplifyTriangle9,
+ testSimplifyTriangle8,
+ testSimplifyTriangle6,
+ testSimplifyTriangle5,
+ testSimplifyTriangle4,
+ testSimplifyTriangle3,
+ testSimplifyTriangle,
+ testSimplifyTriangle2,
+ testSimplifyWindingParallelogram,
+ testSimplifyXorParallelogram,
+// testPathTriangleRendering,
+};
+
+static size_t simplifyTestsCount = sizeof(simplifyTests) / sizeof(simplifyTests[0]);
+
+static void (*firstTest)() = testSimplifySkinnyTriangle12;
+
+void SimplifyPolygonPaths_Test() {
+ size_t index = 0;
+ if (firstTest) {
+ while (index < simplifyTestsCount && simplifyTests[index] != firstTest) {
+ ++index;
+ }
+ }
+ bool firstTestComplete = false;
+ for ( ; index < simplifyTestsCount; ++index) {
+ (*simplifyTests[index])();
+ if (simplifyTests[index] == testSimplifySkinnyTriangle2) {
+ if (false) SkDebugf("%s last fast skinny test\n", __FUNCTION__);
+ }
+ firstTestComplete = true;
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/EdgeWalkerQuadralaterals_Test.cpp b/chromium/third_party/skia/experimental/Intersection/EdgeWalkerQuadralaterals_Test.cpp
new file mode 100644
index 00000000000..92e474b84a9
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/EdgeWalkerQuadralaterals_Test.cpp
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "EdgeWalker_Test.h"
+#include "Intersection_Tests.h"
+#include "SkBitmap.h"
+
+static SkBitmap bitmap;
+
+static void testSimplifyQuad1() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(3, 2);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 3);
+ path.lineTo(1, 3);
+ path.lineTo(1, 3);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyQuad2() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 1);
+ path.lineTo(0, 1);
+ path.lineTo(1, 1);
+ path.lineTo(0, 2);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyQuad3() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 1);
+ path.lineTo(1, 1);
+ path.lineTo(2, 1);
+ path.lineTo(0, 2);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyQuad4() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 1);
+ path.lineTo(3, 1);
+ path.lineTo(3, 3);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyQuad5() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(0, 1);
+ path.lineTo(1, 1);
+ path.lineTo(2, 1);
+ path.lineTo(0, 2);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyQuad6() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 1);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(1, 1);
+ path.lineTo(1, 1);
+ path.lineTo(1, 1);
+ path.lineTo(2, 2);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void (*simplifyTests[])() = {
+ testSimplifyQuad6,
+ testSimplifyQuad5,
+ testSimplifyQuad4,
+ testSimplifyQuad3,
+ testSimplifyQuad2,
+ testSimplifyQuad1,
+};
+
+static size_t simplifyTestsCount = sizeof(simplifyTests) / sizeof(simplifyTests[0]);
+
+static void (*firstTest)() = 0;
+
+void SimplifyQuadralateralPaths_Test() {
+ size_t index = 0;
+ if (firstTest) {
+ while (index < simplifyTestsCount && simplifyTests[index] != firstTest) {
+ ++index;
+ }
+ }
+ for ( ; index < simplifyTestsCount; ++index) {
+ (*simplifyTests[index])();
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/EdgeWalkerQuadratic4x4_Test.cpp b/chromium/third_party/skia/experimental/Intersection/EdgeWalkerQuadratic4x4_Test.cpp
new file mode 100644
index 00000000000..a55f6ab9a4d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/EdgeWalkerQuadratic4x4_Test.cpp
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "EdgeWalker_Test.h"
+#include "Intersection_Tests.h"
+#include "SkBitmap.h"
+#include "SkCanvas.h"
+
+
+static void* testSimplify4x4QuadraticsMain(void* data)
+{
+ SkASSERT(data);
+ State4& state = *(State4*) data;
+ char pathStr[1024];
+ bzero(pathStr, sizeof(pathStr));
+ do {
+ int ax = state.a & 0x03;
+ int ay = state.a >> 2;
+ int bx = state.b & 0x03;
+ int by = state.b >> 2;
+ int cx = state.c & 0x03;
+ int cy = state.c >> 2;
+ int dx = state.d & 0x03;
+ int dy = state.d >> 2;
+ for (int e = 0 ; e < 16; ++e) {
+ int ex = e & 0x03;
+ int ey = e >> 2;
+ for (int f = e ; f < 16; ++f) {
+ int fx = f & 0x03;
+ int fy = f >> 2;
+ for (int g = f ; g < 16; ++g) {
+ int gx = g & 0x03;
+ int gy = g >> 2;
+ for (int h = g ; h < 16; ++h) {
+ int hx = h & 0x03;
+ int hy = h >> 2;
+ SkPath path, out;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(ax, ay);
+ path.quadTo(bx, by, cx, cy);
+ path.lineTo(dx, dy);
+ path.close();
+ path.moveTo(ex, ey);
+ path.lineTo(fx, fy);
+ path.quadTo(gx, gy, hx, hy);
+ path.close();
+ if (1) { // gdb: set print elements 400
+ char* str = pathStr;
+ str += sprintf(str, " path.moveTo(%d, %d);\n", ax, ay);
+ str += sprintf(str, " path.quadTo(%d, %d, %d, %d);\n", bx, by, cx, cy);
+ str += sprintf(str, " path.lineTo(%d, %d);\n", dx, dy);
+ str += sprintf(str, " path.close();\n");
+ str += sprintf(str, " path.moveTo(%d, %d);\n", ex, ey);
+ str += sprintf(str, " path.lineTo(%d, %d);\n", fx, fy);
+ str += sprintf(str, " path.quadTo(%d, %d, %d, %d);\n", gx, gy, hx, hy);
+ str += sprintf(str, " path.close();\n");
+ }
+ outputProgress(state, pathStr, SkPath::kWinding_FillType);
+ testSimplifyx(path, false, out, state, pathStr);
+ state.testsRun++;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ outputProgress(state, pathStr, SkPath::kEvenOdd_FillType);
+ testSimplifyx(path, true, out, state, pathStr);
+ state.testsRun++;
+ }
+ }
+ }
+ }
+ } while (runNextTestSet(state));
+ return NULL;
+}
+
+void Simplify4x4QuadraticsThreaded_Test(int& testsRun)
+{
+ SkDebugf("%s\n", __FUNCTION__);
+#ifdef SK_DEBUG
+ gDebugMaxWindSum = 4; // FIXME: 3?
+ gDebugMaxWindValue = 4;
+#endif
+ const char testStr[] = "testQuadratic";
+ initializeTests(testStr, sizeof(testStr));
+ int testsStart = testsRun;
+ int a = 0;
+#define SKIP_A 0
+#if SKIP_A
+ a = 2;
+#endif
+ for (; a < 16; ++a) {
+ for (int b = a ; b < 16; ++b) {
+ for (int c = b ; c < 16; ++c) {
+ for (int d = c; d < 16; ++d) {
+ testsRun += dispatchTest4(testSimplify4x4QuadraticsMain,
+ a, b, c, d);
+ }
+ if (!gRunTestsInOneThread) SkDebugf(".");
+ }
+ if (!gRunTestsInOneThread) SkDebugf("%d", b);
+ }
+ if (!gRunTestsInOneThread) SkDebugf("\n%d", a);
+ }
+ testsRun += waitForCompletion();
+ SkDebugf("%s tests=%d total=%d\n", __FUNCTION__, testsRun - testsStart, testsRun);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/EdgeWalkerQuadratics_Test.cpp b/chromium/third_party/skia/experimental/Intersection/EdgeWalkerQuadratics_Test.cpp
new file mode 100644
index 00000000000..febc9722595
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/EdgeWalkerQuadratics_Test.cpp
@@ -0,0 +1,284 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "EdgeWalker_Test.h"
+#include "Intersection_Tests.h"
+#include "SkBitmap.h"
+
+static SkBitmap bitmap;
+
+static void testSimplifyQuadratic1() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.quadTo(0, 0, 0, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyQuadratic2() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(20, 0, 20, 20);
+ path.close();
+ path.moveTo(20, 0);
+ path.quadTo(0, 0, 0, 20);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyQuadratic3() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(20, 0, 20, 20);
+ path.close();
+ path.moveTo(0, 20);
+ path.quadTo(0, 0, 20, 0);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyQuadratic4() {
+ SkPath path, out;
+ path.moveTo(0, 20);
+ path.quadTo(20, 0, 40, 20);
+ path.close();
+ path.moveTo(40, 10);
+ path.quadTo(20, 30, 0, 10);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+
+static void testSimplifyQuadratic5() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(0, 0, 0, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+
+static void testSimplifyQuadratic6() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(1, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+
+static void testSimplifyQuadratic7() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 2);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+
+static void testSimplifyQuadratic8() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 2);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+
+static void testSimplifyQuadratic9() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 2, 2);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+
+static void testSimplifyQuadratic10() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.quadTo(1, 1, 1, 2);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+
+static void testSimplifyQuadratic11() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 1);
+ path.quadTo(2, 2, 3, 3);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+
+static void testSimplifyQuadratic12() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(0, 2);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(3, 0);
+ path.quadTo(1, 1, 0, 2);
+ path.lineTo(3, 0);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+
+static void testSimplifyQuadratic13() {
+ SkPath path, out;
+path.moveTo(0, 0);
+path.quadTo(0, 0, 1, 0);
+path.lineTo(1, 1);
+path.lineTo(0, 0);
+path.close();
+path.moveTo(0, 0);
+path.quadTo(3, 0, 1, 1);
+path.lineTo(0, 0);
+path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+
+static void testSimplifyQuadratic14() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(0, 1, 2, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+
+static void testSimplifyQuadratic15() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 3);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(0, 1);
+ path.lineTo(1, 1);
+ path.quadTo(0, 3, 3, 3);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+
+static void testSimplifyQuadratic16() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+
+static void testSimplifyQuadratic17() {
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(0, 1);
+ path.lineTo(0, 1);
+ path.quadTo(2, 1, 3, 3);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+
+static void (*simplifyTests[])() = {
+ testSimplifyQuadratic17,
+ testSimplifyQuadratic16,
+ testSimplifyQuadratic15,
+ testSimplifyQuadratic14,
+ testSimplifyQuadratic13,
+ testSimplifyQuadratic12,
+ testSimplifyQuadratic11,
+ testSimplifyQuadratic10,
+ testSimplifyQuadratic9,
+ testSimplifyQuadratic8,
+ testSimplifyQuadratic7,
+ testSimplifyQuadratic6,
+ testSimplifyQuadratic5,
+ testSimplifyQuadratic4,
+ testSimplifyQuadratic3,
+ testSimplifyQuadratic2,
+ testSimplifyQuadratic1,
+};
+
+static size_t simplifyTestsCount = sizeof(simplifyTests) / sizeof(simplifyTests[0]);
+
+static void (*firstTest)() = testSimplifyQuadratic14;
+static bool skipAll = false;
+
+void SimplifyQuadraticPaths_Test() {
+ if (skipAll) {
+ return;
+ }
+ size_t index = 0;
+ if (firstTest) {
+ while (index < simplifyTestsCount && simplifyTests[index] != firstTest) {
+ ++index;
+ }
+ }
+ bool firstTestComplete = false;
+ for ( ; index < simplifyTestsCount; ++index) {
+ (*simplifyTests[index])();
+ if (simplifyTests[index] == testSimplifyQuadratic1) {
+ SkDebugf("%s last fast quad test\n", __FUNCTION__);
+ }
+ firstTestComplete = true;
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/EdgeWalkerRectangles_Test.cpp b/chromium/third_party/skia/experimental/Intersection/EdgeWalkerRectangles_Test.cpp
new file mode 100644
index 00000000000..5f1b7f876be
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/EdgeWalkerRectangles_Test.cpp
@@ -0,0 +1,469 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "EdgeWalker_Test.h"
+#include "Intersection_Tests.h"
+#include "SkBitmap.h"
+
+static SkBitmap bitmap;
+
+static void testSimplifyCoincidentInner() {
+ SkPath path, out;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.addRect(10, 10, 60, 60, SkPath::kCCW_Direction);
+ path.addRect(20, 20, 50, 50, SkPath::kCW_Direction);
+ path.addRect(20, 30, 40, 40, SkPath::kCW_Direction);
+ testSimplify(path, true, out, bitmap);
+}
+
+static void testSimplifyCoincidentVertical() {
+ SkPath path, out;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.addRect(10, 10, 30, 30);
+ path.addRect(10, 30, 30, 40);
+ simplify(path, true, out);
+ SkRect rect;
+ if (!out.isRect(&rect)) {
+ SkDebugf("%s expected rect\n", __FUNCTION__);
+ }
+ if (rect != SkRect::MakeLTRB(10, 10, 30, 40)) {
+ SkDebugf("%s expected union\n", __FUNCTION__);
+ }
+}
+
+static void testSimplifyCoincidentHorizontal() {
+ SkPath path, out;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.addRect(10, 10, 30, 30);
+ path.addRect(30, 10, 40, 30);
+ simplify(path, true, out);
+ SkRect rect;
+ if (!out.isRect(&rect)) {
+ SkDebugf("%s expected rect\n", __FUNCTION__);
+ }
+ if (rect != SkRect::MakeLTRB(10, 10, 40, 30)) {
+ SkDebugf("%s expected union\n", __FUNCTION__);
+ }
+}
+
+static void testSimplifyMulti() {
+ SkPath path, out;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.addRect(10, 10, 30, 30);
+ path.addRect(20, 20, 40, 40);
+ simplify(path, true, out);
+ SkPath expected;
+ expected.setFillType(SkPath::kEvenOdd_FillType);
+ expected.moveTo(10,10); // two cutout corners
+ expected.lineTo(10,30);
+ expected.lineTo(20,30);
+ expected.lineTo(20,40);
+ expected.lineTo(40,40);
+ expected.lineTo(40,20);
+ expected.lineTo(30,20);
+ expected.lineTo(30,10);
+ expected.lineTo(10,10);
+ expected.close();
+ if (out != expected) {
+ SkDebugf("%s expected equal\n", __FUNCTION__);
+ }
+
+ path = out;
+ path.addRect(30, 10, 40, 20);
+ path.addRect(10, 30, 20, 40);
+ simplify(path, true, out);
+ SkRect rect;
+ if (!out.isRect(&rect)) {
+ SkDebugf("%s expected rect\n", __FUNCTION__);
+ }
+ if (rect != SkRect::MakeLTRB(10, 10, 40, 40)) {
+ SkDebugf("%s expected union\n", __FUNCTION__);
+ }
+
+ path = out;
+ path.addRect(10, 10, 40, 40, SkPath::kCCW_Direction);
+ simplify(path, true, out);
+ if (!out.isEmpty()) {
+ SkDebugf("%s expected empty\n", __FUNCTION__);
+ }
+}
+
+static void testSimplifyAddL() {
+ SkPath path, out;
+ path.moveTo(10,10); // 'L' shape
+ path.lineTo(10,40);
+ path.lineTo(40,40);
+ path.lineTo(40,20);
+ path.lineTo(30,20);
+ path.lineTo(30,10);
+ path.lineTo(10,10);
+ path.close();
+ path.addRect(30, 10, 40, 20); // missing notch of 'L'
+ simplify(path, true, out);
+ SkRect rect;
+ if (!out.isRect(&rect)) {
+ SkDebugf("%s expected rect\n", __FUNCTION__);
+ }
+ if (rect != SkRect::MakeLTRB(10, 10, 40, 40)) {
+ SkDebugf("%s expected union\n", __FUNCTION__);
+ }
+}
+
+static void testSimplifyCoincidentCCW() {
+ SkPath path, out;
+ path.addRect(10, 10, 40, 40, SkPath::kCCW_Direction);
+ path.addRect(10, 10, 40, 40, SkPath::kCCW_Direction);
+ simplify(path, true, out);
+ SkRect rect;
+ if (!out.isRect(&rect)) {
+ SkDebugf("%s expected rect\n", __FUNCTION__);
+ }
+ if (rect != SkRect::MakeLTRB(10, 10, 40, 40)) {
+ SkDebugf("%s expected union\n", __FUNCTION__);
+ }
+}
+
+static void testSimplifyCoincidentCW() {
+ SkPath path, out;
+ path.addRect(10, 10, 40, 40, SkPath::kCCW_Direction);
+ path.addRect(10, 10, 40, 40, SkPath::kCW_Direction);
+ simplify(path, true, out);
+ if (!out.isEmpty()) {
+ SkDebugf("%s expected empty\n", __FUNCTION__);
+ }
+}
+
+static void testSimplifyCorner() {
+ SkPath path, out;
+ path.addRect(10, 10, 20, 20, SkPath::kCCW_Direction);
+ path.addRect(20, 20, 40, 40, SkPath::kCW_Direction);
+ simplify(path, true, out);
+ SkTDArray<SkRect> boundsArray;
+ contourBounds(out, boundsArray);
+ if (boundsArray.count() != 2) {
+ SkDebugf("%s expected 2 contours\n", __FUNCTION__);
+ return;
+ }
+ SkRect one = SkRect::MakeLTRB(10, 10, 20, 20);
+ SkRect two = SkRect::MakeLTRB(20, 20, 40, 40);
+ if ((boundsArray[0] != one && boundsArray[0] != two)
+ || (boundsArray[1] != one && boundsArray[1] != two)) {
+ SkDebugf("%s expected match\n", __FUNCTION__);
+ }
+}
+
+static void testSimplifyDiagonal() {
+ SkRect rect2 = SkRect::MakeXYWH(10, 10, 10, 10);
+ for (size_t outDir = SkPath::kCW_Direction; outDir <= SkPath::kCCW_Direction; ++outDir) {
+ for (size_t inDir = SkPath::kCW_Direction; inDir <= SkPath::kCCW_Direction; ++inDir) {
+ for (int x = 0; x <= 20; x += 20) {
+ for (int y = 0; y <= 20; y += 20) {
+ SkPath path, out;
+ SkRect rect1 = SkRect::MakeXYWH(x, y, 10, 10);
+ path.addRect(rect1, static_cast<SkPath::Direction>(outDir));
+ path.addRect(rect2, static_cast<SkPath::Direction>(inDir));
+ simplify(path, true, out);
+ SkPath::Iter iter(out, false);
+ SkPoint pts[4], lastLine[2];
+ SkPath::Verb verb;
+ SkRect bounds[2];
+ bounds[0].setEmpty();
+ bounds[1].setEmpty();
+ SkRect* boundsPtr = bounds;
+ int count = 0, segments = 0;
+ bool lastLineSet = false;
+ while ((verb = iter.next(pts)) != SkPath::kDone_Verb) {
+ switch (verb) {
+ case SkPath::kMove_Verb:
+ if (!boundsPtr->isEmpty()) {
+ SkASSERT(boundsPtr == bounds);
+ ++boundsPtr;
+ }
+ boundsPtr->set(pts[0].fX, pts[0].fY, pts[0].fX, pts[0].fY);
+ count = 0;
+ lastLineSet = false;
+ break;
+ case SkPath::kLine_Verb:
+ if (lastLineSet) {
+ SkASSERT((lastLine[1].fX - lastLine[0].fX) *
+ (pts[1].fY - lastLine[0].fY) !=
+ (lastLine[1].fY - lastLine[0].fY) *
+ (pts[1].fX - lastLine[0].fX));
+ }
+ lastLineSet = true;
+ lastLine[0] = pts[0];
+ lastLine[1] = pts[1];
+ count = 1;
+ ++segments;
+ break;
+ case SkPath::kClose_Verb:
+ count = 0;
+ break;
+ default:
+ SkDEBUGFAIL("bad verb");
+ return;
+ }
+ for (int i = 1; i <= count; ++i) {
+ boundsPtr->growToInclude(pts[i].fX, pts[i].fY);
+ }
+ }
+ if (boundsPtr != bounds) {
+ SkASSERT((bounds[0] == rect1 || bounds[1] == rect1)
+ && (bounds[0] == rect2 || bounds[1] == rect2));
+ } else {
+ SkASSERT(segments == 8);
+ }
+ }
+ }
+ }
+ }
+}
+
+static void assertOneContour(const SkPath& out, bool edge, bool extend) {
+ SkPath::Iter iter(out, false);
+ SkPoint pts[4];
+ SkPath::Verb verb;
+ SkRect bounds;
+ bounds.setEmpty();
+ int count = 0;
+ while ((verb = iter.next(pts)) != SkPath::kDone_Verb) {
+ switch (verb) {
+ case SkPath::kMove_Verb:
+ SkASSERT(count == 0);
+ break;
+ case SkPath::kLine_Verb:
+ SkASSERT(pts[0].fX == pts[1].fX || pts[0].fY == pts[1].fY);
+ ++count;
+ break;
+ case SkPath::kClose_Verb:
+ break;
+ default:
+ SkDEBUGFAIL("bad verb");
+ return;
+ }
+ }
+ SkASSERT(count == (extend ? 4 : edge ? 6 : 8));
+}
+
+static void testSimplifyCoincident() {
+ // outside to inside, outside to right, outside to outside
+ // left to inside, left to right, left to outside
+ // inside to right, inside to outside
+ // repeat above for left, right, bottom
+ SkScalar start[] = { 0, 10, 20 };
+ size_t startCount = sizeof(start) / sizeof(start[0]);
+ SkScalar stop[] = { 30, 40, 50 };
+ size_t stopCount = sizeof(stop) / sizeof(stop[0]);
+ SkRect rect2 = SkRect::MakeXYWH(10, 10, 30, 30);
+ for (size_t outDir = SkPath::kCW_Direction; outDir <= SkPath::kCCW_Direction; ++outDir) {
+ for (size_t inDir = SkPath::kCW_Direction; inDir <= SkPath::kCCW_Direction; ++inDir) {
+ for (size_t startIndex = 0; startIndex < startCount; ++startIndex) {
+ for (size_t stopIndex = 0; stopIndex < stopCount; ++stopIndex) {
+ bool extend = start[startIndex] == rect2.fLeft && stop[stopIndex] == rect2.fRight;
+ bool edge = start[startIndex] == rect2.fLeft || stop[stopIndex] == rect2.fRight;
+ SkRect rect1 = SkRect::MakeLTRB(start[startIndex], 0, stop[stopIndex], 10);
+ SkPath path, out;
+ path.addRect(rect1, static_cast<SkPath::Direction>(outDir));
+ path.addRect(rect2, static_cast<SkPath::Direction>(inDir));
+ simplify(path, true, out);
+ assertOneContour(out, edge, extend);
+
+ path.reset();
+ rect1 = SkRect::MakeLTRB(start[startIndex], 40, stop[stopIndex], 50);
+ path.addRect(rect1, static_cast<SkPath::Direction>(outDir));
+ path.addRect(rect2, static_cast<SkPath::Direction>(inDir));
+ simplify(path, true, out);
+ assertOneContour(out, edge, extend);
+
+ path.reset();
+ rect1 = SkRect::MakeLTRB(0, start[startIndex], 10, stop[stopIndex]);
+ path.addRect(rect1, static_cast<SkPath::Direction>(outDir));
+ path.addRect(rect2, static_cast<SkPath::Direction>(inDir));
+ simplify(path, true, out);
+ assertOneContour(out, edge, extend);
+
+ path.reset();
+ rect1 = SkRect::MakeLTRB(40, start[startIndex], 50, stop[stopIndex]);
+ path.addRect(rect1, static_cast<SkPath::Direction>(outDir));
+ path.addRect(rect2, static_cast<SkPath::Direction>(inDir));
+ simplify(path, true, out);
+ assertOneContour(out, edge, extend);
+ }
+ }
+ }
+ }
+}
+
+static void testSimplifyOverlap() {
+ SkScalar start[] = { 0, 10, 20 };
+ size_t startCount = sizeof(start) / sizeof(start[0]);
+ SkScalar stop[] = { 30, 40, 50 };
+ size_t stopCount = sizeof(stop) / sizeof(stop[0]);
+ SkRect rect2 = SkRect::MakeXYWH(10, 10, 30, 30);
+ for (size_t dir = SkPath::kCW_Direction; dir <= SkPath::kCCW_Direction; ++dir) {
+ for (size_t lefty = 0; lefty < startCount; ++lefty) {
+ for (size_t righty = 0; righty < stopCount; ++righty) {
+ for (size_t toppy = 0; toppy < startCount; ++toppy) {
+ for (size_t botty = 0; botty < stopCount; ++botty) {
+ SkRect rect1 = SkRect::MakeLTRB(start[lefty], start[toppy],
+ stop[righty], stop[botty]);
+ SkPath path, out;
+ path.addRect(rect1, static_cast<SkPath::Direction>(dir));
+ path.addRect(rect2, static_cast<SkPath::Direction>(dir));
+ testSimplify(path, true, out, bitmap);
+ }
+ }
+ }
+ }
+ }
+}
+
+static void testSimplifyOverlapTiny() {
+ SkScalar start[] = { 0, 1, 2 };
+ size_t startCount = sizeof(start) / sizeof(start[0]);
+ SkScalar stop[] = { 3, 4, 5 };
+ size_t stopCount = sizeof(stop) / sizeof(stop[0]);
+ SkRect rect2 = SkRect::MakeXYWH(1, 1, 3, 3);
+ for (size_t dir = SkPath::kCW_Direction; dir <= SkPath::kCCW_Direction; ++dir) {
+ for (size_t lefty = 0; lefty < startCount; ++lefty) {
+ for (size_t righty = 0; righty < stopCount; ++righty) {
+ for (size_t toppy = 0; toppy < startCount; ++toppy) {
+ for (size_t botty = 0; botty < stopCount; ++botty) {
+ SkRect rect1 = SkRect::MakeLTRB(start[lefty], start[toppy],
+ stop[righty], stop[botty]);
+ SkPath path, out;
+ path.addRect(rect1, static_cast<SkPath::Direction>(dir));
+ path.addRect(rect2, static_cast<SkPath::Direction>(dir));
+ simplify(path, true, out);
+ comparePathsTiny(path, out);
+ }
+ }
+ }
+ }
+ }
+}
+
+static void testSimplifyDegenerate() {
+ SkScalar start[] = { 0, 10, 20 };
+ size_t startCount = sizeof(start) / sizeof(start[0]);
+ SkScalar stop[] = { 30, 40, 50 };
+ size_t stopCount = sizeof(stop) / sizeof(stop[0]);
+ SkRect rect2 = SkRect::MakeXYWH(10, 10, 30, 30);
+ for (size_t outDir = SkPath::kCW_Direction; outDir <= SkPath::kCCW_Direction; ++outDir) {
+ for (size_t inDir = SkPath::kCW_Direction; inDir <= SkPath::kCCW_Direction; ++inDir) {
+ for (size_t startIndex = 0; startIndex < startCount; ++startIndex) {
+ for (size_t stopIndex = 0; stopIndex < stopCount; ++stopIndex) {
+ SkRect rect1 = SkRect::MakeLTRB(start[startIndex], 0, stop[stopIndex], 0);
+ SkPath path, out;
+ path.addRect(rect1, static_cast<SkPath::Direction>(outDir));
+ path.addRect(rect2, static_cast<SkPath::Direction>(inDir));
+ simplify(path, true, out);
+ SkRect rect;
+ if (!out.isRect(&rect)) {
+ SkDebugf("%s 1 expected rect\n", __FUNCTION__);
+ }
+ if (rect != rect2) {
+ SkDebugf("%s 1 expected union\n", __FUNCTION__);
+ }
+
+ path.reset();
+ rect1 = SkRect::MakeLTRB(start[startIndex], 40, stop[stopIndex], 40);
+ path.addRect(rect1, static_cast<SkPath::Direction>(outDir));
+ path.addRect(rect2, static_cast<SkPath::Direction>(inDir));
+ simplify(path, true, out);
+ if (!out.isRect(&rect)) {
+ SkDebugf("%s 2 expected rect\n", __FUNCTION__);
+ }
+ if (rect != rect2) {
+ SkDebugf("%s 2 expected union\n", __FUNCTION__);
+ }
+
+ path.reset();
+ rect1 = SkRect::MakeLTRB(0, start[startIndex], 0, stop[stopIndex]);
+ path.addRect(rect1, static_cast<SkPath::Direction>(outDir));
+ path.addRect(rect2, static_cast<SkPath::Direction>(inDir));
+ simplify(path, true, out);
+ if (!out.isRect(&rect)) {
+ SkDebugf("%s 3 expected rect\n", __FUNCTION__);
+ }
+ if (rect != rect2) {
+ SkDebugf("%s 3 expected union\n", __FUNCTION__);
+ }
+
+ path.reset();
+ rect1 = SkRect::MakeLTRB(40, start[startIndex], 40, stop[stopIndex]);
+ path.addRect(rect1, static_cast<SkPath::Direction>(outDir));
+ path.addRect(rect2, static_cast<SkPath::Direction>(inDir));
+ simplify(path, true, out);
+ if (!out.isRect(&rect)) {
+ SkDebugf("%s 4 expected rect\n", __FUNCTION__);
+ }
+ if (rect != rect2) {
+ SkDebugf("%s 4 expected union\n", __FUNCTION__);
+ }
+ }
+ }
+ }
+ }
+}
+
+static void testSimplifyDegenerate1() {
+ SkPath path, out;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.addRect( 0, 0, 0, 30);
+ path.addRect(10, 10, 40, 40);
+ simplify(path, true, out);
+ SkRect rect;
+ if (!out.isRect(&rect)) {
+ SkDebugf("%s expected rect\n", __FUNCTION__);
+ }
+ if (rect != SkRect::MakeLTRB(10, 10, 40, 40)) {
+ SkDebugf("%s expected union\n", __FUNCTION__);
+ }
+}
+
+static void (*simplifyTests[])() = {
+ testSimplifyCoincidentInner,
+ testSimplifyOverlapTiny,
+ testSimplifyDegenerate1,
+ testSimplifyCorner,
+ testSimplifyDegenerate,
+ testSimplifyOverlap,
+ testSimplifyDiagonal,
+ testSimplifyCoincident,
+ testSimplifyCoincidentCW,
+ testSimplifyCoincidentCCW,
+ testSimplifyCoincidentVertical,
+ testSimplifyCoincidentHorizontal,
+ testSimplifyAddL,
+ testSimplifyMulti,
+};
+
+static size_t simplifyTestsCount = sizeof(simplifyTests) / sizeof(simplifyTests[0]);
+
+static void (*firstTest)() = 0;
+
+void SimplifyRectangularPaths_Test() {
+ size_t index = 0;
+ if (firstTest) {
+ while (index < simplifyTestsCount && simplifyTests[index] != firstTest) {
+ ++index;
+ }
+ }
+ for ( ; index < simplifyTestsCount; ++index) {
+ if (simplifyTests[index] == testSimplifyCorner) {
+ // testSimplifyCorner fails because it expects two contours, where
+ // only one is returned. Both results are reasonable, but if two
+ // contours are desirable, or if we provide an option to choose
+ // between longer contours and more contours, turn this back on. For
+ // the moment, testSimplifyDiagonal also checks the test case, and
+ // permits either two rects or one non-crossing poly as valid
+ // unreported results.
+ continue;
+ }
+ (*simplifyTests[index])();
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/EdgeWalker_Test.h b/chromium/third_party/skia/experimental/Intersection/EdgeWalker_Test.h
new file mode 100644
index 00000000000..5e8e7b7bf0c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/EdgeWalker_Test.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "ShapeOps.h"
+#include "SkBitmap.h"
+#include "SkStream.h"
+#include <pthread.h>
+
+struct State4;
+
+//extern int comparePaths(const SkPath& one, const SkPath& two);
+extern int comparePaths(const SkPath& one, const SkPath& two, SkBitmap& bitmap);
+extern void comparePathsTiny(const SkPath& one, const SkPath& two);
+extern bool drawAsciiPaths(const SkPath& one, const SkPath& two,
+ bool drawPaths);
+extern void showOp(const ShapeOp op);
+extern void showPath(const SkPath& path, const char* str);
+extern void showPath(const SkPath& path);
+extern void showPathData(const SkPath& path);
+extern bool testSimplify(const SkPath& path, bool fill, SkPath& out,
+ SkBitmap& bitmap);
+extern bool testSimplifyx(SkPath& path, bool useXor, SkPath& out,
+ State4& state, const char* pathStr);
+extern bool testSimplifyx(const SkPath& path);
+extern bool testShapeOp(const SkPath& a, const SkPath& b, const ShapeOp );
+
+struct State4 {
+ State4();
+ static pthread_mutex_t addQueue;
+ static pthread_cond_t checkQueue;
+ pthread_cond_t initialized;
+ static State4* queue;
+ pthread_t threadID;
+ int index;
+ bool done;
+ bool last;
+ int a;
+ int b;
+ int c;
+ int d; // sometimes 1 if abc_is_a_triangle
+ int testsRun;
+ char filename[256];
+
+ SkBitmap bitmap;
+};
+
+void createThread(State4* statePtr, void* (*test)(void* ));
+int dispatchTest4(void* (*testFun)(void* ), int a, int b, int c, int d);
+void initializeTests(const char* testName, size_t testNameSize);
+void outputProgress(const State4& state, const char* pathStr, SkPath::FillType );
+void outputProgress(const State4& state, const char* pathStr, ShapeOp op);
+void outputToStream(const State4& state, const char* pathStr, const char* pathPrefix,
+ const char* nameSuffix,
+ const char* testFunction, SkWStream& outFile);
+bool runNextTestSet(State4& state);
+int waitForCompletion();
diff --git a/chromium/third_party/skia/experimental/Intersection/EdgeWalker_TestUtility.cpp b/chromium/third_party/skia/experimental/Intersection/EdgeWalker_TestUtility.cpp
new file mode 100644
index 00000000000..7926ee98220
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/EdgeWalker_TestUtility.cpp
@@ -0,0 +1,761 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "DataTypes.h"
+#include "EdgeWalker_Test.h"
+#include "Intersection_Tests.h"
+#include "SkBitmap.h"
+#include "SkCanvas.h"
+#include "SkMatrix.h"
+#include "SkPaint.h"
+#include "SkStream.h"
+
+#include <algorithm>
+#include <errno.h>
+#include <pthread.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/sysctl.h>
+
+#undef SkASSERT
+#define SkASSERT(cond) while (!(cond)) { sk_throw(); }
+
+static const char marker[] =
+ "</div>\n"
+ "\n"
+ "<script type=\"text/javascript\">\n"
+ "\n"
+ "var testDivs = [\n";
+
+static const char* opStrs[] = {
+ "kDifference_Op",
+ "kIntersect_Op",
+ "kUnion_Op",
+ "kXor_Op",
+};
+
+static const char* opSuffixes[] = {
+ "d",
+ "i",
+ "u",
+ "x",
+};
+
+static const char preferredFilename[] = "/flash/debug/XX.txt";
+static const char backupFilename[] = "../../experimental/Intersection/debugXX.txt";
+
+static bool gShowPath = false;
+static bool gComparePaths = true;
+static bool gShowOutputProgress = false;
+static bool gComparePathsAssert = true;
+static bool gPathStrAssert = true;
+static bool gUsePhysicalFiles = false;
+
+static void showPathContour(SkPath::Iter& iter) {
+ uint8_t verb;
+ SkPoint pts[4];
+ while ((verb = iter.next(pts)) != SkPath::kDone_Verb) {
+ switch (verb) {
+ case SkPath::kMove_Verb:
+ SkDebugf("path.moveTo(%1.9g,%1.9g);\n", pts[0].fX, pts[0].fY);
+ continue;
+ case SkPath::kLine_Verb:
+ SkDebugf("path.lineTo(%1.9g,%1.9g);\n", pts[1].fX, pts[1].fY);
+ break;
+ case SkPath::kQuad_Verb:
+ SkDebugf("path.quadTo(%1.9g,%1.9g, %1.9g,%1.9g);\n",
+ pts[1].fX, pts[1].fY, pts[2].fX, pts[2].fY);
+ break;
+ case SkPath::kCubic_Verb:
+ SkDebugf("path.cubicTo(%1.9g,%1.9g, %1.9g,%1.9g, %1.9g,%1.9g);\n",
+ pts[1].fX, pts[1].fY, pts[2].fX, pts[2].fY, pts[3].fX, pts[3].fY);
+ break;
+ case SkPath::kClose_Verb:
+ SkDebugf("path.close();\n");
+ break;
+ default:
+ SkDEBUGFAIL("bad verb");
+ return;
+ }
+ }
+}
+
+void showPath(const SkPath& path, const char* str) {
+ SkDebugf("%s\n", !str ? "original:" : str);
+ showPath(path);
+}
+
+void showPath(const SkPath& path) {
+ SkPath::Iter iter(path, true);
+ int rectCount = path.isRectContours() ? path.rectContours(NULL, NULL) : 0;
+ if (rectCount > 0) {
+ SkTDArray<SkRect> rects;
+ SkTDArray<SkPath::Direction> directions;
+ rects.setCount(rectCount);
+ directions.setCount(rectCount);
+ path.rectContours(rects.begin(), directions.begin());
+ for (int contour = 0; contour < rectCount; ++contour) {
+ const SkRect& rect = rects[contour];
+ SkDebugf("path.addRect(%1.9g, %1.9g, %1.9g, %1.9g, %s);\n", rect.fLeft, rect.fTop,
+ rect.fRight, rect.fBottom, directions[contour] == SkPath::kCCW_Direction
+ ? "SkPath::kCCW_Direction" : "SkPath::kCW_Direction");
+ }
+ return;
+ }
+ iter.setPath(path, true);
+ showPathContour(iter);
+}
+
+void showPathData(const SkPath& path) {
+ SkPath::Iter iter(path, true);
+ uint8_t verb;
+ SkPoint pts[4];
+ while ((verb = iter.next(pts)) != SkPath::kDone_Verb) {
+ switch (verb) {
+ case SkPath::kMove_Verb:
+ continue;
+ case SkPath::kLine_Verb:
+ SkDebugf("{{%1.9g,%1.9g}, {%1.9g,%1.9g}},\n", pts[0].fX, pts[0].fY, pts[1].fX, pts[1].fY);
+ break;
+ case SkPath::kQuad_Verb:
+ SkDebugf("{{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}},\n",
+ pts[0].fX, pts[0].fY, pts[1].fX, pts[1].fY, pts[2].fX, pts[2].fY);
+ break;
+ case SkPath::kCubic_Verb:
+ SkDebugf("{{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}},\n",
+ pts[0].fX, pts[0].fY, pts[1].fX, pts[1].fY, pts[2].fX, pts[2].fY, pts[3].fX, pts[3].fY);
+ break;
+ case SkPath::kClose_Verb:
+ break;
+ default:
+ SkDEBUGFAIL("bad verb");
+ return;
+ }
+ }
+}
+
+void showOp(const ShapeOp op) {
+ switch (op) {
+ case kDifference_Op:
+ SkDebugf("op difference\n");
+ break;
+ case kIntersect_Op:
+ SkDebugf("op intersect\n");
+ break;
+ case kUnion_Op:
+ SkDebugf("op union\n");
+ break;
+ case kXor_Op:
+ SkDebugf("op xor\n");
+ break;
+ default:
+ SkASSERT(0);
+ }
+}
+
+static void showPath(const SkPath& path, const char* str, const SkMatrix& scale) {
+ SkPath scaled;
+ SkMatrix inverse;
+ bool success = scale.invert(&inverse);
+ if (!success) SkASSERT(0);
+ path.transform(inverse, &scaled);
+ showPath(scaled, str);
+}
+
+const int bitWidth = 64;
+const int bitHeight = 64;
+
+static void scaleMatrix(const SkPath& one, const SkPath& two, SkMatrix& scale) {
+ SkRect larger = one.getBounds();
+ larger.join(two.getBounds());
+ SkScalar largerWidth = larger.width();
+ if (largerWidth < 4) {
+ largerWidth = 4;
+ }
+ SkScalar largerHeight = larger.height();
+ if (largerHeight < 4) {
+ largerHeight = 4;
+ }
+ SkScalar hScale = (bitWidth - 2) / largerWidth;
+ SkScalar vScale = (bitHeight - 2) / largerHeight;
+ scale.reset();
+ scale.preScale(hScale, vScale);
+}
+
+static int pathsDrawTheSame(SkBitmap& bits, const SkPath& scaledOne, const SkPath& scaledTwo,
+ int& error2x2) {
+ if (bits.width() == 0) {
+ bits.setConfig(SkBitmap::kARGB_8888_Config, bitWidth * 2, bitHeight);
+ bits.allocPixels();
+ }
+ SkCanvas canvas(bits);
+ canvas.drawColor(SK_ColorWHITE);
+ SkPaint paint;
+ canvas.save();
+ const SkRect& bounds1 = scaledOne.getBounds();
+ canvas.translate(-bounds1.fLeft + 1, -bounds1.fTop + 1);
+ canvas.drawPath(scaledOne, paint);
+ canvas.restore();
+ canvas.save();
+ canvas.translate(-bounds1.fLeft + 1 + bitWidth, -bounds1.fTop + 1);
+ canvas.drawPath(scaledTwo, paint);
+ canvas.restore();
+ int errors2 = 0;
+ int errors = 0;
+ for (int y = 0; y < bitHeight - 1; ++y) {
+ uint32_t* addr1 = bits.getAddr32(0, y);
+ uint32_t* addr2 = bits.getAddr32(0, y + 1);
+ uint32_t* addr3 = bits.getAddr32(bitWidth, y);
+ uint32_t* addr4 = bits.getAddr32(bitWidth, y + 1);
+ for (int x = 0; x < bitWidth - 1; ++x) {
+ // count 2x2 blocks
+ bool err = addr1[x] != addr3[x];
+ if (err) {
+ errors2 += addr1[x + 1] != addr3[x + 1]
+ && addr2[x] != addr4[x] && addr2[x + 1] != addr4[x + 1];
+ errors++;
+ }
+ }
+ }
+ if (errors2 >= 6 || errors > 160) {
+ SkDebugf("%s errors2=%d errors=%d\n", __FUNCTION__, errors2, errors);
+ }
+ error2x2 = errors2;
+ return errors;
+}
+
+static int pathsDrawTheSame(const SkPath& one, const SkPath& two, SkBitmap& bits, SkPath& scaledOne,
+ SkPath& scaledTwo, int& error2x2) {
+ SkMatrix scale;
+ scaleMatrix(one, two, scale);
+ one.transform(scale, &scaledOne);
+ two.transform(scale, &scaledTwo);
+ return pathsDrawTheSame(bits, scaledOne, scaledTwo, error2x2);
+}
+
+bool drawAsciiPaths(const SkPath& one, const SkPath& two, bool drawPaths) {
+ if (!drawPaths) {
+ return true;
+ }
+ const SkRect& bounds1 = one.getBounds();
+ const SkRect& bounds2 = two.getBounds();
+ SkRect larger = bounds1;
+ larger.join(bounds2);
+ SkBitmap bits;
+ char out[256];
+ int bitWidth = SkScalarCeil(larger.width()) + 2;
+ if (bitWidth * 2 + 1 >= (int) sizeof(out)) {
+ return false;
+ }
+ int bitHeight = SkScalarCeil(larger.height()) + 2;
+ if (bitHeight >= (int) sizeof(out)) {
+ return false;
+ }
+ bits.setConfig(SkBitmap::kARGB_8888_Config, bitWidth * 2, bitHeight);
+ bits.allocPixels();
+ SkCanvas canvas(bits);
+ canvas.drawColor(SK_ColorWHITE);
+ SkPaint paint;
+ canvas.save();
+ canvas.translate(-bounds1.fLeft + 1, -bounds1.fTop + 1);
+ canvas.drawPath(one, paint);
+ canvas.restore();
+ canvas.save();
+ canvas.translate(-bounds1.fLeft + 1 + bitWidth, -bounds1.fTop + 1);
+ canvas.drawPath(two, paint);
+ canvas.restore();
+ for (int y = 0; y < bitHeight; ++y) {
+ uint32_t* addr1 = bits.getAddr32(0, y);
+ int x;
+ char* outPtr = out;
+ for (x = 0; x < bitWidth; ++x) {
+ *outPtr++ = addr1[x] == (uint32_t) -1 ? '_' : 'x';
+ }
+ *outPtr++ = '|';
+ for (x = bitWidth; x < bitWidth * 2; ++x) {
+ *outPtr++ = addr1[x] == (uint32_t) -1 ? '_' : 'x';
+ }
+ *outPtr++ = '\0';
+ SkDebugf("%s\n", out);
+ }
+ return true;
+}
+
+static void showSimplifiedPath(const SkPath& one, const SkPath& two,
+ const SkPath& scaledOne, const SkPath& scaledTwo) {
+ showPath(one, "original:");
+ showPath(two, "simplified:");
+ drawAsciiPaths(scaledOne, scaledTwo, true);
+}
+
+int comparePaths(const SkPath& one, const SkPath& two, SkBitmap& bitmap) {
+ int errors2x2;
+ SkPath scaledOne, scaledTwo;
+ int errors = pathsDrawTheSame(one, two, bitmap, scaledOne, scaledTwo, errors2x2);
+ if (errors2x2 == 0) {
+ return 0;
+ }
+ const int MAX_ERRORS = 9;
+ if (errors2x2 == MAX_ERRORS || errors2x2 == MAX_ERRORS - 1) {
+ showSimplifiedPath(one, two, scaledOne, scaledTwo);
+ }
+ if (errors2x2 > MAX_ERRORS && gComparePathsAssert) {
+ SkDebugf("%s errors=%d\n", __FUNCTION__, errors);
+ showSimplifiedPath(one, two, scaledOne, scaledTwo);
+ SkASSERT(0);
+ }
+ return errors2x2 > MAX_ERRORS ? errors2x2 : 0;
+}
+
+static void showShapeOpPath(const SkPath& one, const SkPath& two, const SkPath& a, const SkPath& b,
+ const SkPath& scaledOne, const SkPath& scaledTwo, const ShapeOp shapeOp,
+ const SkMatrix& scale) {
+ SkASSERT((unsigned) shapeOp < sizeof(opStrs) / sizeof(opStrs[0]));
+ showPath(a, "minuend:");
+ SkDebugf("op: %s\n", opStrs[shapeOp]);
+ showPath(b, "subtrahend:");
+ // the region often isn't very helpful since it approximates curves with a lot of line-tos
+ if (0) showPath(scaledOne, "region:", scale);
+ showPath(two, "op result:");
+ drawAsciiPaths(scaledOne, scaledTwo, true);
+}
+
+static int comparePaths(const SkPath& one, const SkPath& scaledOne, const SkPath& two,
+ const SkPath& scaledTwo,
+ SkBitmap& bitmap, const SkPath& a, const SkPath& b, const ShapeOp shapeOp,
+ const SkMatrix& scale) {
+ int errors2x2;
+ int errors = pathsDrawTheSame(bitmap, scaledOne, scaledTwo, errors2x2);
+ if (errors2x2 == 0) {
+ return 0;
+ }
+ const int MAX_ERRORS = 8;
+ if (errors2x2 == MAX_ERRORS || errors2x2 == MAX_ERRORS - 1) {
+ showShapeOpPath(one, two, a, b, scaledOne, scaledTwo, shapeOp, scale);
+ }
+ if (errors2x2 > MAX_ERRORS && gComparePathsAssert) {
+ SkDebugf("%s errors=%d\n", __FUNCTION__, errors);
+ showShapeOpPath(one, two, a, b, scaledOne, scaledTwo, shapeOp, scale);
+ SkASSERT(0);
+ }
+ return errors2x2 > MAX_ERRORS ? errors2x2 : 0;
+}
+
+// doesn't work yet
+void comparePathsTiny(const SkPath& one, const SkPath& two) {
+ const SkRect& bounds1 = one.getBounds();
+ const SkRect& bounds2 = two.getBounds();
+ SkRect larger = bounds1;
+ larger.join(bounds2);
+ SkBitmap bits;
+ int bitWidth = SkScalarCeil(larger.width()) + 2;
+ int bitHeight = SkScalarCeil(larger.height()) + 2;
+ bits.setConfig(SkBitmap::kA1_Config, bitWidth * 2, bitHeight);
+ bits.allocPixels();
+ SkCanvas canvas(bits);
+ canvas.drawColor(SK_ColorWHITE);
+ SkPaint paint;
+ canvas.save();
+ canvas.translate(-bounds1.fLeft + 1, -bounds1.fTop + 1);
+ canvas.drawPath(one, paint);
+ canvas.restore();
+ canvas.save();
+ canvas.translate(-bounds2.fLeft + 1, -bounds2.fTop + 1);
+ canvas.drawPath(two, paint);
+ canvas.restore();
+ for (int y = 0; y < bitHeight; ++y) {
+ uint8_t* addr1 = bits.getAddr1(0, y);
+ uint8_t* addr2 = bits.getAddr1(bitWidth, y);
+ for (unsigned x = 0; x < bits.rowBytes(); ++x) {
+ SkASSERT(addr1[x] == addr2[x]);
+ }
+ }
+}
+
+bool testSimplify(const SkPath& path, bool fill, SkPath& out, SkBitmap& bitmap) {
+ if (gShowPath) {
+ showPath(path);
+ }
+ simplify(path, fill, out);
+ if (!gComparePaths) {
+ return true;
+ }
+ return comparePaths(path, out, bitmap) == 0;
+}
+
+bool testSimplifyx(SkPath& path, bool useXor, SkPath& out, State4& state,
+ const char* pathStr) {
+ SkPath::FillType fillType = useXor ? SkPath::kEvenOdd_FillType : SkPath::kWinding_FillType;
+ path.setFillType(fillType);
+ if (gShowPath) {
+ showPath(path);
+ }
+ simplifyx(path, out);
+ if (!gComparePaths) {
+ return true;
+ }
+ int result = comparePaths(path, out, state.bitmap);
+ if (result && gPathStrAssert) {
+ SkDebugf("addTest %s\n", state.filename);
+ char temp[8192];
+ bzero(temp, sizeof(temp));
+ SkMemoryWStream stream(temp, sizeof(temp));
+ const char* pathPrefix = NULL;
+ const char* nameSuffix = NULL;
+ if (fillType == SkPath::kEvenOdd_FillType) {
+ pathPrefix = " path.setFillType(SkPath::kEvenOdd_FillType);\n";
+ nameSuffix = "x";
+ }
+ const char testFunction[] = "testSimplifyx(path);";
+ outputToStream(state, pathStr, pathPrefix, nameSuffix, testFunction, stream);
+ SkDebugf(temp);
+ SkASSERT(0);
+ }
+ return result == 0;
+}
+
+bool testSimplifyx(const SkPath& path) {
+ SkPath out;
+ simplifyx(path, out);
+ SkBitmap bitmap;
+ int result = comparePaths(path, out, bitmap);
+ if (result && gPathStrAssert) {
+ SkASSERT(0);
+ }
+ return result == 0;
+}
+
+bool testShapeOp(const SkPath& a, const SkPath& b, const ShapeOp shapeOp) {
+#if FORCE_RELEASE == 0
+ showPathData(a);
+ showOp(shapeOp);
+ showPathData(b);
+#endif
+ SkPath out;
+ operate(a, b, shapeOp, out);
+ SkPath pathOut, scaledPathOut;
+ SkRegion rgnA, rgnB, openClip, rgnOut;
+ openClip.setRect(-16000, -16000, 16000, 16000);
+ rgnA.setPath(a, openClip);
+ rgnB.setPath(b, openClip);
+ rgnOut.op(rgnA, rgnB, (SkRegion::Op) shapeOp);
+ rgnOut.getBoundaryPath(&pathOut);
+
+ SkMatrix scale;
+ scaleMatrix(a, b, scale);
+ SkRegion scaledRgnA, scaledRgnB, scaledRgnOut;
+ SkPath scaledA, scaledB;
+ scaledA.addPath(a, scale);
+ scaledA.setFillType(a.getFillType());
+ scaledB.addPath(b, scale);
+ scaledB.setFillType(b.getFillType());
+ scaledRgnA.setPath(scaledA, openClip);
+ scaledRgnB.setPath(scaledB, openClip);
+ scaledRgnOut.op(scaledRgnA, scaledRgnB, (SkRegion::Op) shapeOp);
+ scaledRgnOut.getBoundaryPath(&scaledPathOut);
+ SkBitmap bitmap;
+ SkPath scaledOut;
+ scaledOut.addPath(out, scale);
+ scaledOut.setFillType(out.getFillType());
+ int result = comparePaths(pathOut, scaledPathOut, out, scaledOut, bitmap, a, b, shapeOp, scale);
+ if (result && gPathStrAssert) {
+ SkASSERT(0);
+ }
+ return result == 0;
+}
+
+const int maxThreadsAllocated = 64;
+static int maxThreads = 1;
+static int threadIndex;
+State4 threadState[maxThreadsAllocated];
+static int testNumber;
+static const char* testName;
+static bool debugThreads = false;
+
+State4* State4::queue = NULL;
+pthread_mutex_t State4::addQueue = PTHREAD_MUTEX_INITIALIZER;
+pthread_cond_t State4::checkQueue = PTHREAD_COND_INITIALIZER;
+
+State4::State4() {
+ bitmap.setConfig(SkBitmap::kARGB_8888_Config, 150 * 2, 100);
+ bitmap.allocPixels();
+}
+
+void createThread(State4* statePtr, void* (*testFun)(void* )) {
+ int threadError = pthread_create(&statePtr->threadID, NULL, testFun,
+ (void*) statePtr);
+ SkASSERT(!threadError);
+}
+
+int dispatchTest4(void* (*testFun)(void* ), int a, int b, int c, int d) {
+ int testsRun = 0;
+ State4* statePtr;
+ if (!gRunTestsInOneThread) {
+ pthread_mutex_lock(&State4::addQueue);
+ if (threadIndex < maxThreads) {
+ statePtr = &threadState[threadIndex];
+ statePtr->testsRun = 0;
+ statePtr->a = a;
+ statePtr->b = b;
+ statePtr->c = c;
+ statePtr->d = d;
+ statePtr->done = false;
+ statePtr->index = threadIndex;
+ statePtr->last = false;
+ if (debugThreads) SkDebugf("%s %d create done=%d last=%d\n", __FUNCTION__,
+ statePtr->index, statePtr->done, statePtr->last);
+ pthread_cond_init(&statePtr->initialized, NULL);
+ ++threadIndex;
+ createThread(statePtr, testFun);
+ } else {
+ while (!State4::queue) {
+ if (debugThreads) SkDebugf("%s checkQueue\n", __FUNCTION__);
+ pthread_cond_wait(&State4::checkQueue, &State4::addQueue);
+ }
+ statePtr = State4::queue;
+ testsRun += statePtr->testsRun;
+ statePtr->testsRun = 0;
+ statePtr->a = a;
+ statePtr->b = b;
+ statePtr->c = c;
+ statePtr->d = d;
+ statePtr->done = false;
+ State4::queue = NULL;
+ for (int index = 0; index < maxThreads; ++index) {
+ if (threadState[index].done) {
+ State4::queue = &threadState[index];
+ }
+ }
+ if (debugThreads) SkDebugf("%s %d init done=%d last=%d queued=%d\n", __FUNCTION__,
+ statePtr->index, statePtr->done, statePtr->last,
+ State4::queue ? State4::queue->index : -1);
+ pthread_cond_signal(&statePtr->initialized);
+ }
+ pthread_mutex_unlock(&State4::addQueue);
+ } else {
+ statePtr = &threadState[0];
+ testsRun += statePtr->testsRun;
+ statePtr->testsRun = 0;
+ statePtr->a = a;
+ statePtr->b = b;
+ statePtr->c = c;
+ statePtr->d = d;
+ statePtr->done = false;
+ statePtr->index = threadIndex;
+ statePtr->last = false;
+ (*testFun)(statePtr);
+ }
+ return testsRun;
+}
+
+void initializeTests(const char* test, size_t testNameSize) {
+ testName = test;
+ if (!gRunTestsInOneThread) {
+ int threads = -1;
+ size_t size = sizeof(threads);
+ sysctlbyname("hw.logicalcpu_max", &threads, &size, NULL, 0);
+ if (threads > 0) {
+ maxThreads = threads;
+ } else {
+ maxThreads = 8;
+ }
+ }
+ SkFILEStream inFile("../../experimental/Intersection/op.htm");
+ if (inFile.isValid()) {
+ SkTDArray<char> inData;
+ inData.setCount(inFile.getLength());
+ size_t inLen = inData.count();
+ inFile.read(inData.begin(), inLen);
+ inFile.setPath(NULL);
+ char* insert = strstr(inData.begin(), marker);
+ if (insert) {
+ insert += sizeof(marker) - 1;
+ const char* numLoc = insert + 4 /* indent spaces */ + testNameSize - 1;
+ testNumber = atoi(numLoc) + 1;
+ }
+ }
+ const char* filename = preferredFilename;
+ SkFILEWStream preferredTest(filename);
+ if (!preferredTest.isValid()) {
+ filename = backupFilename;
+ SkFILEWStream backupTest(filename);
+ SkASSERT(backupTest.isValid());
+ }
+ for (int index = 0; index < maxThreads; ++index) {
+ State4* statePtr = &threadState[index];
+ strcpy(statePtr->filename, filename);
+ size_t len = strlen(filename);
+ SkASSERT(statePtr->filename[len - 6] == 'X');
+ SkASSERT(statePtr->filename[len - 5] == 'X');
+ statePtr->filename[len - 6] = '0' + index / 10;
+ statePtr->filename[len - 5] = '0' + index % 10;
+ }
+ threadIndex = 0;
+}
+
+void outputProgress(const State4& state, const char* pathStr, SkPath::FillType pathFillType) {
+ if (gRunTestsInOneThread && gShowOutputProgress) {
+ if (pathFillType == SkPath::kEvenOdd_FillType) {
+ SkDebugf(" path.setFillType(SkPath::kEvenOdd_FillType);\n", pathStr);
+ }
+ SkDebugf("%s\n", pathStr);
+ }
+ const char testFunction[] = "testSimplifyx(path);";
+ const char* pathPrefix = NULL;
+ const char* nameSuffix = NULL;
+ if (pathFillType == SkPath::kEvenOdd_FillType) {
+ pathPrefix = " path.setFillType(SkPath::kEvenOdd_FillType);\n";
+ nameSuffix = "x";
+ }
+ if (gUsePhysicalFiles) {
+ SkFILEWStream outFile(state.filename);
+ if (!outFile.isValid()) {
+ SkASSERT(0);
+ return;
+ }
+ outputToStream(state, pathStr, pathPrefix, nameSuffix, testFunction, outFile);
+ return;
+ }
+ SkFILEWStream outRam(state.filename);
+ outputToStream(state, pathStr, pathPrefix, nameSuffix, testFunction, outRam);
+}
+
+void outputProgress(const State4& state, const char* pathStr, ShapeOp op) {
+ SkString testFunc("testShapeOp(path, pathB, ");
+ testFunc += opStrs[op];
+ testFunc += ");";
+ const char* testFunction = testFunc.c_str();
+ if (gRunTestsInOneThread && gShowOutputProgress) {
+ SkDebugf("%s\n", pathStr);
+ SkDebugf(" %s\n", testFunction);
+ }
+ const char* nameSuffix = opSuffixes[op];
+ if (gUsePhysicalFiles) {
+ SkFILEWStream outFile(state.filename);
+ if (!outFile.isValid()) {
+ SkASSERT(0);
+ return;
+ }
+ outputToStream(state, pathStr, NULL, nameSuffix, testFunction, outFile);
+ return;
+ }
+ SkFILEWStream outRam(state.filename);
+ outputToStream(state, pathStr, NULL, nameSuffix, testFunction, outRam);
+}
+
+static void writeTestName(const char* nameSuffix, SkWStream& outFile) {
+ outFile.writeText(testName);
+ outFile.writeDecAsText(testNumber);
+ if (nameSuffix) {
+ outFile.writeText(nameSuffix);
+ }
+}
+
+void outputToStream(const State4& state, const char* pathStr, const char* pathPrefix,
+ const char* nameSuffix,
+ const char* testFunction, SkWStream& outFile) {
+ outFile.writeText("<div id=\"");
+ writeTestName(nameSuffix, outFile);
+ outFile.writeText("\">\n");
+ if (pathPrefix) {
+ outFile.writeText(pathPrefix);
+ }
+ outFile.writeText(pathStr);
+ outFile.writeText("</div>\n\n");
+
+ outFile.writeText(marker);
+ outFile.writeText(" ");
+ writeTestName(nameSuffix, outFile);
+ outFile.writeText(",\n\n\n");
+
+ outFile.writeText("static void ");
+ writeTestName(nameSuffix, outFile);
+ outFile.writeText("() {\n SkPath path");
+ if (!pathPrefix) {
+ outFile.writeText(", pathB");
+ }
+ outFile.writeText(";\n");
+ if (pathPrefix) {
+ outFile.writeText(pathPrefix);
+ }
+ outFile.writeText(pathStr);
+ outFile.writeText(" ");
+ outFile.writeText(testFunction);
+ outFile.writeText("\n}\n\n");
+ outFile.writeText("static void (*firstTest)() = ");
+ writeTestName(nameSuffix, outFile);
+ outFile.writeText(";\n\n");
+
+ outFile.writeText("static struct {\n");
+ outFile.writeText(" void (*fun)();\n");
+ outFile.writeText(" const char* str;\n");
+ outFile.writeText("} tests[] = {\n");
+ outFile.writeText(" TEST(");
+ writeTestName(nameSuffix, outFile);
+ outFile.writeText("),\n");
+ outFile.flush();
+}
+
+bool runNextTestSet(State4& state) {
+ if (gRunTestsInOneThread) {
+ return false;
+ }
+ pthread_mutex_lock(&State4::addQueue);
+ state.done = true;
+ State4::queue = &state;
+ if (debugThreads) SkDebugf("%s %d checkQueue done=%d last=%d\n", __FUNCTION__, state.index,
+ state.done, state.last);
+ pthread_cond_signal(&State4::checkQueue);
+ while (state.done && !state.last) {
+ if (debugThreads) SkDebugf("%s %d done=%d last=%d\n", __FUNCTION__, state.index, state.done, state.last);
+ pthread_cond_wait(&state.initialized, &State4::addQueue);
+ }
+ pthread_mutex_unlock(&State4::addQueue);
+ return !state.last;
+}
+
+int waitForCompletion() {
+ int testsRun = 0;
+ if (!gRunTestsInOneThread) {
+ pthread_mutex_lock(&State4::addQueue);
+ int runningThreads = maxThreads;
+ int index;
+ while (runningThreads > 0) {
+ while (!State4::queue) {
+ if (debugThreads) SkDebugf("%s checkQueue\n", __FUNCTION__);
+ pthread_cond_wait(&State4::checkQueue, &State4::addQueue);
+ }
+ while (State4::queue) {
+ --runningThreads;
+ SkDebugf("•");
+ State4::queue->last = true;
+ State4* next = NULL;
+ for (index = 0; index < maxThreads; ++index) {
+ State4& test = threadState[index];
+ if (test.done && !test.last) {
+ next = &test;
+ }
+ }
+ if (debugThreads) SkDebugf("%s %d next=%d deQueue\n", __FUNCTION__,
+ State4::queue->index, next ? next->index : -1);
+ pthread_cond_signal(&State4::queue->initialized);
+ State4::queue = next;
+ }
+ }
+ pthread_mutex_unlock(&State4::addQueue);
+ for (index = 0; index < maxThreads; ++index) {
+ pthread_join(threadState[index].threadID, NULL);
+ testsRun += threadState[index].testsRun;
+ }
+ SkDebugf("\n");
+ }
+#ifdef SK_DEBUG
+ gDebugMaxWindSum = SK_MaxS32;
+ gDebugMaxWindValue = SK_MaxS32;
+#endif
+ return testsRun;
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/English.lproj/InfoPlist.strings b/chromium/third_party/skia/experimental/Intersection/English.lproj/InfoPlist.strings
new file mode 100644
index 00000000000..477b28ff8f8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/English.lproj/InfoPlist.strings
@@ -0,0 +1,2 @@
+/* Localized versions of Info.plist keys */
+
diff --git a/chromium/third_party/skia/experimental/Intersection/English.lproj/MainMenu.xib b/chromium/third_party/skia/experimental/Intersection/English.lproj/MainMenu.xib
new file mode 100644
index 00000000000..6e4dd1fca22
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/English.lproj/MainMenu.xib
@@ -0,0 +1,4119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
+ <data>
+ <int key="IBDocument.SystemTarget">1060</int>
+ <string key="IBDocument.SystemVersion">10A324</string>
+ <string key="IBDocument.InterfaceBuilderVersion">719</string>
+ <string key="IBDocument.AppKitVersion">1015</string>
+ <string key="IBDocument.HIToolboxVersion">418.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">719</string>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="371"/>
+ <integer value="29"/>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomObject" id="1021">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSCustomObject" id="1014">
+ <string key="NSClassName">FirstResponder</string>
+ </object>
+ <object class="NSCustomObject" id="1050">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSMenu" id="649796088">
+ <string key="NSTitle">AMainMenu</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="694149608">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">edge</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <object class="NSCustomResource" key="NSOnImage" id="35465992">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuCheckmark</string>
+ </object>
+ <object class="NSCustomResource" key="NSMixedImage" id="502551668">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuMixedState</string>
+ </object>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="110575045">
+ <string key="NSTitle">edge</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="238522557">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">About edge</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="304266470">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="609285721">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Preferences…</string>
+ <string key="NSKeyEquiv">,</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="481834944">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1046388886">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Services</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="752062318">
+ <string key="NSTitle">Services</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <string key="NSName">_NSServicesMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="646227648">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="755159360">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Hide edge</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="342932134">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Hide Others</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="908899353">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Show All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1056857174">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="632727374">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Quit edge</string>
+ <string key="NSKeyEquiv">q</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSAppleMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="379814623">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">File</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="720053764">
+ <string key="NSTitle">File</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="705341025">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">New</string>
+ <string key="NSKeyEquiv">n</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="722745758">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Open…</string>
+ <string key="NSKeyEquiv">o</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1025936716">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Open Recent</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="1065607017">
+ <string key="NSTitle">Open Recent</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="759406840">
+ <reference key="NSMenu" ref="1065607017"/>
+ <string key="NSTitle">Clear Menu</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSRecentDocumentsMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="425164168">
+ <reference key="NSMenu" ref="720053764"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="776162233">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Close</string>
+ <string key="NSKeyEquiv">w</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1023925487">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Save</string>
+ <string key="NSKeyEquiv">s</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="117038363">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Save As…</string>
+ <string key="NSKeyEquiv">S</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="579971712">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Revert to Saved</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1010469920">
+ <reference key="NSMenu" ref="720053764"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="294629803">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Page Setup...</string>
+ <string key="NSKeyEquiv">P</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSToolTip"/>
+ </object>
+ <object class="NSMenuItem" id="49223823">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Print…</string>
+ <string key="NSKeyEquiv">p</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="952259628">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Edit</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="789758025">
+ <string key="NSTitle">Edit</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="1058277027">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Undo</string>
+ <string key="NSKeyEquiv">z</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="790794224">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Redo</string>
+ <string key="NSKeyEquiv">Z</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1040322652">
+ <reference key="NSMenu" ref="789758025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="296257095">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Cut</string>
+ <string key="NSKeyEquiv">x</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="860595796">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Copy</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="29853731">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Paste</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="82994268">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Paste and Match Style</string>
+ <string key="NSKeyEquiv">V</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="437104165">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Delete</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="583158037">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Select All</string>
+ <string key="NSKeyEquiv">a</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="212016141">
+ <reference key="NSMenu" ref="789758025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="892235320">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Find</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="963351320">
+ <string key="NSTitle">Find</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="447796847">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find…</string>
+ <string key="NSKeyEquiv">f</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="326711663">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find Next</string>
+ <string key="NSKeyEquiv">g</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="270902937">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find Previous</string>
+ <string key="NSKeyEquiv">G</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="159080638">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Use Selection for Find</string>
+ <string key="NSKeyEquiv">e</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">7</int>
+ </object>
+ <object class="NSMenuItem" id="88285865">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Jump to Selection</string>
+ <string key="NSKeyEquiv">j</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="972420730">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Spelling and Grammar</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="769623530">
+ <string key="NSTitle">Spelling and Grammar</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="679648819">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Show Spelling and Grammar</string>
+ <string key="NSKeyEquiv">:</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="96193923">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Document Now</string>
+ <string key="NSKeyEquiv">;</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="859480356">
+ <reference key="NSMenu" ref="769623530"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="948374510">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Spelling While Typing</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="967646866">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Grammar With Spelling</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="795346622">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Correct Spelling Automatically</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="507821607">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Substitutions</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="698887838">
+ <string key="NSTitle">Substitutions</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="65139061">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Show Substitutions</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="19036812">
+ <reference key="NSMenu" ref="698887838"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="605118523">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Copy/Paste</string>
+ <string key="NSKeyEquiv">f</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="197661976">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Quotes</string>
+ <string key="NSKeyEquiv">g</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="672708820">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Dashes</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="708854459">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Links</string>
+ <string key="NSKeyEquiv">G</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="537092702">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Text Replacement</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="288088188">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Transformations</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="579392910">
+ <string key="NSTitle">Transformations</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="1060694897">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Make Upper Case</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="879586729">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Make Lower Case</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="56570060">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Capitalize</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="676164635">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Speech</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="785027613">
+ <string key="NSTitle">Speech</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="731782645">
+ <reference key="NSMenu" ref="785027613"/>
+ <string key="NSTitle">Start Speaking</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="680220178">
+ <reference key="NSMenu" ref="785027613"/>
+ <string key="NSTitle">Stop Speaking</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="302598603">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Format</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="941447902">
+ <string key="NSTitle">Format</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="792887677">
+ <reference key="NSMenu" ref="941447902"/>
+ <string key="NSTitle">Font</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="786677654">
+ <string key="NSTitle">Font</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="159677712">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Show Fonts</string>
+ <string key="NSKeyEquiv">t</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="305399458">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Bold</string>
+ <string key="NSKeyEquiv">b</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="814362025">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Italic</string>
+ <string key="NSKeyEquiv">i</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="330926929">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Underline</string>
+ <string key="NSKeyEquiv">u</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="533507878">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="158063935">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Bigger</string>
+ <string key="NSKeyEquiv">+</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="885547335">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Smaller</string>
+ <string key="NSKeyEquiv">-</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">4</int>
+ </object>
+ <object class="NSMenuItem" id="901062459">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="767671776">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Kern</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="175441468">
+ <string key="NSTitle">Kern</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="252969304">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="766922938">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Use None</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="677519740">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Tighten</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="238351151">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Loosen</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="691570813">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Ligature</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="1058217995">
+ <string key="NSTitle">Ligature</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="706297211">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="568384683">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use None</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="663508465">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="769124883">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Baseline</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="18263474">
+ <string key="NSTitle">Baseline</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="257962622">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="644725453">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Superscript</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1037576581">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Subscript</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="941806246">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Raise</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1045724900">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Lower</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="739652853">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1012600125">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Show Colors</string>
+ <string key="NSKeyEquiv">C</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="214559597">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="596732606">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Copy Style</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="393423671">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Paste Style</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSFontMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="215659978">
+ <reference key="NSMenu" ref="941447902"/>
+ <string key="NSTitle">Text</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="446991534">
+ <string key="NSTitle">Text</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="875092757">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Align Left</string>
+ <string key="NSKeyEquiv">{</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="630155264">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Center</string>
+ <string key="NSKeyEquiv">|</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="945678886">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Justify</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="512868991">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Align Right</string>
+ <string key="NSKeyEquiv">}</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="163117631">
+ <reference key="NSMenu" ref="446991534"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="31516759">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Writing Direction</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="956096989">
+ <string key="NSTitle">Writing Direction</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="257099033">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <string key="NSTitle">Paragraph</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="551969625">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="249532473">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="607364498">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="508151438">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="981751889">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <string key="NSTitle">Selection</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="380031999">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="825984362">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="560145579">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="908105787">
+ <reference key="NSMenu" ref="446991534"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="644046920">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Show Ruler</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="231811626">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Copy Ruler</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1310720</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="883618387">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Paste Ruler</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1310720</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="586577488">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">View</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="466310130">
+ <string key="NSTitle">View</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="102151532">
+ <reference key="NSMenu" ref="466310130"/>
+ <string key="NSTitle">Show Toolbar</string>
+ <string key="NSKeyEquiv">t</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="237841660">
+ <reference key="NSMenu" ref="466310130"/>
+ <string key="NSTitle">Customize Toolbar…</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="713487014">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Window</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="835318025">
+ <string key="NSTitle">Window</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="1011231497">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Minimize</string>
+ <string key="NSKeyEquiv">m</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="575023229">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Zoom</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="299356726">
+ <reference key="NSMenu" ref="835318025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="625202149">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Bring All to Front</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSWindowsMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="448692316">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Help</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="992780483">
+ <string key="NSTitle">Help</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="105068016">
+ <reference key="NSMenu" ref="992780483"/>
+ <string key="NSTitle">edge Help</string>
+ <string key="NSKeyEquiv">?</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSHelpMenu</string>
+ </object>
+ </object>
+ </object>
+ <string key="NSName">_NSMainMenu</string>
+ </object>
+ <object class="NSWindowTemplate" id="972006081">
+ <int key="NSWindowStyleMask">15</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{335, 390}, {480, 360}}</string>
+ <int key="NSWTFlags">1954021376</int>
+ <string key="NSWindowTitle">edge</string>
+ <string key="NSWindowClass">NSWindow</string>
+ <nil key="NSViewClass"/>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <object class="NSView" key="NSWindowView" id="439893737">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{480, 360}</string>
+ <reference key="NSSuperview"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ </object>
+ <object class="NSCustomObject" id="976324537">
+ <string key="NSClassName">edgeAppDelegate</string>
+ </object>
+ <object class="NSCustomObject" id="755631768">
+ <string key="NSClassName">NSFontManager</string>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performMiniaturize:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1011231497"/>
+ </object>
+ <int key="connectionID">37</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">arrangeInFront:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="625202149"/>
+ </object>
+ <int key="connectionID">39</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">print:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="49223823"/>
+ </object>
+ <int key="connectionID">86</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">runPageLayout:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="294629803"/>
+ </object>
+ <int key="connectionID">87</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">clearRecentDocuments:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="759406840"/>
+ </object>
+ <int key="connectionID">127</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontStandardAboutPanel:</string>
+ <reference key="source" ref="1021"/>
+ <reference key="destination" ref="238522557"/>
+ </object>
+ <int key="connectionID">142</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performClose:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="776162233"/>
+ </object>
+ <int key="connectionID">193</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleContinuousSpellChecking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="948374510"/>
+ </object>
+ <int key="connectionID">222</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">undo:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1058277027"/>
+ </object>
+ <int key="connectionID">223</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copy:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="860595796"/>
+ </object>
+ <int key="connectionID">224</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">checkSpelling:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="96193923"/>
+ </object>
+ <int key="connectionID">225</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">paste:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="29853731"/>
+ </object>
+ <int key="connectionID">226</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">stopSpeaking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="680220178"/>
+ </object>
+ <int key="connectionID">227</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cut:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="296257095"/>
+ </object>
+ <int key="connectionID">228</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showGuessPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="679648819"/>
+ </object>
+ <int key="connectionID">230</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">redo:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="790794224"/>
+ </object>
+ <int key="connectionID">231</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">selectAll:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="583158037"/>
+ </object>
+ <int key="connectionID">232</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">startSpeaking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="731782645"/>
+ </object>
+ <int key="connectionID">233</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">delete:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="437104165"/>
+ </object>
+ <int key="connectionID">235</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performZoom:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="575023229"/>
+ </object>
+ <int key="connectionID">240</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="447796847"/>
+ </object>
+ <int key="connectionID">241</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">centerSelectionInVisibleArea:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="88285865"/>
+ </object>
+ <int key="connectionID">245</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleGrammarChecking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="967646866"/>
+ </object>
+ <int key="connectionID">347</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleSmartInsertDelete:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="605118523"/>
+ </object>
+ <int key="connectionID">355</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticQuoteSubstitution:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="197661976"/>
+ </object>
+ <int key="connectionID">356</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticLinkDetection:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="708854459"/>
+ </object>
+ <int key="connectionID">357</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">saveDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1023925487"/>
+ </object>
+ <int key="connectionID">362</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">saveDocumentAs:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="117038363"/>
+ </object>
+ <int key="connectionID">363</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">revertDocumentToSaved:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="579971712"/>
+ </object>
+ <int key="connectionID">364</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">runToolbarCustomizationPalette:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="237841660"/>
+ </object>
+ <int key="connectionID">365</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleToolbarShown:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="102151532"/>
+ </object>
+ <int key="connectionID">366</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">hide:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="755159360"/>
+ </object>
+ <int key="connectionID">367</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">hideOtherApplications:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="342932134"/>
+ </object>
+ <int key="connectionID">368</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">unhideAllApplications:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="908899353"/>
+ </object>
+ <int key="connectionID">370</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">newDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="705341025"/>
+ </object>
+ <int key="connectionID">373</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="722745758"/>
+ </object>
+ <int key="connectionID">374</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addFontTrait:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="305399458"/>
+ </object>
+ <int key="connectionID">421</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addFontTrait:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="814362025"/>
+ </object>
+ <int key="connectionID">422</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">modifyFont:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="885547335"/>
+ </object>
+ <int key="connectionID">423</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontFontPanel:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="159677712"/>
+ </object>
+ <int key="connectionID">424</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">modifyFont:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="158063935"/>
+ </object>
+ <int key="connectionID">425</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">raiseBaseline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="941806246"/>
+ </object>
+ <int key="connectionID">426</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">lowerBaseline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1045724900"/>
+ </object>
+ <int key="connectionID">427</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copyFont:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="596732606"/>
+ </object>
+ <int key="connectionID">428</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">subscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1037576581"/>
+ </object>
+ <int key="connectionID">429</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">superscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="644725453"/>
+ </object>
+ <int key="connectionID">430</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">tightenKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="677519740"/>
+ </object>
+ <int key="connectionID">431</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">underline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="330926929"/>
+ </object>
+ <int key="connectionID">432</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontColorPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1012600125"/>
+ </object>
+ <int key="connectionID">433</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useAllLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="663508465"/>
+ </object>
+ <int key="connectionID">434</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">loosenKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="238351151"/>
+ </object>
+ <int key="connectionID">435</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteFont:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="393423671"/>
+ </object>
+ <int key="connectionID">436</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">unscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="257962622"/>
+ </object>
+ <int key="connectionID">437</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useStandardKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="252969304"/>
+ </object>
+ <int key="connectionID">438</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useStandardLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="706297211"/>
+ </object>
+ <int key="connectionID">439</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">turnOffLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="568384683"/>
+ </object>
+ <int key="connectionID">440</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">turnOffKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="766922938"/>
+ </object>
+ <int key="connectionID">441</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">terminate:</string>
+ <reference key="source" ref="1050"/>
+ <reference key="destination" ref="632727374"/>
+ </object>
+ <int key="connectionID">449</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticSpellingCorrection:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="795346622"/>
+ </object>
+ <int key="connectionID">456</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontSubstitutionsPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="65139061"/>
+ </object>
+ <int key="connectionID">458</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticDashSubstitution:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="672708820"/>
+ </object>
+ <int key="connectionID">461</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticTextReplacement:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="537092702"/>
+ </object>
+ <int key="connectionID">463</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">uppercaseWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1060694897"/>
+ </object>
+ <int key="connectionID">464</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">capitalizeWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="56570060"/>
+ </object>
+ <int key="connectionID">467</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">lowercaseWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="879586729"/>
+ </object>
+ <int key="connectionID">468</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteAsPlainText:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="82994268"/>
+ </object>
+ <int key="connectionID">486</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="326711663"/>
+ </object>
+ <int key="connectionID">487</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="270902937"/>
+ </object>
+ <int key="connectionID">488</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="159080638"/>
+ </object>
+ <int key="connectionID">489</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showHelp:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="105068016"/>
+ </object>
+ <int key="connectionID">493</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="1021"/>
+ <reference key="destination" ref="976324537"/>
+ </object>
+ <int key="connectionID">495</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignCenter:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="630155264"/>
+ </object>
+ <int key="connectionID">518</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="883618387"/>
+ </object>
+ <int key="connectionID">519</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="644046920"/>
+ </object>
+ <int key="connectionID">520</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="512868991"/>
+ </object>
+ <int key="connectionID">521</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copyRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="231811626"/>
+ </object>
+ <int key="connectionID">522</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignJustified:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="945678886"/>
+ </object>
+ <int key="connectionID">523</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="875092757"/>
+ </object>
+ <int key="connectionID">524</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionNatural:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="551969625"/>
+ </object>
+ <int key="connectionID">525</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionLeftToRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="249532473"/>
+ </object>
+ <int key="connectionID">526</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionRightToLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="607364498"/>
+ </object>
+ <int key="connectionID">527</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionNatural:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="380031999"/>
+ </object>
+ <int key="connectionID">528</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionLeftToRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="825984362"/>
+ </object>
+ <int key="connectionID">529</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionRightToLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="560145579"/>
+ </object>
+ <int key="connectionID">530</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">window</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="972006081"/>
+ </object>
+ <int key="connectionID">532</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <reference key="object" ref="0"/>
+ <reference key="children" ref="1048"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="1021"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="1014"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">First Responder</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="1050"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">29</int>
+ <reference key="object" ref="649796088"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="713487014"/>
+ <reference ref="694149608"/>
+ <reference ref="952259628"/>
+ <reference ref="379814623"/>
+ <reference ref="586577488"/>
+ <reference ref="302598603"/>
+ <reference ref="448692316"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">19</int>
+ <reference key="object" ref="713487014"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="835318025"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">56</int>
+ <reference key="object" ref="694149608"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="110575045"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">217</int>
+ <reference key="object" ref="952259628"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="789758025"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">83</int>
+ <reference key="object" ref="379814623"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="720053764"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">81</int>
+ <reference key="object" ref="720053764"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1023925487"/>
+ <reference ref="117038363"/>
+ <reference ref="49223823"/>
+ <reference ref="722745758"/>
+ <reference ref="705341025"/>
+ <reference ref="1025936716"/>
+ <reference ref="294629803"/>
+ <reference ref="776162233"/>
+ <reference ref="425164168"/>
+ <reference ref="579971712"/>
+ <reference ref="1010469920"/>
+ </object>
+ <reference key="parent" ref="379814623"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">75</int>
+ <reference key="object" ref="1023925487"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">80</int>
+ <reference key="object" ref="117038363"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">78</int>
+ <reference key="object" ref="49223823"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">72</int>
+ <reference key="object" ref="722745758"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">82</int>
+ <reference key="object" ref="705341025"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">124</int>
+ <reference key="object" ref="1025936716"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1065607017"/>
+ </object>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">77</int>
+ <reference key="object" ref="294629803"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">73</int>
+ <reference key="object" ref="776162233"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">79</int>
+ <reference key="object" ref="425164168"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">112</int>
+ <reference key="object" ref="579971712"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">74</int>
+ <reference key="object" ref="1010469920"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">125</int>
+ <reference key="object" ref="1065607017"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="759406840"/>
+ </object>
+ <reference key="parent" ref="1025936716"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">126</int>
+ <reference key="object" ref="759406840"/>
+ <reference key="parent" ref="1065607017"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">205</int>
+ <reference key="object" ref="789758025"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="437104165"/>
+ <reference ref="583158037"/>
+ <reference ref="1058277027"/>
+ <reference ref="212016141"/>
+ <reference ref="296257095"/>
+ <reference ref="29853731"/>
+ <reference ref="860595796"/>
+ <reference ref="1040322652"/>
+ <reference ref="790794224"/>
+ <reference ref="892235320"/>
+ <reference ref="972420730"/>
+ <reference ref="676164635"/>
+ <reference ref="507821607"/>
+ <reference ref="288088188"/>
+ <reference ref="82994268"/>
+ </object>
+ <reference key="parent" ref="952259628"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">202</int>
+ <reference key="object" ref="437104165"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">198</int>
+ <reference key="object" ref="583158037"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">207</int>
+ <reference key="object" ref="1058277027"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">214</int>
+ <reference key="object" ref="212016141"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">199</int>
+ <reference key="object" ref="296257095"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">203</int>
+ <reference key="object" ref="29853731"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">197</int>
+ <reference key="object" ref="860595796"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">206</int>
+ <reference key="object" ref="1040322652"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">215</int>
+ <reference key="object" ref="790794224"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">218</int>
+ <reference key="object" ref="892235320"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="963351320"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">216</int>
+ <reference key="object" ref="972420730"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="769623530"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">200</int>
+ <reference key="object" ref="769623530"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="948374510"/>
+ <reference ref="96193923"/>
+ <reference ref="679648819"/>
+ <reference ref="967646866"/>
+ <reference ref="859480356"/>
+ <reference ref="795346622"/>
+ </object>
+ <reference key="parent" ref="972420730"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">219</int>
+ <reference key="object" ref="948374510"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">201</int>
+ <reference key="object" ref="96193923"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">204</int>
+ <reference key="object" ref="679648819"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">220</int>
+ <reference key="object" ref="963351320"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="270902937"/>
+ <reference ref="88285865"/>
+ <reference ref="159080638"/>
+ <reference ref="326711663"/>
+ <reference ref="447796847"/>
+ </object>
+ <reference key="parent" ref="892235320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">213</int>
+ <reference key="object" ref="270902937"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">210</int>
+ <reference key="object" ref="88285865"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">221</int>
+ <reference key="object" ref="159080638"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">208</int>
+ <reference key="object" ref="326711663"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">209</int>
+ <reference key="object" ref="447796847"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">57</int>
+ <reference key="object" ref="110575045"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="238522557"/>
+ <reference ref="755159360"/>
+ <reference ref="908899353"/>
+ <reference ref="632727374"/>
+ <reference ref="646227648"/>
+ <reference ref="609285721"/>
+ <reference ref="481834944"/>
+ <reference ref="304266470"/>
+ <reference ref="1046388886"/>
+ <reference ref="1056857174"/>
+ <reference ref="342932134"/>
+ </object>
+ <reference key="parent" ref="694149608"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">58</int>
+ <reference key="object" ref="238522557"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">134</int>
+ <reference key="object" ref="755159360"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">150</int>
+ <reference key="object" ref="908899353"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">136</int>
+ <reference key="object" ref="632727374"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">144</int>
+ <reference key="object" ref="646227648"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">129</int>
+ <reference key="object" ref="609285721"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">143</int>
+ <reference key="object" ref="481834944"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">236</int>
+ <reference key="object" ref="304266470"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">131</int>
+ <reference key="object" ref="1046388886"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="752062318"/>
+ </object>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">149</int>
+ <reference key="object" ref="1056857174"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">145</int>
+ <reference key="object" ref="342932134"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">130</int>
+ <reference key="object" ref="752062318"/>
+ <reference key="parent" ref="1046388886"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">24</int>
+ <reference key="object" ref="835318025"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="299356726"/>
+ <reference ref="625202149"/>
+ <reference ref="575023229"/>
+ <reference ref="1011231497"/>
+ </object>
+ <reference key="parent" ref="713487014"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">92</int>
+ <reference key="object" ref="299356726"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5</int>
+ <reference key="object" ref="625202149"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">239</int>
+ <reference key="object" ref="575023229"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">23</int>
+ <reference key="object" ref="1011231497"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">295</int>
+ <reference key="object" ref="586577488"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="466310130"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">296</int>
+ <reference key="object" ref="466310130"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="102151532"/>
+ <reference ref="237841660"/>
+ </object>
+ <reference key="parent" ref="586577488"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">297</int>
+ <reference key="object" ref="102151532"/>
+ <reference key="parent" ref="466310130"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">298</int>
+ <reference key="object" ref="237841660"/>
+ <reference key="parent" ref="466310130"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">211</int>
+ <reference key="object" ref="676164635"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="785027613"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">212</int>
+ <reference key="object" ref="785027613"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="680220178"/>
+ <reference ref="731782645"/>
+ </object>
+ <reference key="parent" ref="676164635"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">195</int>
+ <reference key="object" ref="680220178"/>
+ <reference key="parent" ref="785027613"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">196</int>
+ <reference key="object" ref="731782645"/>
+ <reference key="parent" ref="785027613"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">346</int>
+ <reference key="object" ref="967646866"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">348</int>
+ <reference key="object" ref="507821607"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="698887838"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">349</int>
+ <reference key="object" ref="698887838"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="605118523"/>
+ <reference ref="197661976"/>
+ <reference ref="708854459"/>
+ <reference ref="65139061"/>
+ <reference ref="19036812"/>
+ <reference ref="672708820"/>
+ <reference ref="537092702"/>
+ </object>
+ <reference key="parent" ref="507821607"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">350</int>
+ <reference key="object" ref="605118523"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">351</int>
+ <reference key="object" ref="197661976"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">354</int>
+ <reference key="object" ref="708854459"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">371</int>
+ <reference key="object" ref="972006081"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="439893737"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">372</int>
+ <reference key="object" ref="439893737"/>
+ <reference key="parent" ref="972006081"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">375</int>
+ <reference key="object" ref="302598603"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="941447902"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">376</int>
+ <reference key="object" ref="941447902"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="792887677"/>
+ <reference ref="215659978"/>
+ </object>
+ <reference key="parent" ref="302598603"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">377</int>
+ <reference key="object" ref="792887677"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="786677654"/>
+ </object>
+ <reference key="parent" ref="941447902"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">388</int>
+ <reference key="object" ref="786677654"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="159677712"/>
+ <reference ref="305399458"/>
+ <reference ref="814362025"/>
+ <reference ref="330926929"/>
+ <reference ref="533507878"/>
+ <reference ref="158063935"/>
+ <reference ref="885547335"/>
+ <reference ref="901062459"/>
+ <reference ref="767671776"/>
+ <reference ref="691570813"/>
+ <reference ref="769124883"/>
+ <reference ref="739652853"/>
+ <reference ref="1012600125"/>
+ <reference ref="214559597"/>
+ <reference ref="596732606"/>
+ <reference ref="393423671"/>
+ </object>
+ <reference key="parent" ref="792887677"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">389</int>
+ <reference key="object" ref="159677712"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">390</int>
+ <reference key="object" ref="305399458"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">391</int>
+ <reference key="object" ref="814362025"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">392</int>
+ <reference key="object" ref="330926929"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">393</int>
+ <reference key="object" ref="533507878"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">394</int>
+ <reference key="object" ref="158063935"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">395</int>
+ <reference key="object" ref="885547335"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">396</int>
+ <reference key="object" ref="901062459"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">397</int>
+ <reference key="object" ref="767671776"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="175441468"/>
+ </object>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">398</int>
+ <reference key="object" ref="691570813"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1058217995"/>
+ </object>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">399</int>
+ <reference key="object" ref="769124883"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="18263474"/>
+ </object>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">400</int>
+ <reference key="object" ref="739652853"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">401</int>
+ <reference key="object" ref="1012600125"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">402</int>
+ <reference key="object" ref="214559597"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">403</int>
+ <reference key="object" ref="596732606"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">404</int>
+ <reference key="object" ref="393423671"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">405</int>
+ <reference key="object" ref="18263474"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="257962622"/>
+ <reference ref="644725453"/>
+ <reference ref="1037576581"/>
+ <reference ref="941806246"/>
+ <reference ref="1045724900"/>
+ </object>
+ <reference key="parent" ref="769124883"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">406</int>
+ <reference key="object" ref="257962622"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">407</int>
+ <reference key="object" ref="644725453"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">408</int>
+ <reference key="object" ref="1037576581"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">409</int>
+ <reference key="object" ref="941806246"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">410</int>
+ <reference key="object" ref="1045724900"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">411</int>
+ <reference key="object" ref="1058217995"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="706297211"/>
+ <reference ref="568384683"/>
+ <reference ref="663508465"/>
+ </object>
+ <reference key="parent" ref="691570813"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">412</int>
+ <reference key="object" ref="706297211"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">413</int>
+ <reference key="object" ref="568384683"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">414</int>
+ <reference key="object" ref="663508465"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">415</int>
+ <reference key="object" ref="175441468"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="252969304"/>
+ <reference ref="766922938"/>
+ <reference ref="677519740"/>
+ <reference ref="238351151"/>
+ </object>
+ <reference key="parent" ref="767671776"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">416</int>
+ <reference key="object" ref="252969304"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">417</int>
+ <reference key="object" ref="766922938"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">418</int>
+ <reference key="object" ref="677519740"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">419</int>
+ <reference key="object" ref="238351151"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">420</int>
+ <reference key="object" ref="755631768"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">450</int>
+ <reference key="object" ref="288088188"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="579392910"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">451</int>
+ <reference key="object" ref="579392910"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1060694897"/>
+ <reference ref="879586729"/>
+ <reference ref="56570060"/>
+ </object>
+ <reference key="parent" ref="288088188"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">452</int>
+ <reference key="object" ref="1060694897"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">453</int>
+ <reference key="object" ref="859480356"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">454</int>
+ <reference key="object" ref="795346622"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">457</int>
+ <reference key="object" ref="65139061"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">459</int>
+ <reference key="object" ref="19036812"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">460</int>
+ <reference key="object" ref="672708820"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">462</int>
+ <reference key="object" ref="537092702"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">465</int>
+ <reference key="object" ref="879586729"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">466</int>
+ <reference key="object" ref="56570060"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">485</int>
+ <reference key="object" ref="82994268"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">490</int>
+ <reference key="object" ref="448692316"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="992780483"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">491</int>
+ <reference key="object" ref="992780483"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="105068016"/>
+ </object>
+ <reference key="parent" ref="448692316"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">492</int>
+ <reference key="object" ref="105068016"/>
+ <reference key="parent" ref="992780483"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">494</int>
+ <reference key="object" ref="976324537"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">496</int>
+ <reference key="object" ref="215659978"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="446991534"/>
+ </object>
+ <reference key="parent" ref="941447902"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">497</int>
+ <reference key="object" ref="446991534"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="875092757"/>
+ <reference ref="630155264"/>
+ <reference ref="945678886"/>
+ <reference ref="512868991"/>
+ <reference ref="163117631"/>
+ <reference ref="31516759"/>
+ <reference ref="908105787"/>
+ <reference ref="644046920"/>
+ <reference ref="231811626"/>
+ <reference ref="883618387"/>
+ </object>
+ <reference key="parent" ref="215659978"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">498</int>
+ <reference key="object" ref="875092757"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">499</int>
+ <reference key="object" ref="630155264"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">500</int>
+ <reference key="object" ref="945678886"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">501</int>
+ <reference key="object" ref="512868991"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">502</int>
+ <reference key="object" ref="163117631"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">503</int>
+ <reference key="object" ref="31516759"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="956096989"/>
+ </object>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">504</int>
+ <reference key="object" ref="908105787"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">505</int>
+ <reference key="object" ref="644046920"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">506</int>
+ <reference key="object" ref="231811626"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">507</int>
+ <reference key="object" ref="883618387"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">508</int>
+ <reference key="object" ref="956096989"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="257099033"/>
+ <reference ref="551969625"/>
+ <reference ref="249532473"/>
+ <reference ref="607364498"/>
+ <reference ref="508151438"/>
+ <reference ref="981751889"/>
+ <reference ref="380031999"/>
+ <reference ref="825984362"/>
+ <reference ref="560145579"/>
+ </object>
+ <reference key="parent" ref="31516759"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">509</int>
+ <reference key="object" ref="257099033"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">510</int>
+ <reference key="object" ref="551969625"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">511</int>
+ <reference key="object" ref="249532473"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">512</int>
+ <reference key="object" ref="607364498"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">513</int>
+ <reference key="object" ref="508151438"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">514</int>
+ <reference key="object" ref="981751889"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">515</int>
+ <reference key="object" ref="380031999"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">516</int>
+ <reference key="object" ref="825984362"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">517</int>
+ <reference key="object" ref="560145579"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-3.IBPluginDependency</string>
+ <string>112.IBPluginDependency</string>
+ <string>112.ImportedFromIB2</string>
+ <string>124.IBPluginDependency</string>
+ <string>124.ImportedFromIB2</string>
+ <string>125.IBPluginDependency</string>
+ <string>125.ImportedFromIB2</string>
+ <string>125.editorWindowContentRectSynchronizationRect</string>
+ <string>126.IBPluginDependency</string>
+ <string>126.ImportedFromIB2</string>
+ <string>129.IBPluginDependency</string>
+ <string>129.ImportedFromIB2</string>
+ <string>130.IBPluginDependency</string>
+ <string>130.ImportedFromIB2</string>
+ <string>130.editorWindowContentRectSynchronizationRect</string>
+ <string>131.IBPluginDependency</string>
+ <string>131.ImportedFromIB2</string>
+ <string>134.IBPluginDependency</string>
+ <string>134.ImportedFromIB2</string>
+ <string>136.IBPluginDependency</string>
+ <string>136.ImportedFromIB2</string>
+ <string>143.IBPluginDependency</string>
+ <string>143.ImportedFromIB2</string>
+ <string>144.IBPluginDependency</string>
+ <string>144.ImportedFromIB2</string>
+ <string>145.IBPluginDependency</string>
+ <string>145.ImportedFromIB2</string>
+ <string>149.IBPluginDependency</string>
+ <string>149.ImportedFromIB2</string>
+ <string>150.IBPluginDependency</string>
+ <string>150.ImportedFromIB2</string>
+ <string>19.IBPluginDependency</string>
+ <string>19.ImportedFromIB2</string>
+ <string>195.IBPluginDependency</string>
+ <string>195.ImportedFromIB2</string>
+ <string>196.IBPluginDependency</string>
+ <string>196.ImportedFromIB2</string>
+ <string>197.IBPluginDependency</string>
+ <string>197.ImportedFromIB2</string>
+ <string>198.IBPluginDependency</string>
+ <string>198.ImportedFromIB2</string>
+ <string>199.IBPluginDependency</string>
+ <string>199.ImportedFromIB2</string>
+ <string>200.IBEditorWindowLastContentRect</string>
+ <string>200.IBPluginDependency</string>
+ <string>200.ImportedFromIB2</string>
+ <string>200.editorWindowContentRectSynchronizationRect</string>
+ <string>201.IBPluginDependency</string>
+ <string>201.ImportedFromIB2</string>
+ <string>202.IBPluginDependency</string>
+ <string>202.ImportedFromIB2</string>
+ <string>203.IBPluginDependency</string>
+ <string>203.ImportedFromIB2</string>
+ <string>204.IBPluginDependency</string>
+ <string>204.ImportedFromIB2</string>
+ <string>205.IBEditorWindowLastContentRect</string>
+ <string>205.IBPluginDependency</string>
+ <string>205.ImportedFromIB2</string>
+ <string>205.editorWindowContentRectSynchronizationRect</string>
+ <string>206.IBPluginDependency</string>
+ <string>206.ImportedFromIB2</string>
+ <string>207.IBPluginDependency</string>
+ <string>207.ImportedFromIB2</string>
+ <string>208.IBPluginDependency</string>
+ <string>208.ImportedFromIB2</string>
+ <string>209.IBPluginDependency</string>
+ <string>209.ImportedFromIB2</string>
+ <string>210.IBPluginDependency</string>
+ <string>210.ImportedFromIB2</string>
+ <string>211.IBPluginDependency</string>
+ <string>211.ImportedFromIB2</string>
+ <string>212.IBPluginDependency</string>
+ <string>212.ImportedFromIB2</string>
+ <string>212.editorWindowContentRectSynchronizationRect</string>
+ <string>213.IBPluginDependency</string>
+ <string>213.ImportedFromIB2</string>
+ <string>214.IBPluginDependency</string>
+ <string>214.ImportedFromIB2</string>
+ <string>215.IBPluginDependency</string>
+ <string>215.ImportedFromIB2</string>
+ <string>216.IBPluginDependency</string>
+ <string>216.ImportedFromIB2</string>
+ <string>217.IBPluginDependency</string>
+ <string>217.ImportedFromIB2</string>
+ <string>218.IBPluginDependency</string>
+ <string>218.ImportedFromIB2</string>
+ <string>219.IBPluginDependency</string>
+ <string>219.ImportedFromIB2</string>
+ <string>220.IBEditorWindowLastContentRect</string>
+ <string>220.IBPluginDependency</string>
+ <string>220.ImportedFromIB2</string>
+ <string>220.editorWindowContentRectSynchronizationRect</string>
+ <string>221.IBPluginDependency</string>
+ <string>221.ImportedFromIB2</string>
+ <string>23.IBPluginDependency</string>
+ <string>23.ImportedFromIB2</string>
+ <string>236.IBPluginDependency</string>
+ <string>236.ImportedFromIB2</string>
+ <string>239.IBPluginDependency</string>
+ <string>239.ImportedFromIB2</string>
+ <string>24.IBEditorWindowLastContentRect</string>
+ <string>24.IBPluginDependency</string>
+ <string>24.ImportedFromIB2</string>
+ <string>24.editorWindowContentRectSynchronizationRect</string>
+ <string>29.IBEditorWindowLastContentRect</string>
+ <string>29.IBPluginDependency</string>
+ <string>29.ImportedFromIB2</string>
+ <string>29.WindowOrigin</string>
+ <string>29.editorWindowContentRectSynchronizationRect</string>
+ <string>295.IBPluginDependency</string>
+ <string>296.IBEditorWindowLastContentRect</string>
+ <string>296.IBPluginDependency</string>
+ <string>296.editorWindowContentRectSynchronizationRect</string>
+ <string>297.IBPluginDependency</string>
+ <string>298.IBPluginDependency</string>
+ <string>346.IBPluginDependency</string>
+ <string>346.ImportedFromIB2</string>
+ <string>348.IBPluginDependency</string>
+ <string>348.ImportedFromIB2</string>
+ <string>349.IBEditorWindowLastContentRect</string>
+ <string>349.IBPluginDependency</string>
+ <string>349.ImportedFromIB2</string>
+ <string>349.editorWindowContentRectSynchronizationRect</string>
+ <string>350.IBPluginDependency</string>
+ <string>350.ImportedFromIB2</string>
+ <string>351.IBPluginDependency</string>
+ <string>351.ImportedFromIB2</string>
+ <string>354.IBPluginDependency</string>
+ <string>354.ImportedFromIB2</string>
+ <string>371.IBEditorWindowLastContentRect</string>
+ <string>371.IBPluginDependency</string>
+ <string>371.IBWindowTemplateEditedContentRect</string>
+ <string>371.NSWindowTemplate.visibleAtLaunch</string>
+ <string>371.editorWindowContentRectSynchronizationRect</string>
+ <string>371.windowTemplate.maxSize</string>
+ <string>372.IBPluginDependency</string>
+ <string>375.IBPluginDependency</string>
+ <string>376.IBEditorWindowLastContentRect</string>
+ <string>376.IBPluginDependency</string>
+ <string>377.IBPluginDependency</string>
+ <string>388.IBEditorWindowLastContentRect</string>
+ <string>388.IBPluginDependency</string>
+ <string>389.IBPluginDependency</string>
+ <string>390.IBPluginDependency</string>
+ <string>391.IBPluginDependency</string>
+ <string>392.IBPluginDependency</string>
+ <string>393.IBPluginDependency</string>
+ <string>394.IBPluginDependency</string>
+ <string>395.IBPluginDependency</string>
+ <string>396.IBPluginDependency</string>
+ <string>397.IBPluginDependency</string>
+ <string>398.IBPluginDependency</string>
+ <string>399.IBPluginDependency</string>
+ <string>400.IBPluginDependency</string>
+ <string>401.IBPluginDependency</string>
+ <string>402.IBPluginDependency</string>
+ <string>403.IBPluginDependency</string>
+ <string>404.IBPluginDependency</string>
+ <string>405.IBPluginDependency</string>
+ <string>406.IBPluginDependency</string>
+ <string>407.IBPluginDependency</string>
+ <string>408.IBPluginDependency</string>
+ <string>409.IBPluginDependency</string>
+ <string>410.IBPluginDependency</string>
+ <string>411.IBPluginDependency</string>
+ <string>412.IBPluginDependency</string>
+ <string>413.IBPluginDependency</string>
+ <string>414.IBPluginDependency</string>
+ <string>415.IBPluginDependency</string>
+ <string>416.IBPluginDependency</string>
+ <string>417.IBPluginDependency</string>
+ <string>418.IBPluginDependency</string>
+ <string>419.IBPluginDependency</string>
+ <string>450.IBPluginDependency</string>
+ <string>451.IBEditorWindowLastContentRect</string>
+ <string>451.IBPluginDependency</string>
+ <string>452.IBPluginDependency</string>
+ <string>453.IBPluginDependency</string>
+ <string>454.IBPluginDependency</string>
+ <string>457.IBPluginDependency</string>
+ <string>459.IBPluginDependency</string>
+ <string>460.IBPluginDependency</string>
+ <string>462.IBPluginDependency</string>
+ <string>465.IBPluginDependency</string>
+ <string>466.IBPluginDependency</string>
+ <string>485.IBPluginDependency</string>
+ <string>490.IBPluginDependency</string>
+ <string>491.IBEditorWindowLastContentRect</string>
+ <string>491.IBPluginDependency</string>
+ <string>492.IBPluginDependency</string>
+ <string>496.IBPluginDependency</string>
+ <string>497.IBEditorWindowLastContentRect</string>
+ <string>497.IBPluginDependency</string>
+ <string>498.IBPluginDependency</string>
+ <string>499.IBPluginDependency</string>
+ <string>5.IBPluginDependency</string>
+ <string>5.ImportedFromIB2</string>
+ <string>500.IBPluginDependency</string>
+ <string>501.IBPluginDependency</string>
+ <string>502.IBPluginDependency</string>
+ <string>503.IBPluginDependency</string>
+ <string>504.IBPluginDependency</string>
+ <string>505.IBPluginDependency</string>
+ <string>506.IBPluginDependency</string>
+ <string>507.IBPluginDependency</string>
+ <string>508.IBEditorWindowLastContentRect</string>
+ <string>508.IBPluginDependency</string>
+ <string>509.IBPluginDependency</string>
+ <string>510.IBPluginDependency</string>
+ <string>511.IBPluginDependency</string>
+ <string>512.IBPluginDependency</string>
+ <string>513.IBPluginDependency</string>
+ <string>514.IBPluginDependency</string>
+ <string>515.IBPluginDependency</string>
+ <string>516.IBPluginDependency</string>
+ <string>517.IBPluginDependency</string>
+ <string>56.IBPluginDependency</string>
+ <string>56.ImportedFromIB2</string>
+ <string>57.IBEditorWindowLastContentRect</string>
+ <string>57.IBPluginDependency</string>
+ <string>57.ImportedFromIB2</string>
+ <string>57.editorWindowContentRectSynchronizationRect</string>
+ <string>58.IBPluginDependency</string>
+ <string>58.ImportedFromIB2</string>
+ <string>72.IBPluginDependency</string>
+ <string>72.ImportedFromIB2</string>
+ <string>73.IBPluginDependency</string>
+ <string>73.ImportedFromIB2</string>
+ <string>74.IBPluginDependency</string>
+ <string>74.ImportedFromIB2</string>
+ <string>75.IBPluginDependency</string>
+ <string>75.ImportedFromIB2</string>
+ <string>77.IBPluginDependency</string>
+ <string>77.ImportedFromIB2</string>
+ <string>78.IBPluginDependency</string>
+ <string>78.ImportedFromIB2</string>
+ <string>79.IBPluginDependency</string>
+ <string>79.ImportedFromIB2</string>
+ <string>80.IBPluginDependency</string>
+ <string>80.ImportedFromIB2</string>
+ <string>81.IBEditorWindowLastContentRect</string>
+ <string>81.IBPluginDependency</string>
+ <string>81.ImportedFromIB2</string>
+ <string>81.editorWindowContentRectSynchronizationRect</string>
+ <string>82.IBPluginDependency</string>
+ <string>82.ImportedFromIB2</string>
+ <string>83.IBPluginDependency</string>
+ <string>83.ImportedFromIB2</string>
+ <string>92.IBPluginDependency</string>
+ <string>92.ImportedFromIB2</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{522, 812}, {146, 23}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{436, 809}, {64, 6}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{753, 187}, {275, 113}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{608, 612}, {275, 83}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{547, 180}, {254, 283}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{187, 434}, {243, 243}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{608, 612}, {167, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{753, 217}, {238, 103}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{608, 612}, {241, 103}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{654, 239}, {194, 73}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{525, 802}, {197, 73}}</string>
+ <string>{{380, 836}, {512, 20}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{74, 862}</string>
+ <string>{{6, 978}, {478, 20}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{604, 269}, {231, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{475, 832}, {234, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{746, 287}, {220, 133}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{608, 612}, {215, 63}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{380, 496}, {480, 360}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{380, 496}, {480, 360}}</string>
+ <integer value="1"/>
+ <string>{{33, 99}, {480, 360}}</string>
+ <string>{3.40282e+38, 3.40282e+38}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{591, 420}, {83, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{523, 2}, {178, 283}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{753, 197}, {170, 63}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{725, 289}, {246, 23}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{674, 260}, {204, 183}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{878, 180}, {164, 173}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{286, 129}, {275, 183}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{23, 794}, {245, 183}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{452, 109}, {196, 203}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{145, 474}, {199, 203}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">532</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">edgeAppDelegate</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">window</string>
+ <string key="NS.object.0">NSWindow</string>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">edgeAppDelegate.h</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <string key="superclassName">NSResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="822405504">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="850738725">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="624831158">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSBrowser</string>
+ <string key="superclassName">NSControl</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSBrowser.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSControl</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="310914472">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSDocument</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>printDocument:</string>
+ <string>revertDocumentToSaved:</string>
+ <string>runPageLayout:</string>
+ <string>saveDocument:</string>
+ <string>saveDocumentAs:</string>
+ <string>saveDocumentTo:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDocument.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSDocument</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDocumentScripting.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSDocumentController</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>clearRecentDocuments:</string>
+ <string>newDocument:</string>
+ <string>openDocument:</string>
+ <string>saveAllDocuments:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDocumentController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSFontManager</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="946436764">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSFormatter</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMatrix</string>
+ <string key="superclassName">NSControl</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMatrix.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMenu</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="1056362899">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMenuItem</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="472958451">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMovieView</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMovieView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="822405504"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="850738725"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="624831158"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="310914472"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDragging.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="946436764"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="1056362899"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="809545482">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="260078765">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSResponder</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSTableView</string>
+ <string key="superclassName">NSControl</string>
+ <reference key="sourceIdentifier" ref="809545482"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSText</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSText.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSTextView</string>
+ <string key="superclassName">NSText</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTextView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <reference key="sourceIdentifier" ref="472958451"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <string key="superclassName">NSResponder</string>
+ <reference key="sourceIdentifier" ref="260078765"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSWindow</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSWindow</string>
+ <string key="superclassName">NSResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSWindow</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
+ </object>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <integer value="1060" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+ <integer value="3000" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <string key="IBDocument.LastKnownRelativeProjectPath">../edge.xcodeproj</string>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ </data>
+</archive>
diff --git a/chromium/third_party/skia/experimental/Intersection/Extrema.cpp b/chromium/third_party/skia/experimental/Intersection/Extrema.cpp
new file mode 100644
index 00000000000..7a41ddf77d2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/Extrema.cpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "DataTypes.h"
+#include "Extrema.h"
+
+static int validUnitDivide(double numer, double denom, double* ratio)
+{
+ if (numer < 0) {
+ numer = -numer;
+ denom = -denom;
+ }
+ if (denom == 0 || numer == 0 || numer >= denom)
+ return 0;
+ double r = numer / denom;
+ if (r == 0) { // catch underflow if numer <<<< denom
+ return 0;
+ }
+ *ratio = r;
+ return 1;
+}
+
+/** From Numerical Recipes in C.
+
+ Q = -1/2 (B + sign(B) sqrt[B*B - 4*A*C])
+ x1 = Q / A
+ x2 = C / Q
+*/
+static int findUnitQuadRoots(double A, double B, double C, double roots[2])
+{
+ if (A == 0)
+ return validUnitDivide(-C, B, roots);
+
+ double* r = roots;
+
+ double R = B*B - 4*A*C;
+ if (R < 0) { // complex roots
+ return 0;
+ }
+ R = sqrt(R);
+
+ double Q = (B < 0) ? -(B-R)/2 : -(B+R)/2;
+ r += validUnitDivide(Q, A, r);
+ r += validUnitDivide(C, Q, r);
+ if (r - roots == 2 && AlmostEqualUlps(roots[0], roots[1])) { // nearly-equal?
+ r -= 1; // skip the double root
+ }
+ return (int)(r - roots);
+}
+
+/** Cubic'(t) = At^2 + Bt + C, where
+ A = 3(-a + 3(b - c) + d)
+ B = 6(a - 2b + c)
+ C = 3(b - a)
+ Solve for t, keeping only those that fit between 0 < t < 1
+*/
+int findExtrema(double a, double b, double c, double d, double tValues[2])
+{
+ // we divide A,B,C by 3 to simplify
+ double A = d - a + 3*(b - c);
+ double B = 2*(a - b - b + c);
+ double C = b - a;
+
+ return findUnitQuadRoots(A, B, C, tValues);
+}
+
+/** Quad'(t) = At + B, where
+ A = 2(a - 2b + c)
+ B = 2(b - a)
+ Solve for t, only if it fits between 0 < t < 1
+*/
+int findExtrema(double a, double b, double c, double tValue[1])
+{
+ /* At + B == 0
+ t = -B / A
+ */
+ return validUnitDivide(a - b, a - b - b + c, tValue);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/Extrema.h b/chromium/third_party/skia/experimental/Intersection/Extrema.h
new file mode 100644
index 00000000000..94113acb633
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/Extrema.h
@@ -0,0 +1,8 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+int findExtrema(double a, double b, double c, double d, double tValues[2]);
+int findExtrema(double a, double b, double c, double tValue[1]);
diff --git a/chromium/third_party/skia/experimental/Intersection/Inline_Tests.cpp b/chromium/third_party/skia/experimental/Intersection/Inline_Tests.cpp
new file mode 100644
index 00000000000..90f5e7ab024
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/Inline_Tests.cpp
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "Intersection_Tests.h"
+#include "IntersectionUtilities.h"
+
+static void assert_that(int x, int y, const char* s) {
+ if (x == y) {
+ return;
+ }
+ SkDebugf("result=%d expected=%d %s\n", x, y, s);
+}
+
+static void side_test() {
+ assert_that(side(-1), 0, "side(-1) != 0");
+ assert_that(side(0), 1, "side(0) != 1");
+ assert_that(side(1), 2, "side(1) != 2");
+}
+
+static void sideBit_test() {
+ assert_that(sideBit(-1), 1, "sideBit(-1) != 1");
+ assert_that(sideBit(0), 2, "sideBit(0) != 2");
+ assert_that(sideBit(1), 4, "sideBit(1) != 4");
+}
+
+static void other_two_test() {
+ for (int x = 0; x < 4; ++x) {
+ for (int y = 0; y < 4; ++y) {
+ if (x == y) {
+ continue;
+ }
+ int mask = other_two(x, y);
+ int all = 1 << x;
+ all |= 1 << y;
+ all |= 1 << (x ^ mask);
+ all |= 1 << (y ^ mask);
+ if (all == 0x0F) {
+ continue;
+ }
+ SkDebugf("[%d,%d] other_two failed mask=%d [%d,%d]\n",
+ x, y, mask, x ^ mask, y ^ mask);
+ }
+ }
+}
+
+void Inline_Tests() {
+ side_test();
+ sideBit_test();
+ other_two_test();
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/IntersectionUtilities.cpp b/chromium/third_party/skia/experimental/Intersection/IntersectionUtilities.cpp
new file mode 100644
index 00000000000..e6c4abc5903
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/IntersectionUtilities.cpp
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#if 0
+// snippets that one day may be useful, unused for now...
+
+// get sign, exponent, mantissa from double
+// Translate the double into sign, exponent and mantissa.
+ long bits = BitConverter.DoubleToInt64Bits(d);
+ // Note that the shift is sign-extended, hence the test against -1 not 1
+ bool negative = (bits < 0);
+ int exponent = (int) ((bits >> 52) & 0x7ffL);
+ long mantissa = bits & 0xfffffffffffffL;
+
+ // Subnormal numbers; exponent is effectively one higher,
+ // but there's no extra normalisation bit in the mantissa
+ if (exponent==0)
+ {
+ exponent++;
+ }
+ // Normal numbers; leave exponent as it is but add extra
+ // bit to the front of the mantissa
+ else
+ {
+ mantissa = mantissa | (1L<<52);
+ }
+
+ // Bias the exponent. It's actually biased by 1023, but we're
+ // treating the mantissa as m.0 rather than 0.m, so we need
+ // to subtract another 52 from it.
+ exponent -= 1075;
+
+ if (mantissa == 0)
+ {
+ return "0";
+ }
+
+ /* Normalize */
+ while((mantissa & 1) == 0)
+ { /* i.e., Mantissa is even */
+ mantissa >>= 1;
+ exponent++;
+ }
+#endif
diff --git a/chromium/third_party/skia/experimental/Intersection/IntersectionUtilities.h b/chromium/third_party/skia/experimental/Intersection/IntersectionUtilities.h
new file mode 100644
index 00000000000..b7e69fb65c4
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/IntersectionUtilities.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+// inline utilities
+/* Returns 0 if negative, 1 if zero, 2 if positive
+*/
+inline int side(double x) {
+ return (x > 0) + (x >= 0);
+}
+
+/* Returns 1 if negative, 2 if zero, 4 if positive
+*/
+inline int sideBit(double x) {
+ return 1 << side(x);
+}
+
+/* Given the set [0, 1, 2, 3], and two of the four members, compute an XOR mask
+ that computes the other two. Note that:
+
+ one ^ two == 3 for (0, 3), (1, 2)
+ one ^ two < 3 for (0, 1), (0, 2), (1, 3), (2, 3)
+ 3 - (one ^ two) is either 0, 1, or 2
+ 1 >> 3 - (one ^ two) is either 0 or 1
+thus:
+ returned == 2 for (0, 3), (1, 2)
+ returned == 3 for (0, 1), (0, 2), (1, 3), (2, 3)
+given that:
+ (0, 3) ^ 2 -> (2, 1) (1, 2) ^ 2 -> (3, 0)
+ (0, 1) ^ 3 -> (3, 2) (0, 2) ^ 3 -> (3, 1) (1, 3) ^ 3 -> (2, 0) (2, 3) ^ 3 -> (1, 0)
+*/
+inline int other_two(int one, int two) {
+ return 1 >> 3 - (one ^ two) ^ 3;
+}
+
+/* Returns -1 if negative, 0 if zero, 1 if positive
+*/
+inline int sign(double x) {
+ return (x > 0) - (x < 0);
+}
+
+inline double interp(double A, double B, double t) {
+ return A + (B - A) * t;
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/Intersection_Tests.cpp b/chromium/third_party/skia/experimental/Intersection/Intersection_Tests.cpp
new file mode 100644
index 00000000000..0754ecc27f8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/Intersection_Tests.cpp
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CubicIntersection_TestData.h"
+#include "Intersection_Tests.h"
+
+void cubecode_test(int test);
+void parseSVG();
+
+#define TEST_QUADS_FIRST 0
+
+void Intersection_Tests() {
+ int testsRun = 0;
+#if 0
+ CubicIntersection_OneOffTest();
+ CubicIntersection_SelfTest();
+ QuadraticIntersection_IntersectionFinder();
+ QuadraticIntersection_OneOffTest();
+ CubicIntersection_IntersectionFinder();
+ CubicUtilities_Test();
+#endif
+ SimplifyNew_Test();
+ CubicsToQuadratics_OneOffTest();
+ CubicIntersection_OneOffTest();
+// CubicIntersection_OneOffTests();
+ #if 0
+ parseSVG();
+ #endif
+// QuadraticIntersection_PointFinder();
+ ShapeOps4x4CubicsThreaded_Test(testsRun);
+ CubicToQuadratics_Test();
+ QuadraticIntersection_Test();
+ QuarticRoot_Test();
+ CubicIntersection_RandTest();
+ CubicsToQuadratics_RandTest();
+ Simplify4x4RectsThreaded_Test(testsRun);
+ Simplify4x4QuadraticsThreaded_Test(testsRun);
+ QuadLineIntersectThreaded_Test(testsRun);
+ SimplifyNondegenerate4x4TrianglesThreaded_Test(testsRun);
+ SimplifyDegenerate4x4TrianglesThreaded_Test(testsRun);
+ Simplify4x4QuadralateralsThreaded_Test(testsRun);
+ ShapeOps4x4RectsThreaded_Test(testsRun);
+ SkDebugf("%s total testsRun=%d\n", __FUNCTION__, testsRun);
+ LineQuadraticIntersection_Test();
+ MiniSimplify_Test();
+ SimplifyAngle_Test();
+ QuadraticBezierClip_Test();
+ SimplifyFindNext_Test();
+ SimplifyFindTop_Test();
+ QuadraticReduceOrder_Test();
+ SimplifyAddIntersectingTs_Test();
+
+ cubecode_test(1);
+ convert_testx();
+ // tests are in dependency / complexity order
+ Inline_Tests();
+ ConvexHull_Test();
+ ConvexHull_X_Test();
+
+ LineParameter_Test();
+ LineIntersection_Test();
+ LineCubicIntersection_Test();
+
+ SimplifyQuadraticPaths_Test();
+
+ SimplifyPolygonPaths_Test();
+ SimplifyRectangularPaths_Test();
+ SimplifyQuadralateralPaths_Test();
+
+ // ActiveEdge_Test();
+
+ QuadraticCoincidence_Test();
+ QuadraticIntersection_Test();
+
+ CubicParameterization_Test();
+ CubicCoincidence_Test();
+ CubicReduceOrder_Test();
+ CubicBezierClip_Test();
+ CubicIntersection_Test();
+
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/Intersection_Tests.h b/chromium/third_party/skia/experimental/Intersection/Intersection_Tests.h
new file mode 100644
index 00000000000..78f793890f7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/Intersection_Tests.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "DataTypes_Test.h"
+
+void ActiveEdge_Test();
+void ConvexHull_Test();
+void ConvexHull_X_Test();
+void CubicBezierClip_Test();
+void CubicCoincidence_Test();
+void CubicIntersection_IntersectionFinder();
+void CubicIntersection_NewOneOffTest();
+void CubicIntersection_OneOffTest();
+void CubicIntersection_OneOffTests();
+void CubicIntersection_SelfTest();
+void CubicIntersection_Test();
+void CubicIntersection_RandTest();
+void CubicIntersection_RandTestOld();
+void CubicParameterization_Test();
+void CubicReduceOrder_Test();
+void CubicsToQuadratics_OneOffTest();
+void CubicsToQuadratics_OneOffTests();
+void CubicsToQuadratics_RandTest();
+void CubicToQuadratics_Test();
+void CubicUtilities_Test();
+void Inline_Tests();
+void Intersection_Tests();
+void LineCubicIntersection_Test();
+void LineIntersection_Test();
+void LineParameter_Test();
+void LineQuadraticIntersection_Test();
+void MiniSimplify_Test();
+void QuadraticIntersection_IntersectionFinder();
+void QuadraticIntersection_OneOffTest();
+void QuadraticIntersection_PointFinder();
+void QuadLineIntersectThreaded_Test(int& );
+void QuadraticBezierClip_Test();
+void QuadraticCoincidence_Test();
+void QuadraticIntersection_Test();
+void QuadraticParameterization_Test();
+void QuadraticReduceOrder_Test();
+void QuarticRoot_Test();
+void SimplifyAddIntersectingTs_Test();
+void SimplifyAngle_Test();
+void SimplifyDegenerate4x4TrianglesThreaded_Test(int& );
+void SimplifyFindNext_Test();
+void SimplifyFindTop_Test();
+void SimplifyNew_Test();
+void SimplifyNondegenerate4x4TrianglesThreaded_Test(int& );
+void SimplifyPolygonPaths_Test();
+void SimplifyQuadralateralPaths_Test();
+void SimplifyQuadraticPaths_Test();
+void Simplify4x4QuadralateralsThreaded_Test(int& );
+void Simplify4x4QuadraticsThreaded_Test(int& );
+void Simplify4x4RectsThreaded_Test(int& );
+void SimplifyRectangularPaths_Test();
+void ShapeOps4x4CubicsThreaded_Test(int& );
+void ShapeOps4x4RectsThreaded_Test(int& );
diff --git a/chromium/third_party/skia/experimental/Intersection/Intersections.cpp b/chromium/third_party/skia/experimental/Intersection/Intersections.cpp
new file mode 100644
index 00000000000..1877bd40e29
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/Intersections.cpp
@@ -0,0 +1,158 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "DataTypes.h"
+#include "Intersections.h"
+
+void Intersections::insertCoincidentPair(double s1, double e1, double s2, double e2,
+ const _Point& startPt, const _Point& endPt) {
+ if (fSwap) {
+ remove(s2, e2, startPt, endPt);
+ } else {
+ remove(s1, e1, startPt, endPt);
+ }
+ SkASSERT(coincidentUsed() == fUsed);
+ SkASSERT((coincidentUsed() & 1) != 1);
+ int i1 = 0;
+ int i2 = 0;
+ do {
+ while (i1 < fUsed && !(fIsCoincident[fSwap] & (1 << i1))) {
+ ++i1;
+ }
+ if (i1 == fUsed) {
+ break;
+ }
+ SkASSERT(i1 < fUsed);
+ int iEnd1 = i1 + 1;
+ while (!(fIsCoincident[fSwap] & (1 << iEnd1))) {
+ ++iEnd1;
+ }
+ SkASSERT(iEnd1 < fUsed);
+ double cs1 = fT[fSwap][i1];
+ double ce1 = fT[fSwap][iEnd1];
+ bool s1in = between(cs1, s1, ce1) || startPt.approximatelyEqual(fPt[i1])
+ || startPt.approximatelyEqual(fPt[iEnd1]);
+ bool e1in = between(cs1, e1, ce1) || endPt.approximatelyEqual(fPt[i1])
+ || endPt.approximatelyEqual(fPt[iEnd1]);
+ while (i2 < fUsed && !(fIsCoincident[fSwap ^ 1] & (1 << i2))) {
+ ++i2;
+ }
+ int iEnd2 = i2 + 1;
+ while (!(fIsCoincident[fSwap ^ 1] & (1 << iEnd2))) {
+ ++iEnd2;
+ }
+ SkASSERT(iEnd2 < fUsed);
+ double cs2 = fT[fSwap ^ 1][i2];
+ double ce2 = fT[fSwap ^ 1][iEnd2];
+ bool s2in = between(cs2, s2, ce2) || startPt.approximatelyEqual(fPt[i2])
+ || startPt.approximatelyEqual(fPt[iEnd2]);
+ bool e2in = between(cs2, e2, ce2) || endPt.approximatelyEqual(fPt[i2])
+ || endPt.approximatelyEqual(fPt[iEnd2]);
+ if ((s1in | e1in) & (s2in | e2in)) {
+ if (s1 < cs1) {
+ fT[fSwap][i1] = s1;
+ fPt[i1] = startPt;
+ } else if (e1 < cs1) {
+ fT[fSwap][i1] = e1;
+ fPt[i1] = endPt;
+ }
+ if (s1 > ce1) {
+ fT[fSwap][iEnd1] = s1;
+ fPt[iEnd1] = startPt;
+ } else if (e1 > ce1) {
+ fT[fSwap][iEnd1] = e1;
+ fPt[iEnd1] = endPt;
+ }
+ if (s2 > e2) {
+ SkTSwap(cs2, ce2);
+ SkTSwap(i2, iEnd2);
+ }
+ if (s2 < cs2) {
+ fT[fSwap ^ 1][i2] = s2;
+ } else if (e2 < cs2) {
+ fT[fSwap ^ 1][i2] = e2;
+ }
+ if (s2 > ce2) {
+ fT[fSwap ^ 1][iEnd2] = s2;
+ } else if (e2 > ce2) {
+ fT[fSwap ^ 1][iEnd2] = e2;
+ }
+ return;
+ }
+ } while (true);
+ SkASSERT(fUsed < 9);
+ insertCoincident(s1, s2, startPt);
+ insertCoincident(e1, e2, endPt);
+}
+
+int Intersections::insert(double one, double two, const _Point& pt) {
+ SkASSERT(fUsed <= 1 || fT[0][0] <= fT[0][1]);
+ int index;
+ for (index = 0; index < fUsed; ++index) {
+ double oldOne = fT[0][index];
+ double oldTwo = fT[1][index];
+ if (roughly_equal(oldOne, one) && roughly_equal(oldTwo, two)) {
+ if ((precisely_zero(one) && !precisely_zero(oldOne))
+ || (precisely_equal(one, 1) && !precisely_equal(oldOne, 1))
+ || (precisely_zero(two) && !precisely_zero(oldTwo))
+ || (precisely_equal(two, 1) && !precisely_equal(oldTwo, 1))) {
+ fT[0][index] = one;
+ fT[1][index] = two;
+ fPt[index] = pt;
+ }
+ return -1;
+ }
+ #if ONE_OFF_DEBUG
+ if (pt.roughlyEqual(fPt[index])) {
+ SkDebugf("%s t=%1.9g pts roughly equal\n", __FUNCTION__, one);
+ }
+ #endif
+ if (fT[0][index] > one) {
+ break;
+ }
+ }
+ SkASSERT(fUsed < 9);
+ int remaining = fUsed - index;
+ if (remaining > 0) {
+ memmove(&fPt[index + 1], &fPt[index], sizeof(fPt[0]) * remaining);
+ memmove(&fT[0][index + 1], &fT[0][index], sizeof(fT[0][0]) * remaining);
+ memmove(&fT[1][index + 1], &fT[1][index], sizeof(fT[1][0]) * remaining);
+ fIsCoincident[0] += fIsCoincident[0] & ~((1 << index) - 1);
+ fIsCoincident[1] += fIsCoincident[1] & ~((1 << index) - 1);
+ }
+ fPt[index] = pt;
+ fT[0][index] = one;
+ fT[1][index] = two;
+ ++fUsed;
+ return index;
+}
+
+void Intersections::remove(double one, double two, const _Point& startPt, const _Point& endPt) {
+ for (int index = fUsed - 1; index >= 0; --index) {
+ if (!(fIsCoincident[0] & (1 << index)) && (between(one, fT[fSwap][index], two)
+ || startPt.approximatelyEqual(fPt[index])
+ || endPt.approximatelyEqual(fPt[index]))) {
+ SkASSERT(fUsed > 0);
+ removeOne(index);
+ }
+ }
+}
+
+void Intersections::removeOne(int index) {
+ int remaining = --fUsed - index;
+ if (remaining <= 0) {
+ return;
+ }
+ memmove(&fPt[index], &fPt[index + 1], sizeof(fPt[0]) * remaining);
+ memmove(&fT[0][index], &fT[0][index + 1], sizeof(fT[0][0]) * remaining);
+ memmove(&fT[1][index], &fT[1][index + 1], sizeof(fT[1][0]) * remaining);
+ SkASSERT(fIsCoincident[0] == 0);
+ int coBit = fIsCoincident[0] & (1 << index);
+ fIsCoincident[0] -= ((fIsCoincident[0] >> 1) & ~((1 << index) - 1)) + coBit;
+ SkASSERT(!(coBit ^ (fIsCoincident[1] & (1 << index))));
+ fIsCoincident[1] -= ((fIsCoincident[1] >> 1) & ~((1 << index) - 1)) + coBit;
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/Intersections.h b/chromium/third_party/skia/experimental/Intersection/Intersections.h
new file mode 100644
index 00000000000..fc4c26c6e7b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/Intersections.h
@@ -0,0 +1,144 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#ifndef Intersections_DEFINE
+#define Intersections_DEFINE
+
+class Intersections {
+public:
+ Intersections()
+ : fFlip(0)
+#if SK_DEBUG
+ , fDepth(0)
+#endif
+ , fSwap(0)
+ {
+#if SK_DEBUG
+ bzero(fPt, sizeof(fPt));
+ bzero(fT, sizeof(fT));
+ bzero(fIsCoincident, sizeof(fIsCoincident));
+#endif
+ reset();
+ }
+
+ int coincidentUsed() const {
+ if (!fIsCoincident[0]) {
+ SkASSERT(!fIsCoincident[0]);
+ return 0;
+ }
+ int count = 0;
+ SkDEBUGCODE(int count2 = 0;)
+ for (int index = 0; index < fUsed; ++index) {
+ if (fIsCoincident[0] & (1 << index)) {
+ ++count;
+ }
+ #if SK_DEBUG
+ if (fIsCoincident[1] & (1 << index)) {
+ ++count2;
+ }
+ #endif
+ }
+ SkASSERT(count == count2);
+ return count;
+ }
+
+ void offset(int base, double start, double end) {
+ for (int index = base; index < fUsed; ++index) {
+ double val = fT[fSwap][index];
+ val *= end - start;
+ val += start;
+ fT[fSwap][index] = val;
+ }
+ }
+
+ // FIXME : does not respect swap
+ int insert(double one, double two, const _Point& pt);
+
+ // start if index == 0 : end if index == 1
+ void insertCoincident(double one, double two, const _Point& pt) {
+ int index = insertSwap(one, two, pt);
+ int bit = 1 << index;
+ fIsCoincident[0] |= bit;
+ fIsCoincident[1] |= bit;
+ }
+
+ void insertCoincidentPair(double s1, double e1, double s2, double e2,
+ const _Point& startPt, const _Point& endPt);
+
+ int insertSwap(double one, double two, const _Point& pt) {
+ if (fSwap) {
+ return insert(two, one, pt);
+ } else {
+ return insert(one, two, pt);
+ }
+ }
+
+ bool intersected() const {
+ return fUsed > 0;
+ }
+
+ void removeOne(int index);
+
+ // leaves flip, swap alone
+ void reset() {
+ fUsed = 0;
+ fUnsortable = false;
+ }
+
+ void swap() {
+ fSwap ^= true;
+ }
+
+ void swapPts() {
+ int index;
+ for (index = 0; index < fUsed; ++index) {
+ SkTSwap(fT[0][index], fT[1][index]);
+ }
+ }
+
+ bool swapped() const {
+ return fSwap;
+ }
+
+ bool unsortable() const {
+ return fUnsortable;
+ }
+
+ int used() const {
+ return fUsed;
+ }
+
+ void downDepth() {
+ SkASSERT(--fDepth >= 0);
+ }
+
+ void upDepth() {
+ SkASSERT(++fDepth < 16);
+ }
+
+#if SK_DEBUG
+ int depth() const {
+ return fDepth;
+ }
+#endif
+
+ _Point fPt[9];
+ double fT[2][9];
+ unsigned short fIsCoincident[2]; // bit arrays, one bit set for each coincident T
+ unsigned char fUsed;
+ bool fFlip;
+ bool fUnsortable;
+#if SK_DEBUG
+ int fDepth;
+#endif
+protected:
+ // used by addCoincident to remove ordinary intersections in range
+ void remove(double one, double two, const _Point& startPt, const _Point& endPt);
+private:
+ bool fSwap;
+};
+
+#endif
diff --git a/chromium/third_party/skia/experimental/Intersection/LineCubicIntersection.cpp b/chromium/third_party/skia/experimental/Intersection/LineCubicIntersection.cpp
new file mode 100644
index 00000000000..c433fc2a293
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/LineCubicIntersection.cpp
@@ -0,0 +1,296 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "CubicUtilities.h"
+#include "Intersections.h"
+#include "LineUtilities.h"
+
+/*
+Find the interection of a line and cubic by solving for valid t values.
+
+Analogous to line-quadratic intersection, solve line-cubic intersection by
+representing the cubic as:
+ x = a(1-t)^3 + 2b(1-t)^2t + c(1-t)t^2 + dt^3
+ y = e(1-t)^3 + 2f(1-t)^2t + g(1-t)t^2 + ht^3
+and the line as:
+ y = i*x + j (if the line is more horizontal)
+or:
+ x = i*y + j (if the line is more vertical)
+
+Then using Mathematica, solve for the values of t where the cubic intersects the
+line:
+
+ (in) Resultant[
+ a*(1 - t)^3 + 3*b*(1 - t)^2*t + 3*c*(1 - t)*t^2 + d*t^3 - x,
+ e*(1 - t)^3 + 3*f*(1 - t)^2*t + 3*g*(1 - t)*t^2 + h*t^3 - i*x - j, x]
+ (out) -e + j +
+ 3 e t - 3 f t -
+ 3 e t^2 + 6 f t^2 - 3 g t^2 +
+ e t^3 - 3 f t^3 + 3 g t^3 - h t^3 +
+ i ( a -
+ 3 a t + 3 b t +
+ 3 a t^2 - 6 b t^2 + 3 c t^2 -
+ a t^3 + 3 b t^3 - 3 c t^3 + d t^3 )
+
+if i goes to infinity, we can rewrite the line in terms of x. Mathematica:
+
+ (in) Resultant[
+ a*(1 - t)^3 + 3*b*(1 - t)^2*t + 3*c*(1 - t)*t^2 + d*t^3 - i*y - j,
+ e*(1 - t)^3 + 3*f*(1 - t)^2*t + 3*g*(1 - t)*t^2 + h*t^3 - y, y]
+ (out) a - j -
+ 3 a t + 3 b t +
+ 3 a t^2 - 6 b t^2 + 3 c t^2 -
+ a t^3 + 3 b t^3 - 3 c t^3 + d t^3 -
+ i ( e -
+ 3 e t + 3 f t +
+ 3 e t^2 - 6 f t^2 + 3 g t^2 -
+ e t^3 + 3 f t^3 - 3 g t^3 + h t^3 )
+
+Solving this with Mathematica produces an expression with hundreds of terms;
+instead, use Numeric Solutions recipe to solve the cubic.
+
+The near-horizontal case, in terms of: Ax^3 + Bx^2 + Cx + D == 0
+ A = (-(-e + 3*f - 3*g + h) + i*(-a + 3*b - 3*c + d) )
+ B = 3*(-( e - 2*f + g ) + i*( a - 2*b + c ) )
+ C = 3*(-(-e + f ) + i*(-a + b ) )
+ D = (-( e ) + i*( a ) + j )
+
+The near-vertical case, in terms of: Ax^3 + Bx^2 + Cx + D == 0
+ A = ( (-a + 3*b - 3*c + d) - i*(-e + 3*f - 3*g + h) )
+ B = 3*( ( a - 2*b + c ) - i*( e - 2*f + g ) )
+ C = 3*( (-a + b ) - i*(-e + f ) )
+ D = ( ( a ) - i*( e ) - j )
+
+For horizontal lines:
+(in) Resultant[
+ a*(1 - t)^3 + 3*b*(1 - t)^2*t + 3*c*(1 - t)*t^2 + d*t^3 - j,
+ e*(1 - t)^3 + 3*f*(1 - t)^2*t + 3*g*(1 - t)*t^2 + h*t^3 - y, y]
+(out) e - j -
+ 3 e t + 3 f t +
+ 3 e t^2 - 6 f t^2 + 3 g t^2 -
+ e t^3 + 3 f t^3 - 3 g t^3 + h t^3
+So the cubic coefficients are:
+
+ */
+
+class LineCubicIntersections {
+public:
+
+LineCubicIntersections(const Cubic& c, const _Line& l, Intersections& i)
+ : cubic(c)
+ , line(l)
+ , intersections(i) {
+}
+
+// see parallel routine in line quadratic intersections
+int intersectRay(double roots[3]) {
+ double adj = line[1].x - line[0].x;
+ double opp = line[1].y - line[0].y;
+ Cubic r;
+ for (int n = 0; n < 4; ++n) {
+ r[n].x = (cubic[n].y - line[0].y) * adj - (cubic[n].x - line[0].x) * opp;
+ }
+ double A, B, C, D;
+ coefficients(&r[0].x, A, B, C, D);
+ return cubicRootsValidT(A, B, C, D, roots);
+}
+
+int intersect() {
+ addEndPoints();
+ double rootVals[3];
+ int roots = intersectRay(rootVals);
+ for (int index = 0; index < roots; ++index) {
+ double cubicT = rootVals[index];
+ double lineT = findLineT(cubicT);
+ if (pinTs(cubicT, lineT)) {
+ _Point pt;
+ xy_at_t(line, lineT, pt.x, pt.y);
+ intersections.insert(cubicT, lineT, pt);
+ }
+ }
+ return intersections.fUsed;
+}
+
+int horizontalIntersect(double axisIntercept, double roots[3]) {
+ double A, B, C, D;
+ coefficients(&cubic[0].y, A, B, C, D);
+ D -= axisIntercept;
+ return cubicRootsValidT(A, B, C, D, roots);
+}
+
+int horizontalIntersect(double axisIntercept, double left, double right, bool flipped) {
+ addHorizontalEndPoints(left, right, axisIntercept);
+ double rootVals[3];
+ int roots = horizontalIntersect(axisIntercept, rootVals);
+ for (int index = 0; index < roots; ++index) {
+ _Point pt;
+ double cubicT = rootVals[index];
+ xy_at_t(cubic, cubicT, pt.x, pt.y);
+ double lineT = (pt.x - left) / (right - left);
+ if (pinTs(cubicT, lineT)) {
+ intersections.insert(cubicT, lineT, pt);
+ }
+ }
+ if (flipped) {
+ flip();
+ }
+ return intersections.fUsed;
+}
+
+int verticalIntersect(double axisIntercept, double roots[3]) {
+ double A, B, C, D;
+ coefficients(&cubic[0].x, A, B, C, D);
+ D -= axisIntercept;
+ return cubicRootsValidT(A, B, C, D, roots);
+}
+
+int verticalIntersect(double axisIntercept, double top, double bottom, bool flipped) {
+ addVerticalEndPoints(top, bottom, axisIntercept);
+ double rootVals[3];
+ int roots = verticalIntersect(axisIntercept, rootVals);
+ for (int index = 0; index < roots; ++index) {
+ _Point pt;
+ double cubicT = rootVals[index];
+ xy_at_t(cubic, cubicT, pt.x, pt.y);
+ double lineT = (pt.y - top) / (bottom - top);
+ if (pinTs(cubicT, lineT)) {
+ intersections.insert(cubicT, lineT, pt);
+ }
+ }
+ if (flipped) {
+ flip();
+ }
+ return intersections.fUsed;
+}
+
+protected:
+
+void addEndPoints()
+{
+ for (int cIndex = 0; cIndex < 4; cIndex += 3) {
+ for (int lIndex = 0; lIndex < 2; lIndex++) {
+ if (cubic[cIndex] == line[lIndex]) {
+ intersections.insert(cIndex >> 1, lIndex, line[lIndex]);
+ }
+ }
+ }
+}
+
+void addHorizontalEndPoints(double left, double right, double y)
+{
+ for (int cIndex = 0; cIndex < 4; cIndex += 3) {
+ if (cubic[cIndex].y != y) {
+ continue;
+ }
+ if (cubic[cIndex].x == left) {
+ intersections.insert(cIndex >> 1, 0, cubic[cIndex]);
+ }
+ if (cubic[cIndex].x == right) {
+ intersections.insert(cIndex >> 1, 1, cubic[cIndex]);
+ }
+ }
+}
+
+void addVerticalEndPoints(double top, double bottom, double x)
+{
+ for (int cIndex = 0; cIndex < 4; cIndex += 3) {
+ if (cubic[cIndex].x != x) {
+ continue;
+ }
+ if (cubic[cIndex].y == top) {
+ intersections.insert(cIndex >> 1, 0, cubic[cIndex]);
+ }
+ if (cubic[cIndex].y == bottom) {
+ intersections.insert(cIndex >> 1, 1, cubic[cIndex]);
+ }
+ }
+}
+
+double findLineT(double t) {
+ double x, y;
+ xy_at_t(cubic, t, x, y);
+ double dx = line[1].x - line[0].x;
+ double dy = line[1].y - line[0].y;
+ if (fabs(dx) > fabs(dy)) {
+ return (x - line[0].x) / dx;
+ }
+ return (y - line[0].y) / dy;
+}
+
+void flip() {
+ // OPTIMIZATION: instead of swapping, pass original line, use [1].y - [0].y
+ int roots = intersections.fUsed;
+ for (int index = 0; index < roots; ++index) {
+ intersections.fT[1][index] = 1 - intersections.fT[1][index];
+ }
+}
+
+static bool pinTs(double& cubicT, double& lineT) {
+ if (!approximately_one_or_less(lineT)) {
+ return false;
+ }
+ if (!approximately_zero_or_more(lineT)) {
+ return false;
+ }
+ if (precisely_less_than_zero(cubicT)) {
+ cubicT = 0;
+ } else if (precisely_greater_than_one(cubicT)) {
+ cubicT = 1;
+ }
+ if (precisely_less_than_zero(lineT)) {
+ lineT = 0;
+ } else if (precisely_greater_than_one(lineT)) {
+ lineT = 1;
+ }
+ return true;
+}
+
+private:
+
+const Cubic& cubic;
+const _Line& line;
+Intersections& intersections;
+};
+
+int horizontalIntersect(const Cubic& cubic, double left, double right, double y,
+ double tRange[3]) {
+ LineCubicIntersections c(cubic, *((_Line*) 0), *((Intersections*) 0));
+ double rootVals[3];
+ int result = c.horizontalIntersect(y, rootVals);
+ int tCount = 0;
+ for (int index = 0; index < result; ++index) {
+ double x, y;
+ xy_at_t(cubic, rootVals[index], x, y);
+ if (x < left || x > right) {
+ continue;
+ }
+ tRange[tCount++] = rootVals[index];
+ }
+ return result;
+}
+
+int horizontalIntersect(const Cubic& cubic, double left, double right, double y,
+ bool flipped, Intersections& intersections) {
+ LineCubicIntersections c(cubic, *((_Line*) 0), intersections);
+ return c.horizontalIntersect(y, left, right, flipped);
+}
+
+int verticalIntersect(const Cubic& cubic, double top, double bottom, double x,
+ bool flipped, Intersections& intersections) {
+ LineCubicIntersections c(cubic, *((_Line*) 0), intersections);
+ return c.verticalIntersect(x, top, bottom, flipped);
+}
+
+int intersect(const Cubic& cubic, const _Line& line, Intersections& i) {
+ LineCubicIntersections c(cubic, line, i);
+ return c.intersect();
+}
+
+int intersectRay(const Cubic& cubic, const _Line& line, Intersections& i) {
+ LineCubicIntersections c(cubic, line, i);
+ return c.intersectRay(i.fT[0]);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/LineCubicIntersection_Test.cpp b/chromium/third_party/skia/experimental/Intersection/LineCubicIntersection_Test.cpp
new file mode 100644
index 00000000000..adf01122ac4
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/LineCubicIntersection_Test.cpp
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "CurveUtilities.h"
+#include "Intersection_Tests.h"
+#include "Intersections.h"
+#include "TestUtilities.h"
+
+struct lineCubic {
+ Cubic cubic;
+ _Line line;
+} lineCubicTests[] = {
+ {{{0, 0}, {0, 1}, {0, 1}, {1, 1}}, {{0, 1}, {1, 0}}}
+};
+
+size_t lineCubicTests_count = sizeof(lineCubicTests) / sizeof(lineCubicTests[0]);
+
+const int firstLineCubicIntersectionTest = 0;
+
+void LineCubicIntersection_Test() {
+ for (size_t index = firstLineCubicIntersectionTest; index < lineCubicTests_count; ++index) {
+ const Cubic& cubic = lineCubicTests[index].cubic;
+ const _Line& line = lineCubicTests[index].line;
+ Cubic reduce1;
+ _Line reduce2;
+ int order1 = reduceOrder(cubic, reduce1, kReduceOrder_NoQuadraticsAllowed,
+ kReduceOrder_TreatAsFill);
+ int order2 = reduceOrder(line, reduce2);
+ if (order1 < 4) {
+ printf("[%d] cubic order=%d\n", (int) index, order1);
+ }
+ if (order2 < 2) {
+ printf("[%d] line order=%d\n", (int) index, order2);
+ }
+ if (order1 == 4 && order2 == 2) {
+ Intersections i;
+ double* range1 = i.fT[0];
+ double* range2 = i.fT[1];
+ int roots = intersect(reduce1, reduce2, i);
+ for (int pt = 0; pt < roots; ++pt) {
+ double tt1 = range1[pt];
+ double tx1, ty1;
+ xy_at_t(cubic, tt1, tx1, ty1);
+ double tt2 = range2[pt];
+ double tx2, ty2;
+ xy_at_t(line, tt2, tx2, ty2);
+ if (!AlmostEqualUlps(tx1, tx2)) {
+ printf("%s [%d,%d] x!= t1=%g (%g,%g) t2=%g (%g,%g)\n",
+ __FUNCTION__, (int)index, pt, tt1, tx1, ty1, tt2, tx2, ty2);
+ }
+ if (!AlmostEqualUlps(ty1, ty2)) {
+ printf("%s [%d,%d] y!= t1=%g (%g,%g) t2=%g (%g,%g)\n",
+ __FUNCTION__, (int)index, pt, tt1, tx1, ty1, tt2, tx2, ty2);
+ }
+ }
+ }
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/LineIntersection.cpp b/chromium/third_party/skia/experimental/Intersection/LineIntersection.cpp
new file mode 100644
index 00000000000..ca6a8e40817
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/LineIntersection.cpp
@@ -0,0 +1,338 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "Intersections.h"
+#include "LineIntersection.h"
+#include "LineUtilities.h"
+
+/* Determine the intersection point of two lines. This assumes the lines are not parallel,
+ and that that the lines are infinite.
+ From http://en.wikipedia.org/wiki/Line-line_intersection
+ */
+void lineIntersect(const _Line& a, const _Line& b, _Point& p) {
+ double axLen = a[1].x - a[0].x;
+ double ayLen = a[1].y - a[0].y;
+ double bxLen = b[1].x - b[0].x;
+ double byLen = b[1].y - b[0].y;
+ double denom = byLen * axLen - ayLen * bxLen;
+ SkASSERT(denom);
+ double term1 = a[1].x * a[0].y - a[1].y * a[0].x;
+ double term2 = b[1].x * b[0].y - b[1].y * b[0].x;
+ p.x = (term1 * bxLen - axLen * term2) / denom;
+ p.y = (term1 * byLen - ayLen * term2) / denom;
+}
+
+static int computePoints(const _Line& a, int used, Intersections& i) {
+ i.fPt[0] = xy_at_t(a, i.fT[0][0]);
+ if ((i.fUsed = used) == 2) {
+ i.fPt[1] = xy_at_t(a, i.fT[0][1]);
+ }
+ return i.fUsed;
+}
+
+/*
+ Determine the intersection point of two line segments
+ Return FALSE if the lines don't intersect
+ from: http://paulbourke.net/geometry/lineline2d/
+ */
+
+int intersect(const _Line& a, const _Line& b, Intersections& i) {
+ double axLen = a[1].x - a[0].x;
+ double ayLen = a[1].y - a[0].y;
+ double bxLen = b[1].x - b[0].x;
+ double byLen = b[1].y - b[0].y;
+ /* Slopes match when denom goes to zero:
+ axLen / ayLen == bxLen / byLen
+ (ayLen * byLen) * axLen / ayLen == (ayLen * byLen) * bxLen / byLen
+ byLen * axLen == ayLen * bxLen
+ byLen * axLen - ayLen * bxLen == 0 ( == denom )
+ */
+ double denom = byLen * axLen - ayLen * bxLen;
+ double ab0y = a[0].y - b[0].y;
+ double ab0x = a[0].x - b[0].x;
+ double numerA = ab0y * bxLen - byLen * ab0x;
+ double numerB = ab0y * axLen - ayLen * ab0x;
+ bool mayNotOverlap = (numerA < 0 && denom > numerA) || (numerA > 0 && denom < numerA)
+ || (numerB < 0 && denom > numerB) || (numerB > 0 && denom < numerB);
+ numerA /= denom;
+ numerB /= denom;
+ if ((!approximately_zero(denom) || (!approximately_zero_inverse(numerA)
+ && !approximately_zero_inverse(numerB))) && !sk_double_isnan(numerA)
+ && !sk_double_isnan(numerB)) {
+ if (mayNotOverlap) {
+ return 0;
+ }
+ i.fT[0][0] = numerA;
+ i.fT[1][0] = numerB;
+ i.fPt[0] = xy_at_t(a, numerA);
+ return computePoints(a, 1, i);
+ }
+ /* See if the axis intercepts match:
+ ay - ax * ayLen / axLen == by - bx * ayLen / axLen
+ axLen * (ay - ax * ayLen / axLen) == axLen * (by - bx * ayLen / axLen)
+ axLen * ay - ax * ayLen == axLen * by - bx * ayLen
+ */
+ // FIXME: need to use AlmostEqualUlps variant instead
+ if (!approximately_equal_squared(axLen * a[0].y - ayLen * a[0].x,
+ axLen * b[0].y - ayLen * b[0].x)) {
+ return 0;
+ }
+ const double* aPtr;
+ const double* bPtr;
+ if (fabs(axLen) > fabs(ayLen) || fabs(bxLen) > fabs(byLen)) {
+ aPtr = &a[0].x;
+ bPtr = &b[0].x;
+ } else {
+ aPtr = &a[0].y;
+ bPtr = &b[0].y;
+ }
+ double a0 = aPtr[0];
+ double a1 = aPtr[2];
+ double b0 = bPtr[0];
+ double b1 = bPtr[2];
+ // OPTIMIZATION: restructure to reject before the divide
+ // e.g., if ((a0 - b0) * (a0 - a1) < 0 || abs(a0 - b0) > abs(a0 - a1))
+ // (except efficient)
+ double aDenom = a0 - a1;
+ if (approximately_zero(aDenom)) {
+ if (!between(b0, a0, b1)) {
+ return 0;
+ }
+ i.fT[0][0] = i.fT[0][1] = 0;
+ } else {
+ double at0 = (a0 - b0) / aDenom;
+ double at1 = (a0 - b1) / aDenom;
+ if ((at0 < 0 && at1 < 0) || (at0 > 1 && at1 > 1)) {
+ return 0;
+ }
+ i.fT[0][0] = SkTMax(SkTMin(at0, 1.0), 0.0);
+ i.fT[0][1] = SkTMax(SkTMin(at1, 1.0), 0.0);
+ }
+ double bDenom = b0 - b1;
+ if (approximately_zero(bDenom)) {
+ i.fT[1][0] = i.fT[1][1] = 0;
+ } else {
+ int bIn = aDenom * bDenom < 0;
+ i.fT[1][bIn] = SkTMax(SkTMin((b0 - a0) / bDenom, 1.0), 0.0);
+ i.fT[1][!bIn] = SkTMax(SkTMin((b0 - a1) / bDenom, 1.0), 0.0);
+ }
+ bool second = fabs(i.fT[0][0] - i.fT[0][1]) > FLT_EPSILON;
+ SkASSERT((fabs(i.fT[1][0] - i.fT[1][1]) <= FLT_EPSILON) ^ second);
+ return computePoints(a, 1 + second, i);
+}
+
+int horizontalIntersect(const _Line& line, double y, double tRange[2]) {
+ double min = line[0].y;
+ double max = line[1].y;
+ if (min > max) {
+ SkTSwap(min, max);
+ }
+ if (min > y || max < y) {
+ return 0;
+ }
+ if (AlmostEqualUlps(min, max)) {
+ tRange[0] = 0;
+ tRange[1] = 1;
+ return 2;
+ }
+ tRange[0] = (y - line[0].y) / (line[1].y - line[0].y);
+ return 1;
+}
+
+// OPTIMIZATION Given: dy = line[1].y - line[0].y
+// and: xIntercept / (y - line[0].y) == (line[1].x - line[0].x) / dy
+// then: xIntercept * dy == (line[1].x - line[0].x) * (y - line[0].y)
+// Assuming that dy is always > 0, the line segment intercepts if:
+// left * dy <= xIntercept * dy <= right * dy
+// thus: left * dy <= (line[1].x - line[0].x) * (y - line[0].y) <= right * dy
+// (clever as this is, it does not give us the t value, so may be useful only
+// as a quick reject -- and maybe not then; it takes 3 muls, 3 adds, 2 cmps)
+int horizontalLineIntersect(const _Line& line, double left, double right,
+ double y, double tRange[2]) {
+ int result = horizontalIntersect(line, y, tRange);
+ if (result != 1) {
+ // FIXME: this is incorrect if result == 2
+ return result;
+ }
+ double xIntercept = line[0].x + tRange[0] * (line[1].x - line[0].x);
+ if (xIntercept > right || xIntercept < left) {
+ return 0;
+ }
+ return result;
+}
+
+int horizontalIntersect(const _Line& line, double left, double right,
+ double y, bool flipped, Intersections& intersections) {
+ int result = horizontalIntersect(line, y, intersections.fT[0]);
+ switch (result) {
+ case 0:
+ break;
+ case 1: {
+ double xIntercept = line[0].x + intersections.fT[0][0]
+ * (line[1].x - line[0].x);
+ if (xIntercept > right || xIntercept < left) {
+ return 0;
+ }
+ intersections.fT[1][0] = (xIntercept - left) / (right - left);
+ break;
+ }
+ case 2:
+ #if 0 // sorting edges fails to preserve original direction
+ double lineL = line[0].x;
+ double lineR = line[1].x;
+ if (lineL > lineR) {
+ SkTSwap(lineL, lineR);
+ }
+ double overlapL = SkTMax(left, lineL);
+ double overlapR = SkTMin(right, lineR);
+ if (overlapL > overlapR) {
+ return 0;
+ }
+ if (overlapL == overlapR) {
+ result = 1;
+ }
+ intersections.fT[0][0] = (overlapL - line[0].x) / (line[1].x - line[0].x);
+ intersections.fT[1][0] = (overlapL - left) / (right - left);
+ if (result > 1) {
+ intersections.fT[0][1] = (overlapR - line[0].x) / (line[1].x - line[0].x);
+ intersections.fT[1][1] = (overlapR - left) / (right - left);
+ }
+ #else
+ double a0 = line[0].x;
+ double a1 = line[1].x;
+ double b0 = flipped ? right : left;
+ double b1 = flipped ? left : right;
+ // FIXME: share common code below
+ double at0 = (a0 - b0) / (a0 - a1);
+ double at1 = (a0 - b1) / (a0 - a1);
+ if ((at0 < 0 && at1 < 0) || (at0 > 1 && at1 > 1)) {
+ return 0;
+ }
+ intersections.fT[0][0] = SkTMax(SkTMin(at0, 1.0), 0.0);
+ intersections.fT[0][1] = SkTMax(SkTMin(at1, 1.0), 0.0);
+ int bIn = (a0 - a1) * (b0 - b1) < 0;
+ intersections.fT[1][bIn] = SkTMax(SkTMin((b0 - a0) / (b0 - b1),
+ 1.0), 0.0);
+ intersections.fT[1][!bIn] = SkTMax(SkTMin((b0 - a1) / (b0 - b1),
+ 1.0), 0.0);
+ bool second = fabs(intersections.fT[0][0] - intersections.fT[0][1])
+ > FLT_EPSILON;
+ SkASSERT((fabs(intersections.fT[1][0] - intersections.fT[1][1])
+ <= FLT_EPSILON) ^ second);
+ return computePoints(line, 1 + second, intersections);
+ #endif
+ break;
+ }
+ if (flipped) {
+ // OPTIMIZATION: instead of swapping, pass original line, use [1].x - [0].x
+ for (int index = 0; index < result; ++index) {
+ intersections.fT[1][index] = 1 - intersections.fT[1][index];
+ }
+ }
+ return computePoints(line, result, intersections);
+}
+
+static int verticalIntersect(const _Line& line, double x, double tRange[2]) {
+ double min = line[0].x;
+ double max = line[1].x;
+ if (min > max) {
+ SkTSwap(min, max);
+ }
+ if (min > x || max < x) {
+ return 0;
+ }
+ if (AlmostEqualUlps(min, max)) {
+ tRange[0] = 0;
+ tRange[1] = 1;
+ return 2;
+ }
+ tRange[0] = (x - line[0].x) / (line[1].x - line[0].x);
+ return 1;
+}
+
+int verticalIntersect(const _Line& line, double top, double bottom,
+ double x, bool flipped, Intersections& intersections) {
+ int result = verticalIntersect(line, x, intersections.fT[0]);
+ switch (result) {
+ case 0:
+ break;
+ case 1: {
+ double yIntercept = line[0].y + intersections.fT[0][0]
+ * (line[1].y - line[0].y);
+ if (yIntercept > bottom || yIntercept < top) {
+ return 0;
+ }
+ intersections.fT[1][0] = (yIntercept - top) / (bottom - top);
+ break;
+ }
+ case 2:
+ #if 0 // sorting edges fails to preserve original direction
+ double lineT = line[0].y;
+ double lineB = line[1].y;
+ if (lineT > lineB) {
+ SkTSwap(lineT, lineB);
+ }
+ double overlapT = SkTMax(top, lineT);
+ double overlapB = SkTMin(bottom, lineB);
+ if (overlapT > overlapB) {
+ return 0;
+ }
+ if (overlapT == overlapB) {
+ result = 1;
+ }
+ intersections.fT[0][0] = (overlapT - line[0].y) / (line[1].y - line[0].y);
+ intersections.fT[1][0] = (overlapT - top) / (bottom - top);
+ if (result > 1) {
+ intersections.fT[0][1] = (overlapB - line[0].y) / (line[1].y - line[0].y);
+ intersections.fT[1][1] = (overlapB - top) / (bottom - top);
+ }
+ #else
+ double a0 = line[0].y;
+ double a1 = line[1].y;
+ double b0 = flipped ? bottom : top;
+ double b1 = flipped ? top : bottom;
+ // FIXME: share common code above
+ double at0 = (a0 - b0) / (a0 - a1);
+ double at1 = (a0 - b1) / (a0 - a1);
+ if ((at0 < 0 && at1 < 0) || (at0 > 1 && at1 > 1)) {
+ return 0;
+ }
+ intersections.fT[0][0] = SkTMax(SkTMin(at0, 1.0), 0.0);
+ intersections.fT[0][1] = SkTMax(SkTMin(at1, 1.0), 0.0);
+ int bIn = (a0 - a1) * (b0 - b1) < 0;
+ intersections.fT[1][bIn] = SkTMax(SkTMin((b0 - a0) / (b0 - b1),
+ 1.0), 0.0);
+ intersections.fT[1][!bIn] = SkTMax(SkTMin((b0 - a1) / (b0 - b1),
+ 1.0), 0.0);
+ bool second = fabs(intersections.fT[0][0] - intersections.fT[0][1])
+ > FLT_EPSILON;
+ SkASSERT((fabs(intersections.fT[1][0] - intersections.fT[1][1])
+ <= FLT_EPSILON) ^ second);
+ return computePoints(line, 1 + second, intersections);
+ #endif
+ break;
+ }
+ if (flipped) {
+ // OPTIMIZATION: instead of swapping, pass original line, use [1].y - [0].y
+ for (int index = 0; index < result; ++index) {
+ intersections.fT[1][index] = 1 - intersections.fT[1][index];
+ }
+ }
+ return computePoints(line, result, intersections);
+}
+
+// from http://www.bryceboe.com/wordpress/wp-content/uploads/2006/10/intersect.py
+// 4 subs, 2 muls, 1 cmp
+static bool ccw(const _Point& A, const _Point& B, const _Point& C) {
+ return (C.y - A.y) * (B.x - A.x) > (B.y - A.y) * (C.x - A.x);
+}
+
+// 16 subs, 8 muls, 6 cmps
+bool testIntersect(const _Line& a, const _Line& b) {
+ return ccw(a[0], b[0], b[1]) != ccw(a[1], b[0], b[1])
+ && ccw(a[0], a[1], b[0]) != ccw(a[0], a[1], b[1]);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/LineIntersection.h b/chromium/third_party/skia/experimental/Intersection/LineIntersection.h
new file mode 100644
index 00000000000..4036f136e11
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/LineIntersection.h
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#ifndef LineIntersection_DEFINE
+#define LineIntersection_DEFINE
+
+#include "Intersections.h"
+
+int horizontalIntersect(const _Line& line, double y, double tRange[2]);
+int horizontalLineIntersect(const _Line& line, double left, double right,
+ double y, double tRange[2]);
+void lineIntersect(const _Line& a, const _Line& b, _Point& p);
+int intersect(const _Line& a, const _Line& b, Intersections&);
+bool testIntersect(const _Line& a, const _Line& b);
+int verticalLineIntersect(const _Line& line, double top, double bottom,
+ double x, double tRange[2]);
+
+#endif
diff --git a/chromium/third_party/skia/experimental/Intersection/LineIntersection_Test.cpp b/chromium/third_party/skia/experimental/Intersection/LineIntersection_Test.cpp
new file mode 100644
index 00000000000..283d9dfe4b8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/LineIntersection_Test.cpp
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveUtilities.h"
+#include "Intersection_Tests.h"
+#include "LineIntersection.h"
+
+// FIXME: add tests for intersecting, non-intersecting, degenerate, coincident
+const _Line tests[][2] = {
+ {{{0, 0}, {1, 0}}, {{1, 0}, {0, 0}}},
+ {{{0, 0}, {0, 0}}, {{0, 0}, {1, 0}}},
+ {{{0, 1}, {0, 1}}, {{0, 0}, {0, 2}}},
+ {{{0, 0}, {1, 0}}, {{0, 0}, {2, 0}}},
+ {{{1, 1}, {2, 2}}, {{0, 0}, {3, 3}}},
+ {{{166.86950047022856, 112.69654129527828}, {166.86948801592692, 112.69655741235339}},
+ {{166.86960700313026, 112.6965477747386}, {166.86925794355412, 112.69656471103423}}}
+};
+
+const size_t tests_count = sizeof(tests) / sizeof(tests[0]);
+
+const _Line noIntersect[][2] = {
+ {{{0, 0}, {1, 0}}, {{3, 0}, {2, 0}}},
+ {{{0, 0}, {0, 0}}, {{1, 0}, {2, 0}}},
+ {{{0, 1}, {0, 1}}, {{0, 3}, {0, 2}}},
+ {{{0, 0}, {1, 0}}, {{2, 0}, {3, 0}}},
+ {{{1, 1}, {2, 2}}, {{4, 4}, {3, 3}}},
+};
+
+const size_t noIntersect_count = sizeof(noIntersect) / sizeof(noIntersect[0]);
+
+static size_t firstLineIntersectionTest = 0;
+static size_t firstNoIntersectionTest = 0;
+
+void LineIntersection_Test() {
+ size_t index;
+ for (index = firstLineIntersectionTest; index < tests_count; ++index) {
+ const _Line& line1 = tests[index][0];
+ const _Line& line2 = tests[index][1];
+ Intersections ts;
+ int pts = intersect(line1, line2, ts);
+ if (!pts) {
+ printf("%s [%zu] no intersection found\n", __FUNCTION__, index);
+ }
+ for (int i = 0; i < pts; ++i) {
+ _Point result1, result2;
+ xy_at_t(line1, ts.fT[0][i], result1.x, result1.y);
+ xy_at_t(line2, ts.fT[1][i], result2.x, result2.y);
+ if (!result1.approximatelyEqual(result2)) {
+ if (pts == 1) {
+ printf("%s [%zu] not equal\n", __FUNCTION__, index);
+ } else {
+ xy_at_t(line2, ts.fT[1][i ^ 1], result2.x, result2.y);
+ if (!result1.approximatelyEqual(result2)) {
+ printf("%s [%zu] not equal\n", __FUNCTION__, index);
+ }
+ }
+ }
+ }
+ }
+ for (index = firstNoIntersectionTest; index < noIntersect_count; ++index) {
+ const _Line& line1 = noIntersect[index][0];
+ const _Line& line2 = noIntersect[index][1];
+ Intersections ts;
+ int pts = intersect(line1, line2, ts);
+ if (pts) {
+ printf("%s [%zu] no intersection expected\n", __FUNCTION__, index);
+ }
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/LineParameterization.cpp b/chromium/third_party/skia/experimental/Intersection/LineParameterization.cpp
new file mode 100644
index 00000000000..197394530bc
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/LineParameterization.cpp
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+
+/* This rejects coincidence with two muls, two adds, and one cmp.
+ Coincident candidates will take another four muls and two adds, but may still
+ fail if they don't overlap. (The overlap test isn't performed here.)
+ */
+bool implicit_matches(const _Line& one, const _Line& two) {
+ _Point oneD, twoD;
+ tangent(one, oneD);
+ tangent(two, twoD);
+ /* See if the slopes match, i.e.
+ dx1 / dy1 == dx2 / dy2
+ (dy1 * dy2) * dx1 / dy1 == (dy1 * dy2) * dx2 / dy2
+ dy2 * dx1 == dy1 * dx2
+ */
+ if (!AlmostEqualUlps(oneD.x * twoD.y, twoD.x * oneD.y)) {
+ return false;
+ }
+ /* See if the axis intercepts match, i.e.
+ y0 - x0 * dy / dx == y1 - x1 * dy / dx
+ dx * (y0 - x0 * dy / dx) == dx * (y1 - x1 * dy / dx)
+ dx * y0 - x0 * dy == dx * y1 - x1 * dy
+ */
+ if (!AlmostEqualUlps(oneD.x * one[0].y - oneD.y * one[0].x,
+ oneD.x * two[0].y - oneD.y * two[0].x)) {
+ return false;
+ }
+ return true;
+}
+
+bool implicit_matches_ulps(const _Line& one, const _Line& two, int ulps) {
+ _Point oneD, twoD;
+ tangent(one, oneD);
+ tangent(two, twoD);
+ /* See if the slopes match, i.e.
+ dx1 / dy1 == dx2 / dy2
+ (dy1 * dy2) * dx1 / dy1 == (dy1 * dy2) * dx2 / dy2
+ dy2 * dx1 == dy1 * dx2
+ */
+ int diff = UlpsDiff((float) (oneD.x * twoD.y), (float) (twoD.x * oneD.y));
+ if (diff < 0 || diff > ulps) {
+ return false;
+ }
+ /* See if the axis intercepts match, i.e.
+ y0 - x0 * dy / dx == y1 - x1 * dy / dx
+ dx * (y0 - x0 * dy / dx) == dx * (y1 - x1 * dy / dx)
+ dx * y0 - x0 * dy == dx * y1 - x1 * dy
+ */
+ diff = UlpsDiff((float) (oneD.x * one[0].y - oneD.y * one[0].x),
+ (float) (oneD.x * two[0].y - oneD.y * two[0].x));
+ return diff >= 0 && diff <= ulps;
+}
+
+void tangent(const _Line& line, _Point& result) {
+ result.x = line[0].x - line[1].x;
+ result.y = line[0].y - line[1].y;
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/LineParameters.h b/chromium/third_party/skia/experimental/Intersection/LineParameters.h
new file mode 100644
index 00000000000..637b3b6d21d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/LineParameters.h
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "DataTypes.h"
+
+// Sources
+// computer-aided design - volume 22 number 9 november 1990 pp 538 - 549
+// online at http://cagd.cs.byu.edu/~tom/papers/bezclip.pdf
+
+// This turns a line segment into a parameterized line, of the form
+// ax + by + c = 0
+// When a^2 + b^2 == 1, the line is normalized.
+// The distance to the line for (x, y) is d(x,y) = ax + by + c
+//
+// Note that the distances below are not necessarily normalized. To get the true
+// distance, it's necessary to either call normalize() after xxxEndPoints(), or
+// divide the result of xxxDistance() by sqrt(normalSquared())
+
+class LineParameters {
+public:
+ void cubicEndPoints(const Cubic& pts) {
+ cubicEndPoints(pts, 0, 3);
+ }
+
+ void cubicEndPoints(const Cubic& pts, int s, int e) {
+ a = approximately_pin(pts[s].y - pts[e].y);
+ b = approximately_pin(pts[e].x - pts[s].x);
+ c = pts[s].x * pts[e].y - pts[e].x * pts[s].y;
+ }
+
+ void lineEndPoints(const _Line& pts) {
+ a = approximately_pin(pts[0].y - pts[1].y);
+ b = approximately_pin(pts[1].x - pts[0].x);
+ c = pts[0].x * pts[1].y - pts[1].x * pts[0].y;
+ }
+
+ void quadEndPoints(const Quadratic& pts) {
+ quadEndPoints(pts, 0, 2);
+ }
+
+ void quadEndPoints(const Quadratic& pts, int s, int e) {
+ a = approximately_pin(pts[s].y - pts[e].y);
+ b = approximately_pin(pts[e].x - pts[s].x);
+ c = pts[s].x * pts[e].y - pts[e].x * pts[s].y;
+ }
+
+ double normalSquared() const {
+ return a * a + b * b;
+ }
+
+ bool normalize() {
+ double normal = sqrt(normalSquared());
+ if (approximately_zero(normal)) {
+ a = b = c = 0;
+ return false;
+ }
+ double reciprocal = 1 / normal;
+ a *= reciprocal;
+ b *= reciprocal;
+ c *= reciprocal;
+ return true;
+ }
+
+ void cubicDistanceY(const Cubic& pts, Cubic& distance) const {
+ double oneThird = 1 / 3.0;
+ for (int index = 0; index < 4; ++index) {
+ distance[index].x = index * oneThird;
+ distance[index].y = a * pts[index].x + b * pts[index].y + c;
+ }
+ }
+
+ void quadDistanceY(const Quadratic& pts, Quadratic& distance) const {
+ double oneHalf = 1 / 2.0;
+ for (int index = 0; index < 3; ++index) {
+ distance[index].x = index * oneHalf;
+ distance[index].y = a * pts[index].x + b * pts[index].y + c;
+ }
+ }
+
+ double controlPtDistance(const Cubic& pts, int index) const {
+ SkASSERT(index == 1 || index == 2);
+ return a * pts[index].x + b * pts[index].y + c;
+ }
+
+ double controlPtDistance(const Quadratic& pts) const {
+ return a * pts[1].x + b * pts[1].y + c;
+ }
+
+ double pointDistance(const _Point& pt) const {
+ return a * pt.x + b * pt.y + c;
+ }
+
+ double dx() const {
+ return b;
+ }
+
+ double dy() const {
+ return -a;
+ }
+
+private:
+ double a;
+ double b;
+ double c;
+};
diff --git a/chromium/third_party/skia/experimental/Intersection/LineParameteters_Test.cpp b/chromium/third_party/skia/experimental/Intersection/LineParameteters_Test.cpp
new file mode 100644
index 00000000000..462ca169504
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/LineParameteters_Test.cpp
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "Intersection_Tests.h"
+#include "LineParameters.h"
+
+
+// tests to verify that distance calculations are coded correctly
+const Cubic tests[] = {
+ {{0, 0}, {1, 1}, {2, 2}, {0, 3}},
+ {{0, 0}, {1, 1}, {2, 2}, {3, 0}},
+ {{0, 0}, {5, 0}, {-2,4}, {3, 4}},
+ {{0, 2}, {1, 0}, {2, 0}, {3, 0}},
+ {{0, .2}, {1, 0}, {2, 0}, {3, 0}},
+ {{0, .02}, {1, 0}, {2, 0}, {3, 0}},
+ {{0, .002}, {1, 0}, {2, 0}, {3, 0}},
+ {{0, .0002}, {1, 0}, {2, 0}, {3, 0}},
+ {{0, .00002}, {1, 0}, {2, 0}, {3, 0}},
+ {{0, PointEpsilon * 2}, {1, 0}, {2, 0}, {3, 0}},
+};
+
+const double answers[][2] = {
+ {1, 2},
+ {1, 2},
+ {4, 4},
+ {1.1094003924, 0.5547001962},
+ {0.133038021, 0.06651901052},
+ {0.0133330370, 0.006666518523},
+ {0.001333333037, 0.0006666665185},
+ {0.000133333333, 6.666666652e-05},
+ {1.333333333e-05, 6.666666667e-06},
+ {1.333333333e-06, 6.666666667e-07},
+};
+
+const size_t tests_count = sizeof(tests) / sizeof(tests[0]);
+
+static size_t firstLineParameterTest = 0;
+
+void LineParameter_Test() {
+ for (size_t index = firstLineParameterTest; index < tests_count; ++index) {
+ LineParameters lineParameters;
+ const Cubic& cubic = tests[index];
+ lineParameters.cubicEndPoints(cubic);
+ double denormalizedDistance[2];
+ denormalizedDistance[0] = lineParameters.controlPtDistance(cubic, 1);
+ denormalizedDistance[1] = lineParameters.controlPtDistance(cubic, 2);
+ double normalSquared = lineParameters.normalSquared();
+ size_t inner;
+ for (inner = 0; inner < 2; ++inner) {
+ double distSq = denormalizedDistance[inner];
+ distSq *= distSq;
+ double answersSq = answers[index][inner];
+ answersSq *= answersSq;
+ if (AlmostEqualUlps(distSq, normalSquared * answersSq)) {
+ continue;
+ }
+ SkDebugf("%s [%d,%d] denormalizedDistance:%g != answer:%g"
+ " distSq:%g answerSq:%g normalSquared:%g\n",
+ __FUNCTION__, (int)index, (int)inner,
+ denormalizedDistance[inner], answers[index][inner],
+ distSq, answersSq, normalSquared);
+ }
+ lineParameters.normalize();
+ double normalizedDistance[2];
+ normalizedDistance[0] = lineParameters.controlPtDistance(cubic, 1);
+ normalizedDistance[1] = lineParameters.controlPtDistance(cubic, 2);
+ for (inner = 0; inner < 2; ++inner) {
+ if (AlmostEqualUlps(fabs(normalizedDistance[inner]), answers[index][inner])) {
+ continue;
+ }
+ SkDebugf("%s [%d,%d] normalizedDistance:%1.10g != answer:%g\n",
+ __FUNCTION__, (int)index, (int)inner,
+ normalizedDistance[inner], answers[index][inner]);
+ }
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/LineQuadraticIntersection.cpp b/chromium/third_party/skia/experimental/Intersection/LineQuadraticIntersection.cpp
new file mode 100644
index 00000000000..f855d97e4c4
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/LineQuadraticIntersection.cpp
@@ -0,0 +1,369 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "Intersections.h"
+#include "LineUtilities.h"
+#include "QuadraticUtilities.h"
+
+/*
+Find the interection of a line and quadratic by solving for valid t values.
+
+From http://stackoverflow.com/questions/1853637/how-to-find-the-mathematical-function-defining-a-bezier-curve
+
+"A Bezier curve is a parametric function. A quadratic Bezier curve (i.e. three
+control points) can be expressed as: F(t) = A(1 - t)^2 + B(1 - t)t + Ct^2 where
+A, B and C are points and t goes from zero to one.
+
+This will give you two equations:
+
+ x = a(1 - t)^2 + b(1 - t)t + ct^2
+ y = d(1 - t)^2 + e(1 - t)t + ft^2
+
+If you add for instance the line equation (y = kx + m) to that, you'll end up
+with three equations and three unknowns (x, y and t)."
+
+Similar to above, the quadratic is represented as
+ x = a(1-t)^2 + 2b(1-t)t + ct^2
+ y = d(1-t)^2 + 2e(1-t)t + ft^2
+and the line as
+ y = g*x + h
+
+Using Mathematica, solve for the values of t where the quadratic intersects the
+line:
+
+ (in) t1 = Resultant[a*(1 - t)^2 + 2*b*(1 - t)*t + c*t^2 - x,
+ d*(1 - t)^2 + 2*e*(1 - t)*t + f*t^2 - g*x - h, x]
+ (out) -d + h + 2 d t - 2 e t - d t^2 + 2 e t^2 - f t^2 +
+ g (a - 2 a t + 2 b t + a t^2 - 2 b t^2 + c t^2)
+ (in) Solve[t1 == 0, t]
+ (out) {
+ {t -> (-2 d + 2 e + 2 a g - 2 b g -
+ Sqrt[(2 d - 2 e - 2 a g + 2 b g)^2 -
+ 4 (-d + 2 e - f + a g - 2 b g + c g) (-d + a g + h)]) /
+ (2 (-d + 2 e - f + a g - 2 b g + c g))
+ },
+ {t -> (-2 d + 2 e + 2 a g - 2 b g +
+ Sqrt[(2 d - 2 e - 2 a g + 2 b g)^2 -
+ 4 (-d + 2 e - f + a g - 2 b g + c g) (-d + a g + h)]) /
+ (2 (-d + 2 e - f + a g - 2 b g + c g))
+ }
+ }
+
+Using the results above (when the line tends towards horizontal)
+ A = (-(d - 2*e + f) + g*(a - 2*b + c) )
+ B = 2*( (d - e ) - g*(a - b ) )
+ C = (-(d ) + g*(a ) + h )
+
+If g goes to infinity, we can rewrite the line in terms of x.
+ x = g'*y + h'
+
+And solve accordingly in Mathematica:
+
+ (in) t2 = Resultant[a*(1 - t)^2 + 2*b*(1 - t)*t + c*t^2 - g'*y - h',
+ d*(1 - t)^2 + 2*e*(1 - t)*t + f*t^2 - y, y]
+ (out) a - h' - 2 a t + 2 b t + a t^2 - 2 b t^2 + c t^2 -
+ g' (d - 2 d t + 2 e t + d t^2 - 2 e t^2 + f t^2)
+ (in) Solve[t2 == 0, t]
+ (out) {
+ {t -> (2 a - 2 b - 2 d g' + 2 e g' -
+ Sqrt[(-2 a + 2 b + 2 d g' - 2 e g')^2 -
+ 4 (a - 2 b + c - d g' + 2 e g' - f g') (a - d g' - h')]) /
+ (2 (a - 2 b + c - d g' + 2 e g' - f g'))
+ },
+ {t -> (2 a - 2 b - 2 d g' + 2 e g' +
+ Sqrt[(-2 a + 2 b + 2 d g' - 2 e g')^2 -
+ 4 (a - 2 b + c - d g' + 2 e g' - f g') (a - d g' - h')])/
+ (2 (a - 2 b + c - d g' + 2 e g' - f g'))
+ }
+ }
+
+Thus, if the slope of the line tends towards vertical, we use:
+ A = ( (a - 2*b + c) - g'*(d - 2*e + f) )
+ B = 2*(-(a - b ) + g'*(d - e ) )
+ C = ( (a ) - g'*(d ) - h' )
+ */
+
+
+class LineQuadraticIntersections {
+public:
+
+LineQuadraticIntersections(const Quadratic& q, const _Line& l, Intersections& i)
+ : quad(q)
+ , line(l)
+ , intersections(i) {
+}
+
+int intersectRay(double roots[2]) {
+/*
+ solve by rotating line+quad so line is horizontal, then finding the roots
+ set up matrix to rotate quad to x-axis
+ |cos(a) -sin(a)|
+ |sin(a) cos(a)|
+ note that cos(a) = A(djacent) / Hypoteneuse
+ sin(a) = O(pposite) / Hypoteneuse
+ since we are computing Ts, we can ignore hypoteneuse, the scale factor:
+ | A -O |
+ | O A |
+ A = line[1].x - line[0].x (adjacent side of the right triangle)
+ O = line[1].y - line[0].y (opposite side of the right triangle)
+ for each of the three points (e.g. n = 0 to 2)
+ quad[n].y' = (quad[n].y - line[0].y) * A - (quad[n].x - line[0].x) * O
+*/
+ double adj = line[1].x - line[0].x;
+ double opp = line[1].y - line[0].y;
+ double r[3];
+ for (int n = 0; n < 3; ++n) {
+ r[n] = (quad[n].y - line[0].y) * adj - (quad[n].x - line[0].x) * opp;
+ }
+ double A = r[2];
+ double B = r[1];
+ double C = r[0];
+ A += C - 2 * B; // A = a - 2*b + c
+ B -= C; // B = -(b - c)
+ return quadraticRootsValidT(A, 2 * B, C, roots);
+}
+
+int intersect() {
+ addEndPoints();
+ double rootVals[2];
+ int roots = intersectRay(rootVals);
+ for (int index = 0; index < roots; ++index) {
+ double quadT = rootVals[index];
+ double lineT = findLineT(quadT);
+ if (pinTs(quadT, lineT)) {
+ _Point pt;
+ xy_at_t(line, lineT, pt.x, pt.y);
+ intersections.insert(quadT, lineT, pt);
+ }
+ }
+ return intersections.fUsed;
+}
+
+int horizontalIntersect(double axisIntercept, double roots[2]) {
+ double D = quad[2].y; // f
+ double E = quad[1].y; // e
+ double F = quad[0].y; // d
+ D += F - 2 * E; // D = d - 2*e + f
+ E -= F; // E = -(d - e)
+ F -= axisIntercept;
+ return quadraticRootsValidT(D, 2 * E, F, roots);
+}
+
+int horizontalIntersect(double axisIntercept, double left, double right, bool flipped) {
+ addHorizontalEndPoints(left, right, axisIntercept);
+ double rootVals[2];
+ int roots = horizontalIntersect(axisIntercept, rootVals);
+ for (int index = 0; index < roots; ++index) {
+ _Point pt;
+ double quadT = rootVals[index];
+ xy_at_t(quad, quadT, pt.x, pt.y);
+ double lineT = (pt.x - left) / (right - left);
+ if (pinTs(quadT, lineT)) {
+ intersections.insert(quadT, lineT, pt);
+ }
+ }
+ if (flipped) {
+ flip();
+ }
+ return intersections.fUsed;
+}
+
+int verticalIntersect(double axisIntercept, double roots[2]) {
+ double D = quad[2].x; // f
+ double E = quad[1].x; // e
+ double F = quad[0].x; // d
+ D += F - 2 * E; // D = d - 2*e + f
+ E -= F; // E = -(d - e)
+ F -= axisIntercept;
+ return quadraticRootsValidT(D, 2 * E, F, roots);
+}
+
+int verticalIntersect(double axisIntercept, double top, double bottom, bool flipped) {
+ addVerticalEndPoints(top, bottom, axisIntercept);
+ double rootVals[2];
+ int roots = verticalIntersect(axisIntercept, rootVals);
+ for (int index = 0; index < roots; ++index) {
+ _Point pt;
+ double quadT = rootVals[index];
+ xy_at_t(quad, quadT, pt.x, pt.y);
+ double lineT = (pt.y - top) / (bottom - top);
+ if (pinTs(quadT, lineT)) {
+ intersections.insert(quadT, lineT, pt);
+ }
+ }
+ if (flipped) {
+ flip();
+ }
+ return intersections.fUsed;
+}
+
+protected:
+
+// add endpoints first to get zero and one t values exactly
+void addEndPoints()
+{
+ for (int qIndex = 0; qIndex < 3; qIndex += 2) {
+ for (int lIndex = 0; lIndex < 2; lIndex++) {
+ if (quad[qIndex] == line[lIndex]) {
+ intersections.insert(qIndex >> 1, lIndex, line[lIndex]);
+ }
+ }
+ }
+}
+
+void addHorizontalEndPoints(double left, double right, double y)
+{
+ for (int qIndex = 0; qIndex < 3; qIndex += 2) {
+ if (quad[qIndex].y != y) {
+ continue;
+ }
+ if (quad[qIndex].x == left) {
+ intersections.insert(qIndex >> 1, 0, quad[qIndex]);
+ }
+ if (quad[qIndex].x == right) {
+ intersections.insert(qIndex >> 1, 1, quad[qIndex]);
+ }
+ }
+}
+
+void addVerticalEndPoints(double top, double bottom, double x)
+{
+ for (int qIndex = 0; qIndex < 3; qIndex += 2) {
+ if (quad[qIndex].x != x) {
+ continue;
+ }
+ if (quad[qIndex].y == top) {
+ intersections.insert(qIndex >> 1, 0, quad[qIndex]);
+ }
+ if (quad[qIndex].y == bottom) {
+ intersections.insert(qIndex >> 1, 1, quad[qIndex]);
+ }
+ }
+}
+
+double findLineT(double t) {
+ double x, y;
+ xy_at_t(quad, t, x, y);
+ double dx = line[1].x - line[0].x;
+ double dy = line[1].y - line[0].y;
+ if (fabs(dx) > fabs(dy)) {
+ return (x - line[0].x) / dx;
+ }
+ return (y - line[0].y) / dy;
+}
+
+void flip() {
+ // OPTIMIZATION: instead of swapping, pass original line, use [1].y - [0].y
+ int roots = intersections.fUsed;
+ for (int index = 0; index < roots; ++index) {
+ intersections.fT[1][index] = 1 - intersections.fT[1][index];
+ }
+}
+
+static bool pinTs(double& quadT, double& lineT) {
+ if (!approximately_one_or_less(lineT)) {
+ return false;
+ }
+ if (!approximately_zero_or_more(lineT)) {
+ return false;
+ }
+ if (precisely_less_than_zero(quadT)) {
+ quadT = 0;
+ } else if (precisely_greater_than_one(quadT)) {
+ quadT = 1;
+ }
+ if (precisely_less_than_zero(lineT)) {
+ lineT = 0;
+ } else if (precisely_greater_than_one(lineT)) {
+ lineT = 1;
+ }
+ return true;
+}
+
+private:
+
+const Quadratic& quad;
+const _Line& line;
+Intersections& intersections;
+};
+
+// utility for pairs of coincident quads
+static double horizontalIntersect(const Quadratic& quad, const _Point& pt) {
+ LineQuadraticIntersections q(quad, *((_Line*) 0), *((Intersections*) 0));
+ double rootVals[2];
+ int roots = q.horizontalIntersect(pt.y, rootVals);
+ for (int index = 0; index < roots; ++index) {
+ double x;
+ double t = rootVals[index];
+ xy_at_t(quad, t, x, *(double*) 0);
+ if (AlmostEqualUlps(x, pt.x)) {
+ return t;
+ }
+ }
+ return -1;
+}
+
+static double verticalIntersect(const Quadratic& quad, const _Point& pt) {
+ LineQuadraticIntersections q(quad, *((_Line*) 0), *((Intersections*) 0));
+ double rootVals[2];
+ int roots = q.verticalIntersect(pt.x, rootVals);
+ for (int index = 0; index < roots; ++index) {
+ double y;
+ double t = rootVals[index];
+ xy_at_t(quad, t, *(double*) 0, y);
+ if (AlmostEqualUlps(y, pt.y)) {
+ return t;
+ }
+ }
+ return -1;
+}
+
+double axialIntersect(const Quadratic& q1, const _Point& p, bool vertical) {
+ if (vertical) {
+ return verticalIntersect(q1, p);
+ }
+ return horizontalIntersect(q1, p);
+}
+
+int horizontalIntersect(const Quadratic& quad, double left, double right,
+ double y, double tRange[2]) {
+ LineQuadraticIntersections q(quad, *((_Line*) 0), *((Intersections*) 0));
+ double rootVals[2];
+ int result = q.horizontalIntersect(y, rootVals);
+ int tCount = 0;
+ for (int index = 0; index < result; ++index) {
+ double x, y;
+ xy_at_t(quad, rootVals[index], x, y);
+ if (x < left || x > right) {
+ continue;
+ }
+ tRange[tCount++] = rootVals[index];
+ }
+ return tCount;
+}
+
+int horizontalIntersect(const Quadratic& quad, double left, double right, double y,
+ bool flipped, Intersections& intersections) {
+ LineQuadraticIntersections q(quad, *((_Line*) 0), intersections);
+ return q.horizontalIntersect(y, left, right, flipped);
+}
+
+int verticalIntersect(const Quadratic& quad, double top, double bottom, double x,
+ bool flipped, Intersections& intersections) {
+ LineQuadraticIntersections q(quad, *((_Line*) 0), intersections);
+ return q.verticalIntersect(x, top, bottom, flipped);
+}
+
+int intersect(const Quadratic& quad, const _Line& line, Intersections& i) {
+ LineQuadraticIntersections q(quad, line, i);
+ return q.intersect();
+}
+
+int intersectRay(const Quadratic& quad, const _Line& line, Intersections& i) {
+ LineQuadraticIntersections q(quad, line, i);
+ return q.intersectRay(i.fT[0]);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/LineQuadraticIntersection_Test.cpp b/chromium/third_party/skia/experimental/Intersection/LineQuadraticIntersection_Test.cpp
new file mode 100644
index 00000000000..3e7e230ac9d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/LineQuadraticIntersection_Test.cpp
@@ -0,0 +1,235 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "CurveUtilities.h"
+#include "EdgeWalker_Test.h"
+#include "Intersection_Tests.h"
+#include "Intersections.h"
+#include "TestUtilities.h"
+
+struct lineQuad {
+ Quadratic quad;
+ _Line line;
+ int result;
+ _Point expected[2];
+} lineQuadTests[] = {
+ // quad line results
+ {{{1, 1}, {2, 1}, {0, 2}}, {{0, 0}, {1, 1}}, 1, {{1, 1} }},
+ {{{0, 0}, {1, 1}, {3, 1}}, {{0, 0}, {3, 1}}, 2, {{0, 0}, {3, 1}}},
+ {{{2, 0}, {1, 1}, {2, 2}}, {{0, 0}, {0, 2}}, 0 },
+ {{{4, 0}, {0, 1}, {4, 2}}, {{3, 1}, {4, 1}}, 0, },
+ {{{0, 0}, {0, 1}, {1, 1}}, {{0, 1}, {1, 0}}, 1, {{.25, .75} }},
+};
+
+size_t lineQuadTests_count = sizeof(lineQuadTests) / sizeof(lineQuadTests[0]);
+
+const int firstLineQuadIntersectionTest = 0;
+
+static int doIntersect(Intersections& intersections, const Quadratic& quad, const _Line& line, bool& flipped) {
+ int result;
+ flipped = false;
+ if (line[0].x == line[1].x) {
+ double top = line[0].y;
+ double bottom = line[1].y;
+ flipped = top > bottom;
+ if (flipped) {
+ SkTSwap<double>(top, bottom);
+ }
+ result = verticalIntersect(quad, top, bottom, line[0].x, flipped, intersections);
+ } else if (line[0].y == line[1].y) {
+ double left = line[0].x;
+ double right = line[1].x;
+ flipped = left > right;
+ if (flipped) {
+ SkTSwap<double>(left, right);
+ }
+ result = horizontalIntersect(quad, left, right, line[0].y, flipped, intersections);
+ } else {
+ intersect(quad, line, intersections);
+ result = intersections.fUsed;
+ }
+ return result;
+}
+
+static struct oneLineQuad {
+ Quadratic quad;
+ _Line line;
+} oneOffs[] = {
+ {{{369.848602,145.680267}, {382.360413,121.298294}, {406.207703,121.298294}},
+ {{406.207703,121.298294}, {348.781738,123.864815}}}
+ };
+
+static size_t oneOffs_count = sizeof(oneOffs) / sizeof(oneOffs[0]);
+
+
+static void testOneOffs() {
+ Intersections intersections;
+ bool flipped = false;
+ for (size_t index = 0; index < oneOffs_count; ++index) {
+ const Quadratic& quad = oneOffs[index].quad;
+ const _Line& line = oneOffs[index].line;
+ int result = doIntersect(intersections, quad, line, flipped);
+ for (int inner = 0; inner < result; ++inner) {
+ double quadT = intersections.fT[0][inner];
+ double quadX, quadY;
+ xy_at_t(quad, quadT, quadX, quadY);
+ double lineT = intersections.fT[1][inner];
+ double lineX, lineY;
+ xy_at_t(line, lineT, lineX, lineY);
+ SkASSERT(AlmostEqualUlps(quadX, lineX)
+ && AlmostEqualUlps(quadY, lineY));
+ }
+ }
+}
+
+void LineQuadraticIntersection_Test() {
+ if (1) {
+ testOneOffs();
+ }
+ for (size_t index = firstLineQuadIntersectionTest; index < lineQuadTests_count; ++index) {
+ const Quadratic& quad = lineQuadTests[index].quad;
+ const _Line& line = lineQuadTests[index].line;
+ Quadratic reduce1;
+ _Line reduce2;
+ int order1 = reduceOrder(quad, reduce1, kReduceOrder_TreatAsFill);
+ int order2 = reduceOrder(line, reduce2);
+ if (order1 < 3) {
+ SkDebugf("%s [%d] quad order=%d\n", __FUNCTION__, (int) index, order1);
+ SkASSERT(0);
+ }
+ if (order2 < 2) {
+ SkDebugf("%s [%d] line order=%d\n", __FUNCTION__, (int) index, order2);
+ SkASSERT(0);
+ }
+ Intersections intersections;
+ bool flipped = false;
+ int result = doIntersect(intersections, quad, line, flipped);
+ SkASSERT(result == lineQuadTests[index].result);
+ if (!intersections.intersected()) {
+ continue;
+ }
+ for (int pt = 0; pt < result; ++pt) {
+ double tt1 = intersections.fT[0][pt];
+ SkASSERT(tt1 >= 0 && tt1 <= 1);
+ _Point t1, t2;
+ xy_at_t(quad, tt1, t1.x, t1.y);
+ double tt2 = intersections.fT[1][pt];
+ SkASSERT(tt2 >= 0 && tt2 <= 1);
+ xy_at_t(line, tt2, t2.x, t2.y);
+ if (!AlmostEqualUlps(t1.x, t2.x)) {
+ SkDebugf("%s [%d,%d] x!= t1=%1.9g (%1.9g,%1.9g) t2=%1.9g (%1.9g,%1.9g)\n",
+ __FUNCTION__, (int)index, pt, tt1, t1.x, t1.y, tt2, t2.x, t2.y);
+ SkASSERT(0);
+ }
+ if (!AlmostEqualUlps(t1.y, t2.y)) {
+ SkDebugf("%s [%d,%d] y!= t1=%1.9g (%1.9g,%1.9g) t2=%1.9g (%1.9g,%1.9g)\n",
+ __FUNCTION__, (int)index, pt, tt1, t1.x, t1.y, tt2, t2.x, t2.y);
+ SkASSERT(0);
+ }
+ if (!t1.approximatelyEqual(lineQuadTests[index].expected[0])
+ && (lineQuadTests[index].result == 1
+ || !t1.approximatelyEqual(lineQuadTests[index].expected[1]))) {
+ SkDebugf("%s t1=(%1.9g,%1.9g)\n", __FUNCTION__, t1.x, t1.y);
+ SkASSERT(0);
+ }
+ }
+ }
+}
+
+static void testLineIntersect(State4& state, const Quadratic& quad, const _Line& line,
+ const double x, const double y) {
+ char pathStr[1024];
+ bzero(pathStr, sizeof(pathStr));
+ char* str = pathStr;
+ str += sprintf(str, " path.moveTo(%1.9g, %1.9g);\n", quad[0].x, quad[0].y);
+ str += sprintf(str, " path.quadTo(%1.9g, %1.9g, %1.9g, %1.9g);\n", quad[1].x, quad[1].y, quad[2].x, quad[2].y);
+ str += sprintf(str, " path.moveTo(%1.9g, %1.9g);\n", line[0].x, line[0].y);
+ str += sprintf(str, " path.lineTo(%1.9g, %1.9g);\n", line[1].x, line[1].y);
+
+ Intersections intersections;
+ bool flipped = false;
+ int result = doIntersect(intersections, quad, line, flipped);
+ bool found = false;
+ for (int index = 0; index < result; ++index) {
+ double quadT = intersections.fT[0][index];
+ double quadX, quadY;
+ xy_at_t(quad, quadT, quadX, quadY);
+ double lineT = intersections.fT[1][index];
+ double lineX, lineY;
+ xy_at_t(line, lineT, lineX, lineY);
+ if (fabs(quadX - lineX) < FLT_EPSILON && fabs(quadY - lineY) < FLT_EPSILON
+ && fabs(x - lineX) < FLT_EPSILON && fabs(y - lineY) < FLT_EPSILON) {
+ found = true;
+ }
+ }
+ SkASSERT(found);
+ state.testsRun++;
+}
+
+
+// find a point on a quad by choosing a t from 0 to 1
+// create a vertical span above and below the point
+// verify that intersecting the vertical span and the quad returns t
+// verify that a vertical span starting at quad[0] intersects at t=0
+// verify that a vertical span starting at quad[2] intersects at t=1
+static void* testQuadLineIntersectMain(void* data)
+{
+ SkASSERT(data);
+ State4& state = *(State4*) data;
+ do {
+ int ax = state.a & 0x03;
+ int ay = state.a >> 2;
+ int bx = state.b & 0x03;
+ int by = state.b >> 2;
+ int cx = state.c & 0x03;
+ int cy = state.c >> 2;
+ Quadratic quad = {{ax, ay}, {bx, by}, {cx, cy}};
+ Quadratic reduced;
+ int order = reduceOrder(quad, reduced, kReduceOrder_TreatAsFill);
+ if (order < 3) {
+ continue; // skip degenerates
+ }
+ for (int tIndex = 0; tIndex <= 4; ++tIndex) {
+ double x, y;
+ xy_at_t(quad, tIndex / 4.0, x, y);
+ for (int h = -2; h <= 2; ++h) {
+ for (int v = -2; v <= 2; ++v) {
+ if (h == v && abs(h) != 1) {
+ continue;
+ }
+ _Line line = {{x - h, y - v}, {x, y}};
+ testLineIntersect(state, quad, line, x, y);
+ _Line line2 = {{x, y}, {x + h, y + v}};
+ testLineIntersect(state, quad, line2, x, y);
+ _Line line3 = {{x - h, y - v}, {x + h, y + v}};
+ testLineIntersect(state, quad, line3, x, y);
+ }
+ }
+ }
+ } while (runNextTestSet(state));
+ return NULL;
+}
+
+void QuadLineIntersectThreaded_Test(int& testsRun)
+{
+ SkDebugf("%s\n", __FUNCTION__);
+ const char testStr[] = "testQuadLineIntersect";
+ initializeTests(testStr, sizeof(testStr));
+ int testsStart = testsRun;
+ for (int a = 0; a < 16; ++a) {
+ for (int b = 0 ; b < 16; ++b) {
+ for (int c = 0 ; c < 16; ++c) {
+ testsRun += dispatchTest4(testQuadLineIntersectMain,
+ a, b, c, 0);
+ }
+ if (!gRunTestsInOneThread) SkDebugf(".");
+ }
+ if (!gRunTestsInOneThread) SkDebugf("%d", a);
+ }
+ testsRun += waitForCompletion();
+ SkDebugf("\n%s tests=%d total=%d\n", __FUNCTION__, testsRun - testsStart, testsRun);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/LineUtilities.cpp b/chromium/third_party/skia/experimental/Intersection/LineUtilities.cpp
new file mode 100644
index 00000000000..53319c45608
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/LineUtilities.cpp
@@ -0,0 +1,133 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "LineUtilities.h"
+
+bool implicitLine(const _Line& line, double& slope, double& axisIntercept) {
+ _Point delta;
+ tangent(line, delta);
+ bool moreHorizontal = fabs(delta.x) > fabs(delta.y);
+ if (moreHorizontal) {
+ slope = delta.y / delta.x;
+ axisIntercept = line[0].y - slope * line[0].x;
+ } else {
+ slope = delta.x / delta.y;
+ axisIntercept = line[0].x - slope * line[0].y;
+ }
+ return moreHorizontal;
+}
+
+int reduceOrder(const _Line& line, _Line& reduced) {
+ reduced[0] = line[0];
+ int different = line[0] != line[1];
+ reduced[1] = line[different];
+ return 1 + different;
+}
+
+void sub_divide(const _Line& line, double t1, double t2, _Line& dst) {
+ _Point delta;
+ tangent(line, delta);
+ dst[0].x = line[0].x - t1 * delta.x;
+ dst[0].y = line[0].y - t1 * delta.y;
+ dst[1].x = line[0].x - t2 * delta.x;
+ dst[1].y = line[0].y - t2 * delta.y;
+}
+
+// may have this below somewhere else already:
+// copying here because I thought it was clever
+
+// Copyright 2001, softSurfer (www.softsurfer.com)
+// This code may be freely used and modified for any purpose
+// providing that this copyright notice is included with it.
+// SoftSurfer makes no warranty for this code, and cannot be held
+// liable for any real or imagined damage resulting from its use.
+// Users of this code must verify correctness for their application.
+
+// Assume that a class is already given for the object:
+// Point with coordinates {float x, y;}
+//===================================================================
+
+// isLeft(): tests if a point is Left|On|Right of an infinite line.
+// Input: three points P0, P1, and P2
+// Return: >0 for P2 left of the line through P0 and P1
+// =0 for P2 on the line
+// <0 for P2 right of the line
+// See: the January 2001 Algorithm on Area of Triangles
+// return (float) ((P1.x - P0.x)*(P2.y - P0.y) - (P2.x - P0.x)*(P1.y - P0.y));
+double is_left(const _Line& line, const _Point& pt) {
+ _Vector P0 = line[1] - line[0];
+ _Vector P2 = pt - line[0];
+ return P0.cross(P2);
+}
+
+double t_at(const _Line& line, const _Point& pt) {
+ double dx = line[1].x - line[0].x;
+ double dy = line[1].y - line[0].y;
+ if (fabs(dx) > fabs(dy)) {
+ if (approximately_zero(dx)) {
+ return 0;
+ }
+ return (pt.x - line[0].x) / dx;
+ }
+ if (approximately_zero(dy)) {
+ return 0;
+ }
+ return (pt.y - line[0].y) / dy;
+}
+
+static void setMinMax(double x, int flags, double& minX, double& maxX) {
+ if (minX > x && (flags & (kFindTopMin | kFindBottomMin))) {
+ minX = x;
+ }
+ if (maxX < x && (flags & (kFindTopMax | kFindBottomMax))) {
+ maxX = x;
+ }
+}
+
+void x_at(const _Point& p1, const _Point& p2, double top, double bottom,
+ int flags, double& minX, double& maxX) {
+ if (AlmostEqualUlps(p1.y, p2.y)) {
+ // It should be OK to bail early in this case. There's another edge
+ // which shares this end point which can intersect without failing to
+ // have a slope ... maybe
+ return;
+ }
+
+ // p2.x is always greater than p1.x -- the part of points (p1, p2) are
+ // moving from the start of the cubic towards its end.
+ // if p1.y < p2.y, minX can be affected
+ // if p1.y > p2.y, maxX can be affected
+ double slope = (p2.x - p1.x) / (p2.y - p1.y);
+ int topFlags = flags & (kFindTopMin | kFindTopMax);
+ if (topFlags && ((top <= p1.y && top >= p2.y)
+ || (top >= p1.y && top <= p2.y))) {
+ double x = p1.x + (top - p1.y) * slope;
+ setMinMax(x, topFlags, minX, maxX);
+ }
+ int bottomFlags = flags & (kFindBottomMin | kFindBottomMax);
+ if (bottomFlags && ((bottom <= p1.y && bottom >= p2.y)
+ || (bottom >= p1.y && bottom <= p2.y))) {
+ double x = p1.x + (bottom - p1.y) * slope;
+ setMinMax(x, bottomFlags, minX, maxX);
+ }
+}
+
+void xy_at_t(const _Line& line, double t, double& x, double& y) {
+ double one_t = 1 - t;
+ if (&x) {
+ x = one_t * line[0].x + t * line[1].x;
+ }
+ if (&y) {
+ y = one_t * line[0].y + t * line[1].y;
+ }
+}
+
+_Point xy_at_t(const _Line& line, double t) {
+ double one_t = 1 - t;
+ _Point result = { one_t * line[0].x + t * line[1].x, one_t * line[0].y + t * line[1].y };
+ return result;
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/LineUtilities.h b/chromium/third_party/skia/experimental/Intersection/LineUtilities.h
new file mode 100644
index 00000000000..d1d45707690
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/LineUtilities.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "DataTypes.h"
+
+bool implicitLine(const _Line& line, double& slope, double& axisIntercept);
+int reduceOrder(const _Line& line, _Line& reduced);
+double is_left(const _Line& line, const _Point& pt);
+void sub_divide(const _Line& src, double t1, double t2, _Line& dst);
+double t_at(const _Line&, const _Point& );
+void xy_at_t(const _Line& , double t, double& x, double& y);
+_Point xy_at_t(const _Line& , double t);
+
+enum x_at_flags {
+ kFindTopMin = 1,
+ kFindTopMax = 2,
+ kFindBottomMin = 4,
+ kFindBottomMax = 8
+};
+
+void x_at(const _Point& p1, const _Point& p2, double minY, double maxY,
+ int flags, double& tMin, double& tMax);
diff --git a/chromium/third_party/skia/experimental/Intersection/LogoPlay.cpp b/chromium/third_party/skia/experimental/Intersection/LogoPlay.cpp
new file mode 100644
index 00000000000..718da38bd35
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/LogoPlay.cpp
@@ -0,0 +1,353 @@
+#include <ctype.h>
+#include "SkPath.h"
+#include "SkParse.h"
+#include "SkPoint.h"
+#include "SkUtils.h"
+#define QUADRATIC_APPROXIMATION 0
+
+const char logoStr[] =
+ "<path fill=\"#0081C6\""
+ "d=\"M440.51,289.479c1.623,1.342,5.01,4.164,5.01,9.531c0,5.223-2.965,7.697-5.93,10.024"
+ "c-0.918,0.916-1.977,1.907-1.977,3.462c0,1.551,1.059,2.397,1.834,3.035l2.545,1.973c3.105,2.613,5.928,5.016,5.928,9.889"
+ "c0,6.635-6.426,13.341-18.566,13.341c-10.238,0-15.178-4.87-15.178-10.097c0-2.543,1.268-6.139,5.438-8.613"
+ "c4.373-2.682,10.307-3.033,13.482-3.249c-0.99-1.271-2.119-2.61-2.119-4.798c0-1.199,0.355-1.907,0.707-2.754"
+ "c-0.779,0.07-1.553,0.141-2.26,0.141c-7.482,0-11.719-5.579-11.719-11.082c0-3.247,1.484-6.851,4.518-9.461"
+ "c4.025-3.318,8.824-3.883,12.639-3.883h14.541l-4.518,2.541H440.51z"
+ "M435.494,320.826c-0.562-0.072-0.916-0.072-1.619-0.072"
+ "c-0.637,0-4.451,0.143-7.416,1.132c-1.553,0.564-6.07,2.257-6.07,7.271c0,5.013,4.873,8.615,12.426,8.615"
+ "c6.775,0,10.379-3.253,10.379-7.624C443.193,326.54,440.863,324.64,435.494,320.826z"
+ "M437.543,307.412"
+ "c1.623-1.627,1.764-3.883,1.764-5.154c0-5.083-3.035-12.99-8.893-12.99c-1.838,0-3.812,0.918-4.945,2.331"
+ "c-1.199,1.483-1.551,3.387-1.551,5.225c0,4.729,2.754,12.565,8.826,12.565C434.508,309.389,436.41,308.543,437.543,307.412z\"/>"
+ "<path fill=\"#FFD200\""
+ "d=\"M396.064,319.696c-11.206,0-17.198-8.739-17.198-16.636c0-9.233,7.542-17.126,18.258-17.126"
+ "c10.357,0,16.844,8.104,16.844,16.635C413.969,310.884,407.557,319.696,396.064,319.696z"
+ "M404.873,313.987"
+ "c1.695-2.257,2.119-5.074,2.119-7.826c0-6.202-2.961-18.042-11.701-18.042c-2.326,0-4.652,0.918-6.342,2.399"
+ "c-2.749,2.465-3.245,5.566-3.245,8.599c0,6.977,3.454,18.463,11.984,18.463C400.436,317.58,403.256,316.242,404.873,313.987z\"/>"
+ "<path fill=\"#ED174F\""
+ "d=\"M357.861,319.696c-11.207,0-17.199-8.739-17.199-16.636c0-9.233,7.544-17.126,18.258-17.126"
+ "c10.359,0,16.845,8.104,16.845,16.635C375.764,310.884,369.351,319.696,357.861,319.696z"
+ "M366.671,313.987"
+ "c1.693-2.257,2.116-5.074,2.116-7.826c0-6.202-2.961-18.042-11.701-18.042c-2.325,0-4.652,0.918-6.344,2.399"
+ "c-2.749,2.465-3.241,5.566-3.241,8.599c0,6.977,3.452,18.463,11.983,18.463C362.234,317.58,365.053,316.242,366.671,313.987z\"/>"
+ "<path fill=\"#0081C6\""
+ "d=\"M335.278,318.591l-10.135,2.339c-4.111,0.638-7.795,1.204-11.69,1.204"
+ "c-19.56,0-26.998-14.386-26.998-25.654c0-13.746,10.558-26.498,28.629-26.498c3.827,0,7.51,0.564,10.839,1.486"
+ "c5.316,1.488,7.796,3.331,9.355,4.394l-5.883,5.599l-2.479,0.565l1.771-2.837c-2.408-2.336-6.805-6.658-15.164-6.658"
+ "c-11.196,0-19.63,8.507-19.63,20.906c0,13.319,9.638,25.861,25.084,25.861c4.539,0,6.874-0.918,9-1.771v-11.407l-10.698,0.566"
+ "l5.667-3.047h15.023l-1.841,1.77c-0.5,0.424-0.567,0.57-0.71,1.133c-0.073,0.64-0.141,2.695-0.141,3.403V318.591z\"/>"
+ "<path fill=\"#49A942\""
+ "d=\"M462.908,316.552c-2.342-0.214-2.832-0.638-2.832-3.401v-0.782v-39.327c0.014-0.153,0.025-0.31,0.041-0.457"
+ "c0.283-2.479,0.992-2.903,3.189-4.182h-10.135l-5.316,2.552h5.418v0.032l-0.004-0.024v41.406v2.341"
+ "c0,1.416-0.281,1.629-1.912,3.753H463.9l2.623-1.557C465.318,316.763,464.113,316.692,462.908,316.552z\"/>"
+ "<path fill=\"#ED174F\""
+ "d=\"M491.742,317.203c-0.771,0.422-1.547,0.916-2.318,1.268c-2.326,1.055-4.719,1.336-6.83,1.336"
+ "c-2.25,0-5.77-0.143-9.361-2.744c-4.992-3.521-7.176-9.572-7.176-14.851c0-10.906,8.869-16.255,16.115-16.255"
+ "c2.533,0,5.141,0.633,7.252,1.972c3.516,2.318,4.43,5.344,4.922,6.963l-16.535,6.688l-5.422,0.422"
+ "c1.758,8.938,7.812,14.145,14.498,14.145c3.59,0,6.193-1.266,8.586-2.461L491.742,317.203z"
+ "M485.129,296.229"
+ "c1.336-0.493,2.039-0.914,2.039-1.899c0-2.812-3.166-6.053-6.967-6.053c-2.818,0-8.094,2.183-8.094,9.783"
+ "c0,1.197,0.141,2.464,0.213,3.73L485.129,296.229z\"/>"
+ "<path fill=\"#77787B\""
+ "d=\"M498.535,286.439v4.643h-0.564v-4.643h-1.537v-0.482h3.637v0.482H498.535z\"/>"
+ "<path fill=\"#77787B\""
+ "d=\"M504.863,291.082v-4.687h-0.023l-1.432,4.687h-0.439l-1.443-4.687h-0.02v4.687h-0.512v-5.125h0.877"
+ "l1.307,4.143h0.018l1.285-4.143h0.891v5.125H504.863z\"/>"
+;
+
+size_t logoStrLen = sizeof(logoStr);
+
+#if QUADRATIC_APPROXIMATION
+////////////////////////////////////////////////////////////////////////////////////
+//functions to approximate a cubic using two quadratics
+
+// midPt sets the first argument to be the midpoint of the other two
+// it is used by quadApprox
+static inline void midPt(SkPoint& dest,const SkPoint& a,const SkPoint& b)
+{
+ dest.set(SkScalarAve(a.fX, b.fX),SkScalarAve(a.fY, b.fY));
+}
+// quadApprox - makes an approximation, which we hope is faster
+static void quadApprox(SkPath &fPath, const SkPoint &p0, const SkPoint &p1, const SkPoint &p2)
+{
+ //divide the cubic up into two cubics, then convert them into quadratics
+ //define our points
+ SkPoint c,j,k,l,m,n,o,p,q, mid;
+ fPath.getLastPt(&c);
+ midPt(j, p0, c);
+ midPt(k, p0, p1);
+ midPt(l, p1, p2);
+ midPt(o, j, k);
+ midPt(p, k, l);
+ midPt(q, o, p);
+ //compute the first half
+ m.set(SkScalarHalf(3*j.fX - c.fX), SkScalarHalf(3*j.fY - c.fY));
+ n.set(SkScalarHalf(3*o.fX -q.fX), SkScalarHalf(3*o.fY - q.fY));
+ midPt(mid,m,n);
+ fPath.quadTo(mid,q);
+ c = q;
+ //compute the second half
+ m.set(SkScalarHalf(3*p.fX - c.fX), SkScalarHalf(3*p.fY - c.fY));
+ n.set(SkScalarHalf(3*l.fX -p2.fX),SkScalarHalf(3*l.fY -p2.fY));
+ midPt(mid,m,n);
+ fPath.quadTo(mid,p2);
+}
+#endif
+
+
+static inline bool is_between(int c, int min, int max)
+{
+ return (unsigned)(c - min) <= (unsigned)(max - min);
+}
+
+static inline bool is_ws(int c)
+{
+ return is_between(c, 1, 32);
+}
+
+static inline bool is_digit(int c)
+{
+ return is_between(c, '0', '9');
+}
+
+static inline bool is_sep(int c)
+{
+ return is_ws(c) || c == ',';
+}
+
+static const char* skip_ws(const char str[])
+{
+ SkASSERT(str);
+ while (is_ws(*str))
+ str++;
+ return str;
+}
+
+static const char* skip_sep(const char str[])
+{
+ SkASSERT(str);
+ while (is_sep(*str))
+ str++;
+ return str;
+}
+
+static const char* find_points(const char str[], SkPoint value[], int count,
+ bool isRelative, SkPoint* relative)
+{
+ str = SkParse::FindScalars(str, &value[0].fX, count * 2);
+ if (isRelative) {
+ for (int index = 0; index < count; index++) {
+ value[index].fX += relative->fX;
+ value[index].fY += relative->fY;
+ }
+ }
+ return str;
+}
+
+static const char* find_scalar(const char str[], SkScalar* value,
+ bool isRelative, SkScalar relative)
+{
+ str = SkParse::FindScalar(str, value);
+ if (isRelative)
+ *value += relative;
+ return str;
+}
+
+static void showPathContour(SkPath::Iter& iter) {
+ uint8_t verb;
+ SkPoint pts[4];
+ while ((verb = iter.next(pts)) != SkPath::kDone_Verb) {
+ switch (verb) {
+ case SkPath::kMove_Verb:
+ SkDebugf("path.moveTo(%1.9gf,%1.9gf);\n", pts[0].fX, pts[0].fY);
+ continue;
+ case SkPath::kLine_Verb:
+ SkDebugf("path.lineTo(%1.9gf,%1.9gf);\n", pts[1].fX, pts[1].fY);
+ break;
+ case SkPath::kQuad_Verb:
+ SkDebugf("path.quadTo(%1.9gf,%1.9gf, %1.9gf,%1.9gf);\n",
+ pts[1].fX, pts[1].fY, pts[2].fX, pts[2].fY);
+ break;
+ case SkPath::kCubic_Verb:
+ SkDebugf("path.cubicTo(%1.9gf,%1.9gf, %1.9gf,%1.9gf, %1.9gf,%1.9gf);\n",
+ pts[1].fX, pts[1].fY, pts[2].fX, pts[2].fY, pts[3].fX, pts[3].fY);
+ break;
+ case SkPath::kClose_Verb:
+ SkDebugf("path.close();\n");
+ break;
+ default:
+ SkDEBUGFAIL("bad verb");
+ return;
+ }
+ }
+}
+
+static void showPath(const SkPath& path) {
+ SkPath::Iter iter(path, true);
+ int rectCount = path.isRectContours() ? path.rectContours(NULL, NULL) : 0;
+ if (rectCount > 0) {
+ SkTDArray<SkRect> rects;
+ SkTDArray<SkPath::Direction> directions;
+ rects.setCount(rectCount);
+ directions.setCount(rectCount);
+ path.rectContours(rects.begin(), directions.begin());
+ for (int contour = 0; contour < rectCount; ++contour) {
+ const SkRect& rect = rects[contour];
+ SkDebugf("path.addRect(%1.9g, %1.9g, %1.9g, %1.9g, %s);\n", rect.fLeft, rect.fTop,
+ rect.fRight, rect.fBottom, directions[contour] == SkPath::kCCW_Direction
+ ? "SkPath::kCCW_Direction" : "SkPath::kCW_Direction");
+ }
+ return;
+ }
+ iter.setPath(path, true);
+ showPathContour(iter);
+}
+
+static const char* parsePath(const char* data) {
+ SkPath fPath;
+ SkPoint f = {0, 0};
+ SkPoint c = {0, 0};
+ SkPoint lastc = {0, 0};
+ SkPoint points[3];
+ char op = '\0';
+ char previousOp = '\0';
+ bool relative = false;
+ do {
+ data = skip_ws(data);
+ if (data[0] == '\0')
+ break;
+ char ch = data[0];
+ if (is_digit(ch) || ch == '-' || ch == '+') {
+ if (op == '\0') {
+ SkASSERT(0);
+ return 0;
+ }
+ }
+ else {
+ op = ch;
+ relative = false;
+ if (islower(op)) {
+ op = (char) toupper(op);
+ relative = true;
+ }
+ data++;
+ data = skip_sep(data);
+ }
+ switch (op) {
+ case 'M':
+ data = find_points(data, points, 1, relative, &c);
+ fPath.moveTo(points[0]);
+ op = 'L';
+ c = points[0];
+ break;
+ case 'L':
+ data = find_points(data, points, 1, relative, &c);
+ fPath.lineTo(points[0]);
+ c = points[0];
+ break;
+ case 'H': {
+ SkScalar x;
+ data = find_scalar(data, &x, relative, c.fX);
+ fPath.lineTo(x, c.fY);
+ c.fX = x;
+ }
+ break;
+ case 'V': {
+ SkScalar y;
+ data = find_scalar(data, &y, relative, c.fY);
+ fPath.lineTo(c.fX, y);
+ c.fY = y;
+ }
+ break;
+ case 'C':
+ data = find_points(data, points, 3, relative, &c);
+ goto cubicCommon;
+ case 'S':
+ data = find_points(data, &points[1], 2, relative, &c);
+ points[0] = c;
+ if (previousOp == 'C' || previousOp == 'S') {
+ points[0].fX -= lastc.fX - c.fX;
+ points[0].fY -= lastc.fY - c.fY;
+ }
+ cubicCommon:
+ // if (data[0] == '\0')
+ // return;
+#if QUADRATIC_APPROXIMATION
+ quadApprox(fPath, points[0], points[1], points[2]);
+#else //this way just does a boring, slow old cubic
+ fPath.cubicTo(points[0], points[1], points[2]);
+#endif
+ //if we are using the quadApprox, lastc is what it would have been if we had used
+ //cubicTo
+ lastc = points[1];
+ c = points[2];
+ break;
+ case 'Q': // Quadratic Bezier Curve
+ data = find_points(data, points, 2, relative, &c);
+ goto quadraticCommon;
+ case 'T':
+ data = find_points(data, &points[1], 1, relative, &c);
+ points[0] = points[1];
+ if (previousOp == 'Q' || previousOp == 'T') {
+ points[0].fX = c.fX * 2 - lastc.fX;
+ points[0].fY = c.fY * 2 - lastc.fY;
+ }
+ quadraticCommon:
+ fPath.quadTo(points[0], points[1]);
+ lastc = points[0];
+ c = points[1];
+ break;
+ case 'Z':
+ fPath.close();
+#if 0 // !!! still a bug?
+ if (fPath.isEmpty() && (f.fX != 0 || f.fY != 0)) {
+ c.fX -= SkScalar.Epsilon; // !!! enough?
+ fPath.moveTo(c);
+ fPath.lineTo(f);
+ fPath.close();
+ }
+#endif
+ c = f;
+ op = '\0';
+ break;
+ case '~': {
+ SkPoint args[2];
+ data = find_points(data, args, 2, false, NULL);
+ fPath.moveTo(args[0].fX, args[0].fY);
+ fPath.lineTo(args[1].fX, args[1].fY);
+ }
+ break;
+ default:
+ SkASSERT(0);
+ return 0;
+ }
+ if (previousOp == 0)
+ f = c;
+ previousOp = op;
+ } while (data[0] != '"');
+ showPath(fPath);
+ return data;
+}
+
+const char pathPrefix[] = "<path fill=\"";
+
+void parseSVG();
+void parseSVG() {
+ const char* data = logoStr;
+ const char* dataEnd = logoStr + logoStrLen - 1;
+ while (data < dataEnd) {
+ SkASSERT(strncmp(data, pathPrefix, sizeof(pathPrefix) - 1) == 0);
+ data += sizeof(pathPrefix) - 1;
+ SkDebugf("paint.setColor(0xFF%c%c%c%c%c%c);\n", data[1], data[2], data[3], data[4],
+ data[5], data[6]);
+ data += 8;
+ SkASSERT(strncmp(data, "d=\"", 3) == 0);
+ data += 3;
+ SkDebugf("path.reset();\n");
+ data = parsePath(data);
+ SkDebugf("canvas->drawPath(path, paint);\n");
+ SkASSERT(strncmp(data, "\"/>", 3) == 0);
+ data += 3;
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/MiniSimplify_Test.cpp b/chromium/third_party/skia/experimental/Intersection/MiniSimplify_Test.cpp
new file mode 100644
index 00000000000..3cb90ab9277
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/MiniSimplify_Test.cpp
@@ -0,0 +1,99 @@
+#include "EdgeWalker_Test.h"
+#include "Intersection_Tests.h"
+#include "ShapeOps.h"
+
+bool gShowOriginal = true;
+
+struct curve {
+ SkPath::Verb verb;
+ SkPoint pts[4];
+};
+
+struct curve test1[] = {
+{SkPath::kQuad_Verb, {{366.608826f, 151.196014f}, {378.803101f, 136.674606f}, {398.164948f, 136.674606f}}},
+{SkPath::kLine_Verb, {{354.009216f, 208.816208f}, {393.291473f, 102.232819f}}},
+{SkPath::kQuad_Verb, {{359.978058f, 136.581512f}, {378.315979f, 136.581512f}, {388.322723f, 149.613556f}}},
+{SkPath::kQuad_Verb, {{364.390686f, 157.898193f}, {375.281769f, 136.674606f}, {396.039917f, 136.674606f}}},
+{SkPath::kLine_Verb, {{396.039917f, 136.674606f}, {350, 120}}},
+{SkPath::kDone_Verb}
+};
+
+struct curve test2[] = {
+{SkPath::kQuad_Verb, {{366.608826f, 151.196014f}, {378.803101f, 136.674606f}, {398.164948f, 136.674606f}}},
+{SkPath::kQuad_Verb, {{359.978058f, 136.581512f}, {378.315979f, 136.581512f}, {388.322723f, 149.613556f}}},
+{SkPath::kQuad_Verb, {{364.390686f, 157.898193f}, {375.281769f, 136.674606f}, {396.039917f, 136.674606f}}},
+{SkPath::kDone_Verb}
+};
+
+struct curve* testSet[] = {
+ test2,
+ test1
+};
+
+size_t testSet_count = sizeof(testSet) / sizeof(testSet[0]);
+
+static void construct() {
+ for (size_t idx = 0; idx < testSet_count; ++idx) {
+ const curve* test = testSet[idx];
+ SkPath path;
+ bool pathComplete = false;
+ bool first = true;
+ do {
+ if (first) {
+ path.moveTo(test->pts[0].fX, test->pts[0].fY);
+ first = false;
+ } else if (test->verb != SkPath::kDone_Verb) {
+ path.lineTo(test->pts[0].fX, test->pts[0].fY);
+ }
+ switch (test->verb) {
+ case SkPath::kDone_Verb:
+ pathComplete = true;
+ break;
+ case SkPath::kLine_Verb:
+ path.lineTo(test->pts[1].fX, test->pts[1].fY);
+ break;
+ case SkPath::kQuad_Verb:
+ path.quadTo(test->pts[1].fX, test->pts[1].fY, test->pts[2].fX, test->pts[2].fY);
+ break;
+ case SkPath::kCubic_Verb:
+ path.cubicTo(test->pts[1].fX, test->pts[1].fY, test->pts[2].fX, test->pts[2].fY, test->pts[3].fX, test->pts[3].fY);
+ break;
+ default:
+ SkASSERT(0);
+ }
+ test++;
+ } while (!pathComplete);
+ path.close();
+ if (gShowOriginal) {
+ showPath(path, NULL);
+ SkDebugf("simplified:\n");
+ }
+ testSimplifyx(path);
+ }
+}
+
+static void (*tests[])() = {
+ construct,
+};
+
+static const size_t testCount = sizeof(tests) / sizeof(tests[0]);
+
+static void (*firstTest)() = 0;
+static bool skipAll = false;
+
+void MiniSimplify_Test() {
+ if (skipAll) {
+ return;
+ }
+ size_t index = 0;
+ if (firstTest) {
+ while (index < testCount && tests[index] != firstTest) {
+ ++index;
+ }
+ }
+ bool firstTestComplete = false;
+ for ( ; index < testCount; ++index) {
+ (*tests[index])();
+ firstTestComplete = true;
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/NearestPoint.cpp b/chromium/third_party/skia/experimental/Intersection/NearestPoint.cpp
new file mode 100644
index 00000000000..2b3c11d20a9
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/NearestPoint.cpp
@@ -0,0 +1,473 @@
+/*
+Solving the Nearest Point-on-Curve Problem
+and
+A Bezier Curve-Based Root-Finder
+by Philip J. Schneider
+from "Graphics Gems", Academic Press, 1990
+*/
+
+ /* point_on_curve.c */
+
+#include <stdio.h>
+#include <malloc.h>
+#include <math.h>
+#include "GraphicsGems.h"
+
+#define TESTMODE
+
+/*
+ * Forward declarations
+ */
+Point2 NearestPointOnCurve();
+static int FindRoots();
+static Point2 *ConvertToBezierForm();
+static double ComputeXIntercept();
+static int ControlPolygonFlatEnough();
+static int CrossingCount();
+static Point2 Bezier();
+static Vector2 V2ScaleII();
+
+int MAXDEPTH = 64; /* Maximum depth for recursion */
+
+#define EPSILON (ldexp(1.0,-MAXDEPTH-1)) /*Flatness control value */
+#define DEGREE 3 /* Cubic Bezier curve */
+#define W_DEGREE 5 /* Degree of eqn to find roots of */
+
+#ifdef TESTMODE
+/*
+ * main :
+ * Given a cubic Bezier curve (i.e., its control points), and some
+ * arbitrary point in the plane, find the point on the curve
+ * closest to that arbitrary point.
+ */
+main()
+{
+
+ static Point2 bezCurve[4] = { /* A cubic Bezier curve */
+ { 0.0, 0.0 },
+ { 1.0, 2.0 },
+ { 3.0, 3.0 },
+ { 4.0, 2.0 },
+ };
+ static Point2 arbPoint = { 3.5, 2.0 }; /*Some arbitrary point*/
+ Point2 pointOnCurve; /* Nearest point on the curve */
+
+ /* Find the closest point */
+ pointOnCurve = NearestPointOnCurve(arbPoint, bezCurve);
+ printf("pointOnCurve : (%4.4f, %4.4f)\n", pointOnCurve.x,
+ pointOnCurve.y);
+}
+#endif /* TESTMODE */
+
+
+/*
+ * NearestPointOnCurve :
+ * Compute the parameter value of the point on a Bezier
+ * curve segment closest to some arbtitrary, user-input point.
+ * Return the point on the curve at that parameter value.
+ *
+ */
+Point2 NearestPointOnCurve(P, V)
+ Point2 P; /* The user-supplied point */
+ Point2 *V; /* Control points of cubic Bezier */
+{
+ Point2 *w; /* Ctl pts for 5th-degree eqn */
+ double t_candidate[W_DEGREE]; /* Possible roots */
+ int n_solutions; /* Number of roots found */
+ double t; /* Parameter value of closest pt*/
+
+ /* Convert problem to 5th-degree Bezier form */
+ w = ConvertToBezierForm(P, V);
+
+ /* Find all possible roots of 5th-degree equation */
+ n_solutions = FindRoots(w, W_DEGREE, t_candidate, 0);
+ free((char *)w);
+
+ /* Compare distances of P to all candidates, and to t=0, and t=1 */
+ {
+ double dist, new_dist;
+ Point2 p;
+ Vector2 v;
+ int i;
+
+
+ /* Check distance to beginning of curve, where t = 0 */
+ dist = V2SquaredLength(V2Sub(&P, &V[0], &v));
+ t = 0.0;
+
+ /* Find distances for candidate points */
+ for (i = 0; i < n_solutions; i++) {
+ p = Bezier(V, DEGREE, t_candidate[i],
+ (Point2 *)NULL, (Point2 *)NULL);
+ new_dist = V2SquaredLength(V2Sub(&P, &p, &v));
+ if (new_dist < dist) {
+ dist = new_dist;
+ t = t_candidate[i];
+ }
+ }
+
+ /* Finally, look at distance to end point, where t = 1.0 */
+ new_dist = V2SquaredLength(V2Sub(&P, &V[DEGREE], &v));
+ if (new_dist < dist) {
+ dist = new_dist;
+ t = 1.0;
+ }
+ }
+
+ /* Return the point on the curve at parameter value t */
+ printf("t : %4.12f\n", t);
+ return (Bezier(V, DEGREE, t, (Point2 *)NULL, (Point2 *)NULL));
+}
+
+
+/*
+ * ConvertToBezierForm :
+ * Given a point and a Bezier curve, generate a 5th-degree
+ * Bezier-format equation whose solution finds the point on the
+ * curve nearest the user-defined point.
+ */
+static Point2 *ConvertToBezierForm(P, V)
+ Point2 P; /* The point to find t for */
+ Point2 *V; /* The control points */
+{
+ int i, j, k, m, n, ub, lb;
+ int row, column; /* Table indices */
+ Vector2 c[DEGREE+1]; /* V(i)'s - P */
+ Vector2 d[DEGREE]; /* V(i+1) - V(i) */
+ Point2 *w; /* Ctl pts of 5th-degree curve */
+ double cdTable[3][4]; /* Dot product of c, d */
+ static double z[3][4] = { /* Precomputed "z" for cubics */
+ {1.0, 0.6, 0.3, 0.1},
+ {0.4, 0.6, 0.6, 0.4},
+ {0.1, 0.3, 0.6, 1.0},
+ };
+
+
+ /*Determine the c's -- these are vectors created by subtracting*/
+ /* point P from each of the control points */
+ for (i = 0; i <= DEGREE; i++) {
+ V2Sub(&V[i], &P, &c[i]);
+ }
+ /* Determine the d's -- these are vectors created by subtracting*/
+ /* each control point from the next */
+ for (i = 0; i <= DEGREE - 1; i++) {
+ d[i] = V2ScaleII(V2Sub(&V[i+1], &V[i], &d[i]), 3.0);
+ }
+
+ /* Create the c,d table -- this is a table of dot products of the */
+ /* c's and d's */
+ for (row = 0; row <= DEGREE - 1; row++) {
+ for (column = 0; column <= DEGREE; column++) {
+ cdTable[row][column] = V2Dot(&d[row], &c[column]);
+ }
+ }
+
+ /* Now, apply the z's to the dot products, on the skew diagonal*/
+ /* Also, set up the x-values, making these "points" */
+ w = (Point2 *)malloc((unsigned)(W_DEGREE+1) * sizeof(Point2));
+ for (i = 0; i <= W_DEGREE; i++) {
+ w[i].y = 0.0;
+ w[i].x = (double)(i) / W_DEGREE;
+ }
+
+ n = DEGREE;
+ m = DEGREE-1;
+ for (k = 0; k <= n + m; k++) {
+ lb = MAX(0, k - m);
+ ub = MIN(k, n);
+ for (i = lb; i <= ub; i++) {
+ j = k - i;
+ w[i+j].y += cdTable[j][i] * z[j][i];
+ }
+ }
+
+ return (w);
+}
+
+
+/*
+ * FindRoots :
+ * Given a 5th-degree equation in Bernstein-Bezier form, find
+ * all of the roots in the interval [0, 1]. Return the number
+ * of roots found.
+ */
+static int FindRoots(w, degree, t, depth)
+ Point2 *w; /* The control points */
+ int degree; /* The degree of the polynomial */
+ double *t; /* RETURN candidate t-values */
+ int depth; /* The depth of the recursion */
+{
+ int i;
+ Point2 Left[W_DEGREE+1], /* New left and right */
+ Right[W_DEGREE+1]; /* control polygons */
+ int left_count, /* Solution count from */
+ right_count; /* children */
+ double left_t[W_DEGREE+1], /* Solutions from kids */
+ right_t[W_DEGREE+1];
+
+ switch (CrossingCount(w, degree)) {
+ case 0 : { /* No solutions here */
+ return 0;
+ }
+ case 1 : { /* Unique solution */
+ /* Stop recursion when the tree is deep enough */
+ /* if deep enough, return 1 solution at midpoint */
+ if (depth >= MAXDEPTH) {
+ t[0] = (w[0].x + w[W_DEGREE].x) / 2.0;
+ return 1;
+ }
+ if (ControlPolygonFlatEnough(w, degree)) {
+ t[0] = ComputeXIntercept(w, degree);
+ return 1;
+ }
+ break;
+ }
+}
+
+ /* Otherwise, solve recursively after */
+ /* subdividing control polygon */
+ Bezier(w, degree, 0.5, Left, Right);
+ left_count = FindRoots(Left, degree, left_t, depth+1);
+ right_count = FindRoots(Right, degree, right_t, depth+1);
+
+
+ /* Gather solutions together */
+ for (i = 0; i < left_count; i++) {
+ t[i] = left_t[i];
+ }
+ for (i = 0; i < right_count; i++) {
+ t[i+left_count] = right_t[i];
+ }
+
+ /* Send back total number of solutions */
+ return (left_count+right_count);
+}
+
+
+/*
+ * CrossingCount :
+ * Count the number of times a Bezier control polygon
+ * crosses the 0-axis. This number is >= the number of roots.
+ *
+ */
+static int CrossingCount(V, degree)
+ Point2 *V; /* Control pts of Bezier curve */
+ int degree; /* Degreee of Bezier curve */
+{
+ int i;
+ int n_crossings = 0; /* Number of zero-crossings */
+ int sign, old_sign; /* Sign of coefficients */
+
+ sign = old_sign = SGN(V[0].y);
+ for (i = 1; i <= degree; i++) {
+ sign = SGN(V[i].y);
+ if (sign != old_sign) n_crossings++;
+ old_sign = sign;
+ }
+ return n_crossings;
+}
+
+
+
+/*
+ * ControlPolygonFlatEnough :
+ * Check if the control polygon of a Bezier curve is flat enough
+ * for recursive subdivision to bottom out.
+ *
+ */
+static int ControlPolygonFlatEnough(V, degree)
+ Point2 *V; /* Control points */
+ int degree; /* Degree of polynomial */
+{
+ int i; /* Index variable */
+ double *distance; /* Distances from pts to line */
+ double max_distance_above; /* maximum of these */
+ double max_distance_below;
+ double error; /* Precision of root */
+ double intercept_1,
+ intercept_2,
+ left_intercept,
+ right_intercept;
+ double a, b, c; /* Coefficients of implicit */
+ /* eqn for line from V[0]-V[deg]*/
+
+ /* Find the perpendicular distance */
+ /* from each interior control point to */
+ /* line connecting V[0] and V[degree] */
+ distance = (double *)malloc((unsigned)(degree + 1) * sizeof(double));
+ {
+ double abSquared;
+
+ /* Derive the implicit equation for line connecting first *'
+ /* and last control points */
+ a = V[0].y - V[degree].y;
+ b = V[degree].x - V[0].x;
+ c = V[0].x * V[degree].y - V[degree].x * V[0].y;
+
+ abSquared = (a * a) + (b * b);
+
+ for (i = 1; i < degree; i++) {
+ /* Compute distance from each of the points to that line */
+ distance[i] = a * V[i].x + b * V[i].y + c;
+ if (distance[i] > 0.0) {
+ distance[i] = (distance[i] * distance[i]) / abSquared;
+ }
+ if (distance[i] < 0.0) {
+ distance[i] = -((distance[i] * distance[i]) / abSquared);
+ }
+ }
+ }
+
+
+ /* Find the largest distance */
+ max_distance_above = 0.0;
+ max_distance_below = 0.0;
+ for (i = 1; i < degree; i++) {
+ if (distance[i] < 0.0) {
+ max_distance_below = MIN(max_distance_below, distance[i]);
+ };
+ if (distance[i] > 0.0) {
+ max_distance_above = MAX(max_distance_above, distance[i]);
+ }
+ }
+ free((char *)distance);
+
+ {
+ double det, dInv;
+ double a1, b1, c1, a2, b2, c2;
+
+ /* Implicit equation for zero line */
+ a1 = 0.0;
+ b1 = 1.0;
+ c1 = 0.0;
+
+ /* Implicit equation for "above" line */
+ a2 = a;
+ b2 = b;
+ c2 = c + max_distance_above;
+
+ det = a1 * b2 - a2 * b1;
+ dInv = 1.0/det;
+
+ intercept_1 = (b1 * c2 - b2 * c1) * dInv;
+
+ /* Implicit equation for "below" line */
+ a2 = a;
+ b2 = b;
+ c2 = c + max_distance_below;
+
+ det = a1 * b2 - a2 * b1;
+ dInv = 1.0/det;
+
+ intercept_2 = (b1 * c2 - b2 * c1) * dInv;
+ }
+
+ /* Compute intercepts of bounding box */
+ left_intercept = MIN(intercept_1, intercept_2);
+ right_intercept = MAX(intercept_1, intercept_2);
+
+ error = 0.5 * (right_intercept-left_intercept);
+ if (error < EPSILON) {
+ return 1;
+ }
+ else {
+ return 0;
+ }
+}
+
+
+
+/*
+ * ComputeXIntercept :
+ * Compute intersection of chord from first control point to last
+ * with 0-axis.
+ *
+ */
+/* NOTE: "T" and "Y" do not have to be computed, and there are many useless
+ * operations in the following (e.g. "0.0 - 0.0").
+ */
+static double ComputeXIntercept(V, degree)
+ Point2 *V; /* Control points */
+ int degree; /* Degree of curve */
+{
+ double XLK, YLK, XNM, YNM, XMK, YMK;
+ double det, detInv;
+ double S, T;
+ double X, Y;
+
+ XLK = 1.0 - 0.0;
+ YLK = 0.0 - 0.0;
+ XNM = V[degree].x - V[0].x;
+ YNM = V[degree].y - V[0].y;
+ XMK = V[0].x - 0.0;
+ YMK = V[0].y - 0.0;
+
+ det = XNM*YLK - YNM*XLK;
+ detInv = 1.0/det;
+
+ S = (XNM*YMK - YNM*XMK) * detInv;
+/* T = (XLK*YMK - YLK*XMK) * detInv; */
+
+ X = 0.0 + XLK * S;
+/* Y = 0.0 + YLK * S; */
+
+ return X;
+}
+
+
+/*
+ * Bezier :
+ * Evaluate a Bezier curve at a particular parameter value
+ * Fill in control points for resulting sub-curves if "Left" and
+ * "Right" are non-null.
+ *
+ */
+static Point2 Bezier(V, degree, t, Left, Right)
+ int degree; /* Degree of bezier curve */
+ Point2 *V; /* Control pts */
+ double t; /* Parameter value */
+ Point2 *Left; /* RETURN left half ctl pts */
+ Point2 *Right; /* RETURN right half ctl pts */
+{
+ int i, j; /* Index variables */
+ Point2 Vtemp[W_DEGREE+1][W_DEGREE+1];
+
+
+ /* Copy control points */
+ for (j =0; j <= degree; j++) {
+ Vtemp[0][j] = V[j];
+ }
+
+ /* Triangle computation */
+ for (i = 1; i <= degree; i++) {
+ for (j =0 ; j <= degree - i; j++) {
+ Vtemp[i][j].x =
+ (1.0 - t) * Vtemp[i-1][j].x + t * Vtemp[i-1][j+1].x;
+ Vtemp[i][j].y =
+ (1.0 - t) * Vtemp[i-1][j].y + t * Vtemp[i-1][j+1].y;
+ }
+ }
+
+ if (Left != NULL) {
+ for (j = 0; j <= degree; j++) {
+ Left[j] = Vtemp[j][0];
+ }
+ }
+ if (Right != NULL) {
+ for (j = 0; j <= degree; j++) {
+ Right[j] = Vtemp[degree-j][j];
+ }
+ }
+
+ return (Vtemp[degree][0]);
+}
+
+static Vector2 V2ScaleII(v, s)
+ Vector2 *v;
+ double s;
+{
+ Vector2 result;
+
+ result.x = v->x * s; result.y = v->y * s;
+ return (result);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/Parameterization_Test.h b/chromium/third_party/skia/experimental/Intersection/Parameterization_Test.h
new file mode 100644
index 00000000000..93a27ec29de
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/Parameterization_Test.h
@@ -0,0 +1,12 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "DataTypes.h"
+
+// utilities used only for unit testing
+bool point_on_parameterized_curve(const Cubic& cubic, const _Point& point);
+bool point_on_parameterized_line(const _Line& line, const _Point& point);
+bool point_on_parameterized_curve(const Quadratic& quad, const _Point& point);
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticBezierClip.cpp b/chromium/third_party/skia/experimental/Intersection/QuadraticBezierClip.cpp
new file mode 100644
index 00000000000..5b15fe51c61
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticBezierClip.cpp
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "CurveUtilities.h"
+#include "LineParameters.h"
+
+#define DEBUG_BEZIER_CLIP 1
+
+// return false if unable to clip (e.g., unable to create implicit line)
+// caller should subdivide, or create degenerate if the values are too small
+bool bezier_clip(const Quadratic& q1, const Quadratic& q2, double& minT, double& maxT) {
+ minT = 1;
+ maxT = 0;
+ // determine normalized implicit line equation for pt[0] to pt[3]
+ // of the form ax + by + c = 0, where a*a + b*b == 1
+
+ // find the implicit line equation parameters
+ LineParameters endLine;
+ endLine.quadEndPoints(q1);
+ if (!endLine.normalize()) {
+ printf("line cannot be normalized: need more code here\n");
+ SkASSERT(0);
+ return false;
+ }
+
+ double distance = endLine.controlPtDistance(q1);
+
+ // find fat line
+ double top = 0;
+ double bottom = distance / 2; // http://students.cs.byu.edu/~tom/557/text/cic.pdf (7.6)
+ if (top > bottom) {
+ SkTSwap(top, bottom);
+ }
+
+ // compute intersecting candidate distance
+ Quadratic distance2y; // points with X of (0, 1/2, 1)
+ endLine.quadDistanceY(q2, distance2y);
+
+ int flags = 0;
+ if (approximately_lesser_or_equal(distance2y[0].y, top)) {
+ flags |= kFindTopMin;
+ } else if (approximately_greater_or_equal(distance2y[0].y, bottom)) {
+ flags |= kFindBottomMin;
+ } else {
+ minT = 0;
+ }
+
+ if (approximately_lesser_or_equal(distance2y[2].y, top)) {
+ flags |= kFindTopMax;
+ } else if (approximately_greater_or_equal(distance2y[2].y, bottom)) {
+ flags |= kFindBottomMax;
+ } else {
+ maxT = 1;
+ }
+ // Find the intersection of distance convex hull and fat line.
+ int idx = 0;
+ do {
+ int next = idx + 1;
+ if (next == 3) {
+ next = 0;
+ }
+ x_at(distance2y[idx], distance2y[next], top, bottom, flags, minT, maxT);
+ idx = next;
+ } while (idx);
+#if DEBUG_BEZIER_CLIP
+ _Rect r1, r2;
+ r1.setBounds(q1);
+ r2.setBounds(q2);
+ _Point testPt = {0.487, 0.337};
+ if (r1.contains(testPt) && r2.contains(testPt)) {
+ printf("%s q1=(%1.9g,%1.9g %1.9g,%1.9g %1.9g,%1.9g)"
+ " q2=(%1.9g,%1.9g %1.9g,%1.9g %1.9g,%1.9g) minT=%1.9g maxT=%1.9g\n",
+ __FUNCTION__, q1[0].x, q1[0].y, q1[1].x, q1[1].y, q1[2].x, q1[2].y,
+ q2[0].x, q2[0].y, q2[1].x, q2[1].y, q2[2].x, q2[2].y, minT, maxT);
+ }
+#endif
+ return minT < maxT; // returns false if distance shows no intersection
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticBezierClip_Test.cpp b/chromium/third_party/skia/experimental/Intersection/QuadraticBezierClip_Test.cpp
new file mode 100644
index 00000000000..1579f988846
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticBezierClip_Test.cpp
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "Intersection_Tests.h"
+#include "QuadraticIntersection_TestData.h"
+
+static const Quadratic testSet[] = {
+ // data for oneOffTest
+ {{8.0000000000000071, 8.0000000000000071},
+ {8.7289570079366854, 8.7289570079366889},
+ {9.3914917259458743, 9.0593802763083691}},
+ {{8.0000000000000142, 8.0000000000000142},
+ {8.1250000000000107, 8.1250000000000071},
+ {8.2500000000000071, 8.2187500000000053}},
+ // data for oneAtEndTest
+ {{0.91292418204644155, 0.41931201426549197},
+ {0.70491388044579517, 0.64754305977710236},
+ {0, 1 }},
+ {{0.21875, 0.765625 },
+ {0.125, 0.875 },
+ {0, 1 }}
+};
+
+static void oneAtEndTest() {
+ const Quadratic& quad1 = testSet[2];
+ const Quadratic& quad2 = testSet[3];
+ double minT = 0;
+ double maxT = 1;
+ bezier_clip(quad1, quad2, minT, maxT);
+}
+
+
+static void oneOffTest() {
+ const Quadratic& quad1 = testSet[0];
+ const Quadratic& quad2 = testSet[1];
+ double minT = 0;
+ double maxT = 1;
+ bezier_clip(quad1, quad2, minT, maxT);
+}
+
+static void standardTestCases() {
+ for (size_t index = 0; index < quadraticTests_count; ++index) {
+ const Quadratic& quad1 = quadraticTests[index][0];
+ const Quadratic& quad2 = quadraticTests[index][1];
+ Quadratic reduce1, reduce2;
+ int order1 = reduceOrder(quad1, reduce1, kReduceOrder_TreatAsFill);
+ int order2 = reduceOrder(quad2, reduce2, kReduceOrder_TreatAsFill);
+ if (order1 < 3) {
+ SkDebugf("%s [%d] quad1 order=%d\n", __FUNCTION__, (int)index, order1);
+ }
+ if (order2 < 3) {
+ SkDebugf("%s [%d] quad2 order=%d\n", __FUNCTION__, (int)index, order2);
+ }
+ if (order1 == 3 && order2 == 3) {
+ double minT = 0;
+ double maxT = 1;
+ bezier_clip(reduce1, reduce2, minT, maxT);
+ }
+ }
+}
+
+void QuadraticBezierClip_Test() {
+ oneAtEndTest();
+ oneOffTest();
+ standardTestCases();
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticBounds.cpp b/chromium/third_party/skia/experimental/Intersection/QuadraticBounds.cpp
new file mode 100644
index 00000000000..193743b04ac
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticBounds.cpp
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "CurveUtilities.h"
+#include "Extrema.h"
+
+double leftMostT(const Quadratic& quad, double startT, double endT) {
+ double leftT;
+ if (findExtrema(quad[0].x, quad[1].x, quad[2].x, &leftT)
+ && startT <= leftT && leftT <= endT) {
+ return leftT;
+ }
+ _Point startPt;
+ xy_at_t(quad, startT, startPt.x, startPt.y);
+ _Point endPt;
+ xy_at_t(quad, endT, endPt.x, endPt.y);
+ return startPt.x <= endPt.x ? startT : endT;
+}
+
+void _Rect::setBounds(const Quadratic& quad) {
+ set(quad[0]);
+ add(quad[2]);
+ double tValues[2];
+ int roots = 0;
+ if (!between(quad[0].x, quad[1].x, quad[2].x)) {
+ roots = findExtrema(quad[0].x, quad[1].x, quad[2].x, tValues);
+ }
+ if (!between(quad[0].y, quad[1].y, quad[2].y)) {
+ roots += findExtrema(quad[0].y, quad[1].y, quad[2].y, &tValues[roots]);
+ }
+ for (int x = 0; x < roots; ++x) {
+ _Point result;
+ xy_at_t(quad, tValues[x], result.x, result.y);
+ add(result);
+ }
+}
+
+void _Rect::setRawBounds(const Quadratic& quad) {
+ set(quad[0]);
+ for (int x = 1; x < 3; ++x) {
+ add(quad[x]);
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticImplicit.cpp b/chromium/third_party/skia/experimental/Intersection/QuadraticImplicit.cpp
new file mode 100644
index 00000000000..e2024f7bd7d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticImplicit.cpp
@@ -0,0 +1,572 @@
+// Another approach is to start with the implicit form of one curve and solve
+// (seek implicit coefficients in QuadraticParameter.cpp
+// by substituting in the parametric form of the other.
+// The downside of this approach is that early rejects are difficult to come by.
+// http://planetmath.org/encyclopedia/GaloisTheoreticDerivationOfTheQuarticFormula.html#step
+
+
+#include "CubicUtilities.h"
+#include "CurveIntersection.h"
+#include "Intersections.h"
+#include "QuadraticParameterization.h"
+#include "QuarticRoot.h"
+#include "QuadraticUtilities.h"
+#include "TSearch.h"
+
+#if SK_DEBUG
+#include "LineUtilities.h"
+#endif
+
+/* given the implicit form 0 = Ax^2 + Bxy + Cy^2 + Dx + Ey + F
+ * and given x = at^2 + bt + c (the parameterized form)
+ * y = dt^2 + et + f
+ * then
+ * 0 = A(at^2+bt+c)(at^2+bt+c)+B(at^2+bt+c)(dt^2+et+f)+C(dt^2+et+f)(dt^2+et+f)+D(at^2+bt+c)+E(dt^2+et+f)+F
+ */
+
+static int findRoots(const QuadImplicitForm& i, const Quadratic& q2, double roots[4],
+ bool oneHint, int firstCubicRoot) {
+ double a, b, c;
+ set_abc(&q2[0].x, a, b, c);
+ double d, e, f;
+ set_abc(&q2[0].y, d, e, f);
+ const double t4 = i.x2() * a * a
+ + i.xy() * a * d
+ + i.y2() * d * d;
+ const double t3 = 2 * i.x2() * a * b
+ + i.xy() * (a * e + b * d)
+ + 2 * i.y2() * d * e;
+ const double t2 = i.x2() * (b * b + 2 * a * c)
+ + i.xy() * (c * d + b * e + a * f)
+ + i.y2() * (e * e + 2 * d * f)
+ + i.x() * a
+ + i.y() * d;
+ const double t1 = 2 * i.x2() * b * c
+ + i.xy() * (c * e + b * f)
+ + 2 * i.y2() * e * f
+ + i.x() * b
+ + i.y() * e;
+ const double t0 = i.x2() * c * c
+ + i.xy() * c * f
+ + i.y2() * f * f
+ + i.x() * c
+ + i.y() * f
+ + i.c();
+ int rootCount = reducedQuarticRoots(t4, t3, t2, t1, t0, oneHint, roots);
+ if (rootCount >= 0) {
+ return rootCount;
+ }
+ return quarticRootsReal(firstCubicRoot, t4, t3, t2, t1, t0, roots);
+}
+
+static int addValidRoots(const double roots[4], const int count, double valid[4]) {
+ int result = 0;
+ int index;
+ for (index = 0; index < count; ++index) {
+ if (!approximately_zero_or_more(roots[index]) || !approximately_one_or_less(roots[index])) {
+ continue;
+ }
+ double t = 1 - roots[index];
+ if (approximately_less_than_zero(t)) {
+ t = 0;
+ } else if (approximately_greater_than_one(t)) {
+ t = 1;
+ }
+ valid[result++] = t;
+ }
+ return result;
+}
+
+static bool onlyEndPtsInCommon(const Quadratic& q1, const Quadratic& q2, Intersections& i) {
+// the idea here is to see at minimum do a quick reject by rotating all points
+// to either side of the line formed by connecting the endpoints
+// if the opposite curves points are on the line or on the other side, the
+// curves at most intersect at the endpoints
+ for (int oddMan = 0; oddMan < 3; ++oddMan) {
+ const _Point* endPt[2];
+ for (int opp = 1; opp < 3; ++opp) {
+ int end = oddMan ^ opp;
+ if (end == 3) {
+ end = opp;
+ }
+ endPt[opp - 1] = &q1[end];
+ }
+ double origX = endPt[0]->x;
+ double origY = endPt[0]->y;
+ double adj = endPt[1]->x - origX;
+ double opp = endPt[1]->y - origY;
+ double sign = (q1[oddMan].y - origY) * adj - (q1[oddMan].x - origX) * opp;
+ if (approximately_zero(sign)) {
+ goto tryNextHalfPlane;
+ }
+ for (int n = 0; n < 3; ++n) {
+ double test = (q2[n].y - origY) * adj - (q2[n].x - origX) * opp;
+ if (test * sign > 0) {
+ goto tryNextHalfPlane;
+ }
+ }
+ for (int i1 = 0; i1 < 3; i1 += 2) {
+ for (int i2 = 0; i2 < 3; i2 += 2) {
+ if (q1[i1] == q2[i2]) {
+ i.insert(i1 >> 1, i2 >> 1, q1[i1]);
+ }
+ }
+ }
+ SkASSERT(i.fUsed < 3);
+ return true;
+tryNextHalfPlane:
+ ;
+ }
+ return false;
+}
+
+// returns false if there's more than one intercept or the intercept doesn't match the point
+// returns true if the intercept was successfully added or if the
+// original quads need to be subdivided
+static bool addIntercept(const Quadratic& q1, const Quadratic& q2, double tMin, double tMax,
+ Intersections& i, bool* subDivide) {
+ double tMid = (tMin + tMax) / 2;
+ _Point mid;
+ xy_at_t(q2, tMid, mid.x, mid.y);
+ _Line line;
+ line[0] = line[1] = mid;
+ _Vector dxdy = dxdy_at_t(q2, tMid);
+ line[0] -= dxdy;
+ line[1] += dxdy;
+ Intersections rootTs;
+ int roots = intersect(q1, line, rootTs);
+ if (roots == 0) {
+ if (subDivide) {
+ *subDivide = true;
+ }
+ return true;
+ }
+ if (roots == 2) {
+ return false;
+ }
+ _Point pt2;
+ xy_at_t(q1, rootTs.fT[0][0], pt2.x, pt2.y);
+ if (!pt2.approximatelyEqualHalf(mid)) {
+ return false;
+ }
+ i.insertSwap(rootTs.fT[0][0], tMid, pt2);
+ return true;
+}
+
+static bool isLinearInner(const Quadratic& q1, double t1s, double t1e, const Quadratic& q2,
+ double t2s, double t2e, Intersections& i, bool* subDivide) {
+ Quadratic hull;
+ sub_divide(q1, t1s, t1e, hull);
+ _Line line = {hull[2], hull[0]};
+ const _Line* testLines[] = { &line, (const _Line*) &hull[0], (const _Line*) &hull[1] };
+ size_t testCount = sizeof(testLines) / sizeof(testLines[0]);
+ SkTDArray<double> tsFound;
+ for (size_t index = 0; index < testCount; ++index) {
+ Intersections rootTs;
+ int roots = intersect(q2, *testLines[index], rootTs);
+ for (int idx2 = 0; idx2 < roots; ++idx2) {
+ double t = rootTs.fT[0][idx2];
+#if SK_DEBUG
+ _Point qPt, lPt;
+ xy_at_t(q2, t, qPt.x, qPt.y);
+ xy_at_t(*testLines[index], rootTs.fT[1][idx2], lPt.x, lPt.y);
+ SkASSERT(qPt.approximatelyEqual(lPt));
+#endif
+ if (approximately_negative(t - t2s) || approximately_positive(t - t2e)) {
+ continue;
+ }
+ *tsFound.append() = rootTs.fT[0][idx2];
+ }
+ }
+ int tCount = tsFound.count();
+ if (!tCount) {
+ return true;
+ }
+ double tMin, tMax;
+ if (tCount == 1) {
+ tMin = tMax = tsFound[0];
+ } else if (tCount > 1) {
+ QSort<double>(tsFound.begin(), tsFound.end() - 1);
+ tMin = tsFound[0];
+ tMax = tsFound[tsFound.count() - 1];
+ }
+ _Point end;
+ xy_at_t(q2, t2s, end.x, end.y);
+ bool startInTriangle = point_in_hull(hull, end);
+ if (startInTriangle) {
+ tMin = t2s;
+ }
+ xy_at_t(q2, t2e, end.x, end.y);
+ bool endInTriangle = point_in_hull(hull, end);
+ if (endInTriangle) {
+ tMax = t2e;
+ }
+ int split = 0;
+ _Vector dxy1, dxy2;
+ if (tMin != tMax || tCount > 2) {
+ dxy2 = dxdy_at_t(q2, tMin);
+ for (int index = 1; index < tCount; ++index) {
+ dxy1 = dxy2;
+ dxy2 = dxdy_at_t(q2, tsFound[index]);
+ double dot = dxy1.dot(dxy2);
+ if (dot < 0) {
+ split = index - 1;
+ break;
+ }
+ }
+
+ }
+ if (split == 0) { // there's one point
+ if (addIntercept(q1, q2, tMin, tMax, i, subDivide)) {
+ return true;
+ }
+ i.swap();
+ return isLinearInner(q2, tMin, tMax, q1, t1s, t1e, i, subDivide);
+ }
+ // At this point, we have two ranges of t values -- treat each separately at the split
+ bool result;
+ if (addIntercept(q1, q2, tMin, tsFound[split - 1], i, subDivide)) {
+ result = true;
+ } else {
+ i.swap();
+ result = isLinearInner(q2, tMin, tsFound[split - 1], q1, t1s, t1e, i, subDivide);
+ }
+ if (addIntercept(q1, q2, tsFound[split], tMax, i, subDivide)) {
+ result = true;
+ } else {
+ i.swap();
+ result |= isLinearInner(q2, tsFound[split], tMax, q1, t1s, t1e, i, subDivide);
+ }
+ return result;
+}
+
+static double flatMeasure(const Quadratic& q) {
+ _Vector mid = q[1] - q[0];
+ _Vector dxy = q[2] - q[0];
+ double length = dxy.length(); // OPTIMIZE: get rid of sqrt
+ return fabs(mid.cross(dxy) / length);
+}
+
+// FIXME ? should this measure both and then use the quad that is the flattest as the line?
+static bool isLinear(const Quadratic& q1, const Quadratic& q2, Intersections& i) {
+ double measure = flatMeasure(q1);
+ // OPTIMIZE: (get rid of sqrt) use approximately_zero
+ if (!approximately_zero_sqrt(measure)) {
+ return false;
+ }
+ return isLinearInner(q1, 0, 1, q2, 0, 1, i, NULL);
+}
+
+// FIXME: if flat measure is sufficiently large, then probably the quartic solution failed
+static void relaxedIsLinear(const Quadratic& q1, const Quadratic& q2, Intersections& i) {
+ double m1 = flatMeasure(q1);
+ double m2 = flatMeasure(q2);
+#if SK_DEBUG
+ double min = SkTMin(m1, m2);
+ if (min > 5) {
+ SkDebugf("%s maybe not flat enough.. %1.9g\n", __FUNCTION__, min);
+ }
+#endif
+ i.reset();
+ const Quadratic& rounder = m2 < m1 ? q1 : q2;
+ const Quadratic& flatter = m2 < m1 ? q2 : q1;
+ bool subDivide = false;
+ isLinearInner(flatter, 0, 1, rounder, 0, 1, i, &subDivide);
+ if (subDivide) {
+ QuadraticPair pair;
+ chop_at(flatter, pair, 0.5);
+ Intersections firstI, secondI;
+ relaxedIsLinear(pair.first(), rounder, firstI);
+ for (int index = 0; index < firstI.used(); ++index) {
+ i.insert(firstI.fT[0][index] * 0.5, firstI.fT[1][index], firstI.fPt[index]);
+ }
+ relaxedIsLinear(pair.second(), rounder, secondI);
+ for (int index = 0; index < secondI.used(); ++index) {
+ i.insert(0.5 + secondI.fT[0][index] * 0.5, secondI.fT[1][index], secondI.fPt[index]);
+ }
+ }
+ if (m2 < m1) {
+ i.swapPts();
+ }
+}
+
+#if 0
+static void unsortableExpanse(const Quadratic& q1, const Quadratic& q2, Intersections& i) {
+ const Quadratic* qs[2] = { &q1, &q2 };
+ // need t values for start and end of unsortable expanse on both curves
+ // try projecting lines parallel to the end points
+ i.fT[0][0] = 0;
+ i.fT[0][1] = 1;
+ int flip = -1; // undecided
+ for (int qIdx = 0; qIdx < 2; qIdx++) {
+ for (int t = 0; t < 2; t++) {
+ _Point dxdy;
+ dxdy_at_t(*qs[qIdx], t, dxdy);
+ _Line perp;
+ perp[0] = perp[1] = (*qs[qIdx])[t == 0 ? 0 : 2];
+ perp[0].x += dxdy.y;
+ perp[0].y -= dxdy.x;
+ perp[1].x -= dxdy.y;
+ perp[1].y += dxdy.x;
+ Intersections hitData;
+ int hits = intersectRay(*qs[qIdx ^ 1], perp, hitData);
+ SkASSERT(hits <= 1);
+ if (hits) {
+ if (flip < 0) {
+ _Point dxdy2;
+ dxdy_at_t(*qs[qIdx ^ 1], hitData.fT[0][0], dxdy2);
+ double dot = dxdy.dot(dxdy2);
+ flip = dot < 0;
+ i.fT[1][0] = flip;
+ i.fT[1][1] = !flip;
+ }
+ i.fT[qIdx ^ 1][t ^ flip] = hitData.fT[0][0];
+ }
+ }
+ }
+ i.fUnsortable = true; // failed, probably coincident or near-coincident
+ i.fUsed = 2;
+}
+#endif
+
+// each time through the loop, this computes values it had from the last loop
+// if i == j == 1, the center values are still good
+// otherwise, for i != 1 or j != 1, four of the values are still good
+// and if i == 1 ^ j == 1, an additional value is good
+static bool binarySearch(const Quadratic& quad1, const Quadratic& quad2, double& t1Seed,
+ double& t2Seed, _Point& pt) {
+ double tStep = ROUGH_EPSILON;
+ _Point t1[3], t2[3];
+ int calcMask = ~0;
+ do {
+ if (calcMask & (1 << 1)) t1[1] = xy_at_t(quad1, t1Seed);
+ if (calcMask & (1 << 4)) t2[1] = xy_at_t(quad2, t2Seed);
+ if (t1[1].approximatelyEqual(t2[1])) {
+ pt = t1[1];
+ #if ONE_OFF_DEBUG
+ SkDebugf("%s t1=%1.9g t2=%1.9g (%1.9g,%1.9g) == (%1.9g,%1.9g)\n", __FUNCTION__,
+ t1Seed, t2Seed, t1[1].x, t1[1].y, t1[2].x, t1[2].y);
+ #endif
+ return true;
+ }
+ if (calcMask & (1 << 0)) t1[0] = xy_at_t(quad1, t1Seed - tStep);
+ if (calcMask & (1 << 2)) t1[2] = xy_at_t(quad1, t1Seed + tStep);
+ if (calcMask & (1 << 3)) t2[0] = xy_at_t(quad2, t2Seed - tStep);
+ if (calcMask & (1 << 5)) t2[2] = xy_at_t(quad2, t2Seed + tStep);
+ double dist[3][3];
+ // OPTIMIZE: using calcMask value permits skipping some distance calcuations
+ // if prior loop's results are moved to correct slot for reuse
+ dist[1][1] = t1[1].distanceSquared(t2[1]);
+ int best_i = 1, best_j = 1;
+ for (int i = 0; i < 3; ++i) {
+ for (int j = 0; j < 3; ++j) {
+ if (i == 1 && j == 1) {
+ continue;
+ }
+ dist[i][j] = t1[i].distanceSquared(t2[j]);
+ if (dist[best_i][best_j] > dist[i][j]) {
+ best_i = i;
+ best_j = j;
+ }
+ }
+ }
+ if (best_i == 1 && best_j == 1) {
+ tStep /= 2;
+ if (tStep < FLT_EPSILON_HALF) {
+ break;
+ }
+ calcMask = (1 << 0) | (1 << 2) | (1 << 3) | (1 << 5);
+ continue;
+ }
+ if (best_i == 0) {
+ t1Seed -= tStep;
+ t1[2] = t1[1];
+ t1[1] = t1[0];
+ calcMask = 1 << 0;
+ } else if (best_i == 2) {
+ t1Seed += tStep;
+ t1[0] = t1[1];
+ t1[1] = t1[2];
+ calcMask = 1 << 2;
+ } else {
+ calcMask = 0;
+ }
+ if (best_j == 0) {
+ t2Seed -= tStep;
+ t2[2] = t2[1];
+ t2[1] = t2[0];
+ calcMask |= 1 << 3;
+ } else if (best_j == 2) {
+ t2Seed += tStep;
+ t2[0] = t2[1];
+ t2[1] = t2[2];
+ calcMask |= 1 << 5;
+ }
+ } while (true);
+#if ONE_OFF_DEBUG
+ SkDebugf("%s t1=%1.9g t2=%1.9g (%1.9g,%1.9g) != (%1.9g,%1.9g) %s\n", __FUNCTION__,
+ t1Seed, t2Seed, t1[1].x, t1[1].y, t1[2].x, t1[2].y);
+#endif
+ return false;
+}
+
+bool intersect2(const Quadratic& q1, const Quadratic& q2, Intersections& i) {
+ // if the quads share an end point, check to see if they overlap
+
+ if (onlyEndPtsInCommon(q1, q2, i)) {
+ return i.intersected();
+ }
+ if (onlyEndPtsInCommon(q2, q1, i)) {
+ i.swapPts();
+ return i.intersected();
+ }
+ // see if either quad is really a line
+ if (isLinear(q1, q2, i)) {
+ return i.intersected();
+ }
+ if (isLinear(q2, q1, i)) {
+ i.swapPts();
+ return i.intersected();
+ }
+ QuadImplicitForm i1(q1);
+ QuadImplicitForm i2(q2);
+ if (i1.implicit_match(i2)) {
+ // FIXME: compute T values
+ // compute the intersections of the ends to find the coincident span
+ bool useVertical = fabs(q1[0].x - q1[2].x) < fabs(q1[0].y - q1[2].y);
+ double t;
+ if ((t = axialIntersect(q1, q2[0], useVertical)) >= 0) {
+ i.insertCoincident(t, 0, q2[0]);
+ }
+ if ((t = axialIntersect(q1, q2[2], useVertical)) >= 0) {
+ i.insertCoincident(t, 1, q2[2]);
+ }
+ useVertical = fabs(q2[0].x - q2[2].x) < fabs(q2[0].y - q2[2].y);
+ if ((t = axialIntersect(q2, q1[0], useVertical)) >= 0) {
+ i.insertCoincident(0, t, q1[0]);
+ }
+ if ((t = axialIntersect(q2, q1[2], useVertical)) >= 0) {
+ i.insertCoincident(1, t, q1[2]);
+ }
+ SkASSERT(i.coincidentUsed() <= 2);
+ return i.coincidentUsed() > 0;
+ }
+ int index;
+ bool useCubic = q1[0] == q2[0] || q1[0] == q2[2] || q1[2] == q2[0];
+ double roots1[4];
+ int rootCount = findRoots(i2, q1, roots1, useCubic, 0);
+ // OPTIMIZATION: could short circuit here if all roots are < 0 or > 1
+ double roots1Copy[4];
+ int r1Count = addValidRoots(roots1, rootCount, roots1Copy);
+ _Point pts1[4];
+ for (index = 0; index < r1Count; ++index) {
+ xy_at_t(q1, roots1Copy[index], pts1[index].x, pts1[index].y);
+ }
+ double roots2[4];
+ int rootCount2 = findRoots(i1, q2, roots2, useCubic, 0);
+ double roots2Copy[4];
+ int r2Count = addValidRoots(roots2, rootCount2, roots2Copy);
+ _Point pts2[4];
+ for (index = 0; index < r2Count; ++index) {
+ xy_at_t(q2, roots2Copy[index], pts2[index].x, pts2[index].y);
+ }
+ if (r1Count == r2Count && r1Count <= 1) {
+ if (r1Count == 1) {
+ if (pts1[0].approximatelyEqualHalf(pts2[0])) {
+ i.insert(roots1Copy[0], roots2Copy[0], pts1[0]);
+ } else if (pts1[0].moreRoughlyEqual(pts2[0])) {
+ // experiment: see if a different cubic solution provides the correct quartic answer
+ #if 0
+ for (int cu1 = 0; cu1 < 3; ++cu1) {
+ rootCount = findRoots(i2, q1, roots1, useCubic, cu1);
+ r1Count = addValidRoots(roots1, rootCount, roots1Copy);
+ if (r1Count == 0) {
+ continue;
+ }
+ for (int cu2 = 0; cu2 < 3; ++cu2) {
+ if (cu1 == 0 && cu2 == 0) {
+ continue;
+ }
+ rootCount2 = findRoots(i1, q2, roots2, useCubic, cu2);
+ r2Count = addValidRoots(roots2, rootCount2, roots2Copy);
+ if (r2Count == 0) {
+ continue;
+ }
+ SkASSERT(r1Count == 1 && r2Count == 1);
+ SkDebugf("*** [%d,%d] (%1.9g,%1.9g) %s (%1.9g,%1.9g)\n", cu1, cu2,
+ pts1[0].x, pts1[0].y, pts1[0].approximatelyEqualHalf(pts2[0])
+ ? "==" : "!=", pts2[0].x, pts2[0].y);
+ }
+ }
+ #endif
+ // experiment: try to find intersection by chasing t
+ rootCount = findRoots(i2, q1, roots1, useCubic, 0);
+ r1Count = addValidRoots(roots1, rootCount, roots1Copy);
+ rootCount2 = findRoots(i1, q2, roots2, useCubic, 0);
+ r2Count = addValidRoots(roots2, rootCount2, roots2Copy);
+ if (binarySearch(q1, q2, roots1Copy[0], roots2Copy[0], pts1[0])) {
+ i.insert(roots1Copy[0], roots2Copy[0], pts1[0]);
+ }
+ }
+ }
+ return i.intersected();
+ }
+ int closest[4];
+ double dist[4];
+ bool foundSomething = false;
+ for (index = 0; index < r1Count; ++index) {
+ dist[index] = DBL_MAX;
+ closest[index] = -1;
+ for (int ndex2 = 0; ndex2 < r2Count; ++ndex2) {
+ if (!pts2[ndex2].approximatelyEqualHalf(pts1[index])) {
+ continue;
+ }
+ double dx = pts2[ndex2].x - pts1[index].x;
+ double dy = pts2[ndex2].y - pts1[index].y;
+ double distance = dx * dx + dy * dy;
+ if (dist[index] <= distance) {
+ continue;
+ }
+ for (int outer = 0; outer < index; ++outer) {
+ if (closest[outer] != ndex2) {
+ continue;
+ }
+ if (dist[outer] < distance) {
+ goto next;
+ }
+ closest[outer] = -1;
+ }
+ dist[index] = distance;
+ closest[index] = ndex2;
+ foundSomething = true;
+ next:
+ ;
+ }
+ }
+ if (r1Count && r2Count && !foundSomething) {
+ relaxedIsLinear(q1, q2, i);
+ return i.intersected();
+ }
+ int used = 0;
+ do {
+ double lowest = DBL_MAX;
+ int lowestIndex = -1;
+ for (index = 0; index < r1Count; ++index) {
+ if (closest[index] < 0) {
+ continue;
+ }
+ if (roots1Copy[index] < lowest) {
+ lowestIndex = index;
+ lowest = roots1Copy[index];
+ }
+ }
+ if (lowestIndex < 0) {
+ break;
+ }
+ i.insert(roots1Copy[lowestIndex], roots2Copy[closest[lowestIndex]],
+ pts1[lowestIndex]);
+ closest[lowestIndex] = -1;
+ } while (++used < r1Count);
+ i.fFlip = false;
+ return i.intersected();
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticIntersection.cpp b/chromium/third_party/skia/experimental/Intersection/QuadraticIntersection.cpp
new file mode 100644
index 00000000000..07b8ecf8f3e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticIntersection.cpp
@@ -0,0 +1,403 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "Intersections.h"
+#include "IntersectionUtilities.h"
+#include "LineIntersection.h"
+#include "LineUtilities.h"
+#include "QuadraticLineSegments.h"
+#include "QuadraticUtilities.h"
+#include <algorithm> // for swap
+
+static const double tClipLimit = 0.8; // http://cagd.cs.byu.edu/~tom/papers/bezclip.pdf see Multiple intersections
+
+class QuadraticIntersections {
+public:
+
+QuadraticIntersections(const Quadratic& q1, const Quadratic& q2, Intersections& i)
+ : quad1(q1)
+ , quad2(q2)
+ , intersections(i)
+ , depth(0)
+ , splits(0)
+ , coinMinT1(-1) {
+}
+
+bool intersect() {
+ double minT1, minT2, maxT1, maxT2;
+ if (!bezier_clip(quad2, quad1, minT1, maxT1)) {
+ return false;
+ }
+ if (!bezier_clip(quad1, quad2, minT2, maxT2)) {
+ return false;
+ }
+ quad1Divisions = 1 / subDivisions(quad1);
+ quad2Divisions = 1 / subDivisions(quad2);
+ int split;
+ if (maxT1 - minT1 < maxT2 - minT2) {
+ intersections.swap();
+ minT2 = 0;
+ maxT2 = 1;
+ split = maxT1 - minT1 > tClipLimit;
+ } else {
+ minT1 = 0;
+ maxT1 = 1;
+ split = (maxT2 - minT2 > tClipLimit) << 1;
+ }
+ return chop(minT1, maxT1, minT2, maxT2, split);
+}
+
+protected:
+
+bool intersect(double minT1, double maxT1, double minT2, double maxT2) {
+ bool t1IsLine = maxT1 - minT1 <= quad1Divisions;
+ bool t2IsLine = maxT2 - minT2 <= quad2Divisions;
+ if (t1IsLine | t2IsLine) {
+ return intersectAsLine(minT1, maxT1, minT2, maxT2, t1IsLine, t2IsLine);
+ }
+ Quadratic smaller, larger;
+ // FIXME: carry last subdivide and reduceOrder result with quad
+ sub_divide(quad1, minT1, maxT1, intersections.swapped() ? larger : smaller);
+ sub_divide(quad2, minT2, maxT2, intersections.swapped() ? smaller : larger);
+ double minT, maxT;
+ if (!bezier_clip(smaller, larger, minT, maxT)) {
+ if (approximately_equal(minT, maxT)) {
+ double smallT, largeT;
+ _Point q2pt, q1pt;
+ if (intersections.swapped()) {
+ largeT = interp(minT2, maxT2, minT);
+ xy_at_t(quad2, largeT, q2pt.x, q2pt.y);
+ xy_at_t(quad1, minT1, q1pt.x, q1pt.y);
+ if (AlmostEqualUlps(q2pt.x, q1pt.x) && AlmostEqualUlps(q2pt.y, q1pt.y)) {
+ smallT = minT1;
+ } else {
+ xy_at_t(quad1, maxT1, q1pt.x, q1pt.y); // FIXME: debug code
+ SkASSERT(AlmostEqualUlps(q2pt.x, q1pt.x) && AlmostEqualUlps(q2pt.y, q1pt.y));
+ smallT = maxT1;
+ }
+ } else {
+ smallT = interp(minT1, maxT1, minT);
+ xy_at_t(quad1, smallT, q1pt.x, q1pt.y);
+ xy_at_t(quad2, minT2, q2pt.x, q2pt.y);
+ if (AlmostEqualUlps(q2pt.x, q1pt.x) && AlmostEqualUlps(q2pt.y, q1pt.y)) {
+ largeT = minT2;
+ } else {
+ xy_at_t(quad2, maxT2, q2pt.x, q2pt.y); // FIXME: debug code
+ SkASSERT(AlmostEqualUlps(q2pt.x, q1pt.x) && AlmostEqualUlps(q2pt.y, q1pt.y));
+ largeT = maxT2;
+ }
+ }
+ intersections.add(smallT, largeT);
+ return true;
+ }
+ return false;
+ }
+ int split;
+ if (intersections.swapped()) {
+ double newMinT1 = interp(minT1, maxT1, minT);
+ double newMaxT1 = interp(minT1, maxT1, maxT);
+ split = (newMaxT1 - newMinT1 > (maxT1 - minT1) * tClipLimit) << 1;
+#define VERBOSE 0
+#if VERBOSE
+ printf("%s d=%d s=%d new1=(%g,%g) old1=(%g,%g) split=%d\n", __FUNCTION__, depth,
+ splits, newMinT1, newMaxT1, minT1, maxT1, split);
+#endif
+ minT1 = newMinT1;
+ maxT1 = newMaxT1;
+ } else {
+ double newMinT2 = interp(minT2, maxT2, minT);
+ double newMaxT2 = interp(minT2, maxT2, maxT);
+ split = newMaxT2 - newMinT2 > (maxT2 - minT2) * tClipLimit;
+#if VERBOSE
+ printf("%s d=%d s=%d new2=(%g,%g) old2=(%g,%g) split=%d\n", __FUNCTION__, depth,
+ splits, newMinT2, newMaxT2, minT2, maxT2, split);
+#endif
+ minT2 = newMinT2;
+ maxT2 = newMaxT2;
+ }
+ return chop(minT1, maxT1, minT2, maxT2, split);
+}
+
+bool intersectAsLine(double minT1, double maxT1, double minT2, double maxT2,
+ bool treat1AsLine, bool treat2AsLine)
+{
+ _Line line1, line2;
+ if (intersections.swapped()) {
+ SkTSwap(treat1AsLine, treat2AsLine);
+ SkTSwap(minT1, minT2);
+ SkTSwap(maxT1, maxT2);
+ }
+ if (coinMinT1 >= 0) {
+ bool earlyExit;
+ if ((earlyExit = coinMaxT1 == minT1)) {
+ coinMaxT1 = maxT1;
+ }
+ if (coinMaxT2 == minT2) {
+ coinMaxT2 = maxT2;
+ return true;
+ }
+ if (earlyExit) {
+ return true;
+ }
+ coinMinT1 = -1;
+ }
+ // do line/quadratic or even line/line intersection instead
+ if (treat1AsLine) {
+ xy_at_t(quad1, minT1, line1[0].x, line1[0].y);
+ xy_at_t(quad1, maxT1, line1[1].x, line1[1].y);
+ }
+ if (treat2AsLine) {
+ xy_at_t(quad2, minT2, line2[0].x, line2[0].y);
+ xy_at_t(quad2, maxT2, line2[1].x, line2[1].y);
+ }
+ int pts;
+ double smallT1, largeT1, smallT2, largeT2;
+ if (treat1AsLine & treat2AsLine) {
+ double t1[2], t2[2];
+ pts = ::intersect(line1, line2, t1, t2);
+ if (pts == 2) {
+ smallT1 = interp(minT1, maxT1, t1[0]);
+ largeT1 = interp(minT2, maxT2, t2[0]);
+ smallT2 = interp(minT1, maxT1, t1[1]);
+ largeT2 = interp(minT2, maxT2, t2[1]);
+ intersections.addCoincident(smallT1, smallT2, largeT1, largeT2);
+ } else {
+ smallT1 = interp(minT1, maxT1, t1[0]);
+ largeT1 = interp(minT2, maxT2, t2[0]);
+ intersections.add(smallT1, largeT1);
+ }
+ } else {
+ Intersections lq;
+ pts = ::intersect(treat1AsLine ? quad2 : quad1,
+ treat1AsLine ? line1 : line2, lq);
+ if (pts == 2) { // if the line and edge are coincident treat differently
+ _Point midQuad, midLine;
+ double midQuadT = (lq.fT[0][0] + lq.fT[0][1]) / 2;
+ xy_at_t(treat1AsLine ? quad2 : quad1, midQuadT, midQuad.x, midQuad.y);
+ double lineT = t_at(treat1AsLine ? line1 : line2, midQuad);
+ xy_at_t(treat1AsLine ? line1 : line2, lineT, midLine.x, midLine.y);
+ if (AlmostEqualUlps(midQuad.x, midLine.x)
+ && AlmostEqualUlps(midQuad.y, midLine.y)) {
+ smallT1 = lq.fT[0][0];
+ largeT1 = lq.fT[1][0];
+ smallT2 = lq.fT[0][1];
+ largeT2 = lq.fT[1][1];
+ if (treat2AsLine) {
+ smallT1 = interp(minT1, maxT1, smallT1);
+ smallT2 = interp(minT1, maxT1, smallT2);
+ } else {
+ largeT1 = interp(minT2, maxT2, largeT1);
+ largeT2 = interp(minT2, maxT2, largeT2);
+ }
+ intersections.addCoincident(smallT1, smallT2, largeT1, largeT2);
+ goto setCoinMinMax;
+ }
+ }
+ for (int index = 0; index < pts; ++index) {
+ smallT1 = lq.fT[0][index];
+ largeT1 = lq.fT[1][index];
+ if (treat2AsLine) {
+ smallT1 = interp(minT1, maxT1, smallT1);
+ } else {
+ largeT1 = interp(minT2, maxT2, largeT1);
+ }
+ intersections.add(smallT1, largeT1);
+ }
+ }
+ if (pts > 0) {
+setCoinMinMax:
+ coinMinT1 = minT1;
+ coinMaxT1 = maxT1;
+ coinMinT2 = minT2;
+ coinMaxT2 = maxT2;
+ }
+ return pts > 0;
+}
+
+bool chop(double minT1, double maxT1, double minT2, double maxT2, int split) {
+ ++depth;
+ intersections.swap();
+ if (split) {
+ ++splits;
+ if (split & 2) {
+ double middle1 = (maxT1 + minT1) / 2;
+ intersect(minT1, middle1, minT2, maxT2);
+ intersect(middle1, maxT1, minT2, maxT2);
+ } else {
+ double middle2 = (maxT2 + minT2) / 2;
+ intersect(minT1, maxT1, minT2, middle2);
+ intersect(minT1, maxT1, middle2, maxT2);
+ }
+ --splits;
+ intersections.swap();
+ --depth;
+ return intersections.intersected();
+ }
+ bool result = intersect(minT1, maxT1, minT2, maxT2);
+ intersections.swap();
+ --depth;
+ return result;
+}
+
+private:
+
+const Quadratic& quad1;
+const Quadratic& quad2;
+Intersections& intersections;
+int depth;
+int splits;
+double quad1Divisions; // line segments to approximate original within error
+double quad2Divisions;
+double coinMinT1; // range of Ts where approximate line intersected curve
+double coinMaxT1;
+double coinMinT2;
+double coinMaxT2;
+};
+
+#include "LineParameters.h"
+
+static void hackToFixPartialCoincidence(const Quadratic& q1, const Quadratic& q2, Intersections& i) {
+ // look to see if non-coincident data basically has unsortable tangents
+
+ // look to see if a point between non-coincident data is on the curve
+ int cIndex;
+ for (int uIndex = 0; uIndex < i.fUsed; ) {
+ double bestDist1 = 1;
+ double bestDist2 = 1;
+ int closest1 = -1;
+ int closest2 = -1;
+ for (cIndex = 0; cIndex < i.fCoincidentUsed; ++cIndex) {
+ double dist = fabs(i.fT[0][uIndex] - i.fCoincidentT[0][cIndex]);
+ if (bestDist1 > dist) {
+ bestDist1 = dist;
+ closest1 = cIndex;
+ }
+ dist = fabs(i.fT[1][uIndex] - i.fCoincidentT[1][cIndex]);
+ if (bestDist2 > dist) {
+ bestDist2 = dist;
+ closest2 = cIndex;
+ }
+ }
+ _Line ends;
+ _Point mid;
+ double t1 = i.fT[0][uIndex];
+ xy_at_t(q1, t1, ends[0].x, ends[0].y);
+ xy_at_t(q1, i.fCoincidentT[0][closest1], ends[1].x, ends[1].y);
+ double midT = (t1 + i.fCoincidentT[0][closest1]) / 2;
+ xy_at_t(q1, midT, mid.x, mid.y);
+ LineParameters params;
+ params.lineEndPoints(ends);
+ double midDist = params.pointDistance(mid);
+ // Note that we prefer to always measure t error, which does not scale,
+ // instead of point error, which is scale dependent. FIXME
+ if (!approximately_zero(midDist)) {
+ ++uIndex;
+ continue;
+ }
+ double t2 = i.fT[1][uIndex];
+ xy_at_t(q2, t2, ends[0].x, ends[0].y);
+ xy_at_t(q2, i.fCoincidentT[1][closest2], ends[1].x, ends[1].y);
+ midT = (t2 + i.fCoincidentT[1][closest2]) / 2;
+ xy_at_t(q2, midT, mid.x, mid.y);
+ params.lineEndPoints(ends);
+ midDist = params.pointDistance(mid);
+ if (!approximately_zero(midDist)) {
+ ++uIndex;
+ continue;
+ }
+ // if both midpoints are close to the line, lengthen coincident span
+ int cEnd = closest1 ^ 1; // assume coincidence always travels in pairs
+ if (!between(i.fCoincidentT[0][cEnd], t1, i.fCoincidentT[0][closest1])) {
+ i.fCoincidentT[0][closest1] = t1;
+ }
+ cEnd = closest2 ^ 1;
+ if (!between(i.fCoincidentT[0][cEnd], t2, i.fCoincidentT[0][closest2])) {
+ i.fCoincidentT[0][closest2] = t2;
+ }
+ int remaining = --i.fUsed - uIndex;
+ if (remaining > 0) {
+ memmove(&i.fT[0][uIndex], &i.fT[0][uIndex + 1], sizeof(i.fT[0][0]) * remaining);
+ memmove(&i.fT[1][uIndex], &i.fT[1][uIndex + 1], sizeof(i.fT[1][0]) * remaining);
+ }
+ }
+ // if coincident data is subjectively a tiny span, replace it with a single point
+ for (cIndex = 0; cIndex < i.fCoincidentUsed; ) {
+ double start1 = i.fCoincidentT[0][cIndex];
+ double end1 = i.fCoincidentT[0][cIndex + 1];
+ _Line ends1;
+ xy_at_t(q1, start1, ends1[0].x, ends1[0].y);
+ xy_at_t(q1, end1, ends1[1].x, ends1[1].y);
+ if (!AlmostEqualUlps(ends1[0].x, ends1[1].x) || AlmostEqualUlps(ends1[0].y, ends1[1].y)) {
+ cIndex += 2;
+ continue;
+ }
+ double start2 = i.fCoincidentT[1][cIndex];
+ double end2 = i.fCoincidentT[1][cIndex + 1];
+ _Line ends2;
+ xy_at_t(q2, start2, ends2[0].x, ends2[0].y);
+ xy_at_t(q2, end2, ends2[1].x, ends2[1].y);
+ // again, approximately should be used with T values, not points FIXME
+ if (!AlmostEqualUlps(ends2[0].x, ends2[1].x) || AlmostEqualUlps(ends2[0].y, ends2[1].y)) {
+ cIndex += 2;
+ continue;
+ }
+ if (approximately_less_than_zero(start1) || approximately_less_than_zero(end1)) {
+ start1 = 0;
+ } else if (approximately_greater_than_one(start1) || approximately_greater_than_one(end1)) {
+ start1 = 1;
+ } else {
+ start1 = (start1 + end1) / 2;
+ }
+ if (approximately_less_than_zero(start2) || approximately_less_than_zero(end2)) {
+ start2 = 0;
+ } else if (approximately_greater_than_one(start2) || approximately_greater_than_one(end2)) {
+ start2 = 1;
+ } else {
+ start2 = (start2 + end2) / 2;
+ }
+ i.insert(start1, start2);
+ i.fCoincidentUsed -= 2;
+ int remaining = i.fCoincidentUsed - cIndex;
+ if (remaining > 0) {
+ memmove(&i.fCoincidentT[0][cIndex], &i.fCoincidentT[0][cIndex + 2], sizeof(i.fCoincidentT[0][0]) * remaining);
+ memmove(&i.fCoincidentT[1][cIndex], &i.fCoincidentT[1][cIndex + 2], sizeof(i.fCoincidentT[1][0]) * remaining);
+ }
+ }
+}
+
+bool intersect(const Quadratic& q1, const Quadratic& q2, Intersections& i) {
+ if (implicit_matches(q1, q2)) {
+ // FIXME: compute T values
+ // compute the intersections of the ends to find the coincident span
+ bool useVertical = fabs(q1[0].x - q1[2].x) < fabs(q1[0].y - q1[2].y);
+ double t;
+ if ((t = axialIntersect(q1, q2[0], useVertical)) >= 0) {
+ i.addCoincident(t, 0);
+ }
+ if ((t = axialIntersect(q1, q2[2], useVertical)) >= 0) {
+ i.addCoincident(t, 1);
+ }
+ useVertical = fabs(q2[0].x - q2[2].x) < fabs(q2[0].y - q2[2].y);
+ if ((t = axialIntersect(q2, q1[0], useVertical)) >= 0) {
+ i.addCoincident(0, t);
+ }
+ if ((t = axialIntersect(q2, q1[2], useVertical)) >= 0) {
+ i.addCoincident(1, t);
+ }
+ SkASSERT(i.fCoincidentUsed <= 2);
+ return i.fCoincidentUsed > 0;
+ }
+ QuadraticIntersections q(q1, q2, i);
+ bool result = q.intersect();
+ // FIXME: partial coincidence detection is currently poor. For now, try
+ // to fix up the data after the fact. In the future, revisit the error
+ // term to try to avoid this kind of result in the first place.
+ if (i.fUsed && i.fCoincidentUsed) {
+ hackToFixPartialCoincidence(q1, q2, i);
+ }
+ return result;
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticIntersection_Test.cpp b/chromium/third_party/skia/experimental/Intersection/QuadraticIntersection_Test.cpp
new file mode 100644
index 00000000000..f3503c70d7b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticIntersection_Test.cpp
@@ -0,0 +1,436 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "CurveUtilities.h"
+#include "Intersection_Tests.h"
+#include "Intersections.h"
+#include "LineIntersection.h"
+#include "QuadraticIntersection_TestData.h"
+#include "QuadraticUtilities.h"
+#include "TestUtilities.h"
+
+const int firstQuadIntersectionTest = 9;
+
+static void standardTestCases() {
+ for (size_t index = firstQuadIntersectionTest; index < quadraticTests_count; ++index) {
+ const Quadratic& quad1 = quadraticTests[index][0];
+ const Quadratic& quad2 = quadraticTests[index][1];
+ Quadratic reduce1, reduce2;
+ int order1 = reduceOrder(quad1, reduce1, kReduceOrder_TreatAsFill);
+ int order2 = reduceOrder(quad2, reduce2, kReduceOrder_TreatAsFill);
+ if (order1 < 3) {
+ printf("[%d] quad1 order=%d\n", (int) index, order1);
+ }
+ if (order2 < 3) {
+ printf("[%d] quad2 order=%d\n", (int) index, order2);
+ }
+ if (order1 == 3 && order2 == 3) {
+ Intersections intersections;
+ intersect2(reduce1, reduce2, intersections);
+ if (intersections.intersected()) {
+ for (int pt = 0; pt < intersections.used(); ++pt) {
+ double tt1 = intersections.fT[0][pt];
+ double tx1, ty1;
+ xy_at_t(quad1, tt1, tx1, ty1);
+ double tt2 = intersections.fT[1][pt];
+ double tx2, ty2;
+ xy_at_t(quad2, tt2, tx2, ty2);
+ if (!approximately_equal(tx1, tx2)) {
+ printf("%s [%d,%d] x!= t1=%g (%g,%g) t2=%g (%g,%g)\n",
+ __FUNCTION__, (int)index, pt, tt1, tx1, ty1, tt2, tx2, ty2);
+ }
+ if (!approximately_equal(ty1, ty2)) {
+ printf("%s [%d,%d] y!= t1=%g (%g,%g) t2=%g (%g,%g)\n",
+ __FUNCTION__, (int)index, pt, tt1, tx1, ty1, tt2, tx2, ty2);
+ }
+ }
+ }
+ }
+ }
+}
+
+static const Quadratic testSet[] = {
+{{3.0774019473063863, 3.35198509346713}, {3.0757503498668397, 3.327320623945933}, {3.0744102085015879, 3.3025879417907196}},
+{{3.053913680774329, 3.3310471586283938}, {3.0758730889691694, 3.3273466070370152}, {3.0975671980059394, 3.3235031316554351}},
+
+ {{3.39068129,4.44939202}, {3.03659239,3.81843234}, {3.06844529,3.02100922}},
+ {{2.10714698,3.44196686}, {3.12180288,3.38575704}, {3.75968569,3.1281838}},
+
+ {{2.74792918,4.77711896}, {2.82236867,4.23882547}, {2.82848144,3.63729341}},
+ {{2.62772567,3.64823958}, {3.46652495,3.64258364}, {4.1425079,3.48623815}},
+
+ {{1.34375,2.03125}, {2.2734375,2.6640625}, {3.25,3.25}},
+ {{3.96875,4.65625}, {3.3359375,3.7265625}, {2.75,2.75}},
+
+ {{0,1}, {0.324417544,2.27953848}, {0.664376547,2.58940267}},
+ {{1,2}, {0.62109375,2.70703125}, {0.640625,2.546875}},
+
+ {{1,2}, {0.984375,2.3359375}, {1.0625,2.15625}},
+ {{0,1}, {0.983539095,2.30041152}, {1.47325103,2.61316872}},
+
+ {{4.09011926,2.20971038}, {4.74608133,1.9335932}, {5.02469918,2.00694987}},
+ {{2.79472921,1.73568666}, {3.36246373,1.21251209}, {5,2}},
+
+ {{1.80814127,2.41537795}, {2.23475077,2.05922313}, {3.16529668,1.98358763}},
+ {{2.16505631,2.55782454}, {2.40541285,2.02193091}, {2.99836023,1.68247638}},
+
+{{3, 1.875}, {3.375, 1.54296875}, {3.375, 1.421875}},
+{{3.375, 1.421875}, {3.3749999999999996, 1.3007812499999998}, {3, 2}},
+
+ {{3.34,8.98}, {2.83363281,9.4265625}, {2.83796875,9.363125}},
+ {{2.83796875,9.363125}, {2.84230469,9.2996875}, {3.17875,9.1725}},
+
+{{2.7279999999999998, 3.024}, {2.5600000000000005, 2.5600000000000005}, {2.1520000000000001, 1.8560000000000001}},
+{{0.66666666666666652, 1.1481481481481481}, {1.3333333333333326, 1.3333333333333335}, {2.6666666666666665, 2.1851851851851851}},
+
+ {{2.728,3.024}, {2.56,2.56}, {2.152,1.856}},
+ {{0.666666667,1.14814815}, {1.33333333,1.33333333}, {2.66666667,2.18518519}},
+
+ {{0.875,1.5}, {1.03125,1.11022302e-16}, {1,0}},
+ {{0.875,0.859375}, {1.6875,0.73046875}, {2.5,0.625}},
+
+ {{1.64451042,0.0942001592}, {1.53635465,0.00152863961}, {1,0}},
+ {{1.27672209,0.15}, {1.32143477,9.25185854e-17}, {1,0}},
+
+{{0, 0}, {0.51851851851851849, 1.0185185185185186}, {1.2592592592592591, 1.9259259259259258}},
+{{1.2592592592592593, 1.9259259259259265}, {0.51851851851851893, 1.0185185185185195}, {0, 0}},
+
+ {{1.93281168,2.58856757}, {2.38543691,2.7096125}, {2.51967352,2.34531784}},
+ {{2.51967352,2.34531784}, {2.65263731,2.00639194}, {3.1212119,1.98608967}},
+ {{2.09544533,2.51981963}, {2.33331524,2.25252128}, {2.92003302,2.39442311}},
+
+
+{{0.924337655,1.94072717}, {1.25185043,1.52836494}, {1.71793901,1.06149951}},
+{{0.940798831,1.67439357}, {1.25988251,1.39778567}, {1.71791672,1.06650313}},
+
+ {{0.924337655,1.94072717}, {1.39158994,1.32418496}, {2.14967426,0.687365435}},
+ {{0.940798831,1.67439357}, {1.48941875,1.16280321}, {2.47884711,0.60465921}},
+
+ {{1.7465749139282332,1.9930452039527999}, {1.8320006564080331,1.859481345189089}, {1.8731035127758437,1.6344055934266613}},
+ {{1.8731035127758437,1.6344055934266613}, {1.89928170345231,1.5006405518943067}, {1.9223833226085514,1.3495796165215643}},
+ {{1.74657491,1.9930452}, {1.87407679,1.76762853}, {1.92238332,1.34957962}},
+ {{0.60797907,1.68776977}, {1.0447864,1.50810914}, {1.87464474,1.63655092}},
+ {{1.87464474,1.63655092}, {2.70450308,1.76499271}, {4,3}},
+
+{{1.2071879545809394,0.82163474041730045}, {1.1534203513372994,0.52790870069930229}, {1.0880000000000001,0.29599999999999982}}, //t=0.63155333662549329,0.80000000000000004
+{{0.33333333333333326,0.81481481481481488}, {0.63395173631977997,0.68744136726313931}, {1.205684411948591,0.81344322326274499}},
+{{0.33333333333333326,0.81481481481481488}, {0.63396444791444551,0.68743368362444768}, {1.205732763658403,0.81345617746834109}},//t=0.33333333333333331,0.63396444791444551
+{{1.205684411948591,0.81344322326274499}, {1.2057085875611198,0.81344969999329253}, {1.205732763658403,0.81345617746834109}},
+
+ {{1.20718795,0.82163474}, {1.15342035,0.527908701}, {1.088,0.296}},
+ {{1.20568441,0.813443223}, {1.20570859,0.8134497}, {1.20573276,0.813456177}},
+
+ {{41.5072916,87.1234036}, {28.2747836,80.9545395}, {23.5780771,69.3344126}},
+ {{72.9633878,95.6593007}, {42.7738746,88.4730382}, {31.1932785,80.2458029}},
+
+ {{31.1663962,54.7302484}, {31.1662882,54.7301074}, {31.1663969,54.7302485}},
+ {{26.0404936,45.4260361}, {27.7887523,33.1863051}, {40.8833242,26.0301855}},
+
+ {{29.9404074,49.1672596}, {44.3131071,45.3915253}, {58.1067559,59.5061814}},
+ {{72.6510251,64.2972928}, {53.6989659,60.1862397}, {35.2053722,44.8391126}},
+
+{{52.14807018377202, 65.012420045148644}, {44.778669050208237, 66.315562705604378}, {51.619118408823567, 63.787827046262684}},
+{{30.004993234763383, 93.921296668202288}, {53.384822003076991, 60.732180341802753}, {58.652998934338584, 43.111073088306185}},
+
+{{80.897794748143198, 49.236332042718459}, {81.082078218891212, 64.066749904488631}, {69.972305057149981, 72.968595519850993}},
+{{72.503745601281395, 32.952320736577882}, {88.030880716061645, 38.137194847810164}, {73.193774825517906, 67.773492479591397}},
+
+{{67.426548091427676, 37.993772624988935}, {51.129513170665035, 57.542281234563646}, {44.594748190899189, 65.644267382683879}},
+{{61.336508189019057, 82.693132843213675}, {54.825078921449354, 71.663932799212432}, {47.727444217558926, 61.4049645128392}},
+
+{{67.4265481,37.9937726}, {51.1295132,57.5422812}, {44.5947482,65.6442674}},
+{{61.3365082,82.6931328}, {54.8250789,71.6639328}, {47.7274442,61.4049645}},
+
+{{53.774852327053594, 53.318060789841951}, {45.787877803416805, 51.393492026284981}, {46.703936967162392, 53.06860709822206}},
+{{46.703936967162392, 53.06860709822206}, {47.619996130907957, 54.74372217015916}, {53.020051653535361, 48.633140968832024}},
+
+{{50.934805397717923, 51.52391952648901}, {56.803308902971423, 44.246234610627596}, {69.776888596721406, 40.166645096692555}},
+{{50.230212796400401, 38.386469101526998}, {49.855620812184917, 38.818990392153609}, {56.356567496227363, 47.229909093319407}},
+
+{{36.148792695174222, 70.336952793070424}, {36.141613037691357, 70.711654739870085}, {36.154708826402597, 71.088492662905836}},
+{{35.216235592661825, 70.580199617313212}, {36.244476835123969, 71.010897787304074}, {37.230244263238326, 71.423156953613102}},
+
+// this pair is nearly coincident, and causes the quartic code to produce bad
+// data. Mathematica doesn't think they touch. Graphically, I can't tell.
+// it may not be so bad to pretend that they don't touch, if I can detect that
+{{369.848602,145.680267}, {382.360413,121.298294}, {406.207703,121.298294}},
+{{369.850525,145.675964}, {382.362915,121.29287}, {406.211273,121.29287}},
+
+{{33.567436351153468, 62.336347586395924}, {35.200980274619084, 65.038561460144479}, {36.479571811084995, 67.632178905412445}},
+{{41.349524945572696, 67.886658677862641}, {39.125562529359087, 67.429772735149214}, {35.600314083992416, 66.705372160552685}},
+
+{{67.25299631583178, 21.109080184767524}, {43.617595267398613, 33.658034168577529}, {33.38371819435676, 44.214192553988745}},
+{{40.476838859398541, 39.543209911285999}, {36.701186108431131, 34.8817994016458}, {30.102144288878023, 26.739063172945315}},
+
+{{25.367434474345036, 50.4712103169743}, {17.865013304933097, 37.356741010559439}, {16.818988838905465, 37.682915484123129}},
+{{16.818988838905465, 37.682915484123129}, {15.772964372877833, 38.009089957686811}, {20.624104547604965, 41.825131596683121}},
+
+{{26.440225044088567, 79.695009812848298}, {26.085525979582247, 83.717928354134784}, {27.075079976297072, 84.820633667838905}},
+{{27.075079976297072, 84.820633667838905}, {28.276546859574015, 85.988574184029034}, {25.649263209500006, 87.166762066617025}},
+
+{{34.879150914024962, 83.862726601601125}, {35.095810134304429, 83.693473210169543}, {35.359284111931586, 83.488069234177502}},
+{{54.503204203015471, 76.094098492518242}, {51.366889541918894, 71.609856061299155}, {46.53086955445437, 69.949863036494207}},
+
+{{0, 0}, {1, 0}, {0, 3}},
+{{1, 0}, {0, 1}, {1, 1}},
+{{369.961151,137.980698}, {383.970093,121.298294}, {406.213287,121.298294}},
+{{353.2948,194.351074}, {353.2948,173.767563}, {364.167572,160.819855}},
+{{360.416077,166.795715}, {370.126831,147.872162}, {388.635406,147.872162}},
+{{406.236359,121.254936}, {409.445679,121.254936}, {412.975952,121.789818}},
+{{406.235992,121.254936}, {425.705902,121.254936}, {439.71994,137.087616}},
+
+{{369.8543701171875, 145.66734313964844}, {382.36788940429688, 121.28203582763672}, {406.21844482421875, 121.28203582763672}},
+{{369.96469116210938, 137.96672058105469}, {383.97555541992188, 121.28203582763672}, {406.2218017578125, 121.28203582763672}},
+
+ {{369.962311, 137.976044}, {383.971893, 121.29287}, {406.216125, 121.29287}},
+
+ {{400.121704, 149.468719}, {391.949493, 161.037186}, {391.949493, 181.202423}},
+ {{391.946747, 181.839218}, {391.946747, 155.62442}, {406.115479, 138.855438}},
+ {{360.048828125, 229.2578125}, {360.048828125, 224.4140625}, {362.607421875, 221.3671875}},
+ {{362.607421875, 221.3671875}, {365.166015625, 218.3203125}, {369.228515625, 218.3203125}},
+ {{8, 8}, {10, 10}, {8, -10}},
+ {{8, 8}, {12, 12}, {14, 4}},
+ {{8, 8}, {9, 9}, {10, 8}}
+};
+
+const size_t testSetCount = sizeof(testSet) / sizeof(testSet[0]);
+
+static void oneOffTest1(size_t outer, size_t inner) {
+ const Quadratic& quad1 = testSet[outer];
+ const Quadratic& quad2 = testSet[inner];
+ Intersections intersections2;
+ intersect2(quad1, quad2, intersections2);
+ if (intersections2.fUnsortable) {
+ SkASSERT(0);
+ return;
+ }
+ for (int pt = 0; pt < intersections2.used(); ++pt) {
+ double tt1 = intersections2.fT[0][pt];
+ double tx1, ty1;
+ xy_at_t(quad1, tt1, tx1, ty1);
+ int pt2 = intersections2.fFlip ? intersections2.used() - pt - 1 : pt;
+ double tt2 = intersections2.fT[1][pt2];
+ double tx2, ty2;
+ xy_at_t(quad2, tt2, tx2, ty2);
+ if (!AlmostEqualUlps(tx1, tx2)) {
+ SkDebugf("%s [%d,%d] x!= t1=%g (%g,%g) t2=%g (%g,%g)\n",
+ __FUNCTION__, (int)outer, (int)inner, tt1, tx1, ty1, tt2, tx2, ty2);
+ SkASSERT(0);
+ }
+ if (!AlmostEqualUlps(ty1, ty2)) {
+ SkDebugf("%s [%d,%d] y!= t1=%g (%g,%g) t2=%g (%g,%g)\n",
+ __FUNCTION__, (int)outer, (int)inner, tt1, tx1, ty1, tt2, tx2, ty2);
+ SkASSERT(0);
+ }
+#if ONE_OFF_DEBUG
+ SkDebugf("%s [%d][%d] t1=%1.9g (%1.9g, %1.9g) t2=%1.9g\n", __FUNCTION__,
+ outer, inner, tt1, tx1, ty1, tt2);
+#endif
+ }
+}
+
+void QuadraticIntersection_OneOffTest() {
+ oneOffTest1(0, 1);
+ oneOffTest1(1, 0);
+}
+
+static void oneOffTests() {
+ for (size_t outer = 0; outer < testSetCount - 1; ++outer) {
+ for (size_t inner = outer + 1; inner < testSetCount; ++inner) {
+ oneOffTest1(outer, inner);
+ }
+ }
+}
+
+static const Quadratic coincidentTestSet[] = {
+ {{369.850525, 145.675964}, {382.362915, 121.29287}, {406.211273, 121.29287}},
+ {{369.850525, 145.675964}, {382.362915, 121.29287}, {406.211273, 121.29287}},
+ {{8, 8}, {10, 10}, {8, -10}},
+ {{8, -10}, {10, 10}, {8, 8}},
+};
+
+const size_t coincidentTestSetCount = sizeof(coincidentTestSet) / sizeof(coincidentTestSet[0]);
+
+static void coincidentTest() {
+ for (size_t testIndex = 0; testIndex < coincidentTestSetCount - 1; testIndex += 2) {
+ const Quadratic& quad1 = coincidentTestSet[testIndex];
+ const Quadratic& quad2 = coincidentTestSet[testIndex + 1];
+ Intersections intersections2;
+ intersect2(quad1, quad2, intersections2);
+ SkASSERT(intersections2.coincidentUsed() == 2);
+ SkASSERT(intersections2.used() == 2);
+ for (int pt = 0; pt < intersections2.coincidentUsed(); ++pt) {
+ SkDEBUGCODE(double tt1 = intersections2.fT[0][pt]);
+ SkDEBUGCODE(double tt2 = intersections2.fT[1][pt]);
+ SkASSERT(approximately_equal(1, tt1) || approximately_zero(tt1));
+ SkASSERT(approximately_equal(1, tt2) || approximately_zero(tt2));
+ }
+ }
+}
+
+void QuadraticIntersection_Test() {
+ oneOffTests();
+ coincidentTest();
+ standardTestCases();
+}
+
+static int floatSign(double x) {
+ return x < 0 ? -1 : x > 0 ? 1 : 0;
+}
+
+static const Quadratic pointFinderTestSet[] = {
+ //>=0.633974464 0.633974846 <=
+{{1.2071879545809394,0.82163474041730045}, {1.1534203513372994,0.52790870069930229}, {1.0880000000000001,0.29599999999999982}}, //t=0.63155333662549329,0.80000000000000004
+{{1.2071879545809394,0.82163474041730045}, {1.2065040319428038,0.81766753259119995}, {1.2058123269101506,0.81370135061854221}}, //t=0.63155333662549329,0.6339049773632347
+{{1.2058123269101506,0.81370135061854221}, {1.152376363978022,0.5244097415381026}, {1.0880000000000001,0.29599999999999982}}, //t=0.6339049773632347, 0.80000000000000004
+ //>=0.633974083 0.633975227 <=
+{{0.33333333333333326,0.81481481481481488}, {0.63395173631977997,0.68744136726313931}, {1.205684411948591,0.81344322326274499}},//t=0.33333333333333331,0.63395173631977986
+{{0.33333333333333326,0.81481481481481488}, {0.63396444791444551,0.68743368362444768}, {1.205732763658403,0.81345617746834109}},//t=0.33333333333333331,0.63396444791444551
+{{1.205684411948591,0.81344322326274499}, {1.2057085875611198,0.81344969999329253}, {1.205732763658403,0.81345617746834109}}, //t=0.63395173631977986,0.63396444791444551
+{{1.205732763658403,0.81345617746834109}, {1.267928895828891,0.83008534558465619}, {1.3333333333333333,0.85185185185185175}}, //t=0.63396444791444551,0.66666666666666663
+};
+
+static void pointFinder(const Quadratic& q1, const Quadratic& q2) {
+ for (int index = 0; index < 3; ++index) {
+ double t = nearestT(q1, q2[index]);
+ _Point onQuad;
+ xy_at_t(q1, t, onQuad.x, onQuad.y);
+ SkDebugf("%s t=%1.9g (%1.9g,%1.9g) dist=%1.9g\n", __FUNCTION__, t, onQuad.x, onQuad.y,
+ onQuad.distance(q2[index]));
+ double left[3];
+ left[0] = is_left((const _Line&) q1[0], q2[index]);
+ left[1] = is_left((const _Line&) q1[1], q2[index]);
+ _Line diag = {q1[0], q1[2]};
+ left[2] = is_left(diag, q2[index]);
+ SkDebugf("%s left=(%d, %d, %d) inHull=%s\n", __FUNCTION__, floatSign(left[0]),
+ floatSign(left[1]), floatSign(left[2]),
+ point_in_hull(q1, q2[index]) ? "true" : "false");
+ }
+ SkDebugf("\n");
+}
+
+static void hullIntersect(const Quadratic& q1, const Quadratic& q2) {
+ SkDebugf("%s", __FUNCTION__);
+ Intersections ts;
+ for (int i1 = 0; i1 < 3; ++i1) {
+ _Line l1 = {q1[i1], q1[(i1 + 1) % 3]};
+ for (int i2 = 0; i2 < 3; ++i2) {
+ _Line l2 = {q2[i2], q2[(i2 + 1) % 3]};
+ if (intersect(l1, l2, ts)) {
+ SkDebugf(" [%d,%d]", i1, i2);
+ }
+ }
+ }
+ SkDebugf("\n");
+}
+
+void QuadraticIntersection_PointFinder() {
+ pointFinder(pointFinderTestSet[0], pointFinderTestSet[4]);
+ pointFinder(pointFinderTestSet[4], pointFinderTestSet[0]);
+ pointFinder(pointFinderTestSet[0], pointFinderTestSet[6]);
+ pointFinder(pointFinderTestSet[6], pointFinderTestSet[0]);
+ hullIntersect(pointFinderTestSet[0], pointFinderTestSet[4]);
+ hullIntersect(pointFinderTestSet[0], pointFinderTestSet[6]);
+}
+
+static void intersectionFinder(int test1, int test2) {
+ const Quadratic& quad1 = testSet[test1];
+ const Quadratic& quad2 = testSet[test2];
+
+ double t1Seed = 0.5;
+ double t2Seed = 0.8;
+ double t1Step = 0.1;
+ double t2Step = 0.1;
+ _Point t1[3], t2[3];
+ bool toggle = true;
+ do {
+ xy_at_t(quad1, t1Seed - t1Step, t1[0].x, t1[0].y);
+ xy_at_t(quad1, t1Seed, t1[1].x, t1[1].y);
+ xy_at_t(quad1, t1Seed + t1Step, t1[2].x, t1[2].y);
+ xy_at_t(quad2, t2Seed - t2Step, t2[0].x, t2[0].y);
+ xy_at_t(quad2, t2Seed, t2[1].x, t2[1].y);
+ xy_at_t(quad2, t2Seed + t2Step, t2[2].x, t2[2].y);
+ double dist[3][3];
+ dist[1][1] = t1[1].distance(t2[1]);
+ int best_i = 1, best_j = 1;
+ for (int i = 0; i < 3; ++i) {
+ for (int j = 0; j < 3; ++j) {
+ if (i == 1 && j == 1) {
+ continue;
+ }
+ dist[i][j] = t1[i].distance(t2[j]);
+ if (dist[best_i][best_j] > dist[i][j]) {
+ best_i = i;
+ best_j = j;
+ }
+ }
+ }
+ if (best_i == 0) {
+ t1Seed -= t1Step;
+ } else if (best_i == 2) {
+ t1Seed += t1Step;
+ }
+ if (best_j == 0) {
+ t2Seed -= t2Step;
+ } else if (best_j == 2) {
+ t2Seed += t2Step;
+ }
+ if (best_i == 1 && best_j == 1) {
+ if ((toggle ^= true)) {
+ t1Step /= 2;
+ } else {
+ t2Step /= 2;
+ }
+ }
+ } while (!t1[1].approximatelyEqual(t2[1]));
+ t1Step = t2Step = 0.1;
+ double t10 = t1Seed - t1Step * 2;
+ double t12 = t1Seed + t1Step * 2;
+ double t20 = t2Seed - t2Step * 2;
+ double t22 = t2Seed + t2Step * 2;
+ _Point test;
+ while (!approximately_zero(t1Step)) {
+ xy_at_t(quad1, t10, test.x, test.y);
+ t10 += t1[1].approximatelyEqual(test) ? -t1Step : t1Step;
+ t1Step /= 2;
+ }
+ t1Step = 0.1;
+ while (!approximately_zero(t1Step)) {
+ xy_at_t(quad1, t12, test.x, test.y);
+ t12 -= t1[1].approximatelyEqual(test) ? -t1Step : t1Step;
+ t1Step /= 2;
+ }
+ while (!approximately_zero(t2Step)) {
+ xy_at_t(quad2, t20, test.x, test.y);
+ t20 += t2[1].approximatelyEqual(test) ? -t2Step : t2Step;
+ t2Step /= 2;
+ }
+ t2Step = 0.1;
+ while (!approximately_zero(t2Step)) {
+ xy_at_t(quad2, t22, test.x, test.y);
+ t22 -= t2[1].approximatelyEqual(test) ? -t2Step : t2Step;
+ t2Step /= 2;
+ }
+#if ONE_OFF_DEBUG
+ SkDebugf("%s t1=(%1.9g<%1.9g<%1.9g) t2=(%1.9g<%1.9g<%1.9g)\n", __FUNCTION__,
+ t10, t1Seed, t12, t20, t2Seed, t22);
+ _Point p10 = xy_at_t(quad1, t10);
+ _Point p1Seed = xy_at_t(quad1, t1Seed);
+ _Point p12 = xy_at_t(quad1, t12);
+ SkDebugf("%s p1=(%1.9g,%1.9g)<(%1.9g,%1.9g)<(%1.9g,%1.9g)\n", __FUNCTION__,
+ p10.x, p10.y, p1Seed.x, p1Seed.y, p12.x, p12.y);
+ _Point p20 = xy_at_t(quad2, t20);
+ _Point p2Seed = xy_at_t(quad2, t2Seed);
+ _Point p22 = xy_at_t(quad2, t22);
+ SkDebugf("%s p2=(%1.9g,%1.9g)<(%1.9g,%1.9g)<(%1.9g,%1.9g)\n", __FUNCTION__,
+ p20.x, p20.y, p2Seed.x, p2Seed.y, p22.x, p22.y);
+#endif
+}
+
+void QuadraticIntersection_IntersectionFinder() {
+ intersectionFinder(0, 1);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticIntersection_TestData.cpp b/chromium/third_party/skia/experimental/Intersection/QuadraticIntersection_TestData.cpp
new file mode 100644
index 00000000000..9ec585a7304
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticIntersection_TestData.cpp
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "QuadraticIntersection_TestData.h"
+
+const Quadratic quadraticLines[] = {
+ {{0, 0}, {0, 0}, {1, 0}},
+ {{0, 0}, {1, 0}, {0, 0}},
+ {{1, 0}, {0, 0}, {0, 0}},
+ {{1, 0}, {2, 0}, {3, 0}},
+ {{0, 0}, {0, 0}, {0, 1}},
+ {{0, 0}, {0, 1}, {0, 0}},
+ {{0, 1}, {0, 0}, {0, 0}},
+ {{0, 1}, {0, 2}, {0, 3}},
+ {{0, 0}, {0, 0}, {1, 1}},
+ {{0, 0}, {1, 1}, {0, 0}},
+ {{1, 1}, {0, 0}, {0, 0}},
+ {{1, 1}, {2, 2}, {3, 3}},
+ {{1, 1}, {3, 3}, {3, 3}},
+ {{1, 1}, {1, 1}, {2, 2}},
+ {{1, 1}, {2, 2}, {1, 1}},
+ {{1, 1}, {1, 1}, {3, 3}},
+ {{1, 1}, {2, 2}, {4, 4}}, // no coincident
+ {{1, 1}, {3, 3}, {4, 4}},
+ {{1, 1}, {3, 3}, {2, 2}},
+ {{1, 1}, {4, 4}, {2, 2}},
+ {{1, 1}, {4, 4}, {3, 3}},
+ {{2, 2}, {1, 1}, {3, 3}},
+ {{2, 2}, {1, 1}, {4, 4}},
+ {{2, 2}, {3, 3}, {1, 1}},
+ {{2, 2}, {3, 3}, {4, 4}},
+ {{2, 2}, {4, 4}, {1, 1}},
+ {{2, 2}, {4, 4}, {3, 3}},
+};
+
+const size_t quadraticLines_count = sizeof(quadraticLines) / sizeof(quadraticLines[0]);
+
+static const double F = PointEpsilon * 3;
+static const double H = PointEpsilon * 4;
+static const double J = PointEpsilon * 5;
+static const double K = PointEpsilon * 8; // INVESTIGATE: why are larger multiples necessary?
+
+const Quadratic quadraticModEpsilonLines[] = {
+ {{0, F}, {0, 0}, {1, 0}},
+ {{0, 0}, {1, 0}, {0, F}},
+ {{1, 0}, {0, F}, {0, 0}},
+ {{1, H}, {2, 0}, {3, 0}},
+ {{F, 0}, {0, 0}, {0, 1}},
+ {{0, 0}, {0, 1}, {F, 0}},
+ {{0, 1}, {F, 0}, {0, 0}},
+ {{H, 1}, {0, 2}, {0, 3}},
+ {{0, F}, {0, 0}, {1, 1}},
+ {{0, 0}, {1, 1}, {F, 0}},
+ {{1, 1}, {F, 0}, {0, 0}},
+ {{1, 1+J}, {2, 2}, {3, 3}},
+ {{1, 1}, {3, 3}, {3+F, 3}},
+ {{1, 1}, {1+F, 1}, {2, 2}},
+ {{1, 1}, {2, 2}, {1, 1+F}},
+ {{1, 1}, {1, 1+F}, {3, 3}},
+ {{1+H, 1}, {2, 2}, {4, 4}}, // no coincident
+ {{1, 1+K}, {3, 3}, {4, 4}},
+ {{1, 1}, {3+F, 3}, {2, 2}},
+ {{1, 1}, {4, 4+F}, {2, 2}},
+ {{1, 1}, {4, 4}, {3+F, 3}},
+ {{2, 2}, {1, 1}, {3, 3+F}},
+ {{2+F, 2}, {1, 1}, {4, 4}},
+ {{2, 2+F}, {3, 3}, {1, 1}},
+ {{2, 2}, {3+F, 3}, {4, 4}},
+ {{2, 2}, {4, 4+F}, {1, 1}},
+ {{2, 2}, {4, 4}, {3+F, 3}},
+};
+
+const size_t quadraticModEpsilonLines_count = sizeof(quadraticModEpsilonLines) / sizeof(quadraticModEpsilonLines[0]);
+
+const Quadratic quadraticTests[][2] = {
+ { // one intersection
+ {{0, 0},
+ {0, 1},
+ {1, 1}},
+ {{0, 1},
+ {0, 0},
+ {1, 0}}
+ },
+ { // four intersections
+ {{1, 0},
+ {2, 6},
+ {3, 0}},
+ {{0, 1},
+ {6, 2},
+ {0, 3}}
+ }
+};
+
+const size_t quadraticTests_count = sizeof(quadraticTests) / sizeof(quadraticTests[0]);
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticIntersection_TestData.h b/chromium/third_party/skia/experimental/Intersection/QuadraticIntersection_TestData.h
new file mode 100644
index 00000000000..2dbf34a29c2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticIntersection_TestData.h
@@ -0,0 +1,16 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "DataTypes.h"
+#include "DataTypes_Test.h"
+
+extern const Quadratic quadraticLines[];
+extern const Quadratic quadraticModEpsilonLines[];
+extern const Quadratic quadraticTests[][2];
+
+extern const size_t quadraticLines_count;
+extern const size_t quadraticModEpsilonLines_count;
+extern const size_t quadraticTests_count;
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticLineSegments.cpp b/chromium/third_party/skia/experimental/Intersection/QuadraticLineSegments.cpp
new file mode 100644
index 00000000000..5e26d35f87b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticLineSegments.cpp
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "QuadraticLineSegments.h"
+
+// http://cagd.cs.byu.edu/~557/text/cagd.pdf 2.7
+// A hodograph is the first derivative curve
+void hodograph(const Quadratic& quad, _Line& hodo) {
+ hodo[0].x = 2 * (quad[1].x - quad[0].x);
+ hodo[0].y = 2 * (quad[1].y - quad[0].y);
+ hodo[1].x = 2 * (quad[2].x - quad[1].x);
+ hodo[1].y = 2 * (quad[2].y - quad[1].y);
+}
+
+// A 2nd hodograph is the second derivative curve
+void secondHodograph(const Quadratic& quad, _Point& hodo2) {
+ _Line hodo;
+ hodograph(quad, hodo);
+ hodo2.x = hodo[1].x - hodo[0].x;
+ hodo2.y = hodo[1].y - hodo[0].y;
+}
+
+// The number of line segments required to approximate the quad
+// see http://cagd.cs.byu.edu/~557/text/cagd.pdf 10.6
+double subDivisions(const Quadratic& quad) {
+ _Point hodo2;
+ secondHodograph(quad, hodo2);
+ double dist = sqrt(hodo2.x * hodo2.x + hodo2.y * hodo2.y);
+ double segments = sqrt(dist / (8 * FLT_EPSILON));
+ return segments;
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticLineSegments.h b/chromium/third_party/skia/experimental/Intersection/QuadraticLineSegments.h
new file mode 100644
index 00000000000..640a69b787f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticLineSegments.h
@@ -0,0 +1,12 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "DataTypes.h"
+
+void hodograph(const Quadratic& , _Line& hodo);
+void secondHodograph(const Quadratic& , _Point& hodo2);
+double subDivisions(const Quadratic& );
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticParameterization.cpp b/chromium/third_party/skia/experimental/Intersection/QuadraticParameterization.cpp
new file mode 100644
index 00000000000..76441aa4d5c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticParameterization.cpp
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "QuadraticParameterization.h"
+#include "QuadraticUtilities.h"
+
+/* from http://tom.cs.byu.edu/~tom/papers/cvgip84.pdf 4.1
+ *
+ * This paper proves that Syvester's method can compute the implicit form of
+ * the quadratic from the parameterized form.
+ *
+ * Given x = a*t*t + b*t + c (the parameterized form)
+ * y = d*t*t + e*t + f
+ *
+ * we want to find an equation of the implicit form:
+ *
+ * A*x*x + B*x*y + C*y*y + D*x + E*y + F = 0
+ *
+ * The implicit form can be expressed as a 4x4 determinant, as shown.
+ *
+ * The resultant obtained by Syvester's method is
+ *
+ * | a b (c - x) 0 |
+ * | 0 a b (c - x) |
+ * | d e (f - y) 0 |
+ * | 0 d e (f - y) |
+ *
+ * which expands to
+ *
+ * d*d*x*x + -2*a*d*x*y + a*a*y*y
+ * + (-2*c*d*d + b*e*d - a*e*e + 2*a*f*d)*x
+ * + (-2*f*a*a + e*b*a - d*b*b + 2*d*c*a)*y
+ * +
+ * | a b c 0 |
+ * | 0 a b c | == 0.
+ * | d e f 0 |
+ * | 0 d e f |
+ *
+ * Expanding the constant determinant results in
+ *
+ * | a b c | | b c 0 |
+ * a*| e f 0 | + d*| a b c | ==
+ * | d e f | | d e f |
+ *
+ * a*(a*f*f + c*e*e - c*f*d - b*e*f) + d*(b*b*f + c*c*d - c*a*f - c*e*b)
+ *
+ */
+
+
+static bool straight_forward = true;
+
+QuadImplicitForm::QuadImplicitForm(const Quadratic& q) {
+ double a, b, c;
+ set_abc(&q[0].x, a, b, c);
+ double d, e, f;
+ set_abc(&q[0].y, d, e, f);
+ // compute the implicit coefficients
+ if (straight_forward) { // 42 muls, 13 adds
+ p[xx_coeff] = d * d;
+ p[xy_coeff] = -2 * a * d;
+ p[yy_coeff] = a * a;
+ p[x_coeff] = -2*c*d*d + b*e*d - a*e*e + 2*a*f*d;
+ p[y_coeff] = -2*f*a*a + e*b*a - d*b*b + 2*d*c*a;
+ p[c_coeff] = a*(a*f*f + c*e*e - c*f*d - b*e*f)
+ + d*(b*b*f + c*c*d - c*a*f - c*e*b);
+ } else { // 26 muls, 11 adds
+ double aa = a * a;
+ double ad = a * d;
+ double dd = d * d;
+ p[xx_coeff] = dd;
+ p[xy_coeff] = -2 * ad;
+ p[yy_coeff] = aa;
+ double be = b * e;
+ double bde = be * d;
+ double cdd = c * dd;
+ double ee = e * e;
+ p[x_coeff] = -2*cdd + bde - a*ee + 2*ad*f;
+ double aaf = aa * f;
+ double abe = a * be;
+ double ac = a * c;
+ double bb_2ac = b*b - 2*ac;
+ p[y_coeff] = -2*aaf + abe - d*bb_2ac;
+ p[c_coeff] = aaf*f + ac*ee + d*f*bb_2ac - abe*f + c*cdd - c*bde;
+ }
+}
+
+ /* Given a pair of quadratics, determine their parametric coefficients.
+ * If the scaled coefficients are nearly equal, then the part of the quadratics
+ * may be coincident.
+ * FIXME: optimization -- since comparison short-circuits on no match,
+ * lazily compute the coefficients, comparing the easiest to compute first.
+ * xx and yy first; then xy; and so on.
+ */
+bool QuadImplicitForm::implicit_match(const QuadImplicitForm& p2) const {
+ int first = 0;
+ for (int index = 0; index < coeff_count; ++index) {
+ if (approximately_zero(p[index]) && approximately_zero(p2.p[index])) {
+ first += first == index;
+ continue;
+ }
+ if (first == index) {
+ continue;
+ }
+ if (!AlmostEqualUlps(p[index] * p2.p[first], p[first] * p2.p[index])) {
+ return false;
+ }
+ }
+ return true;
+}
+
+bool implicit_matches(const Quadratic& quad1, const Quadratic& quad2) {
+ QuadImplicitForm i1(quad1); // a'xx , b'xy , c'yy , d'x , e'y , f
+ QuadImplicitForm i2(quad2);
+ return i1.implicit_match(i2);
+}
+
+static double tangent(const double* quadratic, double t) {
+ double a, b, c;
+ set_abc(quadratic, a, b, c);
+ return 2 * a * t + b;
+}
+
+void tangent(const Quadratic& quadratic, double t, _Point& result) {
+ result.x = tangent(&quadratic[0].x, t);
+ result.y = tangent(&quadratic[0].y, t);
+}
+
+
+
+// unit test to return and validate parametric coefficients
+#include "QuadraticParameterization_TestUtility.cpp"
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticParameterization.h b/chromium/third_party/skia/experimental/Intersection/QuadraticParameterization.h
new file mode 100644
index 00000000000..ca7d072208f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticParameterization.h
@@ -0,0 +1,27 @@
+#include "DataTypes.h"
+
+class QuadImplicitForm {
+public:
+ QuadImplicitForm(const Quadratic& q);
+ bool implicit_match(const QuadImplicitForm& two) const;
+
+ double x2() const { return p[xx_coeff]; }
+ double xy() const { return p[xy_coeff]; }
+ double y2() const { return p[yy_coeff]; }
+ double x() const { return p[x_coeff]; }
+ double y() const { return p[y_coeff]; }
+ double c() const { return p[c_coeff]; }
+
+private:
+ enum Coeffs {
+ xx_coeff,
+ xy_coeff,
+ yy_coeff,
+ x_coeff,
+ y_coeff,
+ c_coeff,
+ coeff_count
+ };
+
+ double p[coeff_count];
+};
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticParameterization_Test.cpp b/chromium/third_party/skia/experimental/Intersection/QuadraticParameterization_Test.cpp
new file mode 100644
index 00000000000..eedd6a45bf2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticParameterization_Test.cpp
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "Intersection_Tests.h"
+#include "Parameterization_Test.h"
+#include "QuadraticUtilities.h"
+
+const Quadratic quadratics[] = {
+ {{0, 0}, {1, 0}, {1, 1}},
+};
+
+const size_t quadratics_count = sizeof(quadratics) / sizeof(quadratics[0]);
+
+int firstQuadraticCoincidenceTest = 0;
+
+void QuadraticCoincidence_Test() {
+ // split large quadratic
+ // compare original, parts, to see if the are coincident
+ for (size_t index = firstQuadraticCoincidenceTest; index < quadratics_count; ++index) {
+ const Quadratic& test = quadratics[index];
+ QuadraticPair split;
+ chop_at(test, split, 0.5);
+ Quadratic midThird;
+ sub_divide(test, 1.0/3, 2.0/3, midThird);
+ const Quadratic* quads[] = {
+ &test, &midThird, &split.first(), &split.second()
+ };
+ size_t quadsCount = sizeof(quads) / sizeof(quads[0]);
+ for (size_t one = 0; one < quadsCount; ++one) {
+ for (size_t two = 0; two < quadsCount; ++two) {
+ for (size_t inner = 0; inner < 3; inner += 2) {
+ if (!point_on_parameterized_curve(*quads[one], (*quads[two])[inner])) {
+ SkDebugf("%s %zu [%zu,%zu] %zu parameterization failed\n",
+ __FUNCTION__, index, one, two, inner);
+ }
+ }
+ if (!implicit_matches(*quads[one], *quads[two])) {
+ SkDebugf("%s %zu [%zu,%zu] coincidence failed\n", __FUNCTION__,
+ index, one, two);
+ }
+ }
+ }
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticParameterization_TestUtility.cpp b/chromium/third_party/skia/experimental/Intersection/QuadraticParameterization_TestUtility.cpp
new file mode 100644
index 00000000000..7c91eb5e8b6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticParameterization_TestUtility.cpp
@@ -0,0 +1,16 @@
+// included by QuadraticParameterization.cpp
+// accesses internal functions to validate parameterized coefficients
+
+#include "Parameterization_Test.h"
+
+bool point_on_parameterized_curve(const Quadratic& quad, const _Point& point) {
+ QuadImplicitForm q(quad);
+ double xx = q.x2() * point.x * point.x;
+ double xy = q.xy() * point.x * point.y;
+ double yy = q.y2() * point.y * point.y;
+ double x = q.x() * point.x;
+ double y = q.y() * point.y;
+ double c = q.c();
+ double sum = xx + xy + yy + x + y + c;
+ return approximately_zero(sum);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticReduceOrder.cpp b/chromium/third_party/skia/experimental/Intersection/QuadraticReduceOrder.cpp
new file mode 100644
index 00000000000..27c7a29bf29
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticReduceOrder.cpp
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "Extrema.h"
+#include "IntersectionUtilities.h"
+#include "LineParameters.h"
+
+static double interp_quad_coords(double a, double b, double c, double t)
+{
+ double ab = interp(a, b, t);
+ double bc = interp(b, c, t);
+ return interp(ab, bc, t);
+}
+
+static int coincident_line(const Quadratic& quad, Quadratic& reduction) {
+ reduction[0] = reduction[1] = quad[0];
+ return 1;
+}
+
+static int vertical_line(const Quadratic& quad, ReduceOrder_Styles reduceStyle,
+ Quadratic& reduction) {
+ double tValue;
+ reduction[0] = quad[0];
+ reduction[1] = quad[2];
+ if (reduceStyle == kReduceOrder_TreatAsFill) {
+ return 2;
+ }
+ int smaller = reduction[1].y > reduction[0].y;
+ int larger = smaller ^ 1;
+ if (findExtrema(quad[0].y, quad[1].y, quad[2].y, &tValue)) {
+ double yExtrema = interp_quad_coords(quad[0].y, quad[1].y, quad[2].y, tValue);
+ if (reduction[smaller].y > yExtrema) {
+ reduction[smaller].y = yExtrema;
+ } else if (reduction[larger].y < yExtrema) {
+ reduction[larger].y = yExtrema;
+ }
+ }
+ return 2;
+}
+
+static int horizontal_line(const Quadratic& quad, ReduceOrder_Styles reduceStyle,
+ Quadratic& reduction) {
+ double tValue;
+ reduction[0] = quad[0];
+ reduction[1] = quad[2];
+ if (reduceStyle == kReduceOrder_TreatAsFill) {
+ return 2;
+ }
+ int smaller = reduction[1].x > reduction[0].x;
+ int larger = smaller ^ 1;
+ if (findExtrema(quad[0].x, quad[1].x, quad[2].x, &tValue)) {
+ double xExtrema = interp_quad_coords(quad[0].x, quad[1].x, quad[2].x, tValue);
+ if (reduction[smaller].x > xExtrema) {
+ reduction[smaller].x = xExtrema;
+ } else if (reduction[larger].x < xExtrema) {
+ reduction[larger].x = xExtrema;
+ }
+ }
+ return 2;
+}
+
+static int check_linear(const Quadratic& quad, ReduceOrder_Styles reduceStyle,
+ int minX, int maxX, int minY, int maxY, Quadratic& reduction) {
+ int startIndex = 0;
+ int endIndex = 2;
+ while (quad[startIndex].approximatelyEqual(quad[endIndex])) {
+ --endIndex;
+ if (endIndex == 0) {
+ printf("%s shouldn't get here if all four points are about equal", __FUNCTION__);
+ SkASSERT(0);
+ }
+ }
+ if (!isLinear(quad, startIndex, endIndex)) {
+ return 0;
+ }
+ // four are colinear: return line formed by outside
+ reduction[0] = quad[0];
+ reduction[1] = quad[2];
+ if (reduceStyle == kReduceOrder_TreatAsFill) {
+ return 2;
+ }
+ int sameSide;
+ bool useX = quad[maxX].x - quad[minX].x >= quad[maxY].y - quad[minY].y;
+ if (useX) {
+ sameSide = sign(quad[0].x - quad[1].x) + sign(quad[2].x - quad[1].x);
+ } else {
+ sameSide = sign(quad[0].y - quad[1].y) + sign(quad[2].y - quad[1].y);
+ }
+ if ((sameSide & 3) != 2) {
+ return 2;
+ }
+ double tValue;
+ int root;
+ if (useX) {
+ root = findExtrema(quad[0].x, quad[1].x, quad[2].x, &tValue);
+ } else {
+ root = findExtrema(quad[0].y, quad[1].y, quad[2].y, &tValue);
+ }
+ if (root) {
+ _Point extrema;
+ extrema.x = interp_quad_coords(quad[0].x, quad[1].x, quad[2].x, tValue);
+ extrema.y = interp_quad_coords(quad[0].y, quad[1].y, quad[2].y, tValue);
+ // sameSide > 0 means mid is smaller than either [0] or [2], so replace smaller
+ int replace;
+ if (useX) {
+ if (extrema.x < quad[0].x ^ extrema.x < quad[2].x) {
+ return 2;
+ }
+ replace = (extrema.x < quad[0].x | extrema.x < quad[2].x)
+ ^ (quad[0].x < quad[2].x);
+ } else {
+ if (extrema.y < quad[0].y ^ extrema.y < quad[2].y) {
+ return 2;
+ }
+ replace = (extrema.y < quad[0].y | extrema.y < quad[2].y)
+ ^ (quad[0].y < quad[2].y);
+ }
+ reduction[replace] = extrema;
+ }
+ return 2;
+}
+
+bool isLinear(const Quadratic& quad, int startIndex, int endIndex) {
+ LineParameters lineParameters;
+ lineParameters.quadEndPoints(quad, startIndex, endIndex);
+ // FIXME: maybe it's possible to avoid this and compare non-normalized
+ lineParameters.normalize();
+ double distance = lineParameters.controlPtDistance(quad);
+ return approximately_zero(distance);
+}
+
+// reduce to a quadratic or smaller
+// look for identical points
+// look for all four points in a line
+ // note that three points in a line doesn't simplify a cubic
+// look for approximation with single quadratic
+ // save approximation with multiple quadratics for later
+int reduceOrder(const Quadratic& quad, Quadratic& reduction, ReduceOrder_Styles reduceStyle) {
+ int index, minX, maxX, minY, maxY;
+ int minXSet, minYSet;
+ minX = maxX = minY = maxY = 0;
+ minXSet = minYSet = 0;
+ for (index = 1; index < 3; ++index) {
+ if (quad[minX].x > quad[index].x) {
+ minX = index;
+ }
+ if (quad[minY].y > quad[index].y) {
+ minY = index;
+ }
+ if (quad[maxX].x < quad[index].x) {
+ maxX = index;
+ }
+ if (quad[maxY].y < quad[index].y) {
+ maxY = index;
+ }
+ }
+ for (index = 0; index < 3; ++index) {
+ if (AlmostEqualUlps(quad[index].x, quad[minX].x)) {
+ minXSet |= 1 << index;
+ }
+ if (AlmostEqualUlps(quad[index].y, quad[minY].y)) {
+ minYSet |= 1 << index;
+ }
+ }
+ if (minXSet == 0x7) { // test for vertical line
+ if (minYSet == 0x7) { // return 1 if all four are coincident
+ return coincident_line(quad, reduction);
+ }
+ return vertical_line(quad, reduceStyle, reduction);
+ }
+ if (minYSet == 0xF) { // test for horizontal line
+ return horizontal_line(quad, reduceStyle, reduction);
+ }
+ int result = check_linear(quad, reduceStyle, minX, maxX, minY, maxY, reduction);
+ if (result) {
+ return result;
+ }
+ memcpy(reduction, quad, sizeof(Quadratic));
+ return 3;
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticReduceOrder_Test.cpp b/chromium/third_party/skia/experimental/Intersection/QuadraticReduceOrder_Test.cpp
new file mode 100644
index 00000000000..e9e8b4bc929
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticReduceOrder_Test.cpp
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "Intersection_Tests.h"
+#include "QuadraticIntersection_TestData.h"
+#include "TestUtilities.h"
+
+static const Quadratic testSet[] = {
+ {{1, 1}, {2, 2}, {1, 1.000003}},
+ {{1, 0}, {2, 6}, {3, 0}}
+};
+
+static const size_t testSetCount = sizeof(testSet) / sizeof(testSet[0]);
+
+
+static void oneOffTest() {
+ SkDebugf("%s FLT_EPSILON=%1.9g\n", __FUNCTION__, FLT_EPSILON);
+ for (size_t index = 0; index < testSetCount; ++index) {
+ const Quadratic& quad = testSet[index];
+ Quadratic reduce;
+ SkDEBUGCODE(int result = ) reduceOrder(quad, reduce, kReduceOrder_TreatAsFill);
+ SkASSERT(result == 3);
+ }
+}
+
+static void standardTestCases() {
+ size_t index;
+ Quadratic reduce;
+ int order;
+ enum {
+ RunAll,
+ RunQuadraticLines,
+ RunQuadraticModLines,
+ RunNone
+ } run = RunAll;
+ int firstTestIndex = 0;
+#if 0
+ run = RunQuadraticLines;
+ firstTestIndex = 1;
+#endif
+ int firstQuadraticLineTest = run == RunAll ? 0 : run == RunQuadraticLines ? firstTestIndex : SK_MaxS32;
+ int firstQuadraticModLineTest = run == RunAll ? 0 : run == RunQuadraticModLines ? firstTestIndex : SK_MaxS32;
+
+ for (index = firstQuadraticLineTest; index < quadraticLines_count; ++index) {
+ const Quadratic& quad = quadraticLines[index];
+ order = reduceOrder(quad, reduce, kReduceOrder_TreatAsFill);
+ if (order != 2) {
+ printf("[%d] line quad order=%d\n", (int) index, order);
+ }
+ }
+ for (index = firstQuadraticModLineTest; index < quadraticModEpsilonLines_count; ++index) {
+ const Quadratic& quad = quadraticModEpsilonLines[index];
+ order = reduceOrder(quad, reduce, kReduceOrder_TreatAsFill);
+ if (order != 3) {
+ printf("[%d] line mod quad order=%d\n", (int) index, order);
+ }
+ }
+}
+
+void QuadraticReduceOrder_Test() {
+ oneOffTest();
+ standardTestCases();
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticSubDivide.cpp b/chromium/third_party/skia/experimental/Intersection/QuadraticSubDivide.cpp
new file mode 100644
index 00000000000..2ced9e325a7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticSubDivide.cpp
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "IntersectionUtilities.h"
+#include "QuadraticUtilities.h"
+
+/*
+Given a quadratic q, t1, and t2, find a small quadratic segment.
+
+The new quadratic is defined by A, B, and C, where
+ A = c[0]*(1 - t1)*(1 - t1) + 2*c[1]*t1*(1 - t1) + c[2]*t1*t1
+ C = c[3]*(1 - t1)*(1 - t1) + 2*c[2]*t1*(1 - t1) + c[1]*t1*t1
+
+To find B, compute the point halfway between t1 and t2:
+
+q(at (t1 + t2)/2) == D
+
+Next, compute where D must be if we know the value of B:
+
+_12 = A/2 + B/2
+12_ = B/2 + C/2
+123 = A/4 + B/2 + C/4
+ = D
+
+Group the known values on one side:
+
+B = D*2 - A/2 - C/2
+*/
+
+static double interp_quad_coords(const double* src, double t)
+{
+ double ab = interp(src[0], src[2], t);
+ double bc = interp(src[2], src[4], t);
+ double abc = interp(ab, bc, t);
+ return abc;
+}
+
+void sub_divide(const Quadratic& src, double t1, double t2, Quadratic& dst) {
+ double ax = dst[0].x = interp_quad_coords(&src[0].x, t1);
+ double ay = dst[0].y = interp_quad_coords(&src[0].y, t1);
+ double dx = interp_quad_coords(&src[0].x, (t1 + t2) / 2);
+ double dy = interp_quad_coords(&src[0].y, (t1 + t2) / 2);
+ double cx = dst[2].x = interp_quad_coords(&src[0].x, t2);
+ double cy = dst[2].y = interp_quad_coords(&src[0].y, t2);
+ /* bx = */ dst[1].x = 2*dx - (ax + cx)/2;
+ /* by = */ dst[1].y = 2*dy - (ay + cy)/2;
+}
+
+_Point sub_divide(const Quadratic& src, const _Point& a, const _Point& c, double t1, double t2) {
+ _Point b;
+ double dx = interp_quad_coords(&src[0].x, (t1 + t2) / 2);
+ double dy = interp_quad_coords(&src[0].y, (t1 + t2) / 2);
+ b.x = 2 * dx - (a.x + c.x) / 2;
+ b.y = 2 * dy - (a.y + c.y) / 2;
+ return b;
+}
+
+/* classic one t subdivision */
+static void interp_quad_coords(const double* src, double* dst, double t)
+{
+ double ab = interp(src[0], src[2], t);
+ double bc = interp(src[2], src[4], t);
+
+ dst[0] = src[0];
+ dst[2] = ab;
+ dst[4] = interp(ab, bc, t);
+ dst[6] = bc;
+ dst[8] = src[4];
+}
+
+void chop_at(const Quadratic& src, QuadraticPair& dst, double t)
+{
+ interp_quad_coords(&src[0].x, &dst.pts[0].x, t);
+ interp_quad_coords(&src[0].y, &dst.pts[0].y, t);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticUtilities.cpp b/chromium/third_party/skia/experimental/Intersection/QuadraticUtilities.cpp
new file mode 100644
index 00000000000..cba722be7f5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticUtilities.cpp
@@ -0,0 +1,255 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CubicUtilities.h"
+#include "Extrema.h"
+#include "QuadraticUtilities.h"
+#include "TriangleUtilities.h"
+
+// from http://blog.gludion.com/2009/08/distance-to-quadratic-bezier-curve.html
+double nearestT(const Quadratic& quad, const _Point& pt) {
+ _Vector pos = quad[0] - pt;
+ // search points P of bezier curve with PM.(dP / dt) = 0
+ // a calculus leads to a 3d degree equation :
+ _Vector A = quad[1] - quad[0];
+ _Vector B = quad[2] - quad[1];
+ B -= A;
+ double a = B.dot(B);
+ double b = 3 * A.dot(B);
+ double c = 2 * A.dot(A) + pos.dot(B);
+ double d = pos.dot(A);
+ double ts[3];
+ int roots = cubicRootsValidT(a, b, c, d, ts);
+ double d0 = pt.distanceSquared(quad[0]);
+ double d2 = pt.distanceSquared(quad[2]);
+ double distMin = SkTMin(d0, d2);
+ int bestIndex = -1;
+ for (int index = 0; index < roots; ++index) {
+ _Point onQuad;
+ xy_at_t(quad, ts[index], onQuad.x, onQuad.y);
+ double dist = pt.distanceSquared(onQuad);
+ if (distMin > dist) {
+ distMin = dist;
+ bestIndex = index;
+ }
+ }
+ if (bestIndex >= 0) {
+ return ts[bestIndex];
+ }
+ return d0 < d2 ? 0 : 1;
+}
+
+bool point_in_hull(const Quadratic& quad, const _Point& pt) {
+ return pointInTriangle((const Triangle&) quad, pt);
+}
+
+_Point top(const Quadratic& quad, double startT, double endT) {
+ Quadratic sub;
+ sub_divide(quad, startT, endT, sub);
+ _Point topPt = sub[0];
+ if (topPt.y > sub[2].y || (topPt.y == sub[2].y && topPt.x > sub[2].x)) {
+ topPt = sub[2];
+ }
+ if (!between(sub[0].y, sub[1].y, sub[2].y)) {
+ double extremeT;
+ if (findExtrema(sub[0].y, sub[1].y, sub[2].y, &extremeT)) {
+ extremeT = startT + (endT - startT) * extremeT;
+ _Point test;
+ xy_at_t(quad, extremeT, test.x, test.y);
+ if (topPt.y > test.y || (topPt.y == test.y && topPt.x > test.x)) {
+ topPt = test;
+ }
+ }
+ }
+ return topPt;
+}
+
+/*
+Numeric Solutions (5.6) suggests to solve the quadratic by computing
+ Q = -1/2(B + sgn(B)Sqrt(B^2 - 4 A C))
+and using the roots
+ t1 = Q / A
+ t2 = C / Q
+*/
+int add_valid_ts(double s[], int realRoots, double* t) {
+ int foundRoots = 0;
+ for (int index = 0; index < realRoots; ++index) {
+ double tValue = s[index];
+ if (approximately_zero_or_more(tValue) && approximately_one_or_less(tValue)) {
+ if (approximately_less_than_zero(tValue)) {
+ tValue = 0;
+ } else if (approximately_greater_than_one(tValue)) {
+ tValue = 1;
+ }
+ for (int idx2 = 0; idx2 < foundRoots; ++idx2) {
+ if (approximately_equal(t[idx2], tValue)) {
+ goto nextRoot;
+ }
+ }
+ t[foundRoots++] = tValue;
+ }
+nextRoot:
+ ;
+ }
+ return foundRoots;
+}
+
+// note: caller expects multiple results to be sorted smaller first
+// note: http://en.wikipedia.org/wiki/Loss_of_significance has an interesting
+// analysis of the quadratic equation, suggesting why the following looks at
+// the sign of B -- and further suggesting that the greatest loss of precision
+// is in b squared less two a c
+int quadraticRootsValidT(double A, double B, double C, double t[2]) {
+#if 0
+ B *= 2;
+ double square = B * B - 4 * A * C;
+ if (approximately_negative(square)) {
+ if (!approximately_positive(square)) {
+ return 0;
+ }
+ square = 0;
+ }
+ double squareRt = sqrt(square);
+ double Q = (B + (B < 0 ? -squareRt : squareRt)) / -2;
+ int foundRoots = 0;
+ double ratio = Q / A;
+ if (approximately_zero_or_more(ratio) && approximately_one_or_less(ratio)) {
+ if (approximately_less_than_zero(ratio)) {
+ ratio = 0;
+ } else if (approximately_greater_than_one(ratio)) {
+ ratio = 1;
+ }
+ t[0] = ratio;
+ ++foundRoots;
+ }
+ ratio = C / Q;
+ if (approximately_zero_or_more(ratio) && approximately_one_or_less(ratio)) {
+ if (approximately_less_than_zero(ratio)) {
+ ratio = 0;
+ } else if (approximately_greater_than_one(ratio)) {
+ ratio = 1;
+ }
+ if (foundRoots == 0 || !approximately_negative(ratio - t[0])) {
+ t[foundRoots++] = ratio;
+ } else if (!approximately_negative(t[0] - ratio)) {
+ t[foundRoots++] = t[0];
+ t[0] = ratio;
+ }
+ }
+#else
+ double s[2];
+ int realRoots = quadraticRootsReal(A, B, C, s);
+ int foundRoots = add_valid_ts(s, realRoots, t);
+#endif
+ return foundRoots;
+}
+
+// unlike quadratic roots, this does not discard real roots <= 0 or >= 1
+int quadraticRootsReal(const double A, const double B, const double C, double s[2]) {
+ const double p = B / (2 * A);
+ const double q = C / A;
+ if (approximately_zero(A) && (approximately_zero_inverse(p) || approximately_zero_inverse(q))) {
+ if (approximately_zero(B)) {
+ s[0] = 0;
+ return C == 0;
+ }
+ s[0] = -C / B;
+ return 1;
+ }
+ /* normal form: x^2 + px + q = 0 */
+ const double p2 = p * p;
+#if 0
+ double D = AlmostEqualUlps(p2, q) ? 0 : p2 - q;
+ if (D <= 0) {
+ if (D < 0) {
+ return 0;
+ }
+ s[0] = -p;
+ SkDebugf("[%d] %1.9g\n", 1, s[0]);
+ return 1;
+ }
+ double sqrt_D = sqrt(D);
+ s[0] = sqrt_D - p;
+ s[1] = -sqrt_D - p;
+ SkDebugf("[%d] %1.9g %1.9g\n", 2, s[0], s[1]);
+ return 2;
+#else
+ if (!AlmostEqualUlps(p2, q) && p2 < q) {
+ return 0;
+ }
+ double sqrt_D = 0;
+ if (p2 > q) {
+ sqrt_D = sqrt(p2 - q);
+ }
+ s[0] = sqrt_D - p;
+ s[1] = -sqrt_D - p;
+#if 0
+ if (AlmostEqualUlps(s[0], s[1])) {
+ SkDebugf("[%d] %1.9g\n", 1, s[0]);
+ } else {
+ SkDebugf("[%d] %1.9g %1.9g\n", 2, s[0], s[1]);
+ }
+#endif
+ return 1 + !AlmostEqualUlps(s[0], s[1]);
+#endif
+}
+
+void toCubic(const Quadratic& quad, Cubic& cubic) {
+ cubic[0] = quad[0];
+ cubic[2] = quad[1];
+ cubic[3] = quad[2];
+ cubic[1].x = (cubic[0].x + cubic[2].x * 2) / 3;
+ cubic[1].y = (cubic[0].y + cubic[2].y * 2) / 3;
+ cubic[2].x = (cubic[3].x + cubic[2].x * 2) / 3;
+ cubic[2].y = (cubic[3].y + cubic[2].y * 2) / 3;
+}
+
+static double derivativeAtT(const double* quad, double t) {
+ double a = t - 1;
+ double b = 1 - 2 * t;
+ double c = t;
+ return a * quad[0] + b * quad[2] + c * quad[4];
+}
+
+double dx_at_t(const Quadratic& quad, double t) {
+ return derivativeAtT(&quad[0].x, t);
+}
+
+double dy_at_t(const Quadratic& quad, double t) {
+ return derivativeAtT(&quad[0].y, t);
+}
+
+_Vector dxdy_at_t(const Quadratic& quad, double t) {
+ double a = t - 1;
+ double b = 1 - 2 * t;
+ double c = t;
+ _Vector result = { a * quad[0].x + b * quad[1].x + c * quad[2].x,
+ a * quad[0].y + b * quad[1].y + c * quad[2].y };
+ return result;
+}
+
+void xy_at_t(const Quadratic& quad, double t, double& x, double& y) {
+ double one_t = 1 - t;
+ double a = one_t * one_t;
+ double b = 2 * one_t * t;
+ double c = t * t;
+ if (&x) {
+ x = a * quad[0].x + b * quad[1].x + c * quad[2].x;
+ }
+ if (&y) {
+ y = a * quad[0].y + b * quad[1].y + c * quad[2].y;
+ }
+}
+
+_Point xy_at_t(const Quadratic& quad, double t) {
+ double one_t = 1 - t;
+ double a = one_t * one_t;
+ double b = 2 * one_t * t;
+ double c = t * t;
+ _Point result = { a * quad[0].x + b * quad[1].x + c * quad[2].x,
+ a * quad[0].y + b * quad[1].y + c * quad[2].y };
+ return result;
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/QuadraticUtilities.h b/chromium/third_party/skia/experimental/Intersection/QuadraticUtilities.h
new file mode 100644
index 00000000000..8ec9037e103
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuadraticUtilities.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#if !defined QUADRATIC_UTILITIES_H
+#define QUADRATIC_UTILITIES_H
+
+#include "DataTypes.h"
+
+int add_valid_ts(double s[], int realRoots, double* t);
+void chop_at(const Quadratic& src, QuadraticPair& dst, double t);
+double dx_at_t(const Quadratic& , double t);
+double dy_at_t(const Quadratic& , double t);
+//void dxdy_at_t(const Quadratic& , double t, _Point& xy);
+_Vector dxdy_at_t(const Quadratic& , double t);
+
+double nearestT(const Quadratic& , const _Point& );
+bool point_in_hull(const Quadratic& , const _Point& );
+
+/* Parameterization form, given A*t*t + 2*B*t*(1-t) + C*(1-t)*(1-t)
+ *
+ * a = A - 2*B + C
+ * b = 2*B - 2*C
+ * c = C
+ */
+inline void set_abc(const double* quad, double& a, double& b, double& c) {
+ a = quad[0]; // a = A
+ b = 2 * quad[2]; // b = 2*B
+ c = quad[4]; // c = C
+ b -= c; // b = 2*B - C
+ a -= b; // a = A - 2*B + C
+ b -= c; // b = 2*B - 2*C
+}
+
+int quadraticRootsReal(double A, double B, double C, double t[2]);
+int quadraticRootsValidT(const double A, const double B, const double C, double s[2]);
+void sub_divide(const Quadratic& src, double t1, double t2, Quadratic& dst);
+_Point sub_divide(const Quadratic& src, const _Point& a, const _Point& c, double t1, double t2);
+void toCubic(const Quadratic& , Cubic& );
+_Point top(const Quadratic& , double startT, double endT);
+void xy_at_t(const Quadratic& , double t, double& x, double& y);
+_Point xy_at_t(const Quadratic& , double t);
+
+#endif
diff --git a/chromium/third_party/skia/experimental/Intersection/QuarticRoot.cpp b/chromium/third_party/skia/experimental/Intersection/QuarticRoot.cpp
new file mode 100644
index 00000000000..039a2c797f6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuarticRoot.cpp
@@ -0,0 +1,236 @@
+// from http://tog.acm.org/resources/GraphicsGems/gems/Roots3And4.c
+/*
+ * Roots3And4.c
+ *
+ * Utility functions to find cubic and quartic roots,
+ * coefficients are passed like this:
+ *
+ * c[0] + c[1]*x + c[2]*x^2 + c[3]*x^3 + c[4]*x^4 = 0
+ *
+ * The functions return the number of non-complex roots and
+ * put the values into the s array.
+ *
+ * Author: Jochen Schwarze (schwarze@isa.de)
+ *
+ * Jan 26, 1990 Version for Graphics Gems
+ * Oct 11, 1990 Fixed sign problem for negative q's in SolveQuartic
+ * (reported by Mark Podlipec),
+ * Old-style function definitions,
+ * IsZero() as a macro
+ * Nov 23, 1990 Some systems do not declare acos() and cbrt() in
+ * <math.h>, though the functions exist in the library.
+ * If large coefficients are used, EQN_EPS should be
+ * reduced considerably (e.g. to 1E-30), results will be
+ * correct but multiple roots might be reported more
+ * than once.
+ */
+
+#include <math.h>
+#include "CubicUtilities.h"
+#include "QuadraticUtilities.h"
+#include "QuarticRoot.h"
+
+int reducedQuarticRoots(const double t4, const double t3, const double t2, const double t1,
+ const double t0, const bool oneHint, double roots[4]) {
+#if SK_DEBUG
+ // create a string mathematica understands
+ // GDB set print repe 15 # if repeated digits is a bother
+ // set print elements 400 # if line doesn't fit
+ char str[1024];
+ bzero(str, sizeof(str));
+ sprintf(str, "Solve[%1.19g x^4 + %1.19g x^3 + %1.19g x^2 + %1.19g x + %1.19g == 0, x]",
+ t4, t3, t2, t1, t0);
+ mathematica_ize(str, sizeof(str));
+#if ONE_OFF_DEBUG && ONE_OFF_DEBUG_MATHEMATICA
+ SkDebugf("%s\n", str);
+#endif
+#endif
+#if 0 && SK_DEBUG
+ bool t4Or = approximately_zero_when_compared_to(t4, t0) // 0 is one root
+ || approximately_zero_when_compared_to(t4, t1)
+ || approximately_zero_when_compared_to(t4, t2);
+ bool t4And = approximately_zero_when_compared_to(t4, t0) // 0 is one root
+ && approximately_zero_when_compared_to(t4, t1)
+ && approximately_zero_when_compared_to(t4, t2);
+ if (t4Or != t4And) {
+ SkDebugf("%s t4 or and\n", __FUNCTION__);
+ }
+ bool t3Or = approximately_zero_when_compared_to(t3, t0)
+ || approximately_zero_when_compared_to(t3, t1)
+ || approximately_zero_when_compared_to(t3, t2);
+ bool t3And = approximately_zero_when_compared_to(t3, t0)
+ && approximately_zero_when_compared_to(t3, t1)
+ && approximately_zero_when_compared_to(t3, t2);
+ if (t3Or != t3And) {
+ SkDebugf("%s t3 or and\n", __FUNCTION__);
+ }
+ bool t0Or = approximately_zero_when_compared_to(t0, t1) // 0 is one root
+ && approximately_zero_when_compared_to(t0, t2)
+ && approximately_zero_when_compared_to(t0, t3)
+ && approximately_zero_when_compared_to(t0, t4);
+ bool t0And = approximately_zero_when_compared_to(t0, t1) // 0 is one root
+ && approximately_zero_when_compared_to(t0, t2)
+ && approximately_zero_when_compared_to(t0, t3)
+ && approximately_zero_when_compared_to(t0, t4);
+ if (t0Or != t0And) {
+ SkDebugf("%s t0 or and\n", __FUNCTION__);
+ }
+#endif
+ if (approximately_zero_when_compared_to(t4, t0) // 0 is one root
+ && approximately_zero_when_compared_to(t4, t1)
+ && approximately_zero_when_compared_to(t4, t2)) {
+ if (approximately_zero_when_compared_to(t3, t0)
+ && approximately_zero_when_compared_to(t3, t1)
+ && approximately_zero_when_compared_to(t3, t2)) {
+ return quadraticRootsReal(t2, t1, t0, roots);
+ }
+ if (approximately_zero_when_compared_to(t4, t3)) {
+ return cubicRootsReal(t3, t2, t1, t0, roots);
+ }
+ }
+ if ((approximately_zero_when_compared_to(t0, t1) || approximately_zero(t1))// 0 is one root
+ // && approximately_zero_when_compared_to(t0, t2)
+ && approximately_zero_when_compared_to(t0, t3)
+ && approximately_zero_when_compared_to(t0, t4)) {
+ int num = cubicRootsReal(t4, t3, t2, t1, roots);
+ for (int i = 0; i < num; ++i) {
+ if (approximately_zero(roots[i])) {
+ return num;
+ }
+ }
+ roots[num++] = 0;
+ return num;
+ }
+ if (oneHint) {
+ SkASSERT(approximately_zero(t4 + t3 + t2 + t1 + t0)); // 1 is one root
+ int num = cubicRootsReal(t4, t4 + t3, -(t1 + t0), -t0, roots); // note that -C==A+B+D+E
+ for (int i = 0; i < num; ++i) {
+ if (approximately_equal(roots[i], 1)) {
+ return num;
+ }
+ }
+ roots[num++] = 1;
+ return num;
+ }
+ return -1;
+}
+
+int quarticRootsReal(int firstCubicRoot, const double A, const double B, const double C,
+ const double D, const double E, double s[4]) {
+ double u, v;
+ /* normal form: x^4 + Ax^3 + Bx^2 + Cx + D = 0 */
+ const double invA = 1 / A;
+ const double a = B * invA;
+ const double b = C * invA;
+ const double c = D * invA;
+ const double d = E * invA;
+ /* substitute x = y - a/4 to eliminate cubic term:
+ x^4 + px^2 + qx + r = 0 */
+ const double a2 = a * a;
+ const double p = -3 * a2 / 8 + b;
+ const double q = a2 * a / 8 - a * b / 2 + c;
+ const double r = -3 * a2 * a2 / 256 + a2 * b / 16 - a * c / 4 + d;
+ int num;
+ if (approximately_zero(r)) {
+ /* no absolute term: y(y^3 + py + q) = 0 */
+ num = cubicRootsReal(1, 0, p, q, s);
+ s[num++] = 0;
+ } else {
+ /* solve the resolvent cubic ... */
+ double cubicRoots[3];
+ int roots = cubicRootsReal(1, -p / 2, -r, r * p / 2 - q * q / 8, cubicRoots);
+ int index;
+ #if 0 && SK_DEBUG // enable to verify that any cubic root is as good as any other
+ double tries[3][4];
+ int nums[3];
+ for (index = 0; index < roots; ++index) {
+ /* ... and take one real solution ... */
+ const double z = cubicRoots[index];
+ /* ... to build two quadric equations */
+ u = z * z - r;
+ v = 2 * z - p;
+ if (approximately_zero_squared(u)) {
+ u = 0;
+ } else if (u > 0) {
+ u = sqrt(u);
+ } else {
+ SkDebugf("%s u=%1.9g <0\n", __FUNCTION__, u);
+ continue;
+ }
+ if (approximately_zero_squared(v)) {
+ v = 0;
+ } else if (v > 0) {
+ v = sqrt(v);
+ } else {
+ SkDebugf("%s v=%1.9g <0\n", __FUNCTION__, v);
+ continue;
+ }
+ nums[index] = quadraticRootsReal(1, q < 0 ? -v : v, z - u, tries[index]);
+ nums[index] += quadraticRootsReal(1, q < 0 ? v : -v, z + u, tries[index] + nums[index]);
+ /* resubstitute */
+ const double sub = a / 4;
+ for (int i = 0; i < nums[index]; ++i) {
+ tries[index][i] -= sub;
+ }
+ }
+ for (index = 0; index < roots; ++index) {
+ SkDebugf("%s", __FUNCTION__);
+ for (int idx2 = 0; idx2 < nums[index]; ++idx2) {
+ SkDebugf(" %1.9g", tries[index][idx2]);
+ }
+ SkDebugf("\n");
+ }
+ #endif
+ /* ... and take one real solution ... */
+ double z;
+ num = 0;
+ int num2 = 0;
+ for (index = firstCubicRoot; index < roots; ++index) {
+ z = cubicRoots[index];
+ /* ... to build two quadric equations */
+ u = z * z - r;
+ v = 2 * z - p;
+ if (approximately_zero_squared(u)) {
+ u = 0;
+ } else if (u > 0) {
+ u = sqrt(u);
+ } else {
+ continue;
+ }
+ if (approximately_zero_squared(v)) {
+ v = 0;
+ } else if (v > 0) {
+ v = sqrt(v);
+ } else {
+ continue;
+ }
+ num = quadraticRootsReal(1, q < 0 ? -v : v, z - u, s);
+ num2 = quadraticRootsReal(1, q < 0 ? v : -v, z + u, s + num);
+ if (!((num | num2) & 1)) {
+ break; // prefer solutions without single quad roots
+ }
+ }
+ num += num2;
+ if (!num) {
+ return 0; // no valid cubic root
+ }
+ }
+ /* resubstitute */
+ const double sub = a / 4;
+ for (int i = 0; i < num; ++i) {
+ s[i] -= sub;
+ }
+ // eliminate duplicates
+ for (int i = 0; i < num - 1; ++i) {
+ for (int j = i + 1; j < num; ) {
+ if (AlmostEqualUlps(s[i], s[j])) {
+ if (j < --num) {
+ s[j] = s[num];
+ }
+ } else {
+ ++j;
+ }
+ }
+ }
+ return num;
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/QuarticRoot.h b/chromium/third_party/skia/experimental/Intersection/QuarticRoot.h
new file mode 100644
index 00000000000..3089d59c884
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuarticRoot.h
@@ -0,0 +1,5 @@
+int reducedQuarticRoots(const double t4, const double t3, const double t2, const double t1,
+ const double t0, const bool oneHint, double s[4]);
+
+int quarticRootsReal(int firstCubicRoot, const double A, const double B, const double C,
+ const double D, const double E, double s[4]);
diff --git a/chromium/third_party/skia/experimental/Intersection/QuarticRoot_Test.cpp b/chromium/third_party/skia/experimental/Intersection/QuarticRoot_Test.cpp
new file mode 100644
index 00000000000..48431c8f0a0
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/QuarticRoot_Test.cpp
@@ -0,0 +1,195 @@
+#include "CubicUtilities.h"
+#include "Intersection_Tests.h"
+#include "QuadraticUtilities.h"
+#include "QuarticRoot.h"
+
+double mulA[] = {-3, -1, 1, 3};
+size_t mulACount = sizeof(mulA) / sizeof(mulA[0]);
+double rootB[] = {-9, -6, -3, -1, 0, 1, 3, 6, 9};
+size_t rootBCount = sizeof(rootB) / sizeof(rootB[0]);
+double rootC[] = {-8, -6, -2, -1, 0, 1, 2, 6, 8};
+size_t rootCCount = sizeof(rootC) / sizeof(rootC[0]);
+double rootD[] = {-7, -4, -1, 0, 1, 2, 5};
+size_t rootDCount = sizeof(rootD) / sizeof(rootD[0]);
+double rootE[] = {-5, -1, 0, 1, 7};
+size_t rootECount = sizeof(rootE) / sizeof(rootE[0]);
+
+
+static void quadraticTest(bool limit) {
+ // (x - a)(x - b) == x^2 - (a + b)x + ab
+ for (size_t aIndex = 0; aIndex < mulACount; ++aIndex) {
+ for (size_t bIndex = 0; bIndex < rootBCount; ++bIndex) {
+ for (size_t cIndex = 0; cIndex < rootCCount; ++cIndex) {
+ const double A = mulA[aIndex];
+ double B = rootB[bIndex];
+ double C = rootC[cIndex];
+ if (limit) {
+ B = (B - 6) / 12;
+ C = (C - 6) / 12;
+ }
+ const double b = A * (B + C);
+ const double c = A * B * C;
+ double roots[2];
+ const int rootCount = limit ? quadraticRootsValidT(A, b, c, roots)
+ : quadraticRootsReal(A, b, c, roots);
+ int expected;
+ if (limit) {
+ expected = B <= 0 && B >= -1;
+ expected += B != C && C <= 0 && C >= -1;
+ } else {
+ expected = 1 + (B != C);
+ }
+ SkASSERT(rootCount == expected);
+ if (!rootCount) {
+ continue;
+ }
+ SkASSERT(approximately_equal(roots[0], -B)
+ || approximately_equal(roots[0], -C));
+ if (expected > 1) {
+ SkASSERT(!approximately_equal(roots[0], roots[1]));
+ SkASSERT(approximately_equal(roots[1], -B)
+ || approximately_equal(roots[1], -C));
+ }
+ }
+ }
+ }
+}
+
+static void testOneCubic(bool limit, size_t aIndex, size_t bIndex, size_t cIndex, size_t dIndex) {
+ const double A = mulA[aIndex];
+ double B = rootB[bIndex];
+ double C = rootC[cIndex];
+ double D = rootD[dIndex];
+ if (limit) {
+ B = (B - 6) / 12;
+ C = (C - 6) / 12;
+ D = (C - 2) / 6;
+ }
+ const double b = A * (B + C + D);
+ const double c = A * (B * C + C * D + B * D);
+ const double d = A * B * C * D;
+ double roots[3];
+ const int rootCount = limit ? cubicRootsValidT(A, b, c, d, roots)
+ : cubicRootsReal(A, b, c, d, roots);
+ int expected;
+ if (limit) {
+ expected = B <= 0 && B >= -1;
+ expected += B != C && C <= 0 && C >= -1;
+ expected += B != D && C != D && D <= 0 && D >= -1;
+ } else {
+ expected = 1 + (B != C) + (B != D && C != D);
+ }
+ SkASSERT(rootCount == expected);
+ if (!rootCount) {
+ return;
+ }
+ SkASSERT(approximately_equal(roots[0], -B)
+ || approximately_equal(roots[0], -C)
+ || approximately_equal(roots[0], -D));
+ if (expected <= 1) {
+ return;
+ }
+ SkASSERT(!approximately_equal(roots[0], roots[1]));
+ SkASSERT(approximately_equal(roots[1], -B)
+ || approximately_equal(roots[1], -C)
+ || approximately_equal(roots[1], -D));
+ if (expected <= 2) {
+ return;
+ }
+ SkASSERT(!approximately_equal(roots[0], roots[2])
+ && !approximately_equal(roots[1], roots[2]));
+ SkASSERT(approximately_equal(roots[2], -B)
+ || approximately_equal(roots[2], -C)
+ || approximately_equal(roots[2], -D));
+}
+
+static void cubicTest(bool limit) {
+ // (x - a)(x - b)(x - c) == x^3 - (a + b + c)x^2 + (ab + bc + ac)x - abc
+ for (size_t aIndex = 0; aIndex < mulACount; ++aIndex) {
+ for (size_t bIndex = 0; bIndex < rootBCount; ++bIndex) {
+ for (size_t cIndex = 0; cIndex < rootCCount; ++cIndex) {
+ for (size_t dIndex = 0; dIndex < rootDCount; ++dIndex) {
+ testOneCubic(limit, aIndex, bIndex, cIndex, dIndex);
+ }
+ }
+ }
+ }
+}
+
+static void testOneQuartic(size_t aIndex, size_t bIndex, size_t cIndex, size_t dIndex,
+ size_t eIndex) {
+ const double A = mulA[aIndex];
+ const double B = rootB[bIndex];
+ const double C = rootC[cIndex];
+ const double D = rootD[dIndex];
+ const double E = rootE[eIndex];
+ const double b = A * (B + C + D + E);
+ const double c = A * (B * C + C * D + B * D + B * E + C * E + D * E);
+ const double d = A * (B * C * D + B * C * E + B * D * E + C * D * E);
+ const double e = A * B * C * D * E;
+ double roots[4];
+ bool oneHint = approximately_zero(A + b + c + d + e);
+ int rootCount = reducedQuarticRoots(A, b, c, d, e, oneHint, roots);
+ if (rootCount < 0) {
+ rootCount = quarticRootsReal(0, A, b, c, d, e, roots);
+ }
+ const int expected = 1 + (B != C) + (B != D && C != D) + (B != E && C != E && D != E);
+ SkASSERT(rootCount == expected);
+ SkASSERT(AlmostEqualUlps(roots[0], -B)
+ || AlmostEqualUlps(roots[0], -C)
+ || AlmostEqualUlps(roots[0], -D)
+ || AlmostEqualUlps(roots[0], -E));
+ if (expected <= 1) {
+ return;
+ }
+ SkASSERT(!AlmostEqualUlps(roots[0], roots[1]));
+ SkASSERT(AlmostEqualUlps(roots[1], -B)
+ || AlmostEqualUlps(roots[1], -C)
+ || AlmostEqualUlps(roots[1], -D)
+ || AlmostEqualUlps(roots[1], -E));
+ if (expected <= 2) {
+ return;
+ }
+ SkASSERT(!AlmostEqualUlps(roots[0], roots[2])
+ && !AlmostEqualUlps(roots[1], roots[2]));
+ SkASSERT(AlmostEqualUlps(roots[2], -B)
+ || AlmostEqualUlps(roots[2], -C)
+ || AlmostEqualUlps(roots[2], -D)
+ || AlmostEqualUlps(roots[2], -E));
+ if (expected <= 3) {
+ return;
+ }
+ SkASSERT(!AlmostEqualUlps(roots[0], roots[3])
+ && !AlmostEqualUlps(roots[1], roots[3])
+ && !AlmostEqualUlps(roots[2], roots[3]));
+ SkASSERT(AlmostEqualUlps(roots[3], -B)
+ || AlmostEqualUlps(roots[3], -C)
+ || AlmostEqualUlps(roots[3], -D)
+ || AlmostEqualUlps(roots[3], -E));
+}
+
+static void quarticTest() {
+ // (x - a)(x - b)(x - c)(x - d) == x^4 - (a + b + c + d)x^3
+ // + (ab + bc + cd + ac + bd + cd)x^2 - (abc + bcd + abd + acd) * x + abcd
+ for (size_t aIndex = 0; aIndex < mulACount; ++aIndex) {
+ for (size_t bIndex = 0; bIndex < rootBCount; ++bIndex) {
+ for (size_t cIndex = 0; cIndex < rootCCount; ++cIndex) {
+ for (size_t dIndex = 0; dIndex < rootDCount; ++dIndex) {
+ for (size_t eIndex = 0; eIndex < rootECount; ++eIndex) {
+ testOneQuartic(aIndex, bIndex, cIndex, dIndex, eIndex);
+ }
+ }
+ }
+ }
+ }
+}
+
+void QuarticRoot_Test() {
+ testOneCubic(false, 0, 5, 5, 4);
+ testOneQuartic(0, 0, 2, 4, 3);
+ quadraticTest(true);
+ quadraticTest(false);
+ cubicTest(true);
+ cubicTest(false);
+ quarticTest();
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/ShapeOpCubic4x4_Test.cpp b/chromium/third_party/skia/experimental/Intersection/ShapeOpCubic4x4_Test.cpp
new file mode 100644
index 00000000000..d974a12bbee
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/ShapeOpCubic4x4_Test.cpp
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "EdgeWalker_Test.h"
+#include "Intersection_Tests.h"
+#include "ShapeOps.h"
+
+// four rects, of four sizes
+// for 3 smaller sizes, tall, wide
+ // top upper mid lower bottom aligned (3 bits, 5 values)
+ // same with x (3 bits, 5 values)
+// not included, square, tall, wide (2 bits)
+// cw or ccw (1 bit)
+
+int failSet[][8] = {
+ { 0, 1, 0, 6, 2, 3, 1, 4 }
+};
+
+static void* testShapeOps4x4CubicsMain(void* data)
+{
+ SkASSERT(data);
+ State4& state = *(State4*) data;
+ char pathStr[1024]; // gdb: set print elements 400
+ bzero(pathStr, sizeof(pathStr));
+ do {
+ for (int a = 0 ; a < 6; ++a) {
+ for (int b = a + 1 ; b < 7; ++b) {
+ for (int c = 0 ; c < 6; ++c) {
+ for (int d = c + 1 ; d < 7; ++d) {
+ for (int e = SkPath::kWinding_FillType ; e <= SkPath::kEvenOdd_FillType; ++e) {
+ for (int f = SkPath::kWinding_FillType ; f <= SkPath::kEvenOdd_FillType; ++f) {
+
+#if 0
+ if (state.a == fail[0] && state.b == fail[1] && state.c == fail[2] && state.d == fail[3]
+ && a == fail[4] && b == fail[5] && c == fail[6] && d == fail[7]) {
+ SkDebugf("skip failing case\n");
+ }
+ // skip this troublesome cubic pair
+#endif
+ SkPath pathA, pathB;
+ char* str = pathStr;
+ pathA.setFillType((SkPath::FillType) e);
+ str += sprintf(str, " path.setFillType(SkPath::k%s_FillType);\n",
+ e == SkPath::kWinding_FillType ? "Winding" : e == SkPath::kEvenOdd_FillType
+ ? "EvenOdd" : "?UNDEFINED");
+ pathA.moveTo(state.a, state.b);
+ str += sprintf(str, " path.moveTo(%d,%d);\n", state.a, state.b);
+ pathA.cubicTo(state.c, state.d, b, a, d, c);
+ str += sprintf(str, " path.cubicTo(%d,%d, %d,%d, %d,%d);\n", state.c, state.d,
+ b, a, d, c);
+ pathA.close();
+ str += sprintf(str, " path.close();\n");
+ pathB.setFillType((SkPath::FillType) f);
+ str += sprintf(str, " pathB.setFillType(SkPath::k%s_FillType);\n",
+ f == SkPath::kWinding_FillType ? "Winding" : f == SkPath::kEvenOdd_FillType
+ ? "EvenOdd" : "?UNDEFINED");
+ pathB.moveTo(a, b);
+ str += sprintf(str, " pathB.moveTo(%d,%d);\n", a, b);
+ pathB.cubicTo(c, d, state.b, state.a, state.d, state.c);
+ str += sprintf(str, " pathB.cubicTo(%d,%d, %d,%d, %d,%d);\n", c, d,
+ state.b, state.a, state.d, state.c);
+ pathB.close();
+ str += sprintf(str, " pathB.close();\n");
+ for (int op = 0 ; op < kShapeOp_Count; ++op) {
+ outputProgress(state, pathStr, (ShapeOp) op);
+ testShapeOp(pathA, pathB, (ShapeOp) op);
+ state.testsRun++;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ } while (runNextTestSet(state));
+ return NULL;
+}
+
+void ShapeOps4x4CubicsThreaded_Test(int& testsRun)
+{
+ SkDebugf("%s\n", __FUNCTION__);
+#ifdef SK_DEBUG
+ gDebugMaxWindSum = 4;
+ gDebugMaxWindValue = 4;
+#endif
+ const char testLineStr[] = "cubicOp";
+ initializeTests(testLineStr, sizeof(testLineStr));
+ int testsStart = testsRun;
+ for (int a = 0; a < 6; ++a) { // outermost
+ for (int b = a + 1; b < 7; ++b) {
+ for (int c = 0 ; c < 6; ++c) {
+ for (int d = c + 1; d < 7; ++d) {
+ testsRun += dispatchTest4(testShapeOps4x4CubicsMain, a, b, c, d);
+ }
+ if (!gRunTestsInOneThread) SkDebugf(".");
+ }
+ if (!gRunTestsInOneThread) SkDebugf("%d", b);
+ }
+ if (!gRunTestsInOneThread) SkDebugf("\n%d", a);
+ }
+ testsRun += waitForCompletion();
+ SkDebugf("%s tests=%d total=%d\n", __FUNCTION__, testsRun - testsStart, testsRun);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/ShapeOpRect4x4_Test.cpp b/chromium/third_party/skia/experimental/Intersection/ShapeOpRect4x4_Test.cpp
new file mode 100644
index 00000000000..e6e44c14412
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/ShapeOpRect4x4_Test.cpp
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "EdgeWalker_Test.h"
+#include "Intersection_Tests.h"
+#include "ShapeOps.h"
+
+// four rects, of four sizes
+// for 3 smaller sizes, tall, wide
+ // top upper mid lower bottom aligned (3 bits, 5 values)
+ // same with x (3 bits, 5 values)
+// not included, square, tall, wide (2 bits)
+// cw or ccw (1 bit)
+
+static void* testShapeOps4x4RectsMain(void* data)
+{
+ SkASSERT(data);
+ State4& state = *(State4*) data;
+ char pathStr[1024]; // gdb: set print elements 400
+ bzero(pathStr, sizeof(pathStr));
+ do {
+ for (int a = 0 ; a < 6; ++a) {
+ for (int b = a + 1 ; b < 7; ++b) {
+ for (int c = 0 ; c < 6; ++c) {
+ for (int d = c + 1 ; d < 7; ++d) {
+ for (int e = SkPath::kWinding_FillType ; e <= SkPath::kEvenOdd_FillType; ++e) {
+ for (int f = SkPath::kWinding_FillType ; f <= SkPath::kEvenOdd_FillType; ++f) {
+ SkPath pathA, pathB;
+ char* str = pathStr;
+ pathA.setFillType((SkPath::FillType) e);
+ str += sprintf(str, " path.setFillType(SkPath::k%s_FillType);\n",
+ e == SkPath::kWinding_FillType ? "Winding" : e == SkPath::kEvenOdd_FillType
+ ? "EvenOdd" : "?UNDEFINED");
+ pathA.addRect(state.a, state.a, state.b, state.b, SkPath::kCW_Direction);
+ str += sprintf(str, " path.addRect(%d, %d, %d, %d,"
+ " SkPath::kCW_Direction);\n", state.a, state.a, state.b, state.b);
+ pathA.addRect(state.c, state.c, state.d, state.d, SkPath::kCW_Direction);
+ str += sprintf(str, " path.addRect(%d, %d, %d, %d,"
+ " SkPath::kCW_Direction);\n", state.c, state.c, state.d, state.d);
+ pathA.close();
+ pathB.setFillType((SkPath::FillType) f);
+ str += sprintf(str, " pathB.setFillType(SkPath::k%s_FillType);\n",
+ f == SkPath::kWinding_FillType ? "Winding" : f == SkPath::kEvenOdd_FillType
+ ? "EvenOdd" : "?UNDEFINED");
+ pathB.addRect(a, a, b, b, SkPath::kCW_Direction);
+ str += sprintf(str, " pathB.addRect(%d, %d, %d, %d,"
+ " SkPath::kCW_Direction);\n", a, a, b, b);
+ pathB.addRect(c, c, d, d, SkPath::kCW_Direction);
+ str += sprintf(str, " pathB.addRect(%d, %d, %d, %d,"
+ " SkPath::kCW_Direction);\n", c, c, d, d);
+ pathB.close();
+ for (int op = 0 ; op < kShapeOp_Count; ++op) {
+ outputProgress(state, pathStr, (ShapeOp) op);
+ testShapeOp(pathA, pathB, (ShapeOp) op);
+ state.testsRun++;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ } while (runNextTestSet(state));
+ return NULL;
+}
+
+void ShapeOps4x4RectsThreaded_Test(int& testsRun)
+{
+ SkDebugf("%s\n", __FUNCTION__);
+#ifdef SK_DEBUG
+ gDebugMaxWindSum = 4;
+ gDebugMaxWindValue = 4;
+#endif
+ const char testLineStr[] = "testOp";
+ initializeTests(testLineStr, sizeof(testLineStr));
+ int testsStart = testsRun;
+ for (int a = 0; a < 6; ++a) { // outermost
+ for (int b = a + 1; b < 7; ++b) {
+ for (int c = 0 ; c < 6; ++c) {
+ for (int d = c + 1; d < 7; ++d) {
+ testsRun += dispatchTest4(testShapeOps4x4RectsMain, a, b, c, d);
+ }
+ if (!gRunTestsInOneThread) SkDebugf(".");
+ }
+ if (!gRunTestsInOneThread) SkDebugf("%d", b);
+ }
+ if (!gRunTestsInOneThread) SkDebugf("\n%d", a);
+ }
+ testsRun += waitForCompletion();
+ SkDebugf("%s tests=%d total=%d\n", __FUNCTION__, testsRun - testsStart, testsRun);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/ShapeOps.cpp b/chromium/third_party/skia/experimental/Intersection/ShapeOps.cpp
new file mode 100644
index 00000000000..e58a9e69f26
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/ShapeOps.cpp
@@ -0,0 +1,279 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Simplify.h"
+
+namespace Op {
+
+#define INCLUDED_BY_SHAPE_OPS 1
+
+#include "Simplify.cpp"
+
+// FIXME: this and find chase should be merge together, along with
+// other code that walks winding in angles
+// OPTIMIZATION: Probably, the walked winding should be rolled into the angle structure
+// so it isn't duplicated by walkers like this one
+static Segment* findChaseOp(SkTDArray<Span*>& chase, int& nextStart, int& nextEnd) {
+ while (chase.count()) {
+ Span* span;
+ chase.pop(&span);
+ const Span& backPtr = span->fOther->span(span->fOtherIndex);
+ Segment* segment = backPtr.fOther;
+ nextStart = backPtr.fOtherIndex;
+ SkTDArray<Angle> angles;
+ int done = 0;
+ if (segment->activeAngle(nextStart, done, angles)) {
+ Angle* last = angles.end() - 1;
+ nextStart = last->start();
+ nextEnd = last->end();
+ #if TRY_ROTATE
+ *chase.insert(0) = span;
+ #else
+ *chase.append() = span;
+ #endif
+ return last->segment();
+ }
+ if (done == angles.count()) {
+ continue;
+ }
+ SkTDArray<Angle*> sorted;
+ bool sortable = Segment::SortAngles(angles, sorted);
+ int angleCount = sorted.count();
+#if DEBUG_SORT
+ sorted[0]->segment()->debugShowSort(__FUNCTION__, sorted, 0);
+#endif
+ if (!sortable) {
+ continue;
+ }
+ // find first angle, initialize winding to computed fWindSum
+ int firstIndex = -1;
+ const Angle* angle;
+ do {
+ angle = sorted[++firstIndex];
+ segment = angle->segment();
+ } while (segment->windSum(angle) == SK_MinS32);
+ #if DEBUG_SORT
+ segment->debugShowSort(__FUNCTION__, sorted, firstIndex);
+ #endif
+ int sumMiWinding = segment->updateWindingReverse(angle);
+ int sumSuWinding = segment->updateOppWindingReverse(angle);
+ if (segment->operand()) {
+ SkTSwap<int>(sumMiWinding, sumSuWinding);
+ }
+ int nextIndex = firstIndex + 1;
+ int lastIndex = firstIndex != 0 ? firstIndex : angleCount;
+ Segment* first = NULL;
+ do {
+ SkASSERT(nextIndex != firstIndex);
+ if (nextIndex == angleCount) {
+ nextIndex = 0;
+ }
+ angle = sorted[nextIndex];
+ segment = angle->segment();
+ int start = angle->start();
+ int end = angle->end();
+ int maxWinding, sumWinding, oppMaxWinding, oppSumWinding;
+ segment->setUpWindings(start, end, sumMiWinding, sumSuWinding,
+ maxWinding, sumWinding, oppMaxWinding, oppSumWinding);
+ if (!segment->done(angle)) {
+ if (!first) {
+ first = segment;
+ nextStart = start;
+ nextEnd = end;
+ }
+ (void) segment->markAngle(maxWinding, sumWinding, oppMaxWinding,
+ oppSumWinding, true, angle);
+ }
+ } while (++nextIndex != lastIndex);
+ if (first) {
+ #if TRY_ROTATE
+ *chase.insert(0) = span;
+ #else
+ *chase.append() = span;
+ #endif
+ return first;
+ }
+ }
+ return NULL;
+}
+
+/*
+static bool windingIsActive(int winding, int oppWinding, int spanWinding, int oppSpanWinding,
+ bool windingIsOp, ShapeOp op) {
+ bool active = windingIsActive(winding, spanWinding);
+ if (!active) {
+ return false;
+ }
+ if (oppSpanWinding && windingIsActive(oppWinding, oppSpanWinding)) {
+ switch (op) {
+ case kIntersect_Op:
+ case kUnion_Op:
+ return true;
+ case kDifference_Op: {
+ int absSpan = abs(spanWinding);
+ int absOpp = abs(oppSpanWinding);
+ return windingIsOp ? absSpan < absOpp : absSpan > absOpp;
+ }
+ case kXor_Op:
+ return spanWinding != oppSpanWinding;
+ default:
+ SkASSERT(0);
+ }
+ }
+ bool opActive = oppWinding != 0;
+ return gOpLookup[op][opActive][windingIsOp];
+}
+*/
+
+static bool bridgeOp(SkTDArray<Contour*>& contourList, const ShapeOp op,
+ const int xorMask, const int xorOpMask, PathWrapper& simple) {
+ bool firstContour = true;
+ bool unsortable = false;
+ bool topUnsortable = false;
+ SkPoint topLeft = {SK_ScalarMin, SK_ScalarMin};
+ do {
+ int index, endIndex;
+ bool done;
+ Segment* current = findSortableTop(contourList, firstContour, index, endIndex, topLeft,
+ topUnsortable, done, true);
+ if (!current) {
+ if (topUnsortable || !done) {
+ topUnsortable = false;
+ SkASSERT(topLeft.fX != SK_ScalarMin && topLeft.fY != SK_ScalarMin);
+ topLeft.fX = topLeft.fY = SK_ScalarMin;
+ continue;
+ }
+ break;
+ }
+ SkTDArray<Span*> chaseArray;
+ do {
+ if (current->activeOp(index, endIndex, xorMask, xorOpMask, op)) {
+ do {
+ #if DEBUG_ACTIVE_SPANS
+ if (!unsortable && current->done()) {
+ debugShowActiveSpans(contourList);
+ }
+ #endif
+ SkASSERT(unsortable || !current->done());
+ int nextStart = index;
+ int nextEnd = endIndex;
+ Segment* next = current->findNextOp(chaseArray, nextStart, nextEnd,
+ unsortable, op, xorMask, xorOpMask);
+ if (!next) {
+ if (!unsortable && simple.hasMove()
+ && current->verb() != SkPath::kLine_Verb
+ && !simple.isClosed()) {
+ current->addCurveTo(index, endIndex, simple, true);
+ SkASSERT(simple.isClosed());
+ }
+ break;
+ }
+ #if DEBUG_FLOW
+ SkDebugf("%s current id=%d from=(%1.9g,%1.9g) to=(%1.9g,%1.9g)\n", __FUNCTION__,
+ current->debugID(), current->xyAtT(index).fX, current->xyAtT(index).fY,
+ current->xyAtT(endIndex).fX, current->xyAtT(endIndex).fY);
+ #endif
+ current->addCurveTo(index, endIndex, simple, true);
+ current = next;
+ index = nextStart;
+ endIndex = nextEnd;
+ } while (!simple.isClosed() && ((!unsortable)
+ || !current->done(SkMin32(index, endIndex))));
+ if (current->activeWinding(index, endIndex) && !simple.isClosed()) {
+ SkASSERT(unsortable);
+ int min = SkMin32(index, endIndex);
+ if (!current->done(min)) {
+ current->addCurveTo(index, endIndex, simple, true);
+ current->markDoneBinary(min);
+ }
+ }
+ simple.close();
+ } else {
+ Span* last = current->markAndChaseDoneBinary(index, endIndex);
+ if (last && !last->fLoop) {
+ *chaseArray.append() = last;
+ }
+ }
+ current = findChaseOp(chaseArray, index, endIndex);
+ #if DEBUG_ACTIVE_SPANS
+ debugShowActiveSpans(contourList);
+ #endif
+ if (!current) {
+ break;
+ }
+ } while (true);
+ } while (true);
+ return simple.someAssemblyRequired();
+}
+
+} // end of Op namespace
+
+
+void operate(const SkPath& one, const SkPath& two, ShapeOp op, SkPath& result) {
+#if DEBUG_SORT || DEBUG_SWAP_TOP
+ Op::gDebugSortCount = Op::gDebugSortCountDefault;
+#endif
+ result.reset();
+ result.setFillType(SkPath::kEvenOdd_FillType);
+ // turn path into list of segments
+ SkTArray<Op::Contour> contours;
+ // FIXME: add self-intersecting cubics' T values to segment
+ Op::EdgeBuilder builder(one, contours);
+ const int xorMask = builder.xorMask();
+ builder.addOperand(two);
+ builder.finish();
+ const int xorOpMask = builder.xorMask();
+ SkTDArray<Op::Contour*> contourList;
+ makeContourList(contours, contourList, xorMask == kEvenOdd_Mask,
+ xorOpMask == kEvenOdd_Mask);
+ Op::Contour** currentPtr = contourList.begin();
+ if (!currentPtr) {
+ return;
+ }
+ Op::Contour** listEnd = contourList.end();
+ // find all intersections between segments
+ do {
+ Op::Contour** nextPtr = currentPtr;
+ Op::Contour* current = *currentPtr++;
+ if (current->containsCubics()) {
+ addSelfIntersectTs(current);
+ }
+ Op::Contour* next;
+ do {
+ next = *nextPtr++;
+ } while (addIntersectTs(current, next) && nextPtr != listEnd);
+ } while (currentPtr != listEnd);
+ // eat through coincident edges
+
+ int total = 0;
+ int index;
+ for (index = 0; index < contourList.count(); ++index) {
+ total += contourList[index]->segments().count();
+ }
+#if DEBUG_SHOW_WINDING
+ Op::Contour::debugShowWindingValues(contourList);
+#endif
+ coincidenceCheck(contourList, total);
+#if DEBUG_SHOW_WINDING
+ Op::Contour::debugShowWindingValues(contourList);
+#endif
+ fixOtherTIndex(contourList);
+ sortSegments(contourList);
+#if DEBUG_ACTIVE_SPANS
+ debugShowActiveSpans(contourList);
+#endif
+ // construct closed contours
+ Op::PathWrapper wrapper(result);
+ bridgeOp(contourList, op, xorMask, xorOpMask, wrapper);
+ { // if some edges could not be resolved, assemble remaining fragments
+ SkPath temp;
+ temp.setFillType(SkPath::kEvenOdd_FillType);
+ Op::PathWrapper assembled(temp);
+ assemble(wrapper, assembled);
+ result = *assembled.nativePath();
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/ShapeOps.h b/chromium/third_party/skia/experimental/Intersection/ShapeOps.h
new file mode 100644
index 00000000000..d6959b9ed10
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/ShapeOps.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "SkPath.h"
+
+// region-inspired approach
+void contourBounds(const SkPath& path, SkTDArray<SkRect>& boundsArray);
+void simplify(const SkPath& path, bool asFill, SkPath& simple);
+
+// contour outer edge walking approach
+#ifndef DEFINE_SHAPE_OP
+// FIXME: namespace testing doesn't allow global enums like this
+#define DEFINE_SHAPE_OP
+enum ShapeOp {
+ kDifference_Op,
+ kIntersect_Op,
+ kUnion_Op,
+ kXor_Op,
+ kShapeOp_Count
+};
+
+enum ShapeOpMask {
+ kWinding_Mask = -1,
+ kNo_Mask = 0,
+ kEvenOdd_Mask = 1
+};
+#endif
+
+void operate(const SkPath& one, const SkPath& two, ShapeOp op, SkPath& result);
+void simplifyx(const SkPath& path, SkPath& simple);
+
+// FIXME: remove this section once debugging is complete
+extern const bool gRunTestsInOneThread;
+#ifdef SK_DEBUG
+extern int gDebugMaxWindSum;
+extern int gDebugMaxWindValue;
+#endif
diff --git a/chromium/third_party/skia/experimental/Intersection/Simplify.cpp b/chromium/third_party/skia/experimental/Intersection/Simplify.cpp
new file mode 100644
index 00000000000..d99cdf315e9
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/Simplify.cpp
@@ -0,0 +1,6608 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "Simplify.h"
+
+#undef SkASSERT
+#define SkASSERT(cond) while (!(cond)) { sk_throw(); }
+
+// Terminology:
+// A Path contains one of more Contours
+// A Contour is made up of Segment array
+// A Segment is described by a Verb and a Point array with 2, 3, or 4 points
+// A Verb is one of Line, Quad(ratic), or Cubic
+// A Segment contains a Span array
+// A Span is describes a portion of a Segment using starting and ending T
+// T values range from 0 to 1, where 0 is the first Point in the Segment
+// An Edge is a Segment generated from a Span
+
+// FIXME: remove once debugging is complete
+#ifdef SK_DEBUG
+int gDebugMaxWindSum = SK_MaxS32;
+int gDebugMaxWindValue = SK_MaxS32;
+#endif
+
+#define PIN_ADD_T 0
+#define TRY_ROTATE 1
+#define ONE_PASS_COINCIDENCE_CHECK 0
+#define APPROXIMATE_CUBICS 1
+#define COMPACT_DEBUG_SORT 0
+
+#define DEBUG_UNUSED 0 // set to expose unused functions
+
+#if FORCE_RELEASE || defined SK_RELEASE
+
+const bool gRunTestsInOneThread = false;
+
+#define DEBUG_ACTIVE_OP 0
+#define DEBUG_ACTIVE_SPANS 0
+#define DEBUG_ACTIVE_SPANS_SHORT_FORM 0
+#define DEBUG_ADD_INTERSECTING_TS 0
+#define DEBUG_ADD_T_PAIR 0
+#define DEBUG_ANGLE 0
+#define DEBUG_AS_C_CODE 1
+#define DEBUG_ASSEMBLE 0
+#define DEBUG_CONCIDENT 0
+#define DEBUG_CROSS 0
+#define DEBUG_FLOW 0
+#define DEBUG_MARK_DONE 0
+#define DEBUG_PATH_CONSTRUCTION 0
+#define DEBUG_SHOW_WINDING 0
+#define DEBUG_SORT 0
+#define DEBUG_SWAP_TOP 0
+#define DEBUG_UNSORTABLE 0
+#define DEBUG_WIND_BUMP 0
+#define DEBUG_WINDING 0
+#define DEBUG_WINDING_AT_T 0
+
+#else
+
+const bool gRunTestsInOneThread = true;
+
+#define DEBUG_ACTIVE_OP 1
+#define DEBUG_ACTIVE_SPANS 1
+#define DEBUG_ACTIVE_SPANS_SHORT_FORM 0
+#define DEBUG_ADD_INTERSECTING_TS 1
+#define DEBUG_ADD_T_PAIR 1
+#define DEBUG_ANGLE 1
+#define DEBUG_AS_C_CODE 1
+#define DEBUG_ASSEMBLE 1
+#define DEBUG_CONCIDENT 1
+#define DEBUG_CROSS 0
+#define DEBUG_FLOW 1
+#define DEBUG_MARK_DONE 1
+#define DEBUG_PATH_CONSTRUCTION 1
+#define DEBUG_SHOW_WINDING 0
+#define DEBUG_SORT 1
+#define DEBUG_SWAP_TOP 1
+#define DEBUG_UNSORTABLE 1
+#define DEBUG_WIND_BUMP 0
+#define DEBUG_WINDING 1
+#define DEBUG_WINDING_AT_T 1
+
+#endif
+
+#define DEBUG_DUMP (DEBUG_ACTIVE_OP | DEBUG_ACTIVE_SPANS | DEBUG_CONCIDENT | DEBUG_SORT | \
+ DEBUG_PATH_CONSTRUCTION)
+
+#if DEBUG_AS_C_CODE
+#define CUBIC_DEBUG_STR "{{%1.17g,%1.17g}, {%1.17g,%1.17g}, {%1.17g,%1.17g}, {%1.17g,%1.17g}}"
+#define QUAD_DEBUG_STR "{{%1.17g,%1.17g}, {%1.17g,%1.17g}, {%1.17g,%1.17g}}"
+#define LINE_DEBUG_STR "{{%1.17g,%1.17g}, {%1.17g,%1.17g}}"
+#define PT_DEBUG_STR "{{%1.17g,%1.17g}}"
+#else
+#define CUBIC_DEBUG_STR "(%1.9g,%1.9g %1.9g,%1.9g %1.9g,%1.9g %1.9g,%1.9g)"
+#define QUAD_DEBUG_STR "(%1.9g,%1.9g %1.9g,%1.9g %1.9g,%1.9g)"
+#define LINE_DEBUG_STR "(%1.9g,%1.9g %1.9g,%1.9g)"
+#define PT_DEBUG_STR "(%1.9g,%1.9g)"
+#endif
+#define T_DEBUG_STR(t, n) #t "[" #n "]=%1.9g"
+#define TX_DEBUG_STR(t) #t "[%d]=%1.9g"
+#define CUBIC_DEBUG_DATA(c) c[0].fX, c[0].fY, c[1].fX, c[1].fY, c[2].fX, c[2].fY, c[3].fX, c[3].fY
+#define QUAD_DEBUG_DATA(q) q[0].fX, q[0].fY, q[1].fX, q[1].fY, q[2].fX, q[2].fY
+#define LINE_DEBUG_DATA(l) l[0].fX, l[0].fY, l[1].fX, l[1].fY
+#define PT_DEBUG_DATA(i, n) i.fPt[n].x, i.fPt[n].y
+
+#if DEBUG_DUMP
+static const char* kLVerbStr[] = {"", "line", "quad", "cubic"};
+// static const char* kUVerbStr[] = {"", "Line", "Quad", "Cubic"};
+static int gContourID;
+static int gSegmentID;
+#endif
+
+#if DEBUG_SORT || DEBUG_SWAP_TOP
+static int gDebugSortCountDefault = SK_MaxS32;
+static int gDebugSortCount;
+#endif
+
+#if DEBUG_ACTIVE_OP
+static const char* kShapeOpStr[] = {"diff", "sect", "union", "xor"};
+#endif
+
+#ifndef DEBUG_TEST
+#define DEBUG_TEST 0
+#endif
+
+#define MAKE_CONST_LINE(line, pts) \
+ const _Line line = {{pts[0].fX, pts[0].fY}, {pts[1].fX, pts[1].fY}}
+#define MAKE_CONST_QUAD(quad, pts) \
+ const Quadratic quad = {{pts[0].fX, pts[0].fY}, {pts[1].fX, pts[1].fY}, \
+ {pts[2].fX, pts[2].fY}}
+#define MAKE_CONST_CUBIC(cubic, pts) \
+ const Cubic cubic = {{pts[0].fX, pts[0].fY}, {pts[1].fX, pts[1].fY}, \
+ {pts[2].fX, pts[2].fY}, {pts[3].fX, pts[3].fY}}
+
+static int LineIntersect(const SkPoint a[2], const SkPoint b[2],
+ Intersections& intersections) {
+ MAKE_CONST_LINE(aLine, a);
+ MAKE_CONST_LINE(bLine, b);
+ return intersect(aLine, bLine, intersections);
+}
+
+static int QuadLineIntersect(const SkPoint a[3], const SkPoint b[2],
+ Intersections& intersections) {
+ MAKE_CONST_QUAD(aQuad, a);
+ MAKE_CONST_LINE(bLine, b);
+ return intersect(aQuad, bLine, intersections);
+}
+
+static int CubicLineIntersect(const SkPoint a[4], const SkPoint b[2],
+ Intersections& intersections) {
+ MAKE_CONST_CUBIC(aCubic, a);
+ MAKE_CONST_LINE(bLine, b);
+ return intersect(aCubic, bLine, intersections);
+}
+
+static int QuadIntersect(const SkPoint a[3], const SkPoint b[3],
+ Intersections& intersections) {
+ MAKE_CONST_QUAD(aQuad, a);
+ MAKE_CONST_QUAD(bQuad, b);
+#define TRY_QUARTIC_SOLUTION 1
+#if TRY_QUARTIC_SOLUTION
+ intersect2(aQuad, bQuad, intersections);
+#else
+ intersect(aQuad, bQuad, intersections);
+#endif
+ return intersections.fUsed;
+}
+
+#if APPROXIMATE_CUBICS
+static int CubicQuadIntersect(const SkPoint a[4], const SkPoint b[3],
+ Intersections& intersections) {
+ MAKE_CONST_CUBIC(aCubic, a);
+ MAKE_CONST_QUAD(bQuad, b);
+ return intersect(aCubic, bQuad, intersections);
+}
+#endif
+
+static int CubicIntersect(const SkPoint a[4], const SkPoint b[4], Intersections& intersections) {
+ MAKE_CONST_CUBIC(aCubic, a);
+ MAKE_CONST_CUBIC(bCubic, b);
+#if APPROXIMATE_CUBICS
+ intersect3(aCubic, bCubic, intersections);
+#else
+ intersect(aCubic, bCubic, intersections);
+#endif
+ return intersections.fUsed;
+}
+
+static int CubicIntersect(const SkPoint a[4], Intersections& intersections) {
+ MAKE_CONST_CUBIC(aCubic, a);
+ return intersect(aCubic, intersections);
+}
+
+static int HLineIntersect(const SkPoint a[2], SkScalar left, SkScalar right,
+ SkScalar y, bool flipped, Intersections& intersections) {
+ MAKE_CONST_LINE(aLine, a);
+ return horizontalIntersect(aLine, left, right, y, flipped, intersections);
+}
+
+static int HQuadIntersect(const SkPoint a[3], SkScalar left, SkScalar right,
+ SkScalar y, bool flipped, Intersections& intersections) {
+ MAKE_CONST_QUAD(aQuad, a);
+ return horizontalIntersect(aQuad, left, right, y, flipped, intersections);
+}
+
+static int HCubicIntersect(const SkPoint a[4], SkScalar left, SkScalar right,
+ SkScalar y, bool flipped, Intersections& intersections) {
+ MAKE_CONST_CUBIC(aCubic, a);
+ return horizontalIntersect(aCubic, left, right, y, flipped, intersections);
+}
+
+static int (* const HSegmentIntersect[])(const SkPoint [], SkScalar ,
+ SkScalar , SkScalar , bool , Intersections& ) = {
+ NULL,
+ HLineIntersect,
+ HQuadIntersect,
+ HCubicIntersect
+};
+
+static int VLineIntersect(const SkPoint a[2], SkScalar top, SkScalar bottom,
+ SkScalar x, bool flipped, Intersections& intersections) {
+ MAKE_CONST_LINE(aLine, a);
+ return verticalIntersect(aLine, top, bottom, x, flipped, intersections);
+}
+
+static int VQuadIntersect(const SkPoint a[3], SkScalar top, SkScalar bottom,
+ SkScalar x, bool flipped, Intersections& intersections) {
+ MAKE_CONST_QUAD(aQuad, a);
+ return verticalIntersect(aQuad, top, bottom, x, flipped, intersections);
+}
+
+static int VCubicIntersect(const SkPoint a[4], SkScalar top, SkScalar bottom,
+ SkScalar x, bool flipped, Intersections& intersections) {
+ MAKE_CONST_CUBIC(aCubic, a);
+ return verticalIntersect(aCubic, top, bottom, x, flipped, intersections);
+}
+
+static int (* const VSegmentIntersect[])(const SkPoint [], SkScalar ,
+ SkScalar , SkScalar , bool , Intersections& ) = {
+ NULL,
+ VLineIntersect,
+ VQuadIntersect,
+ VCubicIntersect
+};
+
+static void LineXYAtT(const SkPoint a[2], double t, SkPoint* out) {
+ MAKE_CONST_LINE(line, a);
+ double x, y;
+ xy_at_t(line, t, x, y);
+ out->fX = SkDoubleToScalar(x);
+ out->fY = SkDoubleToScalar(y);
+}
+
+static void LineXYAtT(const SkPoint a[2], double t, _Point* out) {
+ MAKE_CONST_LINE(line, a);
+ xy_at_t(line, t, out->x, out->y);
+}
+
+static void QuadXYAtT(const SkPoint a[3], double t, SkPoint* out) {
+ MAKE_CONST_QUAD(quad, a);
+ double x, y;
+ xy_at_t(quad, t, x, y);
+ out->fX = SkDoubleToScalar(x);
+ out->fY = SkDoubleToScalar(y);
+}
+
+static void QuadXYAtT(const SkPoint a[3], double t, _Point* out) {
+ MAKE_CONST_QUAD(quad, a);
+ xy_at_t(quad, t, out->x, out->y);
+}
+
+static void CubicXYAtT(const SkPoint a[4], double t, SkPoint* out) {
+ MAKE_CONST_CUBIC(cubic, a);
+ double x, y;
+ xy_at_t(cubic, t, x, y);
+ out->fX = SkDoubleToScalar(x);
+ out->fY = SkDoubleToScalar(y);
+}
+
+static void CubicXYAtT(const SkPoint a[4], double t, _Point* out) {
+ MAKE_CONST_CUBIC(cubic, a);
+ xy_at_t(cubic, t, out->x, out->y);
+}
+
+static void (* const SegmentXYAtT[])(const SkPoint [], double , SkPoint* ) = {
+ NULL,
+ LineXYAtT,
+ QuadXYAtT,
+ CubicXYAtT
+};
+
+static void (* const SegmentXYAtT2[])(const SkPoint [], double , _Point* ) = {
+ NULL,
+ LineXYAtT,
+ QuadXYAtT,
+ CubicXYAtT
+};
+
+static SkScalar LineXAtT(const SkPoint a[2], double t) {
+ MAKE_CONST_LINE(aLine, a);
+ double x;
+ xy_at_t(aLine, t, x, *(double*) 0);
+ return SkDoubleToScalar(x);
+}
+
+static SkScalar QuadXAtT(const SkPoint a[3], double t) {
+ MAKE_CONST_QUAD(quad, a);
+ double x;
+ xy_at_t(quad, t, x, *(double*) 0);
+ return SkDoubleToScalar(x);
+}
+
+static SkScalar CubicXAtT(const SkPoint a[4], double t) {
+ MAKE_CONST_CUBIC(cubic, a);
+ double x;
+ xy_at_t(cubic, t, x, *(double*) 0);
+ return SkDoubleToScalar(x);
+}
+
+static SkScalar (* const SegmentXAtT[])(const SkPoint [], double ) = {
+ NULL,
+ LineXAtT,
+ QuadXAtT,
+ CubicXAtT
+};
+
+static SkScalar LineYAtT(const SkPoint a[2], double t) {
+ MAKE_CONST_LINE(aLine, a);
+ double y;
+ xy_at_t(aLine, t, *(double*) 0, y);
+ return SkDoubleToScalar(y);
+}
+
+static SkScalar QuadYAtT(const SkPoint a[3], double t) {
+ MAKE_CONST_QUAD(quad, a);
+ double y;
+ xy_at_t(quad, t, *(double*) 0, y);
+ return SkDoubleToScalar(y);
+}
+
+static SkScalar CubicYAtT(const SkPoint a[4], double t) {
+ MAKE_CONST_CUBIC(cubic, a);
+ double y;
+ xy_at_t(cubic, t, *(double*) 0, y);
+ return SkDoubleToScalar(y);
+}
+
+static SkScalar (* const SegmentYAtT[])(const SkPoint [], double ) = {
+ NULL,
+ LineYAtT,
+ QuadYAtT,
+ CubicYAtT
+};
+
+static SkScalar LineDXAtT(const SkPoint a[2], double ) {
+ return a[1].fX - a[0].fX;
+}
+
+static SkScalar QuadDXAtT(const SkPoint a[3], double t) {
+ MAKE_CONST_QUAD(quad, a);
+ double x = dx_at_t(quad, t);
+ return SkDoubleToScalar(x);
+}
+
+static SkScalar CubicDXAtT(const SkPoint a[4], double t) {
+ MAKE_CONST_CUBIC(cubic, a);
+ double x = dx_at_t(cubic, t);
+ return SkDoubleToScalar(x);
+}
+
+static SkScalar (* const SegmentDXAtT[])(const SkPoint [], double ) = {
+ NULL,
+ LineDXAtT,
+ QuadDXAtT,
+ CubicDXAtT
+};
+
+static SkScalar LineDYAtT(const SkPoint a[2], double ) {
+ return a[1].fY - a[0].fY;
+}
+
+static SkScalar QuadDYAtT(const SkPoint a[3], double t) {
+ MAKE_CONST_QUAD(quad, a);
+ double y = dy_at_t(quad, t);
+ return SkDoubleToScalar(y);
+}
+
+static SkScalar CubicDYAtT(const SkPoint a[4], double t) {
+ MAKE_CONST_CUBIC(cubic, a);
+ double y = dy_at_t(cubic, t);
+ return SkDoubleToScalar(y);
+}
+
+static SkScalar (* const SegmentDYAtT[])(const SkPoint [], double ) = {
+ NULL,
+ LineDYAtT,
+ QuadDYAtT,
+ CubicDYAtT
+};
+
+static SkVector LineDXDYAtT(const SkPoint a[2], double ) {
+ return a[1] - a[0];
+}
+
+static SkVector QuadDXDYAtT(const SkPoint a[3], double t) {
+ MAKE_CONST_QUAD(quad, a);
+ _Vector v = dxdy_at_t(quad, t);
+ return v.asSkVector();
+}
+
+static SkVector CubicDXDYAtT(const SkPoint a[4], double t) {
+ MAKE_CONST_CUBIC(cubic, a);
+ _Vector v = dxdy_at_t(cubic, t);
+ return v.asSkVector();
+}
+
+static SkVector (* const SegmentDXDYAtT[])(const SkPoint [], double ) = {
+ NULL,
+ LineDXDYAtT,
+ QuadDXDYAtT,
+ CubicDXDYAtT
+};
+
+static void LineSubDivide(const SkPoint a[2], double startT, double endT,
+ SkPoint sub[2]) {
+ MAKE_CONST_LINE(aLine, a);
+ _Line dst;
+ sub_divide(aLine, startT, endT, dst);
+ sub[0].fX = SkDoubleToScalar(dst[0].x);
+ sub[0].fY = SkDoubleToScalar(dst[0].y);
+ sub[1].fX = SkDoubleToScalar(dst[1].x);
+ sub[1].fY = SkDoubleToScalar(dst[1].y);
+}
+
+static void QuadSubDivide(const SkPoint a[3], double startT, double endT,
+ SkPoint sub[3]) {
+ MAKE_CONST_QUAD(aQuad, a);
+ Quadratic dst;
+ sub_divide(aQuad, startT, endT, dst);
+ sub[0].fX = SkDoubleToScalar(dst[0].x);
+ sub[0].fY = SkDoubleToScalar(dst[0].y);
+ sub[1].fX = SkDoubleToScalar(dst[1].x);
+ sub[1].fY = SkDoubleToScalar(dst[1].y);
+ sub[2].fX = SkDoubleToScalar(dst[2].x);
+ sub[2].fY = SkDoubleToScalar(dst[2].y);
+}
+
+static void CubicSubDivide(const SkPoint a[4], double startT, double endT,
+ SkPoint sub[4]) {
+ MAKE_CONST_CUBIC(aCubic, a);
+ Cubic dst;
+ sub_divide(aCubic, startT, endT, dst);
+ sub[0].fX = SkDoubleToScalar(dst[0].x);
+ sub[0].fY = SkDoubleToScalar(dst[0].y);
+ sub[1].fX = SkDoubleToScalar(dst[1].x);
+ sub[1].fY = SkDoubleToScalar(dst[1].y);
+ sub[2].fX = SkDoubleToScalar(dst[2].x);
+ sub[2].fY = SkDoubleToScalar(dst[2].y);
+ sub[3].fX = SkDoubleToScalar(dst[3].x);
+ sub[3].fY = SkDoubleToScalar(dst[3].y);
+}
+
+static void (* const SegmentSubDivide[])(const SkPoint [], double , double ,
+ SkPoint []) = {
+ NULL,
+ LineSubDivide,
+ QuadSubDivide,
+ CubicSubDivide
+};
+
+static void LineSubDivideHD(const SkPoint a[2], double startT, double endT, _Line& dst) {
+ MAKE_CONST_LINE(aLine, a);
+ sub_divide(aLine, startT, endT, dst);
+}
+
+static void QuadSubDivideHD(const SkPoint a[3], double startT, double endT, Quadratic& dst) {
+ MAKE_CONST_QUAD(aQuad, a);
+ sub_divide(aQuad, startT, endT, dst);
+}
+
+static void CubicSubDivideHD(const SkPoint a[4], double startT, double endT, Cubic& dst) {
+ MAKE_CONST_CUBIC(aCubic, a);
+ sub_divide(aCubic, startT, endT, dst);
+}
+
+static SkPoint QuadTop(const SkPoint a[3], double startT, double endT) {
+ MAKE_CONST_QUAD(quad, a);
+ _Point topPt = top(quad, startT, endT);
+ return topPt.asSkPoint();
+}
+
+static SkPoint CubicTop(const SkPoint a[3], double startT, double endT) {
+ MAKE_CONST_CUBIC(cubic, a);
+ _Point topPt = top(cubic, startT, endT);
+ return topPt.asSkPoint();
+}
+
+static SkPoint (* SegmentTop[])(const SkPoint[], double , double ) = {
+ NULL,
+ NULL,
+ QuadTop,
+ CubicTop
+};
+
+#if DEBUG_UNUSED
+static void QuadSubBounds(const SkPoint a[3], double startT, double endT,
+ SkRect& bounds) {
+ SkPoint dst[3];
+ QuadSubDivide(a, startT, endT, dst);
+ bounds.fLeft = bounds.fRight = dst[0].fX;
+ bounds.fTop = bounds.fBottom = dst[0].fY;
+ for (int index = 1; index < 3; ++index) {
+ bounds.growToInclude(dst[index].fX, dst[index].fY);
+ }
+}
+
+static void CubicSubBounds(const SkPoint a[4], double startT, double endT,
+ SkRect& bounds) {
+ SkPoint dst[4];
+ CubicSubDivide(a, startT, endT, dst);
+ bounds.fLeft = bounds.fRight = dst[0].fX;
+ bounds.fTop = bounds.fBottom = dst[0].fY;
+ for (int index = 1; index < 4; ++index) {
+ bounds.growToInclude(dst[index].fX, dst[index].fY);
+ }
+}
+#endif
+
+static SkPath::Verb QuadReduceOrder(const SkPoint a[3],
+ SkTDArray<SkPoint>& reducePts) {
+ MAKE_CONST_QUAD(aQuad, a);
+ Quadratic dst;
+ int order = reduceOrder(aQuad, dst, kReduceOrder_TreatAsFill);
+ if (order == 2) { // quad became line
+ for (int index = 0; index < order; ++index) {
+ SkPoint* pt = reducePts.append();
+ pt->fX = SkDoubleToScalar(dst[index].x);
+ pt->fY = SkDoubleToScalar(dst[index].y);
+ }
+ }
+ return (SkPath::Verb) (order - 1);
+}
+
+static SkPath::Verb CubicReduceOrder(const SkPoint a[4],
+ SkTDArray<SkPoint>& reducePts) {
+ MAKE_CONST_CUBIC(aCubic, a);
+ Cubic dst;
+ int order = reduceOrder(aCubic, dst, kReduceOrder_QuadraticsAllowed, kReduceOrder_TreatAsFill);
+ if (order == 2 || order == 3) { // cubic became line or quad
+ for (int index = 0; index < order; ++index) {
+ SkPoint* pt = reducePts.append();
+ pt->fX = SkDoubleToScalar(dst[index].x);
+ pt->fY = SkDoubleToScalar(dst[index].y);
+ }
+ }
+ return (SkPath::Verb) (order - 1);
+}
+
+static bool QuadIsLinear(const SkPoint a[3]) {
+ MAKE_CONST_QUAD(aQuad, a);
+ return isLinear(aQuad, 0, 2);
+}
+
+static bool CubicIsLinear(const SkPoint a[4]) {
+ MAKE_CONST_CUBIC(aCubic, a);
+ return isLinear(aCubic, 0, 3);
+}
+
+static SkScalar LineLeftMost(const SkPoint a[2], double startT, double endT) {
+ MAKE_CONST_LINE(aLine, a);
+ double x[2];
+ xy_at_t(aLine, startT, x[0], *(double*) 0);
+ xy_at_t(aLine, endT, x[1], *(double*) 0);
+ return SkMinScalar((float) x[0], (float) x[1]);
+}
+
+static SkScalar QuadLeftMost(const SkPoint a[3], double startT, double endT) {
+ MAKE_CONST_QUAD(aQuad, a);
+ return (float) leftMostT(aQuad, startT, endT);
+}
+
+static SkScalar CubicLeftMost(const SkPoint a[4], double startT, double endT) {
+ MAKE_CONST_CUBIC(aCubic, a);
+ return (float) leftMostT(aCubic, startT, endT);
+}
+
+static SkScalar (* const SegmentLeftMost[])(const SkPoint [], double , double) = {
+ NULL,
+ LineLeftMost,
+ QuadLeftMost,
+ CubicLeftMost
+};
+
+#if 0 // currently unused
+static int QuadRayIntersect(const SkPoint a[3], const SkPoint b[2],
+ Intersections& intersections) {
+ MAKE_CONST_QUAD(aQuad, a);
+ MAKE_CONST_LINE(bLine, b);
+ return intersectRay(aQuad, bLine, intersections);
+}
+#endif
+
+static int QuadRayIntersect(const SkPoint a[3], const _Line& bLine, Intersections& intersections) {
+ MAKE_CONST_QUAD(aQuad, a);
+ return intersectRay(aQuad, bLine, intersections);
+}
+
+static int CubicRayIntersect(const SkPoint a[3], const _Line& bLine, Intersections& intersections) {
+ MAKE_CONST_CUBIC(aCubic, a);
+ return intersectRay(aCubic, bLine, intersections);
+}
+
+static int (* const SegmentRayIntersect[])(const SkPoint [], const _Line& , Intersections&) = {
+ NULL,
+ NULL,
+ QuadRayIntersect,
+ CubicRayIntersect
+};
+
+
+
+static bool LineVertical(const SkPoint a[2], double startT, double endT) {
+ MAKE_CONST_LINE(aLine, a);
+ double x[2];
+ xy_at_t(aLine, startT, x[0], *(double*) 0);
+ xy_at_t(aLine, endT, x[1], *(double*) 0);
+ return AlmostEqualUlps((float) x[0], (float) x[1]);
+}
+
+static bool QuadVertical(const SkPoint a[3], double startT, double endT) {
+ SkPoint dst[3];
+ QuadSubDivide(a, startT, endT, dst);
+ return AlmostEqualUlps(dst[0].fX, dst[1].fX) && AlmostEqualUlps(dst[1].fX, dst[2].fX);
+}
+
+static bool CubicVertical(const SkPoint a[4], double startT, double endT) {
+ SkPoint dst[4];
+ CubicSubDivide(a, startT, endT, dst);
+ return AlmostEqualUlps(dst[0].fX, dst[1].fX) && AlmostEqualUlps(dst[1].fX, dst[2].fX)
+ && AlmostEqualUlps(dst[2].fX, dst[3].fX);
+}
+
+static bool (* const SegmentVertical[])(const SkPoint [], double , double) = {
+ NULL,
+ LineVertical,
+ QuadVertical,
+ CubicVertical
+};
+
+class Segment;
+
+struct Span {
+ Segment* fOther;
+ mutable SkPoint fPt; // lazily computed as needed
+ double fT;
+ double fOtherT; // value at fOther[fOtherIndex].fT
+ int fOtherIndex; // can't be used during intersection
+ int fWindSum; // accumulated from contours surrounding this one.
+ int fOppSum; // for binary operators: the opposite winding sum
+ int fWindValue; // 0 == canceled; 1 == normal; >1 == coincident
+ int fOppValue; // normally 0 -- when binary coincident edges combine, opp value goes here
+ bool fDone; // if set, this span to next higher T has been processed
+ bool fUnsortableStart; // set when start is part of an unsortable pair
+ bool fUnsortableEnd; // set when end is part of an unsortable pair
+ bool fTiny; // if set, span may still be considered once for edge following
+ bool fLoop; // set when a cubic loops back to this point
+};
+
+// sorting angles
+// given angles of {dx dy ddx ddy dddx dddy} sort them
+class Angle {
+public:
+ // FIXME: this is bogus for quads and cubics
+ // if the quads and cubics' line from end pt to ctrl pt are coincident,
+ // there's no obvious way to determine the curve ordering from the
+ // derivatives alone. In particular, if one quadratic's coincident tangent
+ // is longer than the other curve, the final control point can place the
+ // longer curve on either side of the shorter one.
+ // Using Bezier curve focus http://cagd.cs.byu.edu/~tom/papers/bezclip.pdf
+ // may provide some help, but nothing has been figured out yet.
+
+ /*(
+ for quads and cubics, set up a parameterized line (e.g. LineParameters )
+ for points [0] to [1]. See if point [2] is on that line, or on one side
+ or the other. If it both quads' end points are on the same side, choose
+ the shorter tangent. If the tangents are equal, choose the better second
+ tangent angle
+
+ maybe I could set up LineParameters lazily
+ */
+ bool operator<(const Angle& rh) const {
+ double y = dy();
+ double ry = rh.dy();
+ if ((y < 0) ^ (ry < 0)) { // OPTIMIZATION: better to use y * ry < 0 ?
+ return y < 0;
+ }
+ double x = dx();
+ double rx = rh.dx();
+ if (y == 0 && ry == 0 && x * rx < 0) {
+ return x < rx;
+ }
+ double x_ry = x * ry;
+ double rx_y = rx * y;
+ double cmp = x_ry - rx_y;
+ if (!approximately_zero(cmp)) {
+ return cmp < 0;
+ }
+ if (approximately_zero(x_ry) && approximately_zero(rx_y)
+ && !approximately_zero_squared(cmp)) {
+ return cmp < 0;
+ }
+ // at this point, the initial tangent line is coincident
+ // see if edges curl away from each other
+ if (fSide * rh.fSide <= 0 && (!approximately_zero(fSide)
+ || !approximately_zero(rh.fSide))) {
+ // FIXME: running demo will trigger this assertion
+ // (don't know if commenting out will trigger further assertion or not)
+ // commenting it out allows demo to run in release, though
+ // SkASSERT(fSide != rh.fSide);
+ return fSide < rh.fSide;
+ }
+ // see if either curve can be lengthened and try the tangent compare again
+ if (cmp && (*fSpans)[fEnd].fOther != rh.fSegment // tangents not absolutely identical
+ && (*rh.fSpans)[rh.fEnd].fOther != fSegment) { // and not intersecting
+ Angle longer = *this;
+ Angle rhLonger = rh;
+ if (longer.lengthen() | rhLonger.lengthen()) {
+ return longer < rhLonger;
+ }
+ #if 0
+ // what if we extend in the other direction?
+ longer = *this;
+ rhLonger = rh;
+ if (longer.reverseLengthen() | rhLonger.reverseLengthen()) {
+ return longer < rhLonger;
+ }
+ #endif
+ }
+ if ((fVerb == SkPath::kLine_Verb && approximately_zero(x) && approximately_zero(y))
+ || (rh.fVerb == SkPath::kLine_Verb
+ && approximately_zero(rx) && approximately_zero(ry))) {
+ // See general unsortable comment below. This case can happen when
+ // one line has a non-zero change in t but no change in x and y.
+ fUnsortable = true;
+ rh.fUnsortable = true;
+ return this < &rh; // even with no solution, return a stable sort
+ }
+ if ((*rh.fSpans)[SkMin32(rh.fStart, rh.fEnd)].fTiny
+ || (*fSpans)[SkMin32(fStart, fEnd)].fTiny) {
+ fUnsortable = true;
+ rh.fUnsortable = true;
+ return this < &rh; // even with no solution, return a stable sort
+ }
+ SkASSERT(fVerb >= SkPath::kQuad_Verb);
+ SkASSERT(rh.fVerb >= SkPath::kQuad_Verb);
+ // FIXME: until I can think of something better, project a ray from the
+ // end of the shorter tangent to midway between the end points
+ // through both curves and use the resulting angle to sort
+ // FIXME: some of this setup can be moved to set() if it works, or cached if it's expensive
+ double len = fTangent1.normalSquared();
+ double rlen = rh.fTangent1.normalSquared();
+ _Line ray;
+ Intersections i, ri;
+ int roots, rroots;
+ bool flip = false;
+ do {
+ bool useThis = (len < rlen) ^ flip;
+ const Cubic& part = useThis ? fCurvePart : rh.fCurvePart;
+ SkPath::Verb partVerb = useThis ? fVerb : rh.fVerb;
+ ray[0] = partVerb == SkPath::kCubic_Verb && part[0].approximatelyEqual(part[1]) ?
+ part[2] : part[1];
+ ray[1].x = (part[0].x + part[partVerb].x) / 2;
+ ray[1].y = (part[0].y + part[partVerb].y) / 2;
+ SkASSERT(ray[0] != ray[1]);
+ roots = (*SegmentRayIntersect[fVerb])(fPts, ray, i);
+ rroots = (*SegmentRayIntersect[rh.fVerb])(rh.fPts, ray, ri);
+ } while ((roots == 0 || rroots == 0) && (flip ^= true));
+ if (roots == 0 || rroots == 0) {
+ // FIXME: we don't have a solution in this case. The interim solution
+ // is to mark the edges as unsortable, exclude them from this and
+ // future computations, and allow the returned path to be fragmented
+ fUnsortable = true;
+ rh.fUnsortable = true;
+ return this < &rh; // even with no solution, return a stable sort
+ }
+ _Point loc;
+ double best = SK_ScalarInfinity;
+ double dx, dy, dist;
+ int index;
+ for (index = 0; index < roots; ++index) {
+ (*SegmentXYAtT2[fVerb])(fPts, i.fT[0][index], &loc);
+ dx = loc.x - ray[0].x;
+ dy = loc.y - ray[0].y;
+ dist = dx * dx + dy * dy;
+ if (best > dist) {
+ best = dist;
+ }
+ }
+ for (index = 0; index < rroots; ++index) {
+ (*SegmentXYAtT2[rh.fVerb])(rh.fPts, ri.fT[0][index], &loc);
+ dx = loc.x - ray[0].x;
+ dy = loc.y - ray[0].y;
+ dist = dx * dx + dy * dy;
+ if (best > dist) {
+ return fSide < 0;
+ }
+ }
+ return fSide > 0;
+ }
+
+ double dx() const {
+ return fTangent1.dx();
+ }
+
+ double dy() const {
+ return fTangent1.dy();
+ }
+
+ int end() const {
+ return fEnd;
+ }
+
+ bool isHorizontal() const {
+ return dy() == 0 && fVerb == SkPath::kLine_Verb;
+ }
+
+ bool lengthen() {
+ int newEnd = fEnd;
+ if (fStart < fEnd ? ++newEnd < fSpans->count() : --newEnd >= 0) {
+ fEnd = newEnd;
+ setSpans();
+ return true;
+ }
+ return false;
+ }
+
+ bool reverseLengthen() {
+ if (fReversed) {
+ return false;
+ }
+ int newEnd = fStart;
+ if (fStart > fEnd ? ++newEnd < fSpans->count() : --newEnd >= 0) {
+ fEnd = newEnd;
+ fReversed = true;
+ setSpans();
+ return true;
+ }
+ return false;
+ }
+
+ void set(const SkPoint* orig, SkPath::Verb verb, const Segment* segment,
+ int start, int end, const SkTDArray<Span>& spans) {
+ fSegment = segment;
+ fStart = start;
+ fEnd = end;
+ fPts = orig;
+ fVerb = verb;
+ fSpans = &spans;
+ fReversed = false;
+ fUnsortable = false;
+ setSpans();
+ }
+
+
+ void setSpans() {
+ double startT = (*fSpans)[fStart].fT;
+ double endT = (*fSpans)[fEnd].fT;
+ switch (fVerb) {
+ case SkPath::kLine_Verb:
+ _Line l;
+ LineSubDivideHD(fPts, startT, endT, l);
+ // OPTIMIZATION: for pure line compares, we never need fTangent1.c
+ fTangent1.lineEndPoints(l);
+ fSide = 0;
+ break;
+ case SkPath::kQuad_Verb: {
+ Quadratic& quad = (Quadratic&)fCurvePart;
+ QuadSubDivideHD(fPts, startT, endT, quad);
+ fTangent1.quadEndPoints(quad, 0, 1);
+ if (dx() == 0 && dy() == 0) {
+ fTangent1.quadEndPoints(quad);
+ }
+ fSide = -fTangent1.pointDistance(fCurvePart[2]); // not normalized -- compare sign only
+ } break;
+ case SkPath::kCubic_Verb: {
+ int nextC = 2;
+ CubicSubDivideHD(fPts, startT, endT, fCurvePart);
+ fTangent1.cubicEndPoints(fCurvePart, 0, 1);
+ if (dx() == 0 && dy() == 0) {
+ fTangent1.cubicEndPoints(fCurvePart, 0, 2);
+ nextC = 3;
+ if (dx() == 0 && dy() == 0) {
+ fTangent1.cubicEndPoints(fCurvePart, 0, 3);
+ }
+ }
+ fSide = -fTangent1.pointDistance(fCurvePart[nextC]); // compare sign only
+ if (nextC == 2 && approximately_zero(fSide)) {
+ fSide = -fTangent1.pointDistance(fCurvePart[3]);
+ }
+ } break;
+ default:
+ SkASSERT(0);
+ }
+ fUnsortable = dx() == 0 && dy() == 0;
+ if (fUnsortable) {
+ return;
+ }
+ SkASSERT(fStart != fEnd);
+ int step = fStart < fEnd ? 1 : -1; // OPTIMIZE: worth fStart - fEnd >> 31 type macro?
+ for (int index = fStart; index != fEnd; index += step) {
+#if 1
+ const Span& thisSpan = (*fSpans)[index];
+ const Span& nextSpan = (*fSpans)[index + step];
+ if (thisSpan.fTiny || precisely_equal(thisSpan.fT, nextSpan.fT)) {
+ continue;
+ }
+ fUnsortable = step > 0 ? thisSpan.fUnsortableStart : nextSpan.fUnsortableEnd;
+#if DEBUG_UNSORTABLE
+ if (fUnsortable) {
+ SkPoint iPt, ePt;
+ (*SegmentXYAtT[fVerb])(fPts, thisSpan.fT, &iPt);
+ (*SegmentXYAtT[fVerb])(fPts, nextSpan.fT, &ePt);
+ SkDebugf("%s unsortable [%d] (%1.9g,%1.9g) [%d] (%1.9g,%1.9g)\n", __FUNCTION__,
+ index, iPt.fX, iPt.fY, fEnd, ePt.fX, ePt.fY);
+ }
+#endif
+ return;
+#else
+ if ((*fSpans)[index].fUnsortableStart) {
+ fUnsortable = true;
+ return;
+ }
+#endif
+ }
+#if 1
+#if DEBUG_UNSORTABLE
+ SkPoint iPt, ePt;
+ (*SegmentXYAtT[fVerb])(fPts, startT, &iPt);
+ (*SegmentXYAtT[fVerb])(fPts, endT, &ePt);
+ SkDebugf("%s all tiny unsortable [%d] (%1.9g,%1.9g) [%d] (%1.9g,%1.9g)\n", __FUNCTION__,
+ fStart, iPt.fX, iPt.fY, fEnd, ePt.fX, ePt.fY);
+#endif
+ fUnsortable = true;
+#endif
+ }
+
+ Segment* segment() const {
+ return const_cast<Segment*>(fSegment);
+ }
+
+ int sign() const {
+ return SkSign32(fStart - fEnd);
+ }
+
+ const SkTDArray<Span>* spans() const {
+ return fSpans;
+ }
+
+ int start() const {
+ return fStart;
+ }
+
+ bool unsortable() const {
+ return fUnsortable;
+ }
+
+#if DEBUG_ANGLE
+ const SkPoint* pts() const {
+ return fPts;
+ }
+
+ SkPath::Verb verb() const {
+ return fVerb;
+ }
+
+ void debugShow(const SkPoint& a) const {
+ SkDebugf(" d=(%1.9g,%1.9g) side=%1.9g\n", dx(), dy(), fSide);
+ }
+#endif
+
+private:
+ const SkPoint* fPts;
+ Cubic fCurvePart;
+ SkPath::Verb fVerb;
+ double fSide;
+ LineParameters fTangent1;
+ const SkTDArray<Span>* fSpans;
+ const Segment* fSegment;
+ int fStart;
+ int fEnd;
+ bool fReversed;
+ mutable bool fUnsortable; // this alone is editable by the less than operator
+};
+
+// Bounds, unlike Rect, does not consider a line to be empty.
+struct Bounds : public SkRect {
+ static bool Intersects(const Bounds& a, const Bounds& b) {
+ return a.fLeft <= b.fRight && b.fLeft <= a.fRight &&
+ a.fTop <= b.fBottom && b.fTop <= a.fBottom;
+ }
+
+ void add(SkScalar left, SkScalar top, SkScalar right, SkScalar bottom) {
+ if (left < fLeft) {
+ fLeft = left;
+ }
+ if (top < fTop) {
+ fTop = top;
+ }
+ if (right > fRight) {
+ fRight = right;
+ }
+ if (bottom > fBottom) {
+ fBottom = bottom;
+ }
+ }
+
+ void add(const Bounds& toAdd) {
+ add(toAdd.fLeft, toAdd.fTop, toAdd.fRight, toAdd.fBottom);
+ }
+
+ void add(const SkPoint& pt) {
+ if (pt.fX < fLeft) fLeft = pt.fX;
+ if (pt.fY < fTop) fTop = pt.fY;
+ if (pt.fX > fRight) fRight = pt.fX;
+ if (pt.fY > fBottom) fBottom = pt.fY;
+ }
+
+ bool isEmpty() {
+ return fLeft > fRight || fTop > fBottom
+ || (fLeft == fRight && fTop == fBottom)
+ || sk_double_isnan(fLeft) || sk_double_isnan(fRight)
+ || sk_double_isnan(fTop) || sk_double_isnan(fBottom);
+ }
+
+ void setCubicBounds(const SkPoint a[4]) {
+ _Rect dRect;
+ MAKE_CONST_CUBIC(cubic, a);
+ dRect.setBounds(cubic);
+ set((float) dRect.left, (float) dRect.top, (float) dRect.right,
+ (float) dRect.bottom);
+ }
+
+ void setLineBounds(const SkPoint a[2]) {
+ setPoint(a[0]);
+ add(a[1]);
+ }
+
+ void setQuadBounds(const SkPoint a[3]) {
+ MAKE_CONST_QUAD(quad, a);
+ _Rect dRect;
+ dRect.setBounds(quad);
+ set((float) dRect.left, (float) dRect.top, (float) dRect.right,
+ (float) dRect.bottom);
+ }
+
+ void setPoint(const SkPoint& pt) {
+ fLeft = fRight = pt.fX;
+ fTop = fBottom = pt.fY;
+ }
+};
+
+static void (Bounds::*setSegmentBounds[])(const SkPoint[]) = {
+ NULL,
+ &Bounds::setLineBounds,
+ &Bounds::setQuadBounds,
+ &Bounds::setCubicBounds
+};
+
+// OPTIMIZATION: does the following also work, and is it any faster?
+// return outerWinding * innerWinding > 0
+// || ((outerWinding + innerWinding < 0) ^ ((outerWinding - innerWinding) < 0)))
+static bool useInnerWinding(int outerWinding, int innerWinding) {
+ SkASSERT(outerWinding != SK_MaxS32);
+ SkASSERT(innerWinding != SK_MaxS32);
+ int absOut = abs(outerWinding);
+ int absIn = abs(innerWinding);
+ bool result = absOut == absIn ? outerWinding < 0 : absOut < absIn;
+#if 0 && DEBUG_WINDING
+ if (outerWinding * innerWinding < 0) {
+ SkDebugf("%s outer=%d inner=%d result=%s\n", __FUNCTION__,
+ outerWinding, innerWinding, result ? "true" : "false");
+ }
+#endif
+ return result;
+}
+
+#define F (false) // discard the edge
+#define T (true) // keep the edge
+
+static const bool gUnaryActiveEdge[2][2] = {
+// from=0 from=1
+// to=0,1 to=0,1
+ {F, T}, {T, F},
+};
+
+static const bool gActiveEdge[kShapeOp_Count][2][2][2][2] = {
+// miFrom=0 miFrom=1
+// miTo=0 miTo=1 miTo=0 miTo=1
+// suFrom=0 1 suFrom=0 1 suFrom=0 1 suFrom=0 1
+// suTo=0,1 suTo=0,1 suTo=0,1 suTo=0,1 suTo=0,1 suTo=0,1 suTo=0,1 suTo=0,1
+ {{{{F, F}, {F, F}}, {{T, F}, {T, F}}}, {{{T, T}, {F, F}}, {{F, T}, {T, F}}}}, // mi - su
+ {{{{F, F}, {F, F}}, {{F, T}, {F, T}}}, {{{F, F}, {T, T}}, {{F, T}, {T, F}}}}, // mi & su
+ {{{{F, T}, {T, F}}, {{T, T}, {F, F}}}, {{{T, F}, {T, F}}, {{F, F}, {F, F}}}}, // mi | su
+ {{{{F, T}, {T, F}}, {{T, F}, {F, T}}}, {{{T, F}, {F, T}}, {{F, T}, {T, F}}}}, // mi ^ su
+};
+
+#undef F
+#undef T
+
+// wrap path to keep track of whether the contour is initialized and non-empty
+class PathWrapper {
+public:
+ PathWrapper(SkPath& path)
+ : fPathPtr(&path)
+ , fCloses(0)
+ , fMoves(0)
+ {
+ init();
+ }
+
+ void close() {
+ if (!fHasMove) {
+ return;
+ }
+ bool callClose = isClosed();
+ lineTo();
+ if (fEmpty) {
+ return;
+ }
+ if (callClose) {
+ #if DEBUG_PATH_CONSTRUCTION
+ SkDebugf("path.close();\n");
+ #endif
+ fPathPtr->close();
+ fCloses++;
+ }
+ init();
+ }
+
+ void cubicTo(const SkPoint& pt1, const SkPoint& pt2, const SkPoint& pt3) {
+ lineTo();
+ moveTo();
+ fDefer[1] = pt3;
+ nudge();
+ fDefer[0] = fDefer[1];
+#if DEBUG_PATH_CONSTRUCTION
+ SkDebugf("path.cubicTo(%1.9g,%1.9g, %1.9g,%1.9g, %1.9g,%1.9g);\n",
+ pt1.fX, pt1.fY, pt2.fX, pt2.fY, fDefer[1].fX, fDefer[1].fY);
+#endif
+ fPathPtr->cubicTo(pt1.fX, pt1.fY, pt2.fX, pt2.fY, fDefer[1].fX, fDefer[1].fY);
+ fEmpty = false;
+ }
+
+ void deferredLine(const SkPoint& pt) {
+ if (pt == fDefer[1]) {
+ return;
+ }
+ if (changedSlopes(pt)) {
+ lineTo();
+ fDefer[0] = fDefer[1];
+ }
+ fDefer[1] = pt;
+ }
+
+ void deferredMove(const SkPoint& pt) {
+ fMoved = true;
+ fHasMove = true;
+ fEmpty = true;
+ fDefer[0] = fDefer[1] = pt;
+ }
+
+ void deferredMoveLine(const SkPoint& pt) {
+ if (!fHasMove) {
+ deferredMove(pt);
+ }
+ deferredLine(pt);
+ }
+
+ bool hasMove() const {
+ return fHasMove;
+ }
+
+ void init() {
+ fEmpty = true;
+ fHasMove = false;
+ fMoved = false;
+ }
+
+ bool isClosed() const {
+ return !fEmpty && fFirstPt == fDefer[1];
+ }
+
+ void lineTo() {
+ if (fDefer[0] == fDefer[1]) {
+ return;
+ }
+ moveTo();
+ nudge();
+ fEmpty = false;
+#if DEBUG_PATH_CONSTRUCTION
+ SkDebugf("path.lineTo(%1.9g,%1.9g);\n", fDefer[1].fX, fDefer[1].fY);
+#endif
+ fPathPtr->lineTo(fDefer[1].fX, fDefer[1].fY);
+ fDefer[0] = fDefer[1];
+ }
+
+ const SkPath* nativePath() const {
+ return fPathPtr;
+ }
+
+ void nudge() {
+ if (fEmpty || !AlmostEqualUlps(fDefer[1].fX, fFirstPt.fX)
+ || !AlmostEqualUlps(fDefer[1].fY, fFirstPt.fY)) {
+ return;
+ }
+ fDefer[1] = fFirstPt;
+ }
+
+ void quadTo(const SkPoint& pt1, const SkPoint& pt2) {
+ lineTo();
+ moveTo();
+ fDefer[1] = pt2;
+ nudge();
+ fDefer[0] = fDefer[1];
+#if DEBUG_PATH_CONSTRUCTION
+ SkDebugf("path.quadTo(%1.9g,%1.9g, %1.9g,%1.9g);\n",
+ pt1.fX, pt1.fY, fDefer[1].fX, fDefer[1].fY);
+#endif
+ fPathPtr->quadTo(pt1.fX, pt1.fY, fDefer[1].fX, fDefer[1].fY);
+ fEmpty = false;
+ }
+
+ bool someAssemblyRequired() const {
+ return fCloses < fMoves;
+ }
+
+protected:
+ bool changedSlopes(const SkPoint& pt) const {
+ if (fDefer[0] == fDefer[1]) {
+ return false;
+ }
+ SkScalar deferDx = fDefer[1].fX - fDefer[0].fX;
+ SkScalar deferDy = fDefer[1].fY - fDefer[0].fY;
+ SkScalar lineDx = pt.fX - fDefer[1].fX;
+ SkScalar lineDy = pt.fY - fDefer[1].fY;
+ return deferDx * lineDy != deferDy * lineDx;
+ }
+
+ void moveTo() {
+ if (!fMoved) {
+ return;
+ }
+ fFirstPt = fDefer[0];
+#if DEBUG_PATH_CONSTRUCTION
+ SkDebugf("path.moveTo(%1.9g,%1.9g);\n", fDefer[0].fX, fDefer[0].fY);
+#endif
+ fPathPtr->moveTo(fDefer[0].fX, fDefer[0].fY);
+ fMoved = false;
+ fMoves++;
+ }
+
+private:
+ SkPath* fPathPtr;
+ SkPoint fDefer[2];
+ SkPoint fFirstPt;
+ int fCloses;
+ int fMoves;
+ bool fEmpty;
+ bool fHasMove;
+ bool fMoved;
+};
+
+class Segment {
+public:
+ Segment() {
+#if DEBUG_DUMP
+ fID = ++gSegmentID;
+#endif
+ }
+
+ bool operator<(const Segment& rh) const {
+ return fBounds.fTop < rh.fBounds.fTop;
+ }
+
+ bool activeAngle(int index, int& done, SkTDArray<Angle>& angles) {
+ if (activeAngleInner(index, done, angles)) {
+ return true;
+ }
+ int lesser = index;
+ while (--lesser >= 0 && equalPoints(index, lesser)) {
+ if (activeAngleOther(lesser, done, angles)) {
+ return true;
+ }
+ }
+ lesser = index;
+ do {
+ if (activeAngleOther(index, done, angles)) {
+ return true;
+ }
+ } while (++index < fTs.count() && equalPoints(index, lesser));
+ return false;
+ }
+
+ bool activeAngleOther(int index, int& done, SkTDArray<Angle>& angles) {
+ Span* span = &fTs[index];
+ Segment* other = span->fOther;
+ int oIndex = span->fOtherIndex;
+ return other->activeAngleInner(oIndex, done, angles);
+ }
+
+ bool activeAngleInner(int index, int& done, SkTDArray<Angle>& angles) {
+ int next = nextExactSpan(index, 1);
+ if (next > 0) {
+ Span& upSpan = fTs[index];
+ if (upSpan.fWindValue || upSpan.fOppValue) {
+ addAngle(angles, index, next);
+ if (upSpan.fDone || upSpan.fUnsortableEnd) {
+ done++;
+ } else if (upSpan.fWindSum != SK_MinS32) {
+ return true;
+ }
+ } else if (!upSpan.fDone) {
+ upSpan.fDone = true;
+ fDoneSpans++;
+ }
+ }
+ int prev = nextExactSpan(index, -1);
+ // edge leading into junction
+ if (prev >= 0) {
+ Span& downSpan = fTs[prev];
+ if (downSpan.fWindValue || downSpan.fOppValue) {
+ addAngle(angles, index, prev);
+ if (downSpan.fDone) {
+ done++;
+ } else if (downSpan.fWindSum != SK_MinS32) {
+ return true;
+ }
+ } else if (!downSpan.fDone) {
+ downSpan.fDone = true;
+ fDoneSpans++;
+ }
+ }
+ return false;
+ }
+
+ SkPoint activeLeftTop(bool onlySortable, int* firstT) const {
+ SkASSERT(!done());
+ SkPoint topPt = {SK_ScalarMax, SK_ScalarMax};
+ int count = fTs.count();
+ // see if either end is not done since we want smaller Y of the pair
+ bool lastDone = true;
+ bool lastUnsortable = false;
+ double lastT = -1;
+ for (int index = 0; index < count; ++index) {
+ const Span& span = fTs[index];
+ if (onlySortable && (span.fUnsortableStart || lastUnsortable)) {
+ goto next;
+ }
+ if (span.fDone && lastDone) {
+ goto next;
+ }
+ if (approximately_negative(span.fT - lastT)) {
+ goto next;
+ }
+ {
+ const SkPoint& xy = xyAtT(&span);
+ if (topPt.fY > xy.fY || (topPt.fY == xy.fY && topPt.fX > xy.fX)) {
+ topPt = xy;
+ if (firstT) {
+ *firstT = index;
+ }
+ }
+ if (fVerb != SkPath::kLine_Verb && !lastDone) {
+ SkPoint curveTop = (*SegmentTop[fVerb])(fPts, lastT, span.fT);
+ if (topPt.fY > curveTop.fY || (topPt.fY == curveTop.fY
+ && topPt.fX > curveTop.fX)) {
+ topPt = curveTop;
+ if (firstT) {
+ *firstT = index;
+ }
+ }
+ }
+ lastT = span.fT;
+ }
+ next:
+ lastDone = span.fDone;
+ lastUnsortable = span.fUnsortableEnd;
+ }
+ return topPt;
+ }
+
+ bool activeOp(int index, int endIndex, int xorMiMask, int xorSuMask, ShapeOp op) {
+ int sumMiWinding = updateWinding(endIndex, index);
+ int sumSuWinding = updateOppWinding(endIndex, index);
+ if (fOperand) {
+ SkTSwap<int>(sumMiWinding, sumSuWinding);
+ }
+ int maxWinding, sumWinding, oppMaxWinding, oppSumWinding;
+ return activeOp(xorMiMask, xorSuMask, index, endIndex, op, sumMiWinding, sumSuWinding,
+ maxWinding, sumWinding, oppMaxWinding, oppSumWinding);
+ }
+
+ bool activeOp(int xorMiMask, int xorSuMask, int index, int endIndex, ShapeOp op,
+ int& sumMiWinding, int& sumSuWinding,
+ int& maxWinding, int& sumWinding, int& oppMaxWinding, int& oppSumWinding) {
+ setUpWindings(index, endIndex, sumMiWinding, sumSuWinding,
+ maxWinding, sumWinding, oppMaxWinding, oppSumWinding);
+ bool miFrom;
+ bool miTo;
+ bool suFrom;
+ bool suTo;
+ if (operand()) {
+ miFrom = (oppMaxWinding & xorMiMask) != 0;
+ miTo = (oppSumWinding & xorMiMask) != 0;
+ suFrom = (maxWinding & xorSuMask) != 0;
+ suTo = (sumWinding & xorSuMask) != 0;
+ } else {
+ miFrom = (maxWinding & xorMiMask) != 0;
+ miTo = (sumWinding & xorMiMask) != 0;
+ suFrom = (oppMaxWinding & xorSuMask) != 0;
+ suTo = (oppSumWinding & xorSuMask) != 0;
+ }
+ bool result = gActiveEdge[op][miFrom][miTo][suFrom][suTo];
+#if DEBUG_ACTIVE_OP
+ SkDebugf("%s op=%s miFrom=%d miTo=%d suFrom=%d suTo=%d result=%d\n", __FUNCTION__,
+ kShapeOpStr[op], miFrom, miTo, suFrom, suTo, result);
+#endif
+ SkASSERT(result != -1);
+ return result;
+ }
+
+ bool activeWinding(int index, int endIndex) {
+ int sumWinding = updateWinding(endIndex, index);
+ int maxWinding;
+ return activeWinding(index, endIndex, maxWinding, sumWinding);
+ }
+
+ bool activeWinding(int index, int endIndex, int& maxWinding, int& sumWinding) {
+ setUpWinding(index, endIndex, maxWinding, sumWinding);
+ bool from = maxWinding != 0;
+ bool to = sumWinding != 0;
+ bool result = gUnaryActiveEdge[from][to];
+ SkASSERT(result != -1);
+ return result;
+ }
+
+ void addAngle(SkTDArray<Angle>& angles, int start, int end) const {
+ SkASSERT(start != end);
+ Angle* angle = angles.append();
+#if DEBUG_ANGLE
+ if (angles.count() > 1 && !fTs[start].fTiny) {
+ SkPoint angle0Pt, newPt;
+ (*SegmentXYAtT[angles[0].verb()])(angles[0].pts(),
+ (*angles[0].spans())[angles[0].start()].fT, &angle0Pt);
+ (*SegmentXYAtT[fVerb])(fPts, fTs[start].fT, &newPt);
+ SkASSERT(AlmostEqualUlps(angle0Pt.fX, newPt.fX));
+ SkASSERT(AlmostEqualUlps(angle0Pt.fY, newPt.fY));
+ }
+#endif
+ angle->set(fPts, fVerb, this, start, end, fTs);
+ }
+
+ void addCancelOutsides(double tStart, double oStart, Segment& other,
+ double oEnd) {
+ int tIndex = -1;
+ int tCount = fTs.count();
+ int oIndex = -1;
+ int oCount = other.fTs.count();
+ do {
+ ++tIndex;
+ } while (!approximately_negative(tStart - fTs[tIndex].fT) && tIndex < tCount);
+ int tIndexStart = tIndex;
+ do {
+ ++oIndex;
+ } while (!approximately_negative(oStart - other.fTs[oIndex].fT) && oIndex < oCount);
+ int oIndexStart = oIndex;
+ double nextT;
+ do {
+ nextT = fTs[++tIndex].fT;
+ } while (nextT < 1 && approximately_negative(nextT - tStart));
+ double oNextT;
+ do {
+ oNextT = other.fTs[++oIndex].fT;
+ } while (oNextT < 1 && approximately_negative(oNextT - oStart));
+ // at this point, spans before and after are at:
+ // fTs[tIndexStart - 1], fTs[tIndexStart], fTs[tIndex]
+ // if tIndexStart == 0, no prior span
+ // if nextT == 1, no following span
+
+ // advance the span with zero winding
+ // if the following span exists (not past the end, non-zero winding)
+ // connect the two edges
+ if (!fTs[tIndexStart].fWindValue) {
+ if (tIndexStart > 0 && fTs[tIndexStart - 1].fWindValue) {
+ #if DEBUG_CONCIDENT
+ SkDebugf("%s 1 this=%d other=%d t [%d] %1.9g (%1.9g,%1.9g)\n",
+ __FUNCTION__, fID, other.fID, tIndexStart - 1,
+ fTs[tIndexStart].fT, xyAtT(tIndexStart).fX,
+ xyAtT(tIndexStart).fY);
+ #endif
+ addTPair(fTs[tIndexStart].fT, other, other.fTs[oIndex].fT, false,
+ fTs[tIndexStart].fPt);
+ }
+ if (nextT < 1 && fTs[tIndex].fWindValue) {
+ #if DEBUG_CONCIDENT
+ SkDebugf("%s 2 this=%d other=%d t [%d] %1.9g (%1.9g,%1.9g)\n",
+ __FUNCTION__, fID, other.fID, tIndex,
+ fTs[tIndex].fT, xyAtT(tIndex).fX,
+ xyAtT(tIndex).fY);
+ #endif
+ addTPair(fTs[tIndex].fT, other, other.fTs[oIndexStart].fT, false, fTs[tIndex].fPt);
+ }
+ } else {
+ SkASSERT(!other.fTs[oIndexStart].fWindValue);
+ if (oIndexStart > 0 && other.fTs[oIndexStart - 1].fWindValue) {
+ #if DEBUG_CONCIDENT
+ SkDebugf("%s 3 this=%d other=%d t [%d] %1.9g (%1.9g,%1.9g)\n",
+ __FUNCTION__, fID, other.fID, oIndexStart - 1,
+ other.fTs[oIndexStart].fT, other.xyAtT(oIndexStart).fX,
+ other.xyAtT(oIndexStart).fY);
+ other.debugAddTPair(other.fTs[oIndexStart].fT, *this, fTs[tIndex].fT);
+ #endif
+ }
+ if (oNextT < 1 && other.fTs[oIndex].fWindValue) {
+ #if DEBUG_CONCIDENT
+ SkDebugf("%s 4 this=%d other=%d t [%d] %1.9g (%1.9g,%1.9g)\n",
+ __FUNCTION__, fID, other.fID, oIndex,
+ other.fTs[oIndex].fT, other.xyAtT(oIndex).fX,
+ other.xyAtT(oIndex).fY);
+ other.debugAddTPair(other.fTs[oIndex].fT, *this, fTs[tIndexStart].fT);
+ #endif
+ }
+ }
+ }
+
+ void addCoinOutsides(const SkTDArray<double>& outsideTs, Segment& other,
+ double oEnd) {
+ // walk this to outsideTs[0]
+ // walk other to outsideTs[1]
+ // if either is > 0, add a pointer to the other, copying adjacent winding
+ int tIndex = -1;
+ int oIndex = -1;
+ double tStart = outsideTs[0];
+ double oStart = outsideTs[1];
+ do {
+ ++tIndex;
+ } while (!approximately_negative(tStart - fTs[tIndex].fT));
+ SkPoint ptStart = fTs[tIndex].fPt;
+ do {
+ ++oIndex;
+ } while (!approximately_negative(oStart - other.fTs[oIndex].fT));
+ if (tIndex > 0 || oIndex > 0 || fOperand != other.fOperand) {
+ addTPair(tStart, other, oStart, false, ptStart);
+ }
+ tStart = fTs[tIndex].fT;
+ oStart = other.fTs[oIndex].fT;
+ do {
+ double nextT;
+ do {
+ nextT = fTs[++tIndex].fT;
+ } while (approximately_negative(nextT - tStart));
+ tStart = nextT;
+ ptStart = fTs[tIndex].fPt;
+ do {
+ nextT = other.fTs[++oIndex].fT;
+ } while (approximately_negative(nextT - oStart));
+ oStart = nextT;
+ if (tStart == 1 && oStart == 1 && fOperand == other.fOperand) {
+ break;
+ }
+ addTPair(tStart, other, oStart, false, ptStart);
+ } while (tStart < 1 && oStart < 1 && !approximately_negative(oEnd - oStart));
+ }
+
+ void addCubic(const SkPoint pts[4], bool operand, bool evenOdd) {
+ init(pts, SkPath::kCubic_Verb, operand, evenOdd);
+ fBounds.setCubicBounds(pts);
+ }
+
+ /* SkPoint */ void addCurveTo(int start, int end, PathWrapper& path, bool active) const {
+ SkPoint edge[4];
+ const SkPoint* ePtr;
+ int lastT = fTs.count() - 1;
+ if (lastT < 0 || (start == 0 && end == lastT) || (start == lastT && end == 0)) {
+ ePtr = fPts;
+ } else {
+ // OPTIMIZE? if not active, skip remainder and return xy_at_t(end)
+ subDivide(start, end, edge);
+ ePtr = edge;
+ }
+ if (active) {
+ bool reverse = ePtr == fPts && start != 0;
+ if (reverse) {
+ path.deferredMoveLine(ePtr[fVerb]);
+ switch (fVerb) {
+ case SkPath::kLine_Verb:
+ path.deferredLine(ePtr[0]);
+ break;
+ case SkPath::kQuad_Verb:
+ path.quadTo(ePtr[1], ePtr[0]);
+ break;
+ case SkPath::kCubic_Verb:
+ path.cubicTo(ePtr[2], ePtr[1], ePtr[0]);
+ break;
+ default:
+ SkASSERT(0);
+ }
+ // return ePtr[0];
+ } else {
+ path.deferredMoveLine(ePtr[0]);
+ switch (fVerb) {
+ case SkPath::kLine_Verb:
+ path.deferredLine(ePtr[1]);
+ break;
+ case SkPath::kQuad_Verb:
+ path.quadTo(ePtr[1], ePtr[2]);
+ break;
+ case SkPath::kCubic_Verb:
+ path.cubicTo(ePtr[1], ePtr[2], ePtr[3]);
+ break;
+ default:
+ SkASSERT(0);
+ }
+ }
+ }
+ // return ePtr[fVerb];
+ }
+
+ void addLine(const SkPoint pts[2], bool operand, bool evenOdd) {
+ init(pts, SkPath::kLine_Verb, operand, evenOdd);
+ fBounds.set(pts, 2);
+ }
+
+#if 0
+ const SkPoint& addMoveTo(int tIndex, PathWrapper& path, bool active) const {
+ const SkPoint& pt = xyAtT(tIndex);
+ if (active) {
+ path.deferredMove(pt);
+ }
+ return pt;
+ }
+#endif
+
+ // add 2 to edge or out of range values to get T extremes
+ void addOtherT(int index, double otherT, int otherIndex) {
+ Span& span = fTs[index];
+ #if PIN_ADD_T
+ if (precisely_less_than_zero(otherT)) {
+ otherT = 0;
+ } else if (precisely_greater_than_one(otherT)) {
+ otherT = 1;
+ }
+ #endif
+ span.fOtherT = otherT;
+ span.fOtherIndex = otherIndex;
+ }
+
+ void addQuad(const SkPoint pts[3], bool operand, bool evenOdd) {
+ init(pts, SkPath::kQuad_Verb, operand, evenOdd);
+ fBounds.setQuadBounds(pts);
+ }
+
+ // Defer all coincident edge processing until
+ // after normal intersections have been computed
+
+// no need to be tricky; insert in normal T order
+// resolve overlapping ts when considering coincidence later
+
+ // add non-coincident intersection. Resulting edges are sorted in T.
+ int addT(Segment* other, const SkPoint& pt, double& newT) {
+ // FIXME: in the pathological case where there is a ton of intercepts,
+ // binary search?
+ int insertedAt = -1;
+ size_t tCount = fTs.count();
+ #if PIN_ADD_T
+ // FIXME: only do this pinning here (e.g. this is done also in quad/line intersect)
+ if (precisely_less_than_zero(newT)) {
+ newT = 0;
+ } else if (precisely_greater_than_one(newT)) {
+ newT = 1;
+ }
+ #endif
+ for (size_t index = 0; index < tCount; ++index) {
+ // OPTIMIZATION: if there are three or more identical Ts, then
+ // the fourth and following could be further insertion-sorted so
+ // that all the edges are clockwise or counterclockwise.
+ // This could later limit segment tests to the two adjacent
+ // neighbors, although it doesn't help with determining which
+ // circular direction to go in.
+ if (newT < fTs[index].fT) {
+ insertedAt = index;
+ break;
+ }
+ }
+ Span* span;
+ if (insertedAt >= 0) {
+ span = fTs.insert(insertedAt);
+ } else {
+ insertedAt = tCount;
+ span = fTs.append();
+ }
+ span->fT = newT;
+ span->fOther = other;
+ span->fPt = pt;
+ span->fWindSum = SK_MinS32;
+ span->fOppSum = SK_MinS32;
+ span->fWindValue = 1;
+ span->fOppValue = 0;
+ span->fTiny = false;
+ span->fLoop = false;
+ if ((span->fDone = newT == 1)) {
+ ++fDoneSpans;
+ }
+ span->fUnsortableStart = false;
+ span->fUnsortableEnd = false;
+ int less = -1;
+ while (&span[less + 1] - fTs.begin() > 0 && xyAtT(&span[less]) == xyAtT(span)) {
+#if 1
+ if (span[less].fDone) {
+ break;
+ }
+ double tInterval = newT - span[less].fT;
+ if (precisely_negative(tInterval)) {
+ break;
+ }
+ if (fVerb == SkPath::kCubic_Verb) {
+ double tMid = newT - tInterval / 2;
+ _Point midPt;
+ CubicXYAtT(fPts, tMid, &midPt);
+ if (!midPt.approximatelyEqual(xyAtT(span))) {
+ break;
+ }
+ }
+ span[less].fTiny = true;
+ span[less].fDone = true;
+ if (approximately_negative(newT - span[less].fT)) {
+ if (approximately_greater_than_one(newT)) {
+ span[less].fUnsortableStart = true;
+ span[less - 1].fUnsortableEnd = true;
+ }
+ if (approximately_less_than_zero(span[less].fT)) {
+ span[less + 1].fUnsortableStart = true;
+ span[less].fUnsortableEnd = true;
+ }
+ }
+ ++fDoneSpans;
+#else
+ double tInterval = newT - span[less].fT;
+ if (precisely_negative(tInterval)) {
+ break;
+ }
+ if (fVerb == SkPath::kCubic_Verb) {
+ double tMid = newT - tInterval / 2;
+ _Point midPt;
+ CubicXYAtT(fPts, tMid, &midPt);
+ if (!midPt.approximatelyEqual(xyAtT(span))) {
+ break;
+ }
+ }
+ SkASSERT(span[less].fDone == span->fDone);
+ if (span[less].fT == 0) {
+ span->fT = newT = 0;
+ } else {
+ setSpanT(less, newT);
+ }
+#endif
+ --less;
+ }
+ int more = 1;
+ while (fTs.end() - &span[more - 1] > 1 && xyAtT(&span[more]) == xyAtT(span)) {
+#if 1
+ if (span[more - 1].fDone) {
+ break;
+ }
+ double tEndInterval = span[more].fT - newT;
+ if (precisely_negative(tEndInterval)) {
+ break;
+ }
+ if (fVerb == SkPath::kCubic_Verb) {
+ double tMid = newT - tEndInterval / 2;
+ _Point midEndPt;
+ CubicXYAtT(fPts, tMid, &midEndPt);
+ if (!midEndPt.approximatelyEqual(xyAtT(span))) {
+ break;
+ }
+ }
+ span[more - 1].fTiny = true;
+ span[more - 1].fDone = true;
+ if (approximately_negative(span[more].fT - newT)) {
+ if (approximately_greater_than_one(span[more].fT)) {
+ span[more + 1].fUnsortableStart = true;
+ span[more].fUnsortableEnd = true;
+ }
+ if (approximately_less_than_zero(newT)) {
+ span[more].fUnsortableStart = true;
+ span[more - 1].fUnsortableEnd = true;
+ }
+ }
+ ++fDoneSpans;
+#else
+ double tEndInterval = span[more].fT - newT;
+ if (precisely_negative(tEndInterval)) {
+ break;
+ }
+ if (fVerb == SkPath::kCubic_Verb) {
+ double tMid = newT - tEndInterval / 2;
+ _Point midEndPt;
+ CubicXYAtT(fPts, tMid, &midEndPt);
+ if (!midEndPt.approximatelyEqual(xyAtT(span))) {
+ break;
+ }
+ }
+ SkASSERT(span[more - 1].fDone == span[more].fDone);
+ if (newT == 0) {
+ setSpanT(more, 0);
+ } else {
+ span->fT = newT = span[more].fT;
+ }
+#endif
+ ++more;
+ }
+ return insertedAt;
+ }
+
+ // set spans from start to end to decrement by one
+ // note this walks other backwards
+ // FIMXE: there's probably an edge case that can be constructed where
+ // two span in one segment are separated by float epsilon on one span but
+ // not the other, if one segment is very small. For this
+ // case the counts asserted below may or may not be enough to separate the
+ // spans. Even if the counts work out, what if the spans aren't correctly
+ // sorted? It feels better in such a case to match the span's other span
+ // pointer since both coincident segments must contain the same spans.
+ void addTCancel(double startT, double endT, Segment& other,
+ double oStartT, double oEndT) {
+ SkASSERT(!approximately_negative(endT - startT));
+ SkASSERT(!approximately_negative(oEndT - oStartT));
+ bool binary = fOperand != other.fOperand;
+ int index = 0;
+ while (!approximately_negative(startT - fTs[index].fT)) {
+ ++index;
+ }
+ int oIndex = other.fTs.count();
+ while (approximately_positive(other.fTs[--oIndex].fT - oEndT))
+ ;
+ double tRatio = (oEndT - oStartT) / (endT - startT);
+ Span* test = &fTs[index];
+ Span* oTest = &other.fTs[oIndex];
+ SkTDArray<double> outsideTs;
+ SkTDArray<double> oOutsideTs;
+ do {
+ bool decrement = test->fWindValue && oTest->fWindValue && !binary;
+ bool track = test->fWindValue || oTest->fWindValue;
+ double testT = test->fT;
+ double oTestT = oTest->fT;
+ Span* span = test;
+ do {
+ if (decrement) {
+ decrementSpan(span);
+ } else if (track && span->fT < 1 && oTestT < 1) {
+ TrackOutside(outsideTs, span->fT, oTestT);
+ }
+ span = &fTs[++index];
+ } while (approximately_negative(span->fT - testT));
+ Span* oSpan = oTest;
+ double otherTMatchStart = oEndT - (span->fT - startT) * tRatio;
+ double otherTMatchEnd = oEndT - (test->fT - startT) * tRatio;
+ SkDEBUGCODE(int originalWindValue = oSpan->fWindValue);
+ while (approximately_negative(otherTMatchStart - oSpan->fT)
+ && !approximately_negative(otherTMatchEnd - oSpan->fT)) {
+ #ifdef SK_DEBUG
+ SkASSERT(originalWindValue == oSpan->fWindValue);
+ #endif
+ if (decrement) {
+ other.decrementSpan(oSpan);
+ } else if (track && oSpan->fT < 1 && testT < 1) {
+ TrackOutside(oOutsideTs, oSpan->fT, testT);
+ }
+ if (!oIndex) {
+ break;
+ }
+ oSpan = &other.fTs[--oIndex];
+ }
+ test = span;
+ oTest = oSpan;
+ } while (!approximately_negative(endT - test->fT));
+ SkASSERT(!oIndex || approximately_negative(oTest->fT - oStartT));
+ // FIXME: determine if canceled edges need outside ts added
+ if (!done() && outsideTs.count()) {
+ double tStart = outsideTs[0];
+ double oStart = outsideTs[1];
+ addCancelOutsides(tStart, oStart, other, oEndT);
+ int count = outsideTs.count();
+ if (count > 2) {
+ double tStart = outsideTs[count - 2];
+ double oStart = outsideTs[count - 1];
+ addCancelOutsides(tStart, oStart, other, oEndT);
+ }
+ }
+ if (!other.done() && oOutsideTs.count()) {
+ double tStart = oOutsideTs[0];
+ double oStart = oOutsideTs[1];
+ other.addCancelOutsides(tStart, oStart, *this, endT);
+ }
+ }
+
+ int addSelfT(Segment* other, const SkPoint& pt, double& newT) {
+ int result = addT(other, pt, newT);
+ Span* span = &fTs[result];
+ span->fLoop = true;
+ return result;
+ }
+
+ int addUnsortableT(Segment* other, bool start, const SkPoint& pt, double& newT) {
+ int result = addT(other, pt, newT);
+ Span* span = &fTs[result];
+ if (start) {
+ if (result > 0) {
+ span[result - 1].fUnsortableEnd = true;
+ }
+ span[result].fUnsortableStart = true;
+ } else {
+ span[result].fUnsortableEnd = true;
+ if (result + 1 < fTs.count()) {
+ span[result + 1].fUnsortableStart = true;
+ }
+ }
+ return result;
+ }
+
+ int bumpCoincidentThis(const Span* oTest, bool opp, int index,
+ SkTDArray<double>& outsideTs) {
+ int oWindValue = oTest->fWindValue;
+ int oOppValue = oTest->fOppValue;
+ if (opp) {
+ SkTSwap<int>(oWindValue, oOppValue);
+ }
+ Span* const test = &fTs[index];
+ Span* end = test;
+ const double oStartT = oTest->fT;
+ do {
+ if (bumpSpan(end, oWindValue, oOppValue)) {
+ TrackOutside(outsideTs, end->fT, oStartT);
+ }
+ end = &fTs[++index];
+ } while (approximately_negative(end->fT - test->fT));
+ return index;
+ }
+
+ // because of the order in which coincidences are resolved, this and other
+ // may not have the same intermediate points. Compute the corresponding
+ // intermediate T values (using this as the master, other as the follower)
+ // and walk other conditionally -- hoping that it catches up in the end
+ int bumpCoincidentOther(const Span* test, double oEndT, int& oIndex,
+ SkTDArray<double>& oOutsideTs) {
+ Span* const oTest = &fTs[oIndex];
+ Span* oEnd = oTest;
+ const double startT = test->fT;
+ const double oStartT = oTest->fT;
+ while (!approximately_negative(oEndT - oEnd->fT)
+ && approximately_negative(oEnd->fT - oStartT)) {
+ zeroSpan(oEnd);
+ TrackOutside(oOutsideTs, oEnd->fT, startT);
+ oEnd = &fTs[++oIndex];
+ }
+ return oIndex;
+ }
+
+ // FIXME: need to test this case:
+ // contourA has two segments that are coincident
+ // contourB has two segments that are coincident in the same place
+ // each ends up with +2/0 pairs for winding count
+ // since logic below doesn't transfer count (only increments/decrements) can this be
+ // resolved to +4/0 ?
+
+ // set spans from start to end to increment the greater by one and decrement
+ // the lesser
+ void addTCoincident(double startT, double endT, Segment& other, double oStartT, double oEndT) {
+ SkASSERT(!approximately_negative(endT - startT));
+ SkASSERT(!approximately_negative(oEndT - oStartT));
+ bool opp = fOperand ^ other.fOperand;
+ int index = 0;
+ while (!approximately_negative(startT - fTs[index].fT)) {
+ ++index;
+ }
+ int oIndex = 0;
+ while (!approximately_negative(oStartT - other.fTs[oIndex].fT)) {
+ ++oIndex;
+ }
+ Span* test = &fTs[index];
+ Span* oTest = &other.fTs[oIndex];
+ SkTDArray<double> outsideTs;
+ SkTDArray<double> oOutsideTs;
+ do {
+ // if either span has an opposite value and the operands don't match, resolve first
+ // SkASSERT(!test->fDone || !oTest->fDone);
+ if (test->fDone || oTest->fDone) {
+ index = advanceCoincidentThis(oTest, opp, index);
+ oIndex = other.advanceCoincidentOther(test, oEndT, oIndex);
+ } else {
+ index = bumpCoincidentThis(oTest, opp, index, outsideTs);
+ oIndex = other.bumpCoincidentOther(test, oEndT, oIndex, oOutsideTs);
+ }
+ test = &fTs[index];
+ oTest = &other.fTs[oIndex];
+ } while (!approximately_negative(endT - test->fT));
+ SkASSERT(approximately_negative(oTest->fT - oEndT));
+ SkASSERT(approximately_negative(oEndT - oTest->fT));
+ if (!done() && outsideTs.count()) {
+ addCoinOutsides(outsideTs, other, oEndT);
+ }
+ if (!other.done() && oOutsideTs.count()) {
+ other.addCoinOutsides(oOutsideTs, *this, endT);
+ }
+ }
+
+ // FIXME: this doesn't prevent the same span from being added twice
+ // fix in caller, SkASSERT here?
+ void addTPair(double t, Segment& other, double otherT, bool borrowWind, const SkPoint& pt) {
+ int tCount = fTs.count();
+ for (int tIndex = 0; tIndex < tCount; ++tIndex) {
+ const Span& span = fTs[tIndex];
+ if (!approximately_negative(span.fT - t)) {
+ break;
+ }
+ if (approximately_negative(span.fT - t) && span.fOther == &other
+ && approximately_equal(span.fOtherT, otherT)) {
+#if DEBUG_ADD_T_PAIR
+ SkDebugf("%s addTPair duplicate this=%d %1.9g other=%d %1.9g\n",
+ __FUNCTION__, fID, t, other.fID, otherT);
+#endif
+ return;
+ }
+ }
+#if DEBUG_ADD_T_PAIR
+ SkDebugf("%s addTPair this=%d %1.9g other=%d %1.9g\n",
+ __FUNCTION__, fID, t, other.fID, otherT);
+#endif
+ int insertedAt = addT(&other, pt, t);
+ int otherInsertedAt = other.addT(this, pt, otherT);
+ addOtherT(insertedAt, otherT, otherInsertedAt);
+ other.addOtherT(otherInsertedAt, t, insertedAt);
+ matchWindingValue(insertedAt, t, borrowWind);
+ other.matchWindingValue(otherInsertedAt, otherT, borrowWind);
+ }
+
+ void addTwoAngles(int start, int end, SkTDArray<Angle>& angles) const {
+ // add edge leading into junction
+ int min = SkMin32(end, start);
+ if (fTs[min].fWindValue > 0 || fTs[min].fOppValue > 0) {
+ addAngle(angles, end, start);
+ }
+ // add edge leading away from junction
+ int step = SkSign32(end - start);
+ int tIndex = nextExactSpan(end, step);
+ min = SkMin32(end, tIndex);
+ if (tIndex >= 0 && (fTs[min].fWindValue > 0 || fTs[min].fOppValue > 0)) {
+ addAngle(angles, end, tIndex);
+ }
+ }
+
+ int advanceCoincidentThis(const Span* oTest, bool opp, int index) {
+ Span* const test = &fTs[index];
+ Span* end = test;
+ do {
+ end = &fTs[++index];
+ } while (approximately_negative(end->fT - test->fT));
+ return index;
+ }
+
+ int advanceCoincidentOther(const Span* test, double oEndT, int& oIndex) {
+ Span* const oTest = &fTs[oIndex];
+ Span* oEnd = oTest;
+ const double oStartT = oTest->fT;
+ while (!approximately_negative(oEndT - oEnd->fT)
+ && approximately_negative(oEnd->fT - oStartT)) {
+ oEnd = &fTs[++oIndex];
+ }
+ return oIndex;
+ }
+
+ bool betweenTs(int lesser, double testT, int greater) {
+ if (lesser > greater) {
+ SkTSwap<int>(lesser, greater);
+ }
+ return approximately_between(fTs[lesser].fT, testT, fTs[greater].fT);
+ }
+
+ const Bounds& bounds() const {
+ return fBounds;
+ }
+
+ void buildAngles(int index, SkTDArray<Angle>& angles, bool includeOpp) const {
+ double referenceT = fTs[index].fT;
+ int lesser = index;
+ while (--lesser >= 0 && (includeOpp || fTs[lesser].fOther->fOperand == fOperand)
+ && precisely_negative(referenceT - fTs[lesser].fT)) {
+ buildAnglesInner(lesser, angles);
+ }
+ do {
+ buildAnglesInner(index, angles);
+ } while (++index < fTs.count() && (includeOpp || fTs[index].fOther->fOperand == fOperand)
+ && precisely_negative(fTs[index].fT - referenceT));
+ }
+
+ void buildAnglesInner(int index, SkTDArray<Angle>& angles) const {
+ const Span* span = &fTs[index];
+ Segment* other = span->fOther;
+ // if there is only one live crossing, and no coincidence, continue
+ // in the same direction
+ // if there is coincidence, the only choice may be to reverse direction
+ // find edge on either side of intersection
+ int oIndex = span->fOtherIndex;
+ // if done == -1, prior span has already been processed
+ int step = 1;
+ int next = other->nextExactSpan(oIndex, step);
+ if (next < 0) {
+ step = -step;
+ next = other->nextExactSpan(oIndex, step);
+ }
+ // add candidate into and away from junction
+ other->addTwoAngles(next, oIndex, angles);
+ }
+
+ int computeSum(int startIndex, int endIndex, bool binary) {
+ SkTDArray<Angle> angles;
+ addTwoAngles(startIndex, endIndex, angles);
+ buildAngles(endIndex, angles, false);
+ // OPTIMIZATION: check all angles to see if any have computed wind sum
+ // before sorting (early exit if none)
+ SkTDArray<Angle*> sorted;
+ bool sortable = SortAngles(angles, sorted);
+#if DEBUG_SORT
+ sorted[0]->segment()->debugShowSort(__FUNCTION__, sorted, 0, 0, 0);
+#endif
+ if (!sortable) {
+ return SK_MinS32;
+ }
+ int angleCount = angles.count();
+ const Angle* angle;
+ const Segment* base;
+ int winding;
+ int oWinding;
+ int firstIndex = 0;
+ do {
+ angle = sorted[firstIndex];
+ base = angle->segment();
+ winding = base->windSum(angle);
+ if (winding != SK_MinS32) {
+ oWinding = base->oppSum(angle);
+ break;
+ }
+ if (++firstIndex == angleCount) {
+ return SK_MinS32;
+ }
+ } while (true);
+ // turn winding into contourWinding
+ int spanWinding = base->spanSign(angle);
+ bool inner = useInnerWinding(winding + spanWinding, winding);
+ #if DEBUG_WINDING
+ SkDebugf("%s spanWinding=%d winding=%d sign=%d inner=%d result=%d\n", __FUNCTION__,
+ spanWinding, winding, angle->sign(), inner,
+ inner ? winding + spanWinding : winding);
+ #endif
+ if (inner) {
+ winding += spanWinding;
+ }
+ #if DEBUG_SORT
+ base->debugShowSort(__FUNCTION__, sorted, firstIndex, winding, oWinding);
+ #endif
+ int nextIndex = firstIndex + 1;
+ int lastIndex = firstIndex != 0 ? firstIndex : angleCount;
+ winding -= base->spanSign(angle);
+ oWinding -= base->oppSign(angle);
+ do {
+ if (nextIndex == angleCount) {
+ nextIndex = 0;
+ }
+ angle = sorted[nextIndex];
+ Segment* segment = angle->segment();
+ bool opp = base->fOperand ^ segment->fOperand;
+ int maxWinding, oMaxWinding;
+ int spanSign = segment->spanSign(angle);
+ int oppoSign = segment->oppSign(angle);
+ if (opp) {
+ oMaxWinding = oWinding;
+ oWinding -= spanSign;
+ maxWinding = winding;
+ if (oppoSign) {
+ winding -= oppoSign;
+ }
+ } else {
+ maxWinding = winding;
+ winding -= spanSign;
+ oMaxWinding = oWinding;
+ if (oppoSign) {
+ oWinding -= oppoSign;
+ }
+ }
+ if (segment->windSum(angle) == SK_MinS32) {
+ if (opp) {
+ if (useInnerWinding(oMaxWinding, oWinding)) {
+ oMaxWinding = oWinding;
+ }
+ if (oppoSign && useInnerWinding(maxWinding, winding)) {
+ maxWinding = winding;
+ }
+ (void) segment->markAndChaseWinding(angle, oMaxWinding, maxWinding);
+ } else {
+ if (useInnerWinding(maxWinding, winding)) {
+ maxWinding = winding;
+ }
+ if (oppoSign && useInnerWinding(oMaxWinding, oWinding)) {
+ oMaxWinding = oWinding;
+ }
+ (void) segment->markAndChaseWinding(angle, maxWinding,
+ binary ? oMaxWinding : 0);
+ }
+ }
+ } while (++nextIndex != lastIndex);
+ int minIndex = SkMin32(startIndex, endIndex);
+ return windSum(minIndex);
+ }
+
+ int crossedSpanY(const SkPoint& basePt, SkScalar& bestY, double& hitT, bool& hitSomething,
+ double mid, bool opp, bool current) const {
+ SkScalar bottom = fBounds.fBottom;
+ int bestTIndex = -1;
+ if (bottom <= bestY) {
+ return bestTIndex;
+ }
+ SkScalar top = fBounds.fTop;
+ if (top >= basePt.fY) {
+ return bestTIndex;
+ }
+ if (fBounds.fLeft > basePt.fX) {
+ return bestTIndex;
+ }
+ if (fBounds.fRight < basePt.fX) {
+ return bestTIndex;
+ }
+ if (fBounds.fLeft == fBounds.fRight) {
+ // if vertical, and directly above test point, wait for another one
+ return AlmostEqualUlps(basePt.fX, fBounds.fLeft) ? SK_MinS32 : bestTIndex;
+ }
+ // intersect ray starting at basePt with edge
+ Intersections intersections;
+ // OPTIMIZE: use specialty function that intersects ray with curve,
+ // returning t values only for curve (we don't care about t on ray)
+ int pts = (*VSegmentIntersect[fVerb])(fPts, top, bottom, basePt.fX, false, intersections);
+ if (pts == 0 || (current && pts == 1)) {
+ return bestTIndex;
+ }
+ if (current) {
+ SkASSERT(pts > 1);
+ int closestIdx = 0;
+ double closest = fabs(intersections.fT[0][0] - mid);
+ for (int idx = 1; idx < pts; ++idx) {
+ double test = fabs(intersections.fT[0][idx] - mid);
+ if (closest > test) {
+ closestIdx = idx;
+ closest = test;
+ }
+ }
+ if (closestIdx < pts - 1) {
+ intersections.fT[0][closestIdx] = intersections.fT[0][pts - 1];
+ }
+ --pts;
+ }
+ double bestT = -1;
+ for (int index = 0; index < pts; ++index) {
+ double foundT = intersections.fT[0][index];
+ if (approximately_less_than_zero(foundT)
+ || approximately_greater_than_one(foundT)) {
+ continue;
+ }
+ SkScalar testY = (*SegmentYAtT[fVerb])(fPts, foundT);
+ if (approximately_negative(testY - bestY)
+ || approximately_negative(basePt.fY - testY)) {
+ continue;
+ }
+ if (pts > 1 && fVerb == SkPath::kLine_Verb) {
+ return SK_MinS32; // if the intersection is edge on, wait for another one
+ }
+ if (fVerb > SkPath::kLine_Verb) {
+ SkScalar dx = (*SegmentDXAtT[fVerb])(fPts, foundT);
+ if (approximately_zero(dx)) {
+ return SK_MinS32; // hit vertical, wait for another one
+ }
+ }
+ bestY = testY;
+ bestT = foundT;
+ }
+ if (bestT < 0) {
+ return bestTIndex;
+ }
+ SkASSERT(bestT >= 0);
+ SkASSERT(bestT <= 1);
+ int start;
+ int end = 0;
+ do {
+ start = end;
+ end = nextSpan(start, 1);
+ } while (fTs[end].fT < bestT);
+ // FIXME: see next candidate for a better pattern to find the next start/end pair
+ while (start + 1 < end && fTs[start].fDone) {
+ ++start;
+ }
+ if (!isCanceled(start)) {
+ hitT = bestT;
+ bestTIndex = start;
+ hitSomething = true;
+ }
+ return bestTIndex;
+ }
+
+ void decrementSpan(Span* span) {
+ SkASSERT(span->fWindValue > 0);
+ if (--(span->fWindValue) == 0) {
+ if (!span->fOppValue && !span->fDone) {
+ span->fDone = true;
+ ++fDoneSpans;
+ }
+ }
+ }
+
+ bool bumpSpan(Span* span, int windDelta, int oppDelta) {
+ SkASSERT(!span->fDone);
+ span->fWindValue += windDelta;
+ SkASSERT(span->fWindValue >= 0);
+ span->fOppValue += oppDelta;
+ SkASSERT(span->fOppValue >= 0);
+ if (fXor) {
+ span->fWindValue &= 1;
+ }
+ if (fOppXor) {
+ span->fOppValue &= 1;
+ }
+ if (!span->fWindValue && !span->fOppValue) {
+ span->fDone = true;
+ ++fDoneSpans;
+ return true;
+ }
+ return false;
+ }
+
+ // OPTIMIZE
+ // when the edges are initially walked, they don't automatically get the prior and next
+ // edges assigned to positions t=0 and t=1. Doing that would remove the need for this check,
+ // and would additionally remove the need for similar checks in condition edges. It would
+ // also allow intersection code to assume end of segment intersections (maybe?)
+ bool complete() const {
+ int count = fTs.count();
+ return count > 1 && fTs[0].fT == 0 && fTs[--count].fT == 1;
+ }
+
+ bool done() const {
+ SkASSERT(fDoneSpans <= fTs.count());
+ return fDoneSpans == fTs.count();
+ }
+
+ bool done(int min) const {
+ return fTs[min].fDone;
+ }
+
+ bool done(const Angle* angle) const {
+ return done(SkMin32(angle->start(), angle->end()));
+ }
+
+ SkVector dxdy(int index) const {
+ return (*SegmentDXDYAtT[fVerb])(fPts, fTs[index].fT);
+ }
+
+ SkScalar dy(int index) const {
+ return (*SegmentDYAtT[fVerb])(fPts, fTs[index].fT);
+ }
+
+ bool equalPoints(int greaterTIndex, int lesserTIndex) {
+ SkASSERT(greaterTIndex >= lesserTIndex);
+ double greaterT = fTs[greaterTIndex].fT;
+ double lesserT = fTs[lesserTIndex].fT;
+ if (greaterT == lesserT) {
+ return true;
+ }
+ if (!approximately_negative(greaterT - lesserT)) {
+ return false;
+ }
+ return xyAtT(greaterTIndex) == xyAtT(lesserTIndex);
+ }
+
+ /*
+ The M and S variable name parts stand for the operators.
+ Mi stands for Minuend (see wiki subtraction, analogous to difference)
+ Su stands for Subtrahend
+ The Opp variable name part designates that the value is for the Opposite operator.
+ Opposite values result from combining coincident spans.
+ */
+
+ Segment* findNextOp(SkTDArray<Span*>& chase, int& nextStart, int& nextEnd,
+ bool& unsortable, ShapeOp op, const int xorMiMask, const int xorSuMask) {
+ const int startIndex = nextStart;
+ const int endIndex = nextEnd;
+ SkASSERT(startIndex != endIndex);
+ const int count = fTs.count();
+ SkASSERT(startIndex < endIndex ? startIndex < count - 1 : startIndex > 0);
+ const int step = SkSign32(endIndex - startIndex);
+ const int end = nextExactSpan(startIndex, step);
+ SkASSERT(end >= 0);
+ Span* endSpan = &fTs[end];
+ Segment* other;
+ if (isSimple(end)) {
+ // mark the smaller of startIndex, endIndex done, and all adjacent
+ // spans with the same T value (but not 'other' spans)
+ #if DEBUG_WINDING
+ SkDebugf("%s simple\n", __FUNCTION__);
+ #endif
+ int min = SkMin32(startIndex, endIndex);
+ if (fTs[min].fDone) {
+ return NULL;
+ }
+ markDoneBinary(min);
+ other = endSpan->fOther;
+ nextStart = endSpan->fOtherIndex;
+ double startT = other->fTs[nextStart].fT;
+ nextEnd = nextStart;
+ do {
+ nextEnd += step;
+ }
+ while (precisely_zero(startT - other->fTs[nextEnd].fT));
+ SkASSERT(step < 0 ? nextEnd >= 0 : nextEnd < other->fTs.count());
+ return other;
+ }
+ // more than one viable candidate -- measure angles to find best
+ SkTDArray<Angle> angles;
+ SkASSERT(startIndex - endIndex != 0);
+ SkASSERT((startIndex - endIndex < 0) ^ (step < 0));
+ addTwoAngles(startIndex, end, angles);
+ buildAngles(end, angles, true);
+ SkTDArray<Angle*> sorted;
+ bool sortable = SortAngles(angles, sorted);
+ int angleCount = angles.count();
+ int firstIndex = findStartingEdge(sorted, startIndex, end);
+ SkASSERT(firstIndex >= 0);
+ #if DEBUG_SORT
+ debugShowSort(__FUNCTION__, sorted, firstIndex);
+ #endif
+ if (!sortable) {
+ unsortable = true;
+ return NULL;
+ }
+ SkASSERT(sorted[firstIndex]->segment() == this);
+ #if DEBUG_WINDING
+ SkDebugf("%s firstIndex=[%d] sign=%d\n", __FUNCTION__, firstIndex,
+ sorted[firstIndex]->sign());
+ #endif
+ int sumMiWinding = updateWinding(endIndex, startIndex);
+ int sumSuWinding = updateOppWinding(endIndex, startIndex);
+ if (operand()) {
+ SkTSwap<int>(sumMiWinding, sumSuWinding);
+ }
+ int nextIndex = firstIndex + 1;
+ int lastIndex = firstIndex != 0 ? firstIndex : angleCount;
+ const Angle* foundAngle = NULL;
+ bool foundDone = false;
+ // iterate through the angle, and compute everyone's winding
+ Segment* nextSegment;
+ int activeCount = 0;
+ do {
+ SkASSERT(nextIndex != firstIndex);
+ if (nextIndex == angleCount) {
+ nextIndex = 0;
+ }
+ const Angle* nextAngle = sorted[nextIndex];
+ nextSegment = nextAngle->segment();
+ int maxWinding, sumWinding, oppMaxWinding, oppSumWinding;
+ bool activeAngle = nextSegment->activeOp(xorMiMask, xorSuMask, nextAngle->start(),
+ nextAngle->end(), op, sumMiWinding, sumSuWinding,
+ maxWinding, sumWinding, oppMaxWinding, oppSumWinding);
+ if (activeAngle) {
+ ++activeCount;
+ if (!foundAngle || (foundDone && activeCount & 1)) {
+ if (nextSegment->tiny(nextAngle)) {
+ unsortable = true;
+ return NULL;
+ }
+ foundAngle = nextAngle;
+ foundDone = nextSegment->done(nextAngle) && !nextSegment->tiny(nextAngle);
+ }
+ }
+ if (nextSegment->done()) {
+ continue;
+ }
+ if (nextSegment->windSum(nextAngle) != SK_MinS32) {
+ continue;
+ }
+ Span* last = nextSegment->markAngle(maxWinding, sumWinding, oppMaxWinding,
+ oppSumWinding, activeAngle, nextAngle);
+ if (last) {
+ *chase.append() = last;
+#if DEBUG_WINDING
+ SkDebugf("%s chase.append id=%d\n", __FUNCTION__,
+ last->fOther->fTs[last->fOtherIndex].fOther->debugID());
+#endif
+ }
+ } while (++nextIndex != lastIndex);
+ markDoneBinary(SkMin32(startIndex, endIndex));
+ if (!foundAngle) {
+ return NULL;
+ }
+ nextStart = foundAngle->start();
+ nextEnd = foundAngle->end();
+ nextSegment = foundAngle->segment();
+
+ #if DEBUG_WINDING
+ SkDebugf("%s from:[%d] to:[%d] start=%d end=%d\n",
+ __FUNCTION__, debugID(), nextSegment->debugID(), nextStart, nextEnd);
+ #endif
+ return nextSegment;
+ }
+
+ Segment* findNextWinding(SkTDArray<Span*>& chase, int& nextStart, int& nextEnd,
+ bool& unsortable) {
+ const int startIndex = nextStart;
+ const int endIndex = nextEnd;
+ SkASSERT(startIndex != endIndex);
+ const int count = fTs.count();
+ SkASSERT(startIndex < endIndex ? startIndex < count - 1 : startIndex > 0);
+ const int step = SkSign32(endIndex - startIndex);
+ const int end = nextExactSpan(startIndex, step);
+ SkASSERT(end >= 0);
+ Span* endSpan = &fTs[end];
+ Segment* other;
+ if (isSimple(end)) {
+ // mark the smaller of startIndex, endIndex done, and all adjacent
+ // spans with the same T value (but not 'other' spans)
+ #if DEBUG_WINDING
+ SkDebugf("%s simple\n", __FUNCTION__);
+ #endif
+ int min = SkMin32(startIndex, endIndex);
+ if (fTs[min].fDone) {
+ return NULL;
+ }
+ markDoneUnary(min);
+ other = endSpan->fOther;
+ nextStart = endSpan->fOtherIndex;
+ double startT = other->fTs[nextStart].fT;
+ nextEnd = nextStart;
+ do {
+ nextEnd += step;
+ }
+ while (precisely_zero(startT - other->fTs[nextEnd].fT));
+ SkASSERT(step < 0 ? nextEnd >= 0 : nextEnd < other->fTs.count());
+ return other;
+ }
+ // more than one viable candidate -- measure angles to find best
+ SkTDArray<Angle> angles;
+ SkASSERT(startIndex - endIndex != 0);
+ SkASSERT((startIndex - endIndex < 0) ^ (step < 0));
+ addTwoAngles(startIndex, end, angles);
+ buildAngles(end, angles, true);
+ SkTDArray<Angle*> sorted;
+ bool sortable = SortAngles(angles, sorted);
+ int angleCount = angles.count();
+ int firstIndex = findStartingEdge(sorted, startIndex, end);
+ SkASSERT(firstIndex >= 0);
+ #if DEBUG_SORT
+ debugShowSort(__FUNCTION__, sorted, firstIndex);
+ #endif
+ if (!sortable) {
+ unsortable = true;
+ return NULL;
+ }
+ SkASSERT(sorted[firstIndex]->segment() == this);
+ #if DEBUG_WINDING
+ SkDebugf("%s firstIndex=[%d] sign=%d\n", __FUNCTION__, firstIndex,
+ sorted[firstIndex]->sign());
+ #endif
+ int sumWinding = updateWinding(endIndex, startIndex);
+ int nextIndex = firstIndex + 1;
+ int lastIndex = firstIndex != 0 ? firstIndex : angleCount;
+ const Angle* foundAngle = NULL;
+ bool foundDone = false;
+ // iterate through the angle, and compute everyone's winding
+ Segment* nextSegment;
+ int activeCount = 0;
+ do {
+ SkASSERT(nextIndex != firstIndex);
+ if (nextIndex == angleCount) {
+ nextIndex = 0;
+ }
+ const Angle* nextAngle = sorted[nextIndex];
+ nextSegment = nextAngle->segment();
+ int maxWinding;
+ bool activeAngle = nextSegment->activeWinding(nextAngle->start(), nextAngle->end(),
+ maxWinding, sumWinding);
+ if (activeAngle) {
+ ++activeCount;
+ if (!foundAngle || (foundDone && activeCount & 1)) {
+ if (nextSegment->tiny(nextAngle)) {
+ unsortable = true;
+ return NULL;
+ }
+ foundAngle = nextAngle;
+ foundDone = nextSegment->done(nextAngle);
+ }
+ }
+ if (nextSegment->done()) {
+ continue;
+ }
+ if (nextSegment->windSum(nextAngle) != SK_MinS32) {
+ continue;
+ }
+ Span* last = nextSegment->markAngle(maxWinding, sumWinding, activeAngle, nextAngle);
+ if (last) {
+ *chase.append() = last;
+#if DEBUG_WINDING
+ SkDebugf("%s chase.append id=%d\n", __FUNCTION__,
+ last->fOther->fTs[last->fOtherIndex].fOther->debugID());
+#endif
+ }
+ } while (++nextIndex != lastIndex);
+ markDoneUnary(SkMin32(startIndex, endIndex));
+ if (!foundAngle) {
+ return NULL;
+ }
+ nextStart = foundAngle->start();
+ nextEnd = foundAngle->end();
+ nextSegment = foundAngle->segment();
+ #if DEBUG_WINDING
+ SkDebugf("%s from:[%d] to:[%d] start=%d end=%d\n",
+ __FUNCTION__, debugID(), nextSegment->debugID(), nextStart, nextEnd);
+ #endif
+ return nextSegment;
+ }
+
+ Segment* findNextXor(int& nextStart, int& nextEnd, bool& unsortable) {
+ const int startIndex = nextStart;
+ const int endIndex = nextEnd;
+ SkASSERT(startIndex != endIndex);
+ int count = fTs.count();
+ SkASSERT(startIndex < endIndex ? startIndex < count - 1
+ : startIndex > 0);
+ int step = SkSign32(endIndex - startIndex);
+ int end = nextExactSpan(startIndex, step);
+ SkASSERT(end >= 0);
+ Span* endSpan = &fTs[end];
+ Segment* other;
+ if (isSimple(end)) {
+ #if DEBUG_WINDING
+ SkDebugf("%s simple\n", __FUNCTION__);
+ #endif
+ int min = SkMin32(startIndex, endIndex);
+ if (fTs[min].fDone) {
+ return NULL;
+ }
+ markDone(min, 1);
+ other = endSpan->fOther;
+ nextStart = endSpan->fOtherIndex;
+ double startT = other->fTs[nextStart].fT;
+ #if 01 // FIXME: I don't know why the logic here is difference from the winding case
+ SkDEBUGCODE(bool firstLoop = true;)
+ if ((approximately_less_than_zero(startT) && step < 0)
+ || (approximately_greater_than_one(startT) && step > 0)) {
+ step = -step;
+ SkDEBUGCODE(firstLoop = false;)
+ }
+ do {
+ #endif
+ nextEnd = nextStart;
+ do {
+ nextEnd += step;
+ }
+ while (precisely_zero(startT - other->fTs[nextEnd].fT));
+ #if 01
+ if (other->fTs[SkMin32(nextStart, nextEnd)].fWindValue) {
+ break;
+ }
+ #ifdef SK_DEBUG
+ SkASSERT(firstLoop);
+ #endif
+ SkDEBUGCODE(firstLoop = false;)
+ step = -step;
+ } while (true);
+ #endif
+ SkASSERT(step < 0 ? nextEnd >= 0 : nextEnd < other->fTs.count());
+ return other;
+ }
+ SkTDArray<Angle> angles;
+ SkASSERT(startIndex - endIndex != 0);
+ SkASSERT((startIndex - endIndex < 0) ^ (step < 0));
+ addTwoAngles(startIndex, end, angles);
+ buildAngles(end, angles, false);
+ SkTDArray<Angle*> sorted;
+ bool sortable = SortAngles(angles, sorted);
+ if (!sortable) {
+ unsortable = true;
+ #if DEBUG_SORT
+ debugShowSort(__FUNCTION__, sorted, findStartingEdge(sorted, startIndex, end), 0, 0);
+ #endif
+ return NULL;
+ }
+ int angleCount = angles.count();
+ int firstIndex = findStartingEdge(sorted, startIndex, end);
+ SkASSERT(firstIndex >= 0);
+ #if DEBUG_SORT
+ debugShowSort(__FUNCTION__, sorted, firstIndex, 0, 0);
+ #endif
+ SkASSERT(sorted[firstIndex]->segment() == this);
+ int nextIndex = firstIndex + 1;
+ int lastIndex = firstIndex != 0 ? firstIndex : angleCount;
+ const Angle* foundAngle = NULL;
+ bool foundDone = false;
+ Segment* nextSegment;
+ int activeCount = 0;
+ do {
+ SkASSERT(nextIndex != firstIndex);
+ if (nextIndex == angleCount) {
+ nextIndex = 0;
+ }
+ const Angle* nextAngle = sorted[nextIndex];
+ nextSegment = nextAngle->segment();
+ ++activeCount;
+ if (!foundAngle || (foundDone && activeCount & 1)) {
+ if (nextSegment->tiny(nextAngle)) {
+ unsortable = true;
+ return NULL;
+ }
+ foundAngle = nextAngle;
+ foundDone = nextSegment->done(nextAngle);
+ }
+ if (nextSegment->done()) {
+ continue;
+ }
+ } while (++nextIndex != lastIndex);
+ markDone(SkMin32(startIndex, endIndex), 1);
+ if (!foundAngle) {
+ return NULL;
+ }
+ nextStart = foundAngle->start();
+ nextEnd = foundAngle->end();
+ nextSegment = foundAngle->segment();
+ #if DEBUG_WINDING
+ SkDebugf("%s from:[%d] to:[%d] start=%d end=%d\n",
+ __FUNCTION__, debugID(), nextSegment->debugID(), nextStart, nextEnd);
+ #endif
+ return nextSegment;
+ }
+
+ int findStartingEdge(SkTDArray<Angle*>& sorted, int start, int end) {
+ int angleCount = sorted.count();
+ int firstIndex = -1;
+ for (int angleIndex = 0; angleIndex < angleCount; ++angleIndex) {
+ const Angle* angle = sorted[angleIndex];
+ if (angle->segment() == this && angle->start() == end &&
+ angle->end() == start) {
+ firstIndex = angleIndex;
+ break;
+ }
+ }
+ return firstIndex;
+ }
+
+ // FIXME: this is tricky code; needs its own unit test
+ // note that fOtherIndex isn't computed yet, so it can't be used here
+ void findTooCloseToCall() {
+ int count = fTs.count();
+ if (count < 3) { // require t=0, x, 1 at minimum
+ return;
+ }
+ int matchIndex = 0;
+ int moCount;
+ Span* match;
+ Segment* mOther;
+ do {
+ match = &fTs[matchIndex];
+ mOther = match->fOther;
+ // FIXME: allow quads, cubics to be near coincident?
+ if (mOther->fVerb == SkPath::kLine_Verb) {
+ moCount = mOther->fTs.count();
+ if (moCount >= 3) {
+ break;
+ }
+ }
+ if (++matchIndex >= count) {
+ return;
+ }
+ } while (true); // require t=0, x, 1 at minimum
+ // OPTIMIZATION: defer matchPt until qualifying toCount is found?
+ const SkPoint* matchPt = &xyAtT(match);
+ // look for a pair of nearby T values that map to the same (x,y) value
+ // if found, see if the pair of other segments share a common point. If
+ // so, the span from here to there is coincident.
+ for (int index = matchIndex + 1; index < count; ++index) {
+ Span* test = &fTs[index];
+ if (test->fDone) {
+ continue;
+ }
+ Segment* tOther = test->fOther;
+ if (tOther->fVerb != SkPath::kLine_Verb) {
+ continue; // FIXME: allow quads, cubics to be near coincident?
+ }
+ int toCount = tOther->fTs.count();
+ if (toCount < 3) { // require t=0, x, 1 at minimum
+ continue;
+ }
+ const SkPoint* testPt = &xyAtT(test);
+ if (*matchPt != *testPt) {
+ matchIndex = index;
+ moCount = toCount;
+ match = test;
+ mOther = tOther;
+ matchPt = testPt;
+ continue;
+ }
+ int moStart = -1;
+ int moEnd = -1;
+ double moStartT, moEndT;
+ for (int moIndex = 0; moIndex < moCount; ++moIndex) {
+ Span& moSpan = mOther->fTs[moIndex];
+ if (moSpan.fDone) {
+ continue;
+ }
+ if (moSpan.fOther == this) {
+ if (moSpan.fOtherT == match->fT) {
+ moStart = moIndex;
+ moStartT = moSpan.fT;
+ }
+ continue;
+ }
+ if (moSpan.fOther == tOther) {
+ if (tOther->windValueAt(moSpan.fOtherT) == 0) {
+ moStart = -1;
+ break;
+ }
+ SkASSERT(moEnd == -1);
+ moEnd = moIndex;
+ moEndT = moSpan.fT;
+ }
+ }
+ if (moStart < 0 || moEnd < 0) {
+ continue;
+ }
+ // FIXME: if moStartT, moEndT are initialized to NaN, can skip this test
+ if (approximately_equal(moStartT, moEndT)) {
+ continue;
+ }
+ int toStart = -1;
+ int toEnd = -1;
+ double toStartT, toEndT;
+ for (int toIndex = 0; toIndex < toCount; ++toIndex) {
+ Span& toSpan = tOther->fTs[toIndex];
+ if (toSpan.fDone) {
+ continue;
+ }
+ if (toSpan.fOther == this) {
+ if (toSpan.fOtherT == test->fT) {
+ toStart = toIndex;
+ toStartT = toSpan.fT;
+ }
+ continue;
+ }
+ if (toSpan.fOther == mOther && toSpan.fOtherT == moEndT) {
+ if (mOther->windValueAt(toSpan.fOtherT) == 0) {
+ moStart = -1;
+ break;
+ }
+ SkASSERT(toEnd == -1);
+ toEnd = toIndex;
+ toEndT = toSpan.fT;
+ }
+ }
+ // FIXME: if toStartT, toEndT are initialized to NaN, can skip this test
+ if (toStart <= 0 || toEnd <= 0) {
+ continue;
+ }
+ if (approximately_equal(toStartT, toEndT)) {
+ continue;
+ }
+ // test to see if the segment between there and here is linear
+ if (!mOther->isLinear(moStart, moEnd)
+ || !tOther->isLinear(toStart, toEnd)) {
+ continue;
+ }
+ bool flipped = (moStart - moEnd) * (toStart - toEnd) < 1;
+ if (flipped) {
+ mOther->addTCancel(moStartT, moEndT, *tOther, toEndT, toStartT);
+ } else {
+ mOther->addTCoincident(moStartT, moEndT, *tOther, toStartT, toEndT);
+ }
+ }
+ }
+
+ // FIXME: either:
+ // a) mark spans with either end unsortable as done, or
+ // b) rewrite findTop / findTopSegment / findTopContour to iterate further
+ // when encountering an unsortable span
+
+ // OPTIMIZATION : for a pair of lines, can we compute points at T (cached)
+ // and use more concise logic like the old edge walker code?
+ // FIXME: this needs to deal with coincident edges
+ Segment* findTop(int& tIndex, int& endIndex, bool& unsortable, bool onlySortable) {
+ // iterate through T intersections and return topmost
+ // topmost tangent from y-min to first pt is closer to horizontal
+ SkASSERT(!done());
+ int firstT = -1;
+ /* SkPoint topPt = */ activeLeftTop(onlySortable, &firstT);
+ if (firstT < 0) {
+ unsortable = true;
+ firstT = 0;
+ while (fTs[firstT].fDone) {
+ SkASSERT(firstT < fTs.count());
+ ++firstT;
+ }
+ tIndex = firstT;
+ endIndex = nextExactSpan(firstT, 1);
+ return this;
+ }
+ // sort the edges to find the leftmost
+ int step = 1;
+ int end = nextSpan(firstT, step);
+ if (end == -1) {
+ step = -1;
+ end = nextSpan(firstT, step);
+ SkASSERT(end != -1);
+ }
+ // if the topmost T is not on end, or is three-way or more, find left
+ // look for left-ness from tLeft to firstT (matching y of other)
+ SkTDArray<Angle> angles;
+ SkASSERT(firstT - end != 0);
+ addTwoAngles(end, firstT, angles);
+ buildAngles(firstT, angles, true);
+ SkTDArray<Angle*> sorted;
+ bool sortable = SortAngles(angles, sorted);
+ int first = SK_MaxS32;
+ SkScalar top = SK_ScalarMax;
+ int count = sorted.count();
+ for (int index = 0; index < count; ++index) {
+ const Angle* angle = sorted[index];
+ Segment* next = angle->segment();
+ Bounds bounds;
+ next->subDivideBounds(angle->end(), angle->start(), bounds);
+ if (approximately_greater(top, bounds.fTop)) {
+ top = bounds.fTop;
+ first = index;
+ }
+ }
+ SkASSERT(first < SK_MaxS32);
+ #if DEBUG_SORT // || DEBUG_SWAP_TOP
+ sorted[first]->segment()->debugShowSort(__FUNCTION__, sorted, first, 0, 0);
+ #endif
+ if (onlySortable && !sortable) {
+ unsortable = true;
+ return NULL;
+ }
+ // skip edges that have already been processed
+ firstT = first - 1;
+ Segment* leftSegment;
+ do {
+ if (++firstT == count) {
+ firstT = 0;
+ }
+ const Angle* angle = sorted[firstT];
+ SkASSERT(!onlySortable || !angle->unsortable());
+ leftSegment = angle->segment();
+ tIndex = angle->end();
+ endIndex = angle->start();
+ } while (leftSegment->fTs[SkMin32(tIndex, endIndex)].fDone);
+ if (leftSegment->verb() >= SkPath::kQuad_Verb) {
+ if (!leftSegment->clockwise(tIndex, endIndex)) {
+ bool swap = leftSegment->verb() == SkPath::kQuad_Verb
+ || (!leftSegment->monotonic_in_y(tIndex, endIndex)
+ && !leftSegment->serpentine(tIndex, endIndex));
+ #if DEBUG_SWAP_TOP
+ SkDebugf("%s swap=%d serpentine=%d controls_contained_by_ends=%d\n", __FUNCTION__,
+ swap,
+ leftSegment->serpentine(tIndex, endIndex),
+ leftSegment->controls_contained_by_ends(tIndex, endIndex),
+ leftSegment->monotonic_in_y(tIndex, endIndex));
+ #endif
+ if (swap) {
+ // FIXME: I doubt it makes sense to (necessarily) swap if the edge was not the first
+ // sorted but merely the first not already processed (i.e., not done)
+ SkTSwap(tIndex, endIndex);
+ }
+ }
+ }
+ SkASSERT(!leftSegment->fTs[SkMin32(tIndex, endIndex)].fTiny);
+ return leftSegment;
+ }
+
+ // FIXME: not crazy about this
+ // when the intersections are performed, the other index is into an
+ // incomplete array. As the array grows, the indices become incorrect
+ // while the following fixes the indices up again, it isn't smart about
+ // skipping segments whose indices are already correct
+ // assuming we leave the code that wrote the index in the first place
+ void fixOtherTIndex() {
+ int iCount = fTs.count();
+ for (int i = 0; i < iCount; ++i) {
+ Span& iSpan = fTs[i];
+ double oT = iSpan.fOtherT;
+ Segment* other = iSpan.fOther;
+ int oCount = other->fTs.count();
+ for (int o = 0; o < oCount; ++o) {
+ Span& oSpan = other->fTs[o];
+ if (oT == oSpan.fT && this == oSpan.fOther && oSpan.fOtherT == iSpan.fT) {
+ iSpan.fOtherIndex = o;
+ break;
+ }
+ }
+ }
+ }
+
+ void init(const SkPoint pts[], SkPath::Verb verb, bool operand, bool evenOdd) {
+ fDoneSpans = 0;
+ fOperand = operand;
+ fXor = evenOdd;
+ fPts = pts;
+ fVerb = verb;
+ }
+
+ void initWinding(int start, int end) {
+ int local = spanSign(start, end);
+ int oppLocal = oppSign(start, end);
+ (void) markAndChaseWinding(start, end, local, oppLocal);
+ // OPTIMIZATION: the reverse mark and chase could skip the first marking
+ (void) markAndChaseWinding(end, start, local, oppLocal);
+ }
+
+ void initWinding(int start, int end, int winding, int oppWinding) {
+ int local = spanSign(start, end);
+ if (local * winding >= 0) {
+ winding += local;
+ }
+ int oppLocal = oppSign(start, end);
+ if (oppLocal * oppWinding >= 0) {
+ oppWinding += oppLocal;
+ }
+ (void) markAndChaseWinding(start, end, winding, oppWinding);
+ }
+
+/*
+when we start with a vertical intersect, we try to use the dx to determine if the edge is to
+the left or the right of vertical. This determines if we need to add the span's
+sign or not. However, this isn't enough.
+If the supplied sign (winding) is zero, then we didn't hit another vertical span, so dx is needed.
+If there was a winding, then it may or may not need adjusting. If the span the winding was borrowed
+from has the same x direction as this span, the winding should change. If the dx is opposite, then
+the same winding is shared by both.
+*/
+ void initWinding(int start, int end, double tHit, int winding, SkScalar hitDx, int oppWind,
+ SkScalar hitOppDx) {
+ SkASSERT(hitDx || !winding);
+ SkScalar dx = (*SegmentDXAtT[fVerb])(fPts, tHit);
+ SkASSERT(dx);
+ int windVal = windValue(SkMin32(start, end));
+ #if DEBUG_WINDING_AT_T
+ SkDebugf("%s oldWinding=%d hitDx=%c dx=%c windVal=%d", __FUNCTION__, winding,
+ hitDx ? hitDx > 0 ? '+' : '-' : '0', dx > 0 ? '+' : '-', windVal);
+ #endif
+ if (!winding) {
+ winding = dx < 0 ? windVal : -windVal;
+ } else if (winding * dx < 0) {
+ int sideWind = winding + (dx < 0 ? windVal : -windVal);
+ if (abs(winding) < abs(sideWind)) {
+ winding = sideWind;
+ }
+ }
+ #if DEBUG_WINDING_AT_T
+ SkDebugf(" winding=%d\n", winding);
+ #endif
+ int oppLocal = oppSign(start, end);
+ SkASSERT(hitOppDx || !oppWind || !oppLocal);
+ int oppWindVal = oppValue(SkMin32(start, end));
+ if (!oppWind) {
+ oppWind = dx < 0 ? oppWindVal : -oppWindVal;
+ } else if (hitOppDx * dx >= 0) {
+ int oppSideWind = oppWind + (dx < 0 ? oppWindVal : -oppWindVal);
+ if (abs(oppWind) < abs(oppSideWind)) {
+ oppWind = oppSideWind;
+ }
+ }
+ (void) markAndChaseWinding(start, end, winding, oppWind);
+ }
+
+ bool intersected() const {
+ return fTs.count() > 0;
+ }
+
+ bool isCanceled(int tIndex) const {
+ return fTs[tIndex].fWindValue == 0 && fTs[tIndex].fOppValue == 0;
+ }
+
+ bool isConnected(int startIndex, int endIndex) const {
+ return fTs[startIndex].fWindSum != SK_MinS32
+ || fTs[endIndex].fWindSum != SK_MinS32;
+ }
+
+ bool isHorizontal() const {
+ return fBounds.fTop == fBounds.fBottom;
+ }
+
+ bool isLinear(int start, int end) const {
+ if (fVerb == SkPath::kLine_Verb) {
+ return true;
+ }
+ if (fVerb == SkPath::kQuad_Verb) {
+ SkPoint qPart[3];
+ QuadSubDivide(fPts, fTs[start].fT, fTs[end].fT, qPart);
+ return QuadIsLinear(qPart);
+ } else {
+ SkASSERT(fVerb == SkPath::kCubic_Verb);
+ SkPoint cPart[4];
+ CubicSubDivide(fPts, fTs[start].fT, fTs[end].fT, cPart);
+ return CubicIsLinear(cPart);
+ }
+ }
+
+ // OPTIMIZE: successive calls could start were the last leaves off
+ // or calls could specialize to walk forwards or backwards
+ bool isMissing(double startT) const {
+ size_t tCount = fTs.count();
+ for (size_t index = 0; index < tCount; ++index) {
+ if (approximately_zero(startT - fTs[index].fT)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ bool isSimple(int end) const {
+ int count = fTs.count();
+ if (count == 2) {
+ return true;
+ }
+ double t = fTs[end].fT;
+ if (approximately_less_than_zero(t)) {
+ return !approximately_less_than_zero(fTs[1].fT);
+ }
+ if (approximately_greater_than_one(t)) {
+ return !approximately_greater_than_one(fTs[count - 2].fT);
+ }
+ return false;
+ }
+
+ bool isVertical() const {
+ return fBounds.fLeft == fBounds.fRight;
+ }
+
+ bool isVertical(int start, int end) const {
+ return (*SegmentVertical[fVerb])(fPts, start, end);
+ }
+
+ SkScalar leftMost(int start, int end) const {
+ return (*SegmentLeftMost[fVerb])(fPts, fTs[start].fT, fTs[end].fT);
+ }
+
+ // this span is excluded by the winding rule -- chase the ends
+ // as long as they are unambiguous to mark connections as done
+ // and give them the same winding value
+ Span* markAndChaseDone(const Angle* angle, int winding) {
+ int index = angle->start();
+ int endIndex = angle->end();
+ return markAndChaseDone(index, endIndex, winding);
+ }
+
+ Span* markAndChaseDone(int index, int endIndex, int winding) {
+ int step = SkSign32(endIndex - index);
+ int min = SkMin32(index, endIndex);
+ markDone(min, winding);
+ Span* last;
+ Segment* other = this;
+ while ((other = other->nextChase(index, step, min, last))) {
+ other->markDone(min, winding);
+ }
+ return last;
+ }
+
+ Span* markAndChaseDoneBinary(const Angle* angle, int winding, int oppWinding) {
+ int index = angle->start();
+ int endIndex = angle->end();
+ int step = SkSign32(endIndex - index);
+ int min = SkMin32(index, endIndex);
+ markDoneBinary(min, winding, oppWinding);
+ Span* last;
+ Segment* other = this;
+ while ((other = other->nextChase(index, step, min, last))) {
+ other->markDoneBinary(min, winding, oppWinding);
+ }
+ return last;
+ }
+
+ Span* markAndChaseDoneBinary(int index, int endIndex) {
+ int step = SkSign32(endIndex - index);
+ int min = SkMin32(index, endIndex);
+ markDoneBinary(min);
+ Span* last;
+ Segment* other = this;
+ while ((other = other->nextChase(index, step, min, last))) {
+ if (other->done()) {
+ return NULL;
+ }
+ other->markDoneBinary(min);
+ }
+ return last;
+ }
+
+ Span* markAndChaseDoneUnary(int index, int endIndex) {
+ int step = SkSign32(endIndex - index);
+ int min = SkMin32(index, endIndex);
+ markDoneUnary(min);
+ Span* last;
+ Segment* other = this;
+ while ((other = other->nextChase(index, step, min, last))) {
+ if (other->done()) {
+ return NULL;
+ }
+ other->markDoneUnary(min);
+ }
+ return last;
+ }
+
+ Span* markAndChaseDoneUnary(const Angle* angle, int winding) {
+ int index = angle->start();
+ int endIndex = angle->end();
+ return markAndChaseDone(index, endIndex, winding);
+ }
+
+ Span* markAndChaseWinding(const Angle* angle, const int winding) {
+ int index = angle->start();
+ int endIndex = angle->end();
+ int step = SkSign32(endIndex - index);
+ int min = SkMin32(index, endIndex);
+ markWinding(min, winding);
+ Span* last;
+ Segment* other = this;
+ while ((other = other->nextChase(index, step, min, last))) {
+ if (other->fTs[min].fWindSum != SK_MinS32) {
+ SkASSERT(other->fTs[min].fWindSum == winding);
+ return NULL;
+ }
+ other->markWinding(min, winding);
+ }
+ return last;
+ }
+
+ Span* markAndChaseWinding(int index, int endIndex, int winding, int oppWinding) {
+ int min = SkMin32(index, endIndex);
+ int step = SkSign32(endIndex - index);
+ markWinding(min, winding, oppWinding);
+ Span* last;
+ Segment* other = this;
+ while ((other = other->nextChase(index, step, min, last))) {
+ if (other->fTs[min].fWindSum != SK_MinS32) {
+ SkASSERT(other->fTs[min].fWindSum == winding || other->fTs[min].fLoop);
+ return NULL;
+ }
+ other->markWinding(min, winding, oppWinding);
+ }
+ return last;
+ }
+
+ Span* markAndChaseWinding(const Angle* angle, int winding, int oppWinding) {
+ int start = angle->start();
+ int end = angle->end();
+ return markAndChaseWinding(start, end, winding, oppWinding);
+ }
+
+ Span* markAngle(int maxWinding, int sumWinding, bool activeAngle, const Angle* angle) {
+ SkASSERT(angle->segment() == this);
+ if (useInnerWinding(maxWinding, sumWinding)) {
+ maxWinding = sumWinding;
+ }
+ Span* last;
+ if (activeAngle) {
+ last = markAndChaseWinding(angle, maxWinding);
+ } else {
+ last = markAndChaseDoneUnary(angle, maxWinding);
+ }
+ return last;
+ }
+
+ Span* markAngle(int maxWinding, int sumWinding, int oppMaxWinding, int oppSumWinding,
+ bool activeAngle, const Angle* angle) {
+ SkASSERT(angle->segment() == this);
+ if (useInnerWinding(maxWinding, sumWinding)) {
+ maxWinding = sumWinding;
+ }
+ if (oppMaxWinding != oppSumWinding && useInnerWinding(oppMaxWinding, oppSumWinding)) {
+ oppMaxWinding = oppSumWinding;
+ }
+ Span* last;
+ if (activeAngle) {
+ last = markAndChaseWinding(angle, maxWinding, oppMaxWinding);
+ } else {
+ last = markAndChaseDoneBinary(angle, maxWinding, oppMaxWinding);
+ }
+ return last;
+ }
+
+ // FIXME: this should also mark spans with equal (x,y)
+ // This may be called when the segment is already marked done. While this
+ // wastes time, it shouldn't do any more than spin through the T spans.
+ // OPTIMIZATION: abort on first done found (assuming that this code is
+ // always called to mark segments done).
+ void markDone(int index, int winding) {
+ // SkASSERT(!done());
+ SkASSERT(winding);
+ double referenceT = fTs[index].fT;
+ int lesser = index;
+ while (--lesser >= 0 && precisely_negative(referenceT - fTs[lesser].fT)) {
+ markOneDone(__FUNCTION__, lesser, winding);
+ }
+ do {
+ markOneDone(__FUNCTION__, index, winding);
+ } while (++index < fTs.count() && precisely_negative(fTs[index].fT - referenceT));
+ }
+
+ void markDoneBinary(int index, int winding, int oppWinding) {
+ // SkASSERT(!done());
+ SkASSERT(winding || oppWinding);
+ double referenceT = fTs[index].fT;
+ int lesser = index;
+ while (--lesser >= 0 && precisely_negative(referenceT - fTs[lesser].fT)) {
+ markOneDoneBinary(__FUNCTION__, lesser, winding, oppWinding);
+ }
+ do {
+ markOneDoneBinary(__FUNCTION__, index, winding, oppWinding);
+ } while (++index < fTs.count() && precisely_negative(fTs[index].fT - referenceT));
+ }
+
+ void markDoneBinary(int index) {
+ double referenceT = fTs[index].fT;
+ int lesser = index;
+ while (--lesser >= 0 && precisely_negative(referenceT - fTs[lesser].fT)) {
+ markOneDoneBinary(__FUNCTION__, lesser);
+ }
+ do {
+ markOneDoneBinary(__FUNCTION__, index);
+ } while (++index < fTs.count() && precisely_negative(fTs[index].fT - referenceT));
+ }
+
+ void markDoneUnary(int index, int winding) {
+ // SkASSERT(!done());
+ SkASSERT(winding);
+ double referenceT = fTs[index].fT;
+ int lesser = index;
+ while (--lesser >= 0 && precisely_negative(referenceT - fTs[lesser].fT)) {
+ markOneDoneUnary(__FUNCTION__, lesser, winding);
+ }
+ do {
+ markOneDoneUnary(__FUNCTION__, index, winding);
+ } while (++index < fTs.count() && precisely_negative(fTs[index].fT - referenceT));
+ }
+
+ void markDoneUnary(int index) {
+ double referenceT = fTs[index].fT;
+ int lesser = index;
+ while (--lesser >= 0 && precisely_negative(referenceT - fTs[lesser].fT)) {
+ markOneDoneUnary(__FUNCTION__, lesser);
+ }
+ do {
+ markOneDoneUnary(__FUNCTION__, index);
+ } while (++index < fTs.count() && precisely_negative(fTs[index].fT - referenceT));
+ }
+
+ void markOneDone(const char* funName, int tIndex, int winding) {
+ Span* span = markOneWinding(funName, tIndex, winding);
+ if (!span) {
+ return;
+ }
+ span->fDone = true;
+ fDoneSpans++;
+ }
+
+ void markOneDoneBinary(const char* funName, int tIndex) {
+ Span* span = verifyOneWinding(funName, tIndex);
+ if (!span) {
+ return;
+ }
+ span->fDone = true;
+ fDoneSpans++;
+ }
+
+ void markOneDoneBinary(const char* funName, int tIndex, int winding, int oppWinding) {
+ Span* span = markOneWinding(funName, tIndex, winding, oppWinding);
+ if (!span) {
+ return;
+ }
+ span->fDone = true;
+ fDoneSpans++;
+ }
+
+ void markOneDoneUnary(const char* funName, int tIndex) {
+ Span* span = verifyOneWindingU(funName, tIndex);
+ if (!span) {
+ return;
+ }
+ span->fDone = true;
+ fDoneSpans++;
+ }
+
+ void markOneDoneUnary(const char* funName, int tIndex, int winding) {
+ Span* span = markOneWinding(funName, tIndex, winding);
+ if (!span) {
+ return;
+ }
+ span->fDone = true;
+ fDoneSpans++;
+ }
+
+ Span* markOneWinding(const char* funName, int tIndex, int winding) {
+ Span& span = fTs[tIndex];
+ if (span.fDone) {
+ return NULL;
+ }
+ #if DEBUG_MARK_DONE
+ debugShowNewWinding(funName, span, winding);
+ #endif
+ SkASSERT(span.fWindSum == SK_MinS32 || span.fWindSum == winding);
+ #ifdef SK_DEBUG
+ SkASSERT(abs(winding) <= gDebugMaxWindSum);
+ #endif
+ span.fWindSum = winding;
+ return &span;
+ }
+
+ Span* markOneWinding(const char* funName, int tIndex, int winding, int oppWinding) {
+ Span& span = fTs[tIndex];
+ if (span.fDone) {
+ return NULL;
+ }
+ #if DEBUG_MARK_DONE
+ debugShowNewWinding(funName, span, winding, oppWinding);
+ #endif
+ SkASSERT(span.fWindSum == SK_MinS32 || span.fWindSum == winding);
+ #ifdef SK_DEBUG
+ SkASSERT(abs(winding) <= gDebugMaxWindSum);
+ #endif
+ span.fWindSum = winding;
+ SkASSERT(span.fOppSum == SK_MinS32 || span.fOppSum == oppWinding);
+ #ifdef SK_DEBUG
+ SkASSERT(abs(oppWinding) <= gDebugMaxWindSum);
+ #endif
+ span.fOppSum = oppWinding;
+ return &span;
+ }
+
+ bool controls_contained_by_ends(int tStart, int tEnd) const {
+ if (fVerb != SkPath::kCubic_Verb) {
+ return false;
+ }
+ MAKE_CONST_CUBIC(aCubic, fPts);
+ Cubic dst;
+ sub_divide(aCubic, fTs[tStart].fT, fTs[tEnd].fT, dst);
+ return ::controls_contained_by_ends(dst);
+ }
+
+ // from http://stackoverflow.com/questions/1165647/how-to-determine-if-a-list-of-polygon-points-are-in-clockwise-order
+ bool clockwise(int tStart, int tEnd) const {
+ SkASSERT(fVerb != SkPath::kLine_Verb);
+ SkPoint edge[4];
+ subDivide(tStart, tEnd, edge);
+ double sum = (edge[0].fX - edge[fVerb].fX) * (edge[0].fY + edge[fVerb].fY);
+ if (fVerb == SkPath::kCubic_Verb) {
+ SkScalar lesser = SkTMin(edge[0].fY, edge[3].fY);
+ if (edge[1].fY < lesser && edge[2].fY < lesser) {
+ _Line tangent1 = { {edge[0].fX, edge[0].fY}, {edge[1].fX, edge[1].fY} };
+ _Line tangent2 = { {edge[2].fX, edge[2].fY}, {edge[3].fX, edge[3].fY} };
+ if (testIntersect(tangent1, tangent2)) {
+ SkPoint topPt = CubicTop(fPts, fTs[tStart].fT, fTs[tEnd].fT);
+ sum += (topPt.fX - edge[0].fX) * (topPt.fY + edge[0].fY);
+ sum += (edge[3].fX - topPt.fX) * (edge[3].fY + topPt.fY);
+ return sum <= 0;
+ }
+ }
+ }
+ for (int idx = 0; idx < fVerb; ++idx){
+ sum += (edge[idx + 1].fX - edge[idx].fX) * (edge[idx + 1].fY + edge[idx].fY);
+ }
+ return sum <= 0;
+ }
+
+ bool monotonic_in_y(int tStart, int tEnd) const {
+ if (fVerb != SkPath::kCubic_Verb) {
+ return false;
+ }
+ MAKE_CONST_CUBIC(aCubic, fPts);
+ Cubic dst;
+ sub_divide(aCubic, fTs[tStart].fT, fTs[tEnd].fT, dst);
+ return ::monotonic_in_y(dst);
+ }
+
+ bool serpentine(int tStart, int tEnd) const {
+ if (fVerb != SkPath::kCubic_Verb) {
+ return false;
+ }
+ MAKE_CONST_CUBIC(aCubic, fPts);
+ Cubic dst;
+ sub_divide(aCubic, fTs[tStart].fT, fTs[tEnd].fT, dst);
+ return ::serpentine(dst);
+ }
+
+ Span* verifyOneWinding(const char* funName, int tIndex) {
+ Span& span = fTs[tIndex];
+ if (span.fDone) {
+ return NULL;
+ }
+ #if DEBUG_MARK_DONE
+ debugShowNewWinding(funName, span, span.fWindSum, span.fOppSum);
+ #endif
+ SkASSERT(span.fWindSum != SK_MinS32);
+ SkASSERT(span.fOppSum != SK_MinS32);
+ return &span;
+ }
+
+ Span* verifyOneWindingU(const char* funName, int tIndex) {
+ Span& span = fTs[tIndex];
+ if (span.fDone) {
+ return NULL;
+ }
+ #if DEBUG_MARK_DONE
+ debugShowNewWinding(funName, span, span.fWindSum);
+ #endif
+ SkASSERT(span.fWindSum != SK_MinS32);
+ return &span;
+ }
+
+ // note that just because a span has one end that is unsortable, that's
+ // not enough to mark it done. The other end may be sortable, allowing the
+ // span to be added.
+ // FIXME: if abs(start - end) > 1, mark intermediates as unsortable on both ends
+ void markUnsortable(int start, int end) {
+ Span* span = &fTs[start];
+ if (start < end) {
+#if DEBUG_UNSORTABLE
+ debugShowNewWinding(__FUNCTION__, *span, 0);
+#endif
+ span->fUnsortableStart = true;
+ } else {
+ --span;
+#if DEBUG_UNSORTABLE
+ debugShowNewWinding(__FUNCTION__, *span, 0);
+#endif
+ span->fUnsortableEnd = true;
+ }
+ if (!span->fUnsortableStart || !span->fUnsortableEnd || span->fDone) {
+ return;
+ }
+ span->fDone = true;
+ fDoneSpans++;
+ }
+
+ void markWinding(int index, int winding) {
+ // SkASSERT(!done());
+ SkASSERT(winding);
+ double referenceT = fTs[index].fT;
+ int lesser = index;
+ while (--lesser >= 0 && precisely_negative(referenceT - fTs[lesser].fT)) {
+ markOneWinding(__FUNCTION__, lesser, winding);
+ }
+ do {
+ markOneWinding(__FUNCTION__, index, winding);
+ } while (++index < fTs.count() && precisely_negative(fTs[index].fT - referenceT));
+ }
+
+ void markWinding(int index, int winding, int oppWinding) {
+ // SkASSERT(!done());
+ SkASSERT(winding || oppWinding);
+ double referenceT = fTs[index].fT;
+ int lesser = index;
+ while (--lesser >= 0 && precisely_negative(referenceT - fTs[lesser].fT)) {
+ markOneWinding(__FUNCTION__, lesser, winding, oppWinding);
+ }
+ do {
+ markOneWinding(__FUNCTION__, index, winding, oppWinding);
+ } while (++index < fTs.count() && precisely_negative(fTs[index].fT - referenceT));
+ }
+
+ void matchWindingValue(int tIndex, double t, bool borrowWind) {
+ int nextDoorWind = SK_MaxS32;
+ int nextOppWind = SK_MaxS32;
+ if (tIndex > 0) {
+ const Span& below = fTs[tIndex - 1];
+ if (approximately_negative(t - below.fT)) {
+ nextDoorWind = below.fWindValue;
+ nextOppWind = below.fOppValue;
+ }
+ }
+ if (nextDoorWind == SK_MaxS32 && tIndex + 1 < fTs.count()) {
+ const Span& above = fTs[tIndex + 1];
+ if (approximately_negative(above.fT - t)) {
+ nextDoorWind = above.fWindValue;
+ nextOppWind = above.fOppValue;
+ }
+ }
+ if (nextDoorWind == SK_MaxS32 && borrowWind && tIndex > 0 && t < 1) {
+ const Span& below = fTs[tIndex - 1];
+ nextDoorWind = below.fWindValue;
+ nextOppWind = below.fOppValue;
+ }
+ if (nextDoorWind != SK_MaxS32) {
+ Span& newSpan = fTs[tIndex];
+ newSpan.fWindValue = nextDoorWind;
+ newSpan.fOppValue = nextOppWind;
+ if (!nextDoorWind && !nextOppWind && !newSpan.fDone) {
+ newSpan.fDone = true;
+ ++fDoneSpans;
+ }
+ }
+ }
+
+ bool moreHorizontal(int index, int endIndex, bool& unsortable) const {
+ // find bounds
+ Bounds bounds;
+ bounds.setPoint(xyAtT(index));
+ bounds.add(xyAtT(endIndex));
+ SkScalar width = bounds.width();
+ SkScalar height = bounds.height();
+ if (width > height) {
+ if (approximately_negative(width)) {
+ unsortable = true; // edge is too small to resolve meaningfully
+ }
+ return false;
+ } else {
+ if (approximately_negative(height)) {
+ unsortable = true; // edge is too small to resolve meaningfully
+ }
+ return true;
+ }
+ }
+
+ // return span if when chasing, two or more radiating spans are not done
+ // OPTIMIZATION: ? multiple spans is detected when there is only one valid
+ // candidate and the remaining spans have windValue == 0 (canceled by
+ // coincidence). The coincident edges could either be removed altogether,
+ // or this code could be more complicated in detecting this case. Worth it?
+ bool multipleSpans(int end) const {
+ return end > 0 && end < fTs.count() - 1;
+ }
+
+ bool nextCandidate(int& start, int& end) const {
+ while (fTs[end].fDone) {
+ if (fTs[end].fT == 1) {
+ return false;
+ }
+ ++end;
+ }
+ start = end;
+ end = nextExactSpan(start, 1);
+ return true;
+ }
+
+ Segment* nextChase(int& index, const int step, int& min, Span*& last) {
+ int end = nextExactSpan(index, step);
+ SkASSERT(end >= 0);
+ if (multipleSpans(end)) {
+ last = &fTs[end];
+ return NULL;
+ }
+ const Span& endSpan = fTs[end];
+ Segment* other = endSpan.fOther;
+ index = endSpan.fOtherIndex;
+ SkASSERT(index >= 0);
+ int otherEnd = other->nextExactSpan(index, step);
+ SkASSERT(otherEnd >= 0);
+ min = SkMin32(index, otherEnd);
+ return other;
+ }
+
+ // This has callers for two different situations: one establishes the end
+ // of the current span, and one establishes the beginning of the next span
+ // (thus the name). When this is looking for the end of the current span,
+ // coincidence is found when the beginning Ts contain -step and the end
+ // contains step. When it is looking for the beginning of the next, the
+ // first Ts found can be ignored and the last Ts should contain -step.
+ // OPTIMIZATION: probably should split into two functions
+ int nextSpan(int from, int step) const {
+ const Span& fromSpan = fTs[from];
+ int count = fTs.count();
+ int to = from;
+ while (step > 0 ? ++to < count : --to >= 0) {
+ const Span& span = fTs[to];
+ if (approximately_zero(span.fT - fromSpan.fT)) {
+ continue;
+ }
+ return to;
+ }
+ return -1;
+ }
+
+ // FIXME
+ // this returns at any difference in T, vs. a preset minimum. It may be
+ // that all callers to nextSpan should use this instead.
+ // OPTIMIZATION splitting this into separate loops for up/down steps
+ // would allow using precisely_negative instead of precisely_zero
+ int nextExactSpan(int from, int step) const {
+ const Span& fromSpan = fTs[from];
+ int count = fTs.count();
+ int to = from;
+ while (step > 0 ? ++to < count : --to >= 0) {
+ const Span& span = fTs[to];
+ if (precisely_zero(span.fT - fromSpan.fT)) {
+ continue;
+ }
+ return to;
+ }
+ return -1;
+ }
+
+ bool operand() const {
+ return fOperand;
+ }
+
+ int oppSign(const Angle* angle) const {
+ SkASSERT(angle->segment() == this);
+ return oppSign(angle->start(), angle->end());
+ }
+
+ int oppSign(int startIndex, int endIndex) const {
+ int result = startIndex < endIndex ? -fTs[startIndex].fOppValue
+ : fTs[endIndex].fOppValue;
+#if DEBUG_WIND_BUMP
+ SkDebugf("%s oppSign=%d\n", __FUNCTION__, result);
+#endif
+ return result;
+ }
+
+ int oppSum(int tIndex) const {
+ return fTs[tIndex].fOppSum;
+ }
+
+ int oppSum(const Angle* angle) const {
+ int lesser = SkMin32(angle->start(), angle->end());
+ return fTs[lesser].fOppSum;
+ }
+
+ int oppValue(int tIndex) const {
+ return fTs[tIndex].fOppValue;
+ }
+
+ int oppValue(const Angle* angle) const {
+ int lesser = SkMin32(angle->start(), angle->end());
+ return fTs[lesser].fOppValue;
+ }
+
+ const SkPoint* pts() const {
+ return fPts;
+ }
+
+ void reset() {
+ init(NULL, (SkPath::Verb) -1, false, false);
+ fBounds.set(SK_ScalarMax, SK_ScalarMax, SK_ScalarMax, SK_ScalarMax);
+ fTs.reset();
+ }
+
+ void setOppXor(bool isOppXor) {
+ fOppXor = isOppXor;
+ }
+
+ void setSpanT(int index, double t) {
+ Span& span = fTs[index];
+ span.fT = t;
+ span.fOther->fTs[span.fOtherIndex].fOtherT = t;
+ }
+
+ void setUpWinding(int index, int endIndex, int& maxWinding, int& sumWinding) {
+ int deltaSum = spanSign(index, endIndex);
+ maxWinding = sumWinding;
+ sumWinding = sumWinding -= deltaSum;
+ }
+
+ void setUpWindings(int index, int endIndex, int& sumMiWinding, int& sumSuWinding,
+ int& maxWinding, int& sumWinding, int& oppMaxWinding, int& oppSumWinding) {
+ int deltaSum = spanSign(index, endIndex);
+ int oppDeltaSum = oppSign(index, endIndex);
+ if (operand()) {
+ maxWinding = sumSuWinding;
+ sumWinding = sumSuWinding -= deltaSum;
+ oppMaxWinding = sumMiWinding;
+ oppSumWinding = sumMiWinding -= oppDeltaSum;
+ } else {
+ maxWinding = sumMiWinding;
+ sumWinding = sumMiWinding -= deltaSum;
+ oppMaxWinding = sumSuWinding;
+ oppSumWinding = sumSuWinding -= oppDeltaSum;
+ }
+ }
+
+ // This marks all spans unsortable so that this info is available for early
+ // exclusion in find top and others. This could be optimized to only mark
+ // adjacent spans that unsortable. However, this makes it difficult to later
+ // determine starting points for edge detection in find top and the like.
+ static bool SortAngles(SkTDArray<Angle>& angles, SkTDArray<Angle*>& angleList) {
+ bool sortable = true;
+ int angleCount = angles.count();
+ int angleIndex;
+ angleList.setReserve(angleCount);
+ for (angleIndex = 0; angleIndex < angleCount; ++angleIndex) {
+ Angle& angle = angles[angleIndex];
+ *angleList.append() = &angle;
+ sortable &= !angle.unsortable();
+ }
+ if (sortable) {
+ QSort<Angle>(angleList.begin(), angleList.end() - 1);
+ for (angleIndex = 0; angleIndex < angleCount; ++angleIndex) {
+ if (angles[angleIndex].unsortable()) {
+ sortable = false;
+ break;
+ }
+ }
+ }
+ if (!sortable) {
+ for (angleIndex = 0; angleIndex < angleCount; ++angleIndex) {
+ Angle& angle = angles[angleIndex];
+ angle.segment()->markUnsortable(angle.start(), angle.end());
+ }
+ }
+ return sortable;
+ }
+
+ // OPTIMIZATION: mark as debugging only if used solely by tests
+ const Span& span(int tIndex) const {
+ return fTs[tIndex];
+ }
+
+ int spanSign(const Angle* angle) const {
+ SkASSERT(angle->segment() == this);
+ return spanSign(angle->start(), angle->end());
+ }
+
+ int spanSign(int startIndex, int endIndex) const {
+ int result = startIndex < endIndex ? -fTs[startIndex].fWindValue
+ : fTs[endIndex].fWindValue;
+#if DEBUG_WIND_BUMP
+ SkDebugf("%s spanSign=%d\n", __FUNCTION__, result);
+#endif
+ return result;
+ }
+
+ void subDivide(int start, int end, SkPoint edge[4]) const {
+ edge[0] = fTs[start].fPt;
+ edge[fVerb] = fTs[end].fPt;
+ if (fVerb == SkPath::kQuad_Verb || fVerb == SkPath::kCubic_Verb) {
+ _Point sub[2] = {{ edge[0].fX, edge[0].fY}, {edge[fVerb].fX, edge[fVerb].fY }};
+ if (fVerb == SkPath::kQuad_Verb) {
+ MAKE_CONST_QUAD(aQuad, fPts);
+ edge[1] = sub_divide(aQuad, sub[0], sub[1], fTs[start].fT, fTs[end].fT).asSkPoint();
+ } else {
+ MAKE_CONST_CUBIC(aCubic, fPts);
+ sub_divide(aCubic, sub[0], sub[1], fTs[start].fT, fTs[end].fT, sub);
+ edge[1] = sub[0].asSkPoint();
+ edge[2] = sub[1].asSkPoint();
+ }
+ }
+ }
+
+ void subDivideBounds(int start, int end, Bounds& bounds) const {
+ SkPoint edge[4];
+ subDivide(start, end, edge);
+ (bounds.*setSegmentBounds[fVerb])(edge);
+ }
+
+ // OPTIMIZATION: mark as debugging only if used solely by tests
+ double t(int tIndex) const {
+ return fTs[tIndex].fT;
+ }
+
+ double tAtMid(int start, int end, double mid) const {
+ return fTs[start].fT * (1 - mid) + fTs[end].fT * mid;
+ }
+
+ bool tiny(const Angle* angle) const {
+ int start = angle->start();
+ int end = angle->end();
+ const Span& mSpan = fTs[SkMin32(start, end)];
+ return mSpan.fTiny;
+ }
+
+ static void TrackOutside(SkTDArray<double>& outsideTs, double end,
+ double start) {
+ int outCount = outsideTs.count();
+ if (outCount == 0 || !approximately_negative(end - outsideTs[outCount - 2])) {
+ *outsideTs.append() = end;
+ *outsideTs.append() = start;
+ }
+ }
+
+ void undoneSpan(int& start, int& end) {
+ size_t tCount = fTs.count();
+ size_t index;
+ for (index = 0; index < tCount; ++index) {
+ if (!fTs[index].fDone) {
+ break;
+ }
+ }
+ SkASSERT(index < tCount - 1);
+ start = index;
+ double startT = fTs[index].fT;
+ while (approximately_negative(fTs[++index].fT - startT))
+ SkASSERT(index < tCount);
+ SkASSERT(index < tCount);
+ end = index;
+ }
+
+ bool unsortable(int index) const {
+ return fTs[index].fUnsortableStart || fTs[index].fUnsortableEnd;
+ }
+
+ void updatePts(const SkPoint pts[]) {
+ fPts = pts;
+ }
+
+ int updateOppWinding(int index, int endIndex) const {
+ int lesser = SkMin32(index, endIndex);
+ int oppWinding = oppSum(lesser);
+ int oppSpanWinding = oppSign(index, endIndex);
+ if (oppSpanWinding && useInnerWinding(oppWinding - oppSpanWinding, oppWinding)
+ && oppWinding != SK_MaxS32) {
+ oppWinding -= oppSpanWinding;
+ }
+ return oppWinding;
+ }
+
+ int updateOppWinding(const Angle* angle) const {
+ int startIndex = angle->start();
+ int endIndex = angle->end();
+ return updateOppWinding(endIndex, startIndex);
+ }
+
+ int updateOppWindingReverse(const Angle* angle) const {
+ int startIndex = angle->start();
+ int endIndex = angle->end();
+ return updateOppWinding(startIndex, endIndex);
+ }
+
+ int updateWinding(int index, int endIndex) const {
+ int lesser = SkMin32(index, endIndex);
+ int winding = windSum(lesser);
+ int spanWinding = spanSign(index, endIndex);
+ if (winding && useInnerWinding(winding - spanWinding, winding) && winding != SK_MaxS32) {
+ winding -= spanWinding;
+ }
+ return winding;
+ }
+
+ int updateWinding(const Angle* angle) const {
+ int startIndex = angle->start();
+ int endIndex = angle->end();
+ return updateWinding(endIndex, startIndex);
+ }
+
+ int updateWindingReverse(const Angle* angle) const {
+ int startIndex = angle->start();
+ int endIndex = angle->end();
+ return updateWinding(startIndex, endIndex);
+ }
+
+ SkPath::Verb verb() const {
+ return fVerb;
+ }
+
+ int windingAtT(double tHit, int tIndex, bool crossOpp, SkScalar& dx) const {
+ if (approximately_zero(tHit - t(tIndex))) { // if we hit the end of a span, disregard
+ return SK_MinS32;
+ }
+ int winding = crossOpp ? oppSum(tIndex) : windSum(tIndex);
+ SkASSERT(winding != SK_MinS32);
+ int windVal = crossOpp ? oppValue(tIndex) : windValue(tIndex);
+ #if DEBUG_WINDING_AT_T
+ SkDebugf("%s oldWinding=%d windValue=%d", __FUNCTION__, winding, windVal);
+ #endif
+ // see if a + change in T results in a +/- change in X (compute x'(T))
+ dx = (*SegmentDXAtT[fVerb])(fPts, tHit);
+ if (fVerb > SkPath::kLine_Verb && approximately_zero(dx)) {
+ dx = fPts[2].fX - fPts[1].fX - dx;
+ }
+ if (dx == 0) {
+ #if DEBUG_WINDING_AT_T
+ SkDebugf(" dx=0 winding=SK_MinS32\n");
+ #endif
+ return SK_MinS32;
+ }
+ if (winding * dx > 0) { // if same signs, result is negative
+ winding += dx > 0 ? -windVal : windVal;
+ }
+ #if DEBUG_WINDING_AT_T
+ SkDebugf(" dx=%c winding=%d\n", dx > 0 ? '+' : '-', winding);
+ #endif
+ return winding;
+ }
+
+ int windSum(int tIndex) const {
+ return fTs[tIndex].fWindSum;
+ }
+
+ int windSum(const Angle* angle) const {
+ int start = angle->start();
+ int end = angle->end();
+ int index = SkMin32(start, end);
+ return windSum(index);
+ }
+
+ int windValue(int tIndex) const {
+ return fTs[tIndex].fWindValue;
+ }
+
+ int windValue(const Angle* angle) const {
+ int start = angle->start();
+ int end = angle->end();
+ int index = SkMin32(start, end);
+ return windValue(index);
+ }
+
+ int windValueAt(double t) const {
+ int count = fTs.count();
+ for (int index = 0; index < count; ++index) {
+ if (fTs[index].fT == t) {
+ return fTs[index].fWindValue;
+ }
+ }
+ SkASSERT(0);
+ return 0;
+ }
+
+ SkScalar xAtT(int index) const {
+ return xAtT(&fTs[index]);
+ }
+
+ SkScalar xAtT(const Span* span) const {
+ return xyAtT(span).fX;
+ }
+
+ const SkPoint& xyAtT(int index) const {
+ return xyAtT(&fTs[index]);
+ }
+
+ const SkPoint& xyAtT(const Span* span) const {
+ if (SkScalarIsNaN(span->fPt.fX)) {
+ SkASSERT(0); // make sure this path is never used
+ if (span->fT == 0) {
+ span->fPt = fPts[0];
+ } else if (span->fT == 1) {
+ span->fPt = fPts[fVerb];
+ } else {
+ (*SegmentXYAtT[fVerb])(fPts, span->fT, &span->fPt);
+ }
+ }
+ return span->fPt;
+ }
+
+ // used only by right angle winding finding
+ void xyAtT(double mid, SkPoint& pt) const {
+ (*SegmentXYAtT[fVerb])(fPts, mid, &pt);
+ }
+
+ SkScalar yAtT(int index) const {
+ return yAtT(&fTs[index]);
+ }
+
+ SkScalar yAtT(const Span* span) const {
+ return xyAtT(span).fY;
+ }
+
+ void zeroCoincidentOpp(Span* oTest, int index) {
+ Span* const test = &fTs[index];
+ Span* end = test;
+ do {
+ end->fOppValue = 0;
+ end = &fTs[++index];
+ } while (approximately_negative(end->fT - test->fT));
+ }
+
+ void zeroCoincidentOther(Span* test, const double tRatio, const double oEndT, int oIndex) {
+ Span* const oTest = &fTs[oIndex];
+ Span* oEnd = oTest;
+ const double startT = test->fT;
+ const double oStartT = oTest->fT;
+ double otherTMatch = (test->fT - startT) * tRatio + oStartT;
+ while (!approximately_negative(oEndT - oEnd->fT)
+ && approximately_negative(oEnd->fT - otherTMatch)) {
+ oEnd->fOppValue = 0;
+ oEnd = &fTs[++oIndex];
+ }
+ }
+
+ void zeroSpan(Span* span) {
+ SkASSERT(span->fWindValue > 0 || span->fOppValue > 0);
+ span->fWindValue = 0;
+ span->fOppValue = 0;
+ SkASSERT(!span->fDone);
+ span->fDone = true;
+ ++fDoneSpans;
+ }
+
+#if DEBUG_DUMP
+ void dump() const {
+ const char className[] = "Segment";
+ const int tab = 4;
+ for (int i = 0; i < fTs.count(); ++i) {
+ SkPoint out;
+ (*SegmentXYAtT[fVerb])(fPts, t(i), &out);
+ SkDebugf("%*s [%d] %s.fTs[%d]=%1.9g (%1.9g,%1.9g) other=%d"
+ " otherT=%1.9g windSum=%d\n",
+ tab + sizeof(className), className, fID,
+ kLVerbStr[fVerb], i, fTs[i].fT, out.fX, out.fY,
+ fTs[i].fOther->fID, fTs[i].fOtherT, fTs[i].fWindSum);
+ }
+ SkDebugf("%*s [%d] fBounds=(l:%1.9g, t:%1.9g r:%1.9g, b:%1.9g)",
+ tab + sizeof(className), className, fID,
+ fBounds.fLeft, fBounds.fTop, fBounds.fRight, fBounds.fBottom);
+ }
+#endif
+
+#if DEBUG_CONCIDENT
+ // SkASSERT if pair has not already been added
+ void debugAddTPair(double t, const Segment& other, double otherT) const {
+ for (int i = 0; i < fTs.count(); ++i) {
+ if (fTs[i].fT == t && fTs[i].fOther == &other && fTs[i].fOtherT == otherT) {
+ return;
+ }
+ }
+ SkASSERT(0);
+ }
+#endif
+
+#if DEBUG_DUMP
+ int debugID() const {
+ return fID;
+ }
+#endif
+
+#if DEBUG_WINDING
+ void debugShowSums() const {
+ SkDebugf("%s id=%d (%1.9g,%1.9g %1.9g,%1.9g)", __FUNCTION__, fID,
+ fPts[0].fX, fPts[0].fY, fPts[fVerb].fX, fPts[fVerb].fY);
+ for (int i = 0; i < fTs.count(); ++i) {
+ const Span& span = fTs[i];
+ SkDebugf(" [t=%1.3g %1.9g,%1.9g w=", span.fT, xAtT(&span), yAtT(&span));
+ if (span.fWindSum == SK_MinS32) {
+ SkDebugf("?");
+ } else {
+ SkDebugf("%d", span.fWindSum);
+ }
+ SkDebugf("]");
+ }
+ SkDebugf("\n");
+ }
+#endif
+
+#if DEBUG_CONCIDENT
+ void debugShowTs() const {
+ SkDebugf("%s id=%d", __FUNCTION__, fID);
+ int lastWind = -1;
+ int lastOpp = -1;
+ double lastT = -1;
+ int i;
+ for (i = 0; i < fTs.count(); ++i) {
+ bool change = lastT != fTs[i].fT || lastWind != fTs[i].fWindValue
+ || lastOpp != fTs[i].fOppValue;
+ if (change && lastWind >= 0) {
+ SkDebugf(" t=%1.3g %1.9g,%1.9g w=%d o=%d]",
+ lastT, xyAtT(i - 1).fX, xyAtT(i - 1).fY, lastWind, lastOpp);
+ }
+ if (change) {
+ SkDebugf(" [o=%d", fTs[i].fOther->fID);
+ lastWind = fTs[i].fWindValue;
+ lastOpp = fTs[i].fOppValue;
+ lastT = fTs[i].fT;
+ } else {
+ SkDebugf(",%d", fTs[i].fOther->fID);
+ }
+ }
+ if (i <= 0) {
+ return;
+ }
+ SkDebugf(" t=%1.3g %1.9g,%1.9g w=%d o=%d]",
+ lastT, xyAtT(i - 1).fX, xyAtT(i - 1).fY, lastWind, lastOpp);
+ if (fOperand) {
+ SkDebugf(" operand");
+ }
+ if (done()) {
+ SkDebugf(" done");
+ }
+ SkDebugf("\n");
+ }
+#endif
+
+#if DEBUG_ACTIVE_SPANS
+ void debugShowActiveSpans() const {
+ if (done()) {
+ return;
+ }
+#if DEBUG_ACTIVE_SPANS_SHORT_FORM
+ int lastId = -1;
+ double lastT = -1;
+#endif
+ for (int i = 0; i < fTs.count(); ++i) {
+ SkASSERT(&fTs[i] == &fTs[i].fOther->fTs[fTs[i].fOtherIndex].fOther->
+ fTs[fTs[i].fOther->fTs[fTs[i].fOtherIndex].fOtherIndex]);
+ if (fTs[i].fDone) {
+ continue;
+ }
+#if DEBUG_ACTIVE_SPANS_SHORT_FORM
+ if (lastId == fID && lastT == fTs[i].fT) {
+ continue;
+ }
+ lastId = fID;
+ lastT = fTs[i].fT;
+#endif
+ SkDebugf("%s id=%d", __FUNCTION__, fID);
+ SkDebugf(" (%1.9g,%1.9g", fPts[0].fX, fPts[0].fY);
+ for (int vIndex = 1; vIndex <= fVerb; ++vIndex) {
+ SkDebugf(" %1.9g,%1.9g", fPts[vIndex].fX, fPts[vIndex].fY);
+ }
+ const Span* span = &fTs[i];
+ SkDebugf(") t=%1.9g (%1.9g,%1.9g)", fTs[i].fT,
+ xAtT(span), yAtT(span));
+ int iEnd = i + 1;
+ while (fTs[iEnd].fT < 1 && approximately_equal(fTs[i].fT, fTs[iEnd].fT)) {
+ ++iEnd;
+ }
+ SkDebugf(" tEnd=%1.9g", fTs[iEnd].fT);
+ const Segment* other = fTs[i].fOther;
+ SkDebugf(" other=%d otherT=%1.9g otherIndex=%d windSum=",
+ other->fID, fTs[i].fOtherT, fTs[i].fOtherIndex);
+ if (fTs[i].fWindSum == SK_MinS32) {
+ SkDebugf("?");
+ } else {
+ SkDebugf("%d", fTs[i].fWindSum);
+ }
+ SkDebugf(" windValue=%d oppValue=%d\n", fTs[i].fWindValue, fTs[i].fOppValue);
+ }
+ }
+
+ // This isn't useful yet -- but leaving it in for now in case i think of something
+ // to use it for
+ void validateActiveSpans() const {
+ if (done()) {
+ return;
+ }
+ int tCount = fTs.count();
+ for (int index = 0; index < tCount; ++index) {
+ if (fTs[index].fDone) {
+ continue;
+ }
+ // count number of connections which are not done
+ int first = index;
+ double baseT = fTs[index].fT;
+ while (first > 0 && approximately_equal(fTs[first - 1].fT, baseT)) {
+ --first;
+ }
+ int last = index;
+ while (last < tCount - 1 && approximately_equal(fTs[last + 1].fT, baseT)) {
+ ++last;
+ }
+ int connections = 0;
+ connections += first > 0 && !fTs[first - 1].fDone;
+ for (int test = first; test <= last; ++test) {
+ connections += !fTs[test].fDone;
+ const Segment* other = fTs[test].fOther;
+ int oIndex = fTs[test].fOtherIndex;
+ connections += !other->fTs[oIndex].fDone;
+ connections += oIndex > 0 && !other->fTs[oIndex - 1].fDone;
+ }
+ // SkASSERT(!(connections & 1));
+ }
+ }
+#endif
+
+#if DEBUG_MARK_DONE || DEBUG_UNSORTABLE
+ void debugShowNewWinding(const char* fun, const Span& span, int winding) {
+ const SkPoint& pt = xyAtT(&span);
+ SkDebugf("%s id=%d", fun, fID);
+ SkDebugf(" (%1.9g,%1.9g", fPts[0].fX, fPts[0].fY);
+ for (int vIndex = 1; vIndex <= fVerb; ++vIndex) {
+ SkDebugf(" %1.9g,%1.9g", fPts[vIndex].fX, fPts[vIndex].fY);
+ }
+ SkASSERT(&span == &span.fOther->fTs[span.fOtherIndex].fOther->
+ fTs[span.fOther->fTs[span.fOtherIndex].fOtherIndex]);
+ SkDebugf(") t=%1.9g [%d] (%1.9g,%1.9g) tEnd=%1.9g newWindSum=%d windSum=",
+ span.fT, span.fOther->fTs[span.fOtherIndex].fOtherIndex, pt.fX, pt.fY,
+ (&span)[1].fT, winding);
+ if (span.fWindSum == SK_MinS32) {
+ SkDebugf("?");
+ } else {
+ SkDebugf("%d", span.fWindSum);
+ }
+ SkDebugf(" windValue=%d\n", span.fWindValue);
+ }
+
+ void debugShowNewWinding(const char* fun, const Span& span, int winding, int oppWinding) {
+ const SkPoint& pt = xyAtT(&span);
+ SkDebugf("%s id=%d", fun, fID);
+ SkDebugf(" (%1.9g,%1.9g", fPts[0].fX, fPts[0].fY);
+ for (int vIndex = 1; vIndex <= fVerb; ++vIndex) {
+ SkDebugf(" %1.9g,%1.9g", fPts[vIndex].fX, fPts[vIndex].fY);
+ }
+ SkASSERT(&span == &span.fOther->fTs[span.fOtherIndex].fOther->
+ fTs[span.fOther->fTs[span.fOtherIndex].fOtherIndex]);
+ SkDebugf(") t=%1.9g [%d] (%1.9g,%1.9g) tEnd=%1.9g newWindSum=%d newOppSum=%d oppSum=",
+ span.fT, span.fOther->fTs[span.fOtherIndex].fOtherIndex, pt.fX, pt.fY,
+ (&span)[1].fT, winding, oppWinding);
+ if (span.fOppSum == SK_MinS32) {
+ SkDebugf("?");
+ } else {
+ SkDebugf("%d", span.fOppSum);
+ }
+ SkDebugf(" windSum=");
+ if (span.fWindSum == SK_MinS32) {
+ SkDebugf("?");
+ } else {
+ SkDebugf("%d", span.fWindSum);
+ }
+ SkDebugf(" windValue=%d\n", span.fWindValue);
+ }
+#endif
+
+#if DEBUG_SORT || DEBUG_SWAP_TOP
+ void debugShowSort(const char* fun, const SkTDArray<Angle*>& angles, int first,
+ const int contourWinding, const int oppContourWinding) const {
+ if (--gDebugSortCount < 0) {
+ return;
+ }
+ SkASSERT(angles[first]->segment() == this);
+ SkASSERT(angles.count() > 1);
+ int lastSum = contourWinding;
+ int oppLastSum = oppContourWinding;
+ const Angle* firstAngle = angles[first];
+ int windSum = lastSum - spanSign(firstAngle);
+ int oppoSign = oppSign(firstAngle);
+ int oppWindSum = oppLastSum - oppoSign;
+ #define WIND_AS_STRING(x) char x##Str[12]; if (!valid_wind(x)) strcpy(x##Str, "?"); \
+ else snprintf(x##Str, sizeof(x##Str), "%d", x)
+ WIND_AS_STRING(contourWinding);
+ WIND_AS_STRING(oppContourWinding);
+ SkDebugf("%s %s contourWinding=%s oppContourWinding=%s sign=%d\n", fun, __FUNCTION__,
+ contourWindingStr, oppContourWindingStr, spanSign(angles[first]));
+ int index = first;
+ bool firstTime = true;
+ do {
+ const Angle& angle = *angles[index];
+ const Segment& segment = *angle.segment();
+ int start = angle.start();
+ int end = angle.end();
+ const Span& sSpan = segment.fTs[start];
+ const Span& eSpan = segment.fTs[end];
+ const Span& mSpan = segment.fTs[SkMin32(start, end)];
+ bool opp = segment.fOperand ^ fOperand;
+ if (!firstTime) {
+ oppoSign = segment.oppSign(&angle);
+ if (opp) {
+ oppLastSum = oppWindSum;
+ oppWindSum -= segment.spanSign(&angle);
+ if (oppoSign) {
+ lastSum = windSum;
+ windSum -= oppoSign;
+ }
+ } else {
+ lastSum = windSum;
+ windSum -= segment.spanSign(&angle);
+ if (oppoSign) {
+ oppLastSum = oppWindSum;
+ oppWindSum -= oppoSign;
+ }
+ }
+ }
+ SkDebugf("%s [%d] %s", __FUNCTION__, index,
+ angle.unsortable() ? "*** UNSORTABLE *** " : "");
+ #if COMPACT_DEBUG_SORT
+ SkDebugf("id=%d %s start=%d (%1.9g,%,1.9g) end=%d (%1.9g,%,1.9g)",
+ segment.fID, kLVerbStr[segment.fVerb],
+ start, segment.xAtT(&sSpan), segment.yAtT(&sSpan), end,
+ segment.xAtT(&eSpan), segment.yAtT(&eSpan));
+ #else
+ switch (segment.fVerb) {
+ case SkPath::kLine_Verb:
+ SkDebugf(LINE_DEBUG_STR, LINE_DEBUG_DATA(segment.fPts));
+ break;
+ case SkPath::kQuad_Verb:
+ SkDebugf(QUAD_DEBUG_STR, QUAD_DEBUG_DATA(segment.fPts));
+ break;
+ case SkPath::kCubic_Verb:
+ SkDebugf(CUBIC_DEBUG_STR, CUBIC_DEBUG_DATA(segment.fPts));
+ break;
+ default:
+ SkASSERT(0);
+ }
+ SkDebugf(" tStart=%1.9g tEnd=%1.9g", sSpan.fT, eSpan.fT);
+ #endif
+ SkDebugf(" sign=%d windValue=%d windSum=", angle.sign(), mSpan.fWindValue);
+ winding_printf(mSpan.fWindSum);
+ int last, wind;
+ if (opp) {
+ last = oppLastSum;
+ wind = oppWindSum;
+ } else {
+ last = lastSum;
+ wind = windSum;
+ }
+ bool useInner = valid_wind(last) && valid_wind(wind) && useInnerWinding(last, wind);
+ WIND_AS_STRING(last);
+ WIND_AS_STRING(wind);
+ WIND_AS_STRING(lastSum);
+ WIND_AS_STRING(oppLastSum);
+ WIND_AS_STRING(windSum);
+ WIND_AS_STRING(oppWindSum);
+ #undef WIND_AS_STRING
+ if (!oppoSign) {
+ SkDebugf(" %s->%s (max=%s)", lastStr, windStr, useInner ? windStr : lastStr);
+ } else {
+ SkDebugf(" %s->%s (%s->%s)", lastStr, windStr, opp ? lastSumStr : oppLastSumStr,
+ opp ? windSumStr : oppWindSumStr);
+ }
+ SkDebugf(" done=%d tiny=%d opp=%d\n", mSpan.fDone, mSpan.fTiny, opp);
+#if false && DEBUG_ANGLE
+ angle.debugShow(segment.xyAtT(&sSpan));
+#endif
+ ++index;
+ if (index == angles.count()) {
+ index = 0;
+ }
+ if (firstTime) {
+ firstTime = false;
+ }
+ } while (index != first);
+ }
+
+ void debugShowSort(const char* fun, const SkTDArray<Angle*>& angles, int first) {
+ const Angle* firstAngle = angles[first];
+ const Segment* segment = firstAngle->segment();
+ int winding = segment->updateWinding(firstAngle);
+ int oppWinding = segment->updateOppWinding(firstAngle);
+ debugShowSort(fun, angles, first, winding, oppWinding);
+ }
+
+#endif
+
+#if DEBUG_WINDING
+ static char as_digit(int value) {
+ return value < 0 ? '?' : value <= 9 ? '0' + value : '+';
+ }
+#endif
+
+#if DEBUG_SHOW_WINDING
+ int debugShowWindingValues(int slotCount, int ofInterest) const {
+ if (!(1 << fID & ofInterest)) {
+ return 0;
+ }
+ int sum = 0;
+ SkTDArray<char> slots;
+ slots.setCount(slotCount * 2);
+ memset(slots.begin(), ' ', slotCount * 2);
+ for (int i = 0; i < fTs.count(); ++i) {
+ // if (!(1 << fTs[i].fOther->fID & ofInterest)) {
+ // continue;
+ // }
+ sum += fTs[i].fWindValue;
+ slots[fTs[i].fOther->fID - 1] = as_digit(fTs[i].fWindValue);
+ sum += fTs[i].fOppValue;
+ slots[slotCount + fTs[i].fOther->fID - 1] = as_digit(fTs[i].fOppValue);
+ }
+ SkDebugf("%s id=%2d %.*s | %.*s\n", __FUNCTION__, fID, slotCount, slots.begin(), slotCount,
+ slots.begin() + slotCount);
+ return sum;
+ }
+#endif
+
+private:
+ const SkPoint* fPts;
+ Bounds fBounds;
+ SkTDArray<Span> fTs; // two or more (always includes t=0 t=1)
+ // OPTIMIZATION: could pack donespans, verb, operand, xor into 1 int-sized value
+ int fDoneSpans; // quick check that segment is finished
+ // OPTIMIZATION: force the following to be byte-sized
+ SkPath::Verb fVerb;
+ bool fOperand;
+ bool fXor; // set if original contour had even-odd fill
+ bool fOppXor; // set if opposite operand had even-odd fill
+#if DEBUG_DUMP
+ int fID;
+#endif
+};
+
+class Contour;
+
+struct Coincidence {
+ Contour* fContours[2];
+ int fSegments[2];
+ double fTs[2][2];
+ SkPoint fPts[2];
+};
+
+class Contour {
+public:
+ Contour() {
+ reset();
+#if DEBUG_DUMP
+ fID = ++gContourID;
+#endif
+ }
+
+ bool operator<(const Contour& rh) const {
+ return fBounds.fTop == rh.fBounds.fTop
+ ? fBounds.fLeft < rh.fBounds.fLeft
+ : fBounds.fTop < rh.fBounds.fTop;
+ }
+
+ void addCoincident(int index, Contour* other, int otherIndex,
+ const Intersections& ts, bool swap) {
+ Coincidence& coincidence = *fCoincidences.append();
+ coincidence.fContours[0] = this; // FIXME: no need to store
+ coincidence.fContours[1] = other;
+ coincidence.fSegments[0] = index;
+ coincidence.fSegments[1] = otherIndex;
+ coincidence.fTs[swap][0] = ts.fT[0][0];
+ coincidence.fTs[swap][1] = ts.fT[0][1];
+ coincidence.fTs[!swap][0] = ts.fT[1][0];
+ coincidence.fTs[!swap][1] = ts.fT[1][1];
+ coincidence.fPts[0] = ts.fPt[0].asSkPoint();
+ coincidence.fPts[1] = ts.fPt[1].asSkPoint();
+ }
+
+ void addCross(const Contour* crosser) {
+#ifdef DEBUG_CROSS
+ for (int index = 0; index < fCrosses.count(); ++index) {
+ SkASSERT(fCrosses[index] != crosser);
+ }
+#endif
+ *fCrosses.append() = crosser;
+ }
+
+ void addCubic(const SkPoint pts[4]) {
+ fSegments.push_back().addCubic(pts, fOperand, fXor);
+ fContainsCurves = fContainsCubics = true;
+ }
+
+ int addLine(const SkPoint pts[2]) {
+ fSegments.push_back().addLine(pts, fOperand, fXor);
+ return fSegments.count();
+ }
+
+ void addOtherT(int segIndex, int tIndex, double otherT, int otherIndex) {
+ fSegments[segIndex].addOtherT(tIndex, otherT, otherIndex);
+ }
+
+ int addQuad(const SkPoint pts[3]) {
+ fSegments.push_back().addQuad(pts, fOperand, fXor);
+ fContainsCurves = true;
+ return fSegments.count();
+ }
+
+ int addT(int segIndex, Contour* other, int otherIndex, const SkPoint& pt, double& newT) {
+ setContainsIntercepts();
+ return fSegments[segIndex].addT(&other->fSegments[otherIndex], pt, newT);
+ }
+
+ int addSelfT(int segIndex, Contour* other, int otherIndex, const SkPoint& pt, double& newT) {
+ setContainsIntercepts();
+ return fSegments[segIndex].addSelfT(&other->fSegments[otherIndex], pt, newT);
+ }
+
+ int addUnsortableT(int segIndex, Contour* other, int otherIndex, bool start,
+ const SkPoint& pt, double& newT) {
+ return fSegments[segIndex].addUnsortableT(&other->fSegments[otherIndex], start, pt, newT);
+ }
+
+ const Bounds& bounds() const {
+ return fBounds;
+ }
+
+ void complete() {
+ setBounds();
+ fContainsIntercepts = false;
+ }
+
+ bool containsCubics() const {
+ return fContainsCubics;
+ }
+
+ bool crosses(const Contour* crosser) const {
+ for (int index = 0; index < fCrosses.count(); ++index) {
+ if (fCrosses[index] == crosser) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ bool done() const {
+ return fDone;
+ }
+
+ const SkPoint& end() const {
+ const Segment& segment = fSegments.back();
+ return segment.pts()[segment.verb()];
+ }
+
+ void findTooCloseToCall() {
+ int segmentCount = fSegments.count();
+ for (int sIndex = 0; sIndex < segmentCount; ++sIndex) {
+ fSegments[sIndex].findTooCloseToCall();
+ }
+ }
+
+ void fixOtherTIndex() {
+ int segmentCount = fSegments.count();
+ for (int sIndex = 0; sIndex < segmentCount; ++sIndex) {
+ fSegments[sIndex].fixOtherTIndex();
+ }
+ }
+
+ Segment* nonVerticalSegment(int& start, int& end) {
+ int segmentCount = fSortedSegments.count();
+ SkASSERT(segmentCount > 0);
+ for (int sortedIndex = fFirstSorted; sortedIndex < segmentCount; ++sortedIndex) {
+ Segment* testSegment = fSortedSegments[sortedIndex];
+ if (testSegment->done()) {
+ continue;
+ }
+ start = end = 0;
+ while (testSegment->nextCandidate(start, end)) {
+ if (!testSegment->isVertical(start, end)) {
+ return testSegment;
+ }
+ }
+ }
+ return NULL;
+ }
+
+ bool operand() const {
+ return fOperand;
+ }
+
+ void reset() {
+ fSegments.reset();
+ fBounds.set(SK_ScalarMax, SK_ScalarMax, SK_ScalarMax, SK_ScalarMax);
+ fContainsCurves = fContainsCubics = fContainsIntercepts = fDone = false;
+ }
+
+ void resolveCoincidence(SkTDArray<Contour*>& contourList) {
+ int count = fCoincidences.count();
+ for (int index = 0; index < count; ++index) {
+ Coincidence& coincidence = fCoincidences[index];
+ SkASSERT(coincidence.fContours[0] == this);
+ int thisIndex = coincidence.fSegments[0];
+ Segment& thisOne = fSegments[thisIndex];
+ Contour* otherContour = coincidence.fContours[1];
+ int otherIndex = coincidence.fSegments[1];
+ Segment& other = otherContour->fSegments[otherIndex];
+ if ((thisOne.done() || other.done()) && thisOne.complete() && other.complete()) {
+ continue;
+ }
+ #if DEBUG_CONCIDENT
+ thisOne.debugShowTs();
+ other.debugShowTs();
+ #endif
+ double startT = coincidence.fTs[0][0];
+ double endT = coincidence.fTs[0][1];
+ bool cancelers = false;
+ if (startT > endT) {
+ SkTSwap<double>(startT, endT);
+ cancelers ^= true; // FIXME: just assign true
+ }
+ SkASSERT(!approximately_negative(endT - startT));
+ double oStartT = coincidence.fTs[1][0];
+ double oEndT = coincidence.fTs[1][1];
+ if (oStartT > oEndT) {
+ SkTSwap<double>(oStartT, oEndT);
+ cancelers ^= true;
+ }
+ SkASSERT(!approximately_negative(oEndT - oStartT));
+ bool opp = fOperand ^ otherContour->fOperand;
+ if (cancelers && !opp) {
+ // make sure startT and endT have t entries
+ if (startT > 0 || oEndT < 1
+ || thisOne.isMissing(startT) || other.isMissing(oEndT)) {
+ thisOne.addTPair(startT, other, oEndT, true, coincidence.fPts[0]);
+ }
+ if (oStartT > 0 || endT < 1
+ || thisOne.isMissing(endT) || other.isMissing(oStartT)) {
+ other.addTPair(oStartT, thisOne, endT, true, coincidence.fPts[1]);
+ }
+ if (!thisOne.done() && !other.done()) {
+ thisOne.addTCancel(startT, endT, other, oStartT, oEndT);
+ }
+ } else {
+ if (startT > 0 || oStartT > 0
+ || thisOne.isMissing(startT) || other.isMissing(oStartT)) {
+ thisOne.addTPair(startT, other, oStartT, true, coincidence.fPts[0]);
+ }
+ if (endT < 1 || oEndT < 1
+ || thisOne.isMissing(endT) || other.isMissing(oEndT)) {
+ other.addTPair(oEndT, thisOne, endT, true, coincidence.fPts[1]);
+ }
+ if (!thisOne.done() && !other.done()) {
+ thisOne.addTCoincident(startT, endT, other, oStartT, oEndT);
+ }
+ }
+ #if DEBUG_CONCIDENT
+ thisOne.debugShowTs();
+ other.debugShowTs();
+ #endif
+ #if DEBUG_SHOW_WINDING
+ debugShowWindingValues(contourList);
+ #endif
+ }
+ }
+
+ // first pass, add missing T values
+ // second pass, determine winding values of overlaps
+ void addCoincidentPoints() {
+ int count = fCoincidences.count();
+ for (int index = 0; index < count; ++index) {
+ Coincidence& coincidence = fCoincidences[index];
+ SkASSERT(coincidence.fContours[0] == this);
+ int thisIndex = coincidence.fSegments[0];
+ Segment& thisOne = fSegments[thisIndex];
+ Contour* otherContour = coincidence.fContours[1];
+ int otherIndex = coincidence.fSegments[1];
+ Segment& other = otherContour->fSegments[otherIndex];
+ if ((thisOne.done() || other.done()) && thisOne.complete() && other.complete()) {
+ // OPTIMIZATION: remove from array
+ continue;
+ }
+ #if DEBUG_CONCIDENT
+ thisOne.debugShowTs();
+ other.debugShowTs();
+ #endif
+ double startT = coincidence.fTs[0][0];
+ double endT = coincidence.fTs[0][1];
+ bool cancelers;
+ if ((cancelers = startT > endT)) {
+ SkTSwap(startT, endT);
+ SkTSwap(coincidence.fPts[0], coincidence.fPts[1]);
+ }
+ SkASSERT(!approximately_negative(endT - startT));
+ double oStartT = coincidence.fTs[1][0];
+ double oEndT = coincidence.fTs[1][1];
+ if (oStartT > oEndT) {
+ SkTSwap<double>(oStartT, oEndT);
+ cancelers ^= true;
+ }
+ SkASSERT(!approximately_negative(oEndT - oStartT));
+ bool opp = fOperand ^ otherContour->fOperand;
+ if (cancelers && !opp) {
+ // make sure startT and endT have t entries
+ if (startT > 0 || oEndT < 1
+ || thisOne.isMissing(startT) || other.isMissing(oEndT)) {
+ thisOne.addTPair(startT, other, oEndT, true, coincidence.fPts[0]);
+ }
+ if (oStartT > 0 || endT < 1
+ || thisOne.isMissing(endT) || other.isMissing(oStartT)) {
+ other.addTPair(oStartT, thisOne, endT, true, coincidence.fPts[1]);
+ }
+ } else {
+ if (startT > 0 || oStartT > 0
+ || thisOne.isMissing(startT) || other.isMissing(oStartT)) {
+ thisOne.addTPair(startT, other, oStartT, true, coincidence.fPts[0]);
+ }
+ if (endT < 1 || oEndT < 1
+ || thisOne.isMissing(endT) || other.isMissing(oEndT)) {
+ other.addTPair(oEndT, thisOne, endT, true, coincidence.fPts[1]);
+ }
+ }
+ #if DEBUG_CONCIDENT
+ thisOne.debugShowTs();
+ other.debugShowTs();
+ #endif
+ }
+ }
+
+ void calcCoincidentWinding() {
+ int count = fCoincidences.count();
+ for (int index = 0; index < count; ++index) {
+ Coincidence& coincidence = fCoincidences[index];
+ SkASSERT(coincidence.fContours[0] == this);
+ int thisIndex = coincidence.fSegments[0];
+ Segment& thisOne = fSegments[thisIndex];
+ if (thisOne.done()) {
+ continue;
+ }
+ Contour* otherContour = coincidence.fContours[1];
+ int otherIndex = coincidence.fSegments[1];
+ Segment& other = otherContour->fSegments[otherIndex];
+ if (other.done()) {
+ continue;
+ }
+ double startT = coincidence.fTs[0][0];
+ double endT = coincidence.fTs[0][1];
+ bool cancelers;
+ if ((cancelers = startT > endT)) {
+ SkTSwap<double>(startT, endT);
+ }
+ SkASSERT(!approximately_negative(endT - startT));
+ double oStartT = coincidence.fTs[1][0];
+ double oEndT = coincidence.fTs[1][1];
+ if (oStartT > oEndT) {
+ SkTSwap<double>(oStartT, oEndT);
+ cancelers ^= true;
+ }
+ SkASSERT(!approximately_negative(oEndT - oStartT));
+ bool opp = fOperand ^ otherContour->fOperand;
+ if (cancelers && !opp) {
+ // make sure startT and endT have t entries
+ if (!thisOne.done() && !other.done()) {
+ thisOne.addTCancel(startT, endT, other, oStartT, oEndT);
+ }
+ } else {
+ if (!thisOne.done() && !other.done()) {
+ thisOne.addTCoincident(startT, endT, other, oStartT, oEndT);
+ }
+ }
+ #if DEBUG_CONCIDENT
+ thisOne.debugShowTs();
+ other.debugShowTs();
+ #endif
+ }
+ }
+
+ SkTArray<Segment>& segments() {
+ return fSegments;
+ }
+
+ void setContainsIntercepts() {
+ fContainsIntercepts = true;
+ }
+
+ void setOperand(bool isOp) {
+ fOperand = isOp;
+ }
+
+ void setOppXor(bool isOppXor) {
+ fOppXor = isOppXor;
+ int segmentCount = fSegments.count();
+ for (int test = 0; test < segmentCount; ++test) {
+ fSegments[test].setOppXor(isOppXor);
+ }
+ }
+
+ void setXor(bool isXor) {
+ fXor = isXor;
+ }
+
+ void sortSegments() {
+ int segmentCount = fSegments.count();
+ fSortedSegments.setReserve(segmentCount);
+ for (int test = 0; test < segmentCount; ++test) {
+ *fSortedSegments.append() = &fSegments[test];
+ }
+ QSort<Segment>(fSortedSegments.begin(), fSortedSegments.end() - 1);
+ fFirstSorted = 0;
+ }
+
+ const SkPoint& start() const {
+ return fSegments.front().pts()[0];
+ }
+
+ void toPath(PathWrapper& path) const {
+ int segmentCount = fSegments.count();
+ const SkPoint& pt = fSegments.front().pts()[0];
+ path.deferredMove(pt);
+ for (int test = 0; test < segmentCount; ++test) {
+ fSegments[test].addCurveTo(0, 1, path, true);
+ }
+ path.close();
+ }
+
+ void toPartialBackward(PathWrapper& path) const {
+ int segmentCount = fSegments.count();
+ for (int test = segmentCount - 1; test >= 0; --test) {
+ fSegments[test].addCurveTo(1, 0, path, true);
+ }
+ }
+
+ void toPartialForward(PathWrapper& path) const {
+ int segmentCount = fSegments.count();
+ for (int test = 0; test < segmentCount; ++test) {
+ fSegments[test].addCurveTo(0, 1, path, true);
+ }
+ }
+
+ void topSortableSegment(const SkPoint& topLeft, SkPoint& bestXY, Segment*& topStart) {
+ int segmentCount = fSortedSegments.count();
+ SkASSERT(segmentCount > 0);
+ int sortedIndex = fFirstSorted;
+ fDone = true; // may be cleared below
+ for ( ; sortedIndex < segmentCount; ++sortedIndex) {
+ Segment* testSegment = fSortedSegments[sortedIndex];
+ if (testSegment->done()) {
+ if (sortedIndex == fFirstSorted) {
+ ++fFirstSorted;
+ }
+ continue;
+ }
+ fDone = false;
+ SkPoint testXY = testSegment->activeLeftTop(true, NULL);
+ if (topStart) {
+ if (testXY.fY < topLeft.fY) {
+ continue;
+ }
+ if (testXY.fY == topLeft.fY && testXY.fX < topLeft.fX) {
+ continue;
+ }
+ if (bestXY.fY < testXY.fY) {
+ continue;
+ }
+ if (bestXY.fY == testXY.fY && bestXY.fX < testXY.fX) {
+ continue;
+ }
+ }
+ topStart = testSegment;
+ bestXY = testXY;
+ }
+ }
+
+ Segment* undoneSegment(int& start, int& end) {
+ int segmentCount = fSegments.count();
+ for (int test = 0; test < segmentCount; ++test) {
+ Segment* testSegment = &fSegments[test];
+ if (testSegment->done()) {
+ continue;
+ }
+ testSegment->undoneSpan(start, end);
+ return testSegment;
+ }
+ return NULL;
+ }
+
+ int updateSegment(int index, const SkPoint* pts) {
+ Segment& segment = fSegments[index];
+ segment.updatePts(pts);
+ return segment.verb() + 1;
+ }
+
+#if DEBUG_TEST
+ SkTArray<Segment>& debugSegments() {
+ return fSegments;
+ }
+#endif
+
+#if DEBUG_DUMP
+ void dump() {
+ int i;
+ const char className[] = "Contour";
+ const int tab = 4;
+ SkDebugf("%s %p (contour=%d)\n", className, this, fID);
+ for (i = 0; i < fSegments.count(); ++i) {
+ SkDebugf("%*s.fSegments[%d]:\n", tab + sizeof(className),
+ className, i);
+ fSegments[i].dump();
+ }
+ SkDebugf("%*s.fBounds=(l:%1.9g, t:%1.9g r:%1.9g, b:%1.9g)\n",
+ tab + sizeof(className), className,
+ fBounds.fLeft, fBounds.fTop,
+ fBounds.fRight, fBounds.fBottom);
+ SkDebugf("%*s.fContainsIntercepts=%d\n", tab + sizeof(className),
+ className, fContainsIntercepts);
+ SkDebugf("%*s.fContainsCurves=%d\n", tab + sizeof(className),
+ className, fContainsCurves);
+ }
+#endif
+
+#if DEBUG_ACTIVE_SPANS
+ void debugShowActiveSpans() {
+ for (int index = 0; index < fSegments.count(); ++index) {
+ fSegments[index].debugShowActiveSpans();
+ }
+ }
+
+ void validateActiveSpans() {
+ for (int index = 0; index < fSegments.count(); ++index) {
+ fSegments[index].validateActiveSpans();
+ }
+ }
+#endif
+
+#if DEBUG_SHOW_WINDING
+ int debugShowWindingValues(int totalSegments, int ofInterest) {
+ int count = fSegments.count();
+ int sum = 0;
+ for (int index = 0; index < count; ++index) {
+ sum += fSegments[index].debugShowWindingValues(totalSegments, ofInterest);
+ }
+ // SkDebugf("%s sum=%d\n", __FUNCTION__, sum);
+ return sum;
+ }
+
+ static void debugShowWindingValues(SkTDArray<Contour*>& contourList) {
+ // int ofInterest = 1 << 1 | 1 << 5 | 1 << 9 | 1 << 13;
+ // int ofInterest = 1 << 4 | 1 << 8 | 1 << 12 | 1 << 16;
+ int ofInterest = 1 << 5 | 1 << 8;
+ int total = 0;
+ int index;
+ for (index = 0; index < contourList.count(); ++index) {
+ total += contourList[index]->segments().count();
+ }
+ int sum = 0;
+ for (index = 0; index < contourList.count(); ++index) {
+ sum += contourList[index]->debugShowWindingValues(total, ofInterest);
+ }
+ // SkDebugf("%s total=%d\n", __FUNCTION__, sum);
+ }
+#endif
+
+protected:
+ void setBounds() {
+ int count = fSegments.count();
+ if (count == 0) {
+ SkDebugf("%s empty contour\n", __FUNCTION__);
+ SkASSERT(0);
+ // FIXME: delete empty contour?
+ return;
+ }
+ fBounds = fSegments.front().bounds();
+ for (int index = 1; index < count; ++index) {
+ fBounds.add(fSegments[index].bounds());
+ }
+ }
+
+private:
+ SkTArray<Segment> fSegments;
+ SkTDArray<Segment*> fSortedSegments;
+ int fFirstSorted;
+ SkTDArray<Coincidence> fCoincidences;
+ SkTDArray<const Contour*> fCrosses;
+ Bounds fBounds;
+ bool fContainsIntercepts; // FIXME: is this used by anybody?
+ bool fContainsCubics;
+ bool fContainsCurves;
+ bool fDone;
+ bool fOperand; // true for the second argument to a binary operator
+ bool fXor;
+ bool fOppXor;
+#if DEBUG_DUMP
+ int fID;
+#endif
+};
+
+class EdgeBuilder {
+public:
+
+EdgeBuilder(const PathWrapper& path, SkTArray<Contour>& contours)
+ : fPath(path.nativePath())
+ , fContours(contours)
+{
+ init();
+}
+
+EdgeBuilder(const SkPath& path, SkTArray<Contour>& contours)
+ : fPath(&path)
+ , fContours(contours)
+{
+ init();
+}
+
+void init() {
+ fCurrentContour = NULL;
+ fOperand = false;
+ fXorMask[0] = fXorMask[1] = (fPath->getFillType() & 1) ? kEvenOdd_Mask : kWinding_Mask;
+#if DEBUG_DUMP
+ gContourID = 0;
+ gSegmentID = 0;
+#endif
+ fSecondHalf = preFetch();
+}
+
+void addOperand(const SkPath& path) {
+ SkASSERT(fPathVerbs.count() > 0 && fPathVerbs.end()[-1] == SkPath::kDone_Verb);
+ fPathVerbs.pop();
+ fPath = &path;
+ fXorMask[1] = (fPath->getFillType() & 1) ? kEvenOdd_Mask : kWinding_Mask;
+ preFetch();
+}
+
+void finish() {
+ walk();
+ complete();
+ if (fCurrentContour && !fCurrentContour->segments().count()) {
+ fContours.pop_back();
+ }
+ // correct pointers in contours since fReducePts may have moved as it grew
+ int cIndex = 0;
+ int extraCount = fExtra.count();
+ SkASSERT(extraCount == 0 || fExtra[0] == -1);
+ int eIndex = 0;
+ int rIndex = 0;
+ while (++eIndex < extraCount) {
+ int offset = fExtra[eIndex];
+ if (offset < 0) {
+ ++cIndex;
+ continue;
+ }
+ fCurrentContour = &fContours[cIndex];
+ rIndex += fCurrentContour->updateSegment(offset - 1,
+ &fReducePts[rIndex]);
+ }
+ fExtra.reset(); // we're done with this
+}
+
+ShapeOpMask xorMask() const {
+ return fXorMask[fOperand];
+}
+
+protected:
+
+void complete() {
+ if (fCurrentContour && fCurrentContour->segments().count()) {
+ fCurrentContour->complete();
+ fCurrentContour = NULL;
+ }
+}
+
+// FIXME:remove once we can access path pts directly
+int preFetch() {
+ SkPath::RawIter iter(*fPath); // FIXME: access path directly when allowed
+ SkPoint pts[4];
+ SkPath::Verb verb;
+ do {
+ verb = iter.next(pts);
+ *fPathVerbs.append() = verb;
+ if (verb == SkPath::kMove_Verb) {
+ *fPathPts.append() = pts[0];
+ } else if (verb >= SkPath::kLine_Verb && verb <= SkPath::kCubic_Verb) {
+ fPathPts.append(verb, &pts[1]);
+ }
+ } while (verb != SkPath::kDone_Verb);
+ return fPathVerbs.count() - 1;
+}
+
+void walk() {
+ SkPath::Verb reducedVerb;
+ uint8_t* verbPtr = fPathVerbs.begin();
+ uint8_t* endOfFirstHalf = &verbPtr[fSecondHalf];
+ const SkPoint* pointsPtr = fPathPts.begin();
+ const SkPoint* finalCurveStart = NULL;
+ const SkPoint* finalCurveEnd = NULL;
+ SkPath::Verb verb;
+ while ((verb = (SkPath::Verb) *verbPtr++) != SkPath::kDone_Verb) {
+ switch (verb) {
+ case SkPath::kMove_Verb:
+ complete();
+ if (!fCurrentContour) {
+ fCurrentContour = fContours.push_back_n(1);
+ fCurrentContour->setOperand(fOperand);
+ fCurrentContour->setXor(fXorMask[fOperand] == kEvenOdd_Mask);
+ *fExtra.append() = -1; // start new contour
+ }
+ finalCurveEnd = pointsPtr++;
+ goto nextVerb;
+ case SkPath::kLine_Verb:
+ // skip degenerate points
+ if (pointsPtr[-1].fX != pointsPtr[0].fX
+ || pointsPtr[-1].fY != pointsPtr[0].fY) {
+ fCurrentContour->addLine(&pointsPtr[-1]);
+ }
+ break;
+ case SkPath::kQuad_Verb:
+
+ reducedVerb = QuadReduceOrder(&pointsPtr[-1], fReducePts);
+ if (reducedVerb == 0) {
+ break; // skip degenerate points
+ }
+ if (reducedVerb == 1) {
+ *fExtra.append() =
+ fCurrentContour->addLine(fReducePts.end() - 2);
+ break;
+ }
+ fCurrentContour->addQuad(&pointsPtr[-1]);
+ break;
+ case SkPath::kCubic_Verb:
+ reducedVerb = CubicReduceOrder(&pointsPtr[-1], fReducePts);
+ if (reducedVerb == 0) {
+ break; // skip degenerate points
+ }
+ if (reducedVerb == 1) {
+ *fExtra.append() =
+ fCurrentContour->addLine(fReducePts.end() - 2);
+ break;
+ }
+ if (reducedVerb == 2) {
+ *fExtra.append() =
+ fCurrentContour->addQuad(fReducePts.end() - 3);
+ break;
+ }
+ fCurrentContour->addCubic(&pointsPtr[-1]);
+ break;
+ case SkPath::kClose_Verb:
+ SkASSERT(fCurrentContour);
+ if (finalCurveStart && finalCurveEnd
+ && *finalCurveStart != *finalCurveEnd) {
+ *fReducePts.append() = *finalCurveStart;
+ *fReducePts.append() = *finalCurveEnd;
+ *fExtra.append() =
+ fCurrentContour->addLine(fReducePts.end() - 2);
+ }
+ complete();
+ goto nextVerb;
+ default:
+ SkDEBUGFAIL("bad verb");
+ return;
+ }
+ finalCurveStart = &pointsPtr[verb - 1];
+ pointsPtr += verb;
+ SkASSERT(fCurrentContour);
+ nextVerb:
+ if (verbPtr == endOfFirstHalf) {
+ fOperand = true;
+ }
+ }
+}
+
+private:
+ const SkPath* fPath;
+ SkTDArray<SkPoint> fPathPts; // FIXME: point directly to path pts instead
+ SkTDArray<uint8_t> fPathVerbs; // FIXME: remove
+ Contour* fCurrentContour;
+ SkTArray<Contour>& fContours;
+ SkTDArray<SkPoint> fReducePts; // segments created on the fly
+ SkTDArray<int> fExtra; // -1 marks new contour, > 0 offsets into contour
+ ShapeOpMask fXorMask[2];
+ int fSecondHalf;
+ bool fOperand;
+};
+
+class Work {
+public:
+ enum SegmentType {
+ kHorizontalLine_Segment = -1,
+ kVerticalLine_Segment = 0,
+ kLine_Segment = SkPath::kLine_Verb,
+ kQuad_Segment = SkPath::kQuad_Verb,
+ kCubic_Segment = SkPath::kCubic_Verb,
+ };
+
+ void addCoincident(Work& other, const Intersections& ts, bool swap) {
+ fContour->addCoincident(fIndex, other.fContour, other.fIndex, ts, swap);
+ }
+
+ // FIXME: does it make sense to write otherIndex now if we're going to
+ // fix it up later?
+ void addOtherT(int index, double otherT, int otherIndex) {
+ fContour->addOtherT(fIndex, index, otherT, otherIndex);
+ }
+
+ // Avoid collapsing t values that are close to the same since
+ // we walk ts to describe consecutive intersections. Since a pair of ts can
+ // be nearly equal, any problems caused by this should be taken care
+ // of later.
+ // On the edge or out of range values are negative; add 2 to get end
+ int addT(const Work& other, const SkPoint& pt, double& newT) {
+ return fContour->addT(fIndex, other.fContour, other.fIndex, pt, newT);
+ }
+
+ int addSelfT(const Work& other, const SkPoint& pt, double& newT) {
+ return fContour->addSelfT(fIndex, other.fContour, other.fIndex, pt, newT);
+ }
+
+ int addUnsortableT(const Work& other, bool start, const SkPoint& pt, double& newT) {
+ return fContour->addUnsortableT(fIndex, other.fContour, other.fIndex, start, pt, newT);
+ }
+
+ bool advance() {
+ return ++fIndex < fLast;
+ }
+
+ SkScalar bottom() const {
+ return bounds().fBottom;
+ }
+
+ const Bounds& bounds() const {
+ return fContour->segments()[fIndex].bounds();
+ }
+
+#if !APPROXIMATE_CUBICS
+ const SkPoint* cubic() const {
+ return fCubic;
+ }
+#endif
+
+ void init(Contour* contour) {
+ fContour = contour;
+ fIndex = 0;
+ fLast = contour->segments().count();
+ }
+
+ bool isAdjacent(const Work& next) {
+ return fContour == next.fContour && fIndex + 1 == next.fIndex;
+ }
+
+ bool isFirstLast(const Work& next) {
+ return fContour == next.fContour && fIndex == 0
+ && next.fIndex == fLast - 1;
+ }
+
+ SkScalar left() const {
+ return bounds().fLeft;
+ }
+
+#if !APPROXIMATE_CUBICS
+ void promoteToCubic() {
+ fCubic[0] = pts()[0];
+ fCubic[2] = pts()[1];
+ fCubic[3] = pts()[2];
+ fCubic[1].fX = (fCubic[0].fX + fCubic[2].fX * 2) / 3;
+ fCubic[1].fY = (fCubic[0].fY + fCubic[2].fY * 2) / 3;
+ fCubic[2].fX = (fCubic[3].fX + fCubic[2].fX * 2) / 3;
+ fCubic[2].fY = (fCubic[3].fY + fCubic[2].fY * 2) / 3;
+ }
+#endif
+
+ const SkPoint* pts() const {
+ return fContour->segments()[fIndex].pts();
+ }
+
+ SkScalar right() const {
+ return bounds().fRight;
+ }
+
+ ptrdiff_t segmentIndex() const {
+ return fIndex;
+ }
+
+ SegmentType segmentType() const {
+ const Segment& segment = fContour->segments()[fIndex];
+ SegmentType type = (SegmentType) segment.verb();
+ if (type != kLine_Segment) {
+ return type;
+ }
+ if (segment.isHorizontal()) {
+ return kHorizontalLine_Segment;
+ }
+ if (segment.isVertical()) {
+ return kVerticalLine_Segment;
+ }
+ return kLine_Segment;
+ }
+
+ bool startAfter(const Work& after) {
+ fIndex = after.fIndex;
+ return advance();
+ }
+
+ SkScalar top() const {
+ return bounds().fTop;
+ }
+
+ SkPath::Verb verb() const {
+ return fContour->segments()[fIndex].verb();
+ }
+
+ SkScalar x() const {
+ return bounds().fLeft;
+ }
+
+ bool xFlipped() const {
+ return x() != pts()[0].fX;
+ }
+
+ SkScalar y() const {
+ return bounds().fTop;
+ }
+
+ bool yFlipped() const {
+ return y() != pts()[0].fY;
+ }
+
+protected:
+ Contour* fContour;
+#if !APPROXIMATE_CUBICS
+ SkPoint fCubic[4];
+#endif
+ int fIndex;
+ int fLast;
+};
+
+#if DEBUG_ADD_INTERSECTING_TS
+
+static void debugShowLineIntersection(int pts, const Work& wt, const Work& wn,
+ const Intersections& i) {
+ SkASSERT(i.used() == pts);
+ if (!pts) {
+ SkDebugf("%s no intersect " LINE_DEBUG_STR " " LINE_DEBUG_STR "\n",
+ __FUNCTION__, LINE_DEBUG_DATA(wt.pts()), LINE_DEBUG_DATA(wn.pts()));
+ return;
+ }
+ SkDebugf("%s " T_DEBUG_STR(wtTs, 0) " " LINE_DEBUG_STR " " PT_DEBUG_STR, __FUNCTION__,
+ i.fT[0][0], LINE_DEBUG_DATA(wt.pts()), PT_DEBUG_DATA(i, 0));
+ if (pts == 2) {
+ SkDebugf(" " T_DEBUG_STR(wtTs, 1) " " PT_DEBUG_STR, i.fT[0][1], PT_DEBUG_DATA(i, 1));
+ }
+ SkDebugf(" wnTs[0]=%g " LINE_DEBUG_STR, i.fT[1][0], LINE_DEBUG_DATA(wn.pts()));
+ if (pts == 2) {
+ SkDebugf(" " T_DEBUG_STR(wnTs, 1), i.fT[1][1]);
+ }
+ SkDebugf("\n");
+}
+
+static void debugShowQuadLineIntersection(int pts, const Work& wt,
+ const Work& wn, const Intersections& i) {
+ SkASSERT(i.used() == pts);
+ if (!pts) {
+ SkDebugf("%s no intersect " QUAD_DEBUG_STR " " LINE_DEBUG_STR "\n",
+ __FUNCTION__, QUAD_DEBUG_DATA(wt.pts()), LINE_DEBUG_DATA(wn.pts()));
+ return;
+ }
+ SkDebugf("%s " T_DEBUG_STR(wtTs, 0) " " QUAD_DEBUG_STR " " PT_DEBUG_STR, __FUNCTION__,
+ i.fT[0][0], QUAD_DEBUG_DATA(wt.pts()), PT_DEBUG_DATA(i, 0));
+ for (int n = 1; n < pts; ++n) {
+ SkDebugf(" " TX_DEBUG_STR(wtTs) " " PT_DEBUG_STR, n, i.fT[0][n], PT_DEBUG_DATA(i, n));
+ }
+ SkDebugf(" wnTs[0]=%g " LINE_DEBUG_STR, i.fT[1][0], LINE_DEBUG_DATA(wn.pts()));
+ for (int n = 1; n < pts; ++n) {
+ SkDebugf(" " TX_DEBUG_STR(wnTs), n, i.fT[1][n]);
+ }
+ SkDebugf("\n");
+}
+
+static void debugShowQuadIntersection(int pts, const Work& wt,
+ const Work& wn, const Intersections& i) {
+ SkASSERT(i.used() == pts);
+ if (!pts) {
+ SkDebugf("%s no intersect " QUAD_DEBUG_STR " " QUAD_DEBUG_STR "\n",
+ __FUNCTION__, QUAD_DEBUG_DATA(wt.pts()), QUAD_DEBUG_DATA(wn.pts()));
+ return;
+ }
+ SkDebugf("%s " T_DEBUG_STR(wtTs, 0) " " QUAD_DEBUG_STR " " PT_DEBUG_STR, __FUNCTION__,
+ i.fT[0][0], QUAD_DEBUG_DATA(wt.pts()), PT_DEBUG_DATA(i, 0));
+ for (int n = 1; n < pts; ++n) {
+ SkDebugf(" " TX_DEBUG_STR(wtTs) " " PT_DEBUG_STR, n, i.fT[0][n], PT_DEBUG_DATA(i, n));
+ }
+ SkDebugf(" wnTs[0]=%g " QUAD_DEBUG_STR, i.fT[1][0], QUAD_DEBUG_DATA(wn.pts()));
+ for (int n = 1; n < pts; ++n) {
+ SkDebugf(" " TX_DEBUG_STR(wnTs), n, i.fT[1][n]);
+ }
+ SkDebugf("\n");
+}
+
+static void debugShowCubicLineIntersection(int pts, const Work& wt,
+ const Work& wn, const Intersections& i) {
+ SkASSERT(i.used() == pts);
+ if (!pts) {
+ SkDebugf("%s no intersect " CUBIC_DEBUG_STR " " LINE_DEBUG_STR "\n",
+ __FUNCTION__, CUBIC_DEBUG_DATA(wt.pts()), LINE_DEBUG_DATA(wn.pts()));
+ return;
+ }
+ SkDebugf("%s " T_DEBUG_STR(wtTs, 0) " " CUBIC_DEBUG_STR " " PT_DEBUG_STR, __FUNCTION__,
+ i.fT[0][0], CUBIC_DEBUG_DATA(wt.pts()), PT_DEBUG_DATA(i, 0));
+ for (int n = 1; n < pts; ++n) {
+ SkDebugf(" " TX_DEBUG_STR(wtTs) " " PT_DEBUG_STR, n, i.fT[0][n], PT_DEBUG_DATA(i, n));
+ }
+ SkDebugf(" wnTs[0]=%g " LINE_DEBUG_STR, i.fT[1][0], LINE_DEBUG_DATA(wn.pts()));
+ for (int n = 1; n < pts; ++n) {
+ SkDebugf(" " TX_DEBUG_STR(wnTs), n, i.fT[1][n]);
+ }
+ SkDebugf("\n");
+}
+
+static void debugShowCubicQuadIntersection(int pts, const Work& wt,
+ const Work& wn, const Intersections& i) {
+ SkASSERT(i.used() == pts);
+ if (!pts) {
+ SkDebugf("%s no intersect " CUBIC_DEBUG_STR " " QUAD_DEBUG_STR "\n",
+ __FUNCTION__, CUBIC_DEBUG_DATA(wt.pts()), QUAD_DEBUG_DATA(wn.pts()));
+ return;
+ }
+ SkDebugf("%s " T_DEBUG_STR(wtTs, 0) " " CUBIC_DEBUG_STR " " PT_DEBUG_STR, __FUNCTION__,
+ i.fT[0][0], CUBIC_DEBUG_DATA(wt.pts()), PT_DEBUG_DATA(i, 0));
+ for (int n = 1; n < pts; ++n) {
+ SkDebugf(" " TX_DEBUG_STR(wtTs) " " PT_DEBUG_STR, n, i.fT[0][n], PT_DEBUG_DATA(i, n));
+ }
+ SkDebugf(" wnTs[0]=%g " QUAD_DEBUG_STR, i.fT[1][0], QUAD_DEBUG_DATA(wn.pts()));
+ for (int n = 1; n < pts; ++n) {
+ SkDebugf(" " TX_DEBUG_STR(wnTs), n, i.fT[1][n]);
+ }
+ SkDebugf("\n");
+}
+
+static void debugShowCubicIntersection(int pts, const Work& wt,
+ const Work& wn, const Intersections& i) {
+ SkASSERT(i.used() == pts);
+ if (!pts) {
+ SkDebugf("%s no intersect " CUBIC_DEBUG_STR " " CUBIC_DEBUG_STR "\n",
+ __FUNCTION__, CUBIC_DEBUG_DATA(wt.pts()), CUBIC_DEBUG_DATA(wn.pts()));
+ return;
+ }
+ SkDebugf("%s " T_DEBUG_STR(wtTs, 0) " " CUBIC_DEBUG_STR " " PT_DEBUG_STR, __FUNCTION__,
+ i.fT[0][0], CUBIC_DEBUG_DATA(wt.pts()), PT_DEBUG_DATA(i, 0));
+ for (int n = 1; n < pts; ++n) {
+ SkDebugf(" " TX_DEBUG_STR(wtTs) " " PT_DEBUG_STR, n, i.fT[0][n], PT_DEBUG_DATA(i, n));
+ }
+ SkDebugf(" wnTs[0]=%g " CUBIC_DEBUG_STR, i.fT[1][0], CUBIC_DEBUG_DATA(wn.pts()));
+ for (int n = 1; n < pts; ++n) {
+ SkDebugf(" " TX_DEBUG_STR(wnTs), n, i.fT[1][n]);
+ }
+ SkDebugf("\n");
+}
+
+static void debugShowCubicIntersection(int pts, const Work& wt, const Intersections& i) {
+ SkASSERT(i.used() == pts);
+ if (!pts) {
+ SkDebugf("%s no self intersect " CUBIC_DEBUG_STR "\n", __FUNCTION__,
+ CUBIC_DEBUG_DATA(wt.pts()));
+ return;
+ }
+ SkDebugf("%s " T_DEBUG_STR(wtTs, 0) " " CUBIC_DEBUG_STR " " PT_DEBUG_STR, __FUNCTION__,
+ i.fT[0][0], CUBIC_DEBUG_DATA(wt.pts()), PT_DEBUG_DATA(i, 0));
+ SkDebugf(" " T_DEBUG_STR(wtTs, 1), i.fT[1][0]);
+ SkDebugf("\n");
+}
+
+#else
+static void debugShowLineIntersection(int , const Work& , const Work& , const Intersections& ) {
+}
+
+static void debugShowQuadLineIntersection(int , const Work& , const Work& , const Intersections& ) {
+}
+
+static void debugShowQuadIntersection(int , const Work& , const Work& , const Intersections& ) {
+}
+
+static void debugShowCubicLineIntersection(int , const Work& , const Work& ,
+ const Intersections& ) {
+}
+
+static void debugShowCubicQuadIntersection(int , const Work& , const Work& ,
+ const Intersections& ) {
+}
+
+static void debugShowCubicIntersection(int , const Work& , const Work& , const Intersections& ) {
+}
+
+static void debugShowCubicIntersection(int , const Work& , const Intersections& ) {
+}
+#endif
+
+static bool addIntersectTs(Contour* test, Contour* next) {
+
+ if (test != next) {
+ if (test->bounds().fBottom < next->bounds().fTop) {
+ return false;
+ }
+ if (!Bounds::Intersects(test->bounds(), next->bounds())) {
+ return true;
+ }
+ }
+ Work wt;
+ wt.init(test);
+ bool foundCommonContour = test == next;
+ do {
+ Work wn;
+ wn.init(next);
+ if (test == next && !wn.startAfter(wt)) {
+ continue;
+ }
+ do {
+ if (!Bounds::Intersects(wt.bounds(), wn.bounds())) {
+ continue;
+ }
+ int pts;
+ Intersections ts;
+ bool swap = false;
+ switch (wt.segmentType()) {
+ case Work::kHorizontalLine_Segment:
+ swap = true;
+ switch (wn.segmentType()) {
+ case Work::kHorizontalLine_Segment:
+ case Work::kVerticalLine_Segment:
+ case Work::kLine_Segment: {
+ pts = HLineIntersect(wn.pts(), wt.left(),
+ wt.right(), wt.y(), wt.xFlipped(), ts);
+ debugShowLineIntersection(pts, wt, wn, ts);
+ break;
+ }
+ case Work::kQuad_Segment: {
+ pts = HQuadIntersect(wn.pts(), wt.left(),
+ wt.right(), wt.y(), wt.xFlipped(), ts);
+ break;
+ }
+ case Work::kCubic_Segment: {
+ pts = HCubicIntersect(wn.pts(), wt.left(),
+ wt.right(), wt.y(), wt.xFlipped(), ts);
+ debugShowCubicLineIntersection(pts, wn, wt, ts);
+ break;
+ }
+ default:
+ SkASSERT(0);
+ }
+ break;
+ case Work::kVerticalLine_Segment:
+ swap = true;
+ switch (wn.segmentType()) {
+ case Work::kHorizontalLine_Segment:
+ case Work::kVerticalLine_Segment:
+ case Work::kLine_Segment: {
+ pts = VLineIntersect(wn.pts(), wt.top(),
+ wt.bottom(), wt.x(), wt.yFlipped(), ts);
+ debugShowLineIntersection(pts, wt, wn, ts);
+ break;
+ }
+ case Work::kQuad_Segment: {
+ pts = VQuadIntersect(wn.pts(), wt.top(),
+ wt.bottom(), wt.x(), wt.yFlipped(), ts);
+ break;
+ }
+ case Work::kCubic_Segment: {
+ pts = VCubicIntersect(wn.pts(), wt.top(),
+ wt.bottom(), wt.x(), wt.yFlipped(), ts);
+ debugShowCubicLineIntersection(pts, wn, wt, ts);
+ break;
+ }
+ default:
+ SkASSERT(0);
+ }
+ break;
+ case Work::kLine_Segment:
+ switch (wn.segmentType()) {
+ case Work::kHorizontalLine_Segment:
+ pts = HLineIntersect(wt.pts(), wn.left(),
+ wn.right(), wn.y(), wn.xFlipped(), ts);
+ debugShowLineIntersection(pts, wt, wn, ts);
+ break;
+ case Work::kVerticalLine_Segment:
+ pts = VLineIntersect(wt.pts(), wn.top(),
+ wn.bottom(), wn.x(), wn.yFlipped(), ts);
+ debugShowLineIntersection(pts, wt, wn, ts);
+ break;
+ case Work::kLine_Segment: {
+ pts = LineIntersect(wt.pts(), wn.pts(), ts);
+ debugShowLineIntersection(pts, wt, wn, ts);
+ break;
+ }
+ case Work::kQuad_Segment: {
+ swap = true;
+ pts = QuadLineIntersect(wn.pts(), wt.pts(), ts);
+ debugShowQuadLineIntersection(pts, wn, wt, ts);
+ break;
+ }
+ case Work::kCubic_Segment: {
+ swap = true;
+ pts = CubicLineIntersect(wn.pts(), wt.pts(), ts);
+ debugShowCubicLineIntersection(pts, wn, wt, ts);
+ break;
+ }
+ default:
+ SkASSERT(0);
+ }
+ break;
+ case Work::kQuad_Segment:
+ switch (wn.segmentType()) {
+ case Work::kHorizontalLine_Segment:
+ pts = HQuadIntersect(wt.pts(), wn.left(),
+ wn.right(), wn.y(), wn.xFlipped(), ts);
+ break;
+ case Work::kVerticalLine_Segment:
+ pts = VQuadIntersect(wt.pts(), wn.top(),
+ wn.bottom(), wn.x(), wn.yFlipped(), ts);
+ break;
+ case Work::kLine_Segment: {
+ pts = QuadLineIntersect(wt.pts(), wn.pts(), ts);
+ debugShowQuadLineIntersection(pts, wt, wn, ts);
+ break;
+ }
+ case Work::kQuad_Segment: {
+ pts = QuadIntersect(wt.pts(), wn.pts(), ts);
+ debugShowQuadIntersection(pts, wt, wn, ts);
+ break;
+ }
+ case Work::kCubic_Segment: {
+ #if APPROXIMATE_CUBICS
+ swap = true;
+ pts = CubicQuadIntersect(wn.pts(), wt.pts(), ts);
+ debugShowCubicQuadIntersection(pts, wn, wt, ts);
+ #else
+ wt.promoteToCubic();
+ pts = CubicIntersect(wt.cubic(), wn.pts(), ts);
+ debugShowCubicIntersection(pts, wt, wn, ts);
+ #endif
+ break;
+ }
+ default:
+ SkASSERT(0);
+ }
+ break;
+ case Work::kCubic_Segment:
+ switch (wn.segmentType()) {
+ case Work::kHorizontalLine_Segment:
+ pts = HCubicIntersect(wt.pts(), wn.left(),
+ wn.right(), wn.y(), wn.xFlipped(), ts);
+ debugShowCubicLineIntersection(pts, wt, wn, ts);
+ break;
+ case Work::kVerticalLine_Segment:
+ pts = VCubicIntersect(wt.pts(), wn.top(),
+ wn.bottom(), wn.x(), wn.yFlipped(), ts);
+ debugShowCubicLineIntersection(pts, wt, wn, ts);
+ break;
+ case Work::kLine_Segment: {
+ pts = CubicLineIntersect(wt.pts(), wn.pts(), ts);
+ debugShowCubicLineIntersection(pts, wt, wn, ts);
+ break;
+ }
+ case Work::kQuad_Segment: {
+ #if APPROXIMATE_CUBICS
+ pts = CubicQuadIntersect(wt.pts(), wn.pts(), ts);
+ debugShowCubicQuadIntersection(pts, wt, wn, ts);
+ #else
+ wn.promoteToCubic();
+ pts = CubicIntersect(wt.pts(), wn.cubic(), ts);
+ debugShowCubicIntersection(pts, wt, wn, ts);
+ #endif
+ break;
+ }
+ case Work::kCubic_Segment: {
+ pts = CubicIntersect(wt.pts(), wn.pts(), ts);
+ debugShowCubicIntersection(pts, wt, wn, ts);
+ break;
+ }
+ default:
+ SkASSERT(0);
+ }
+ break;
+ default:
+ SkASSERT(0);
+ }
+ if (!foundCommonContour && pts > 0) {
+ test->addCross(next);
+ next->addCross(test);
+ foundCommonContour = true;
+ }
+ // in addition to recording T values, record matching segment
+ if (ts.unsortable()) {
+ bool start = true;
+ for (int pt = 0; pt < ts.used(); ++pt) {
+ // FIXME: if unsortable, the other points to the original. This logic is
+ // untested downstream.
+ SkPoint point = ts.fPt[pt].asSkPoint();
+ int testTAt = wt.addUnsortableT(wt, start, point, ts.fT[swap][pt]);
+ wt.addOtherT(testTAt, ts.fT[swap][pt], testTAt);
+ testTAt = wn.addUnsortableT(wn, start ^ ts.fFlip, point, ts.fT[!swap][pt]);
+ wn.addOtherT(testTAt, ts.fT[!swap][pt], testTAt);
+ start ^= true;
+ }
+ continue;
+ }
+ if (pts == 2) {
+ if (wn.segmentType() <= Work::kLine_Segment
+ && wt.segmentType() <= Work::kLine_Segment) {
+ wt.addCoincident(wn, ts, swap);
+ continue;
+ }
+ if (wn.segmentType() >= Work::kQuad_Segment
+ && wt.segmentType() >= Work::kQuad_Segment
+ && ts.fIsCoincident[0]) {
+ SkASSERT(ts.coincidentUsed() == 2);
+ wt.addCoincident(wn, ts, swap);
+ continue;
+ }
+
+ }
+ for (int pt = 0; pt < pts; ++pt) {
+ SkASSERT(ts.fT[0][pt] >= 0 && ts.fT[0][pt] <= 1);
+ SkASSERT(ts.fT[1][pt] >= 0 && ts.fT[1][pt] <= 1);
+ SkPoint point = ts.fPt[pt].asSkPoint();
+ int testTAt = wt.addT(wn, point, ts.fT[swap][pt]);
+ int nextTAt = wn.addT(wt, point, ts.fT[!swap][pt]);
+ wt.addOtherT(testTAt, ts.fT[!swap][pt ^ ts.fFlip], nextTAt);
+ wn.addOtherT(nextTAt, ts.fT[swap][pt ^ ts.fFlip], testTAt);
+ }
+ } while (wn.advance());
+ } while (wt.advance());
+ return true;
+}
+
+static void addSelfIntersectTs(Contour* test) {
+ Work wt;
+ wt.init(test);
+ do {
+ if (wt.segmentType() != Work::kCubic_Segment) {
+ continue;
+ }
+ Intersections ts;
+ int pts = CubicIntersect(wt.pts(), ts);
+ debugShowCubicIntersection(pts, wt, ts);
+ if (!pts) {
+ continue;
+ }
+ SkASSERT(pts == 1);
+ SkASSERT(ts.fT[0][0] >= 0 && ts.fT[0][0] <= 1);
+ SkASSERT(ts.fT[1][0] >= 0 && ts.fT[1][0] <= 1);
+ SkPoint point = ts.fPt[0].asSkPoint();
+ int testTAt = wt.addSelfT(wt, point, ts.fT[0][0]);
+ int nextTAt = wt.addT(wt, point, ts.fT[1][0]);
+ wt.addOtherT(testTAt, ts.fT[1][0], nextTAt);
+ wt.addOtherT(nextTAt, ts.fT[0][0], testTAt);
+ } while (wt.advance());
+}
+
+// resolve any coincident pairs found while intersecting, and
+// see if coincidence is formed by clipping non-concident segments
+static void coincidenceCheck(SkTDArray<Contour*>& contourList, int total) {
+ int contourCount = contourList.count();
+#if ONE_PASS_COINCIDENCE_CHECK
+ for (int cIndex = 0; cIndex < contourCount; ++cIndex) {
+ Contour* contour = contourList[cIndex];
+ contour->resolveCoincidence(contourList);
+ }
+#else
+ for (int cIndex = 0; cIndex < contourCount; ++cIndex) {
+ Contour* contour = contourList[cIndex];
+ contour->addCoincidentPoints();
+ }
+ for (int cIndex = 0; cIndex < contourCount; ++cIndex) {
+ Contour* contour = contourList[cIndex];
+ contour->calcCoincidentWinding();
+ }
+#endif
+ for (int cIndex = 0; cIndex < contourCount; ++cIndex) {
+ Contour* contour = contourList[cIndex];
+ contour->findTooCloseToCall();
+ }
+}
+
+static int contourRangeCheckY(SkTDArray<Contour*>& contourList, Segment*& current, int& index,
+ int& endIndex, double& bestHit, SkScalar& bestDx, bool& tryAgain, double& mid, bool opp) {
+ SkPoint basePt;
+ double tAtMid = current->tAtMid(index, endIndex, mid);
+ current->xyAtT(tAtMid, basePt);
+ int contourCount = contourList.count();
+ SkScalar bestY = SK_ScalarMin;
+ Segment* bestSeg = NULL;
+ int bestTIndex;
+ bool bestOpp;
+ bool hitSomething = false;
+ for (int cTest = 0; cTest < contourCount; ++cTest) {
+ Contour* contour = contourList[cTest];
+ bool testOpp = contour->operand() ^ current->operand() ^ opp;
+ if (basePt.fY < contour->bounds().fTop) {
+ continue;
+ }
+ if (bestY > contour->bounds().fBottom) {
+ continue;
+ }
+ int segmentCount = contour->segments().count();
+ for (int test = 0; test < segmentCount; ++test) {
+ Segment* testSeg = &contour->segments()[test];
+ SkScalar testY = bestY;
+ double testHit;
+ int testTIndex = testSeg->crossedSpanY(basePt, testY, testHit, hitSomething, tAtMid,
+ testOpp, testSeg == current);
+ if (testTIndex < 0) {
+ if (testTIndex == SK_MinS32) {
+ hitSomething = true;
+ bestSeg = NULL;
+ goto abortContours; // vertical encountered, return and try different point
+ }
+ continue;
+ }
+ if (testSeg == current && current->betweenTs(index, testHit, endIndex)) {
+ double baseT = current->t(index);
+ double endT = current->t(endIndex);
+ double newMid = (testHit - baseT) / (endT - baseT);
+#if DEBUG_WINDING
+ SkPoint midXY, newXY;
+ double midT = current->tAtMid(index, endIndex, mid);
+ current->xyAtT(midT, midXY);
+ double newMidT = current->tAtMid(index, endIndex, newMid);
+ current->xyAtT(newMidT, newXY);
+ SkDebugf("%s [%d] mid=%1.9g->%1.9g s=%1.9g (%1.9g,%1.9g) m=%1.9g (%1.9g,%1.9g)"
+ " n=%1.9g (%1.9g,%1.9g) e=%1.9g (%1.9g,%1.9g)\n", __FUNCTION__,
+ current->debugID(), mid, newMid,
+ baseT, current->xAtT(index), current->yAtT(index),
+ baseT + mid * (endT - baseT), midXY.fX, midXY.fY,
+ baseT + newMid * (endT - baseT), newXY.fX, newXY.fY,
+ endT, current->xAtT(endIndex), current->yAtT(endIndex));
+#endif
+ mid = newMid * 2; // calling loop with divide by 2 before continuing
+ return SK_MinS32;
+ }
+ bestSeg = testSeg;
+ bestHit = testHit;
+ bestOpp = testOpp;
+ bestTIndex = testTIndex;
+ bestY = testY;
+ }
+ }
+abortContours:
+ int result;
+ if (!bestSeg) {
+ result = hitSomething ? SK_MinS32 : 0;
+ } else {
+ if (bestSeg->windSum(bestTIndex) == SK_MinS32) {
+ current = bestSeg;
+ index = bestTIndex;
+ endIndex = bestSeg->nextSpan(bestTIndex, 1);
+ SkASSERT(index != endIndex && index >= 0 && endIndex >= 0);
+ tryAgain = true;
+ return 0;
+ }
+ result = bestSeg->windingAtT(bestHit, bestTIndex, bestOpp, bestDx);
+ SkASSERT(bestDx);
+ }
+ double baseT = current->t(index);
+ double endT = current->t(endIndex);
+ bestHit = baseT + mid * (endT - baseT);
+ return result;
+}
+
+static Segment* findUndone(SkTDArray<Contour*>& contourList, int& start, int& end) {
+ int contourCount = contourList.count();
+ Segment* result;
+ for (int cIndex = 0; cIndex < contourCount; ++cIndex) {
+ Contour* contour = contourList[cIndex];
+ result = contour->undoneSegment(start, end);
+ if (result) {
+ return result;
+ }
+ }
+ return NULL;
+}
+
+#define OLD_FIND_CHASE 1
+
+static Segment* findChase(SkTDArray<Span*>& chase, int& tIndex, int& endIndex) {
+ while (chase.count()) {
+ Span* span;
+ chase.pop(&span);
+ const Span& backPtr = span->fOther->span(span->fOtherIndex);
+ Segment* segment = backPtr.fOther;
+ tIndex = backPtr.fOtherIndex;
+ SkTDArray<Angle> angles;
+ int done = 0;
+ if (segment->activeAngle(tIndex, done, angles)) {
+ Angle* last = angles.end() - 1;
+ tIndex = last->start();
+ endIndex = last->end();
+ #if TRY_ROTATE
+ *chase.insert(0) = span;
+ #else
+ *chase.append() = span;
+ #endif
+ return last->segment();
+ }
+ if (done == angles.count()) {
+ continue;
+ }
+ SkTDArray<Angle*> sorted;
+ bool sortable = Segment::SortAngles(angles, sorted);
+ int angleCount = sorted.count();
+#if DEBUG_SORT
+ sorted[0]->segment()->debugShowSort(__FUNCTION__, sorted, 0, 0, 0);
+#endif
+ if (!sortable) {
+ continue;
+ }
+ // find first angle, initialize winding to computed fWindSum
+ int firstIndex = -1;
+ const Angle* angle;
+#if OLD_FIND_CHASE
+ int winding;
+ do {
+ angle = sorted[++firstIndex];
+ segment = angle->segment();
+ winding = segment->windSum(angle);
+ } while (winding == SK_MinS32);
+ int spanWinding = segment->spanSign(angle->start(), angle->end());
+ #if DEBUG_WINDING
+ SkDebugf("%s winding=%d spanWinding=%d\n",
+ __FUNCTION__, winding, spanWinding);
+ #endif
+ // turn span winding into contour winding
+ if (spanWinding * winding < 0) {
+ winding += spanWinding;
+ }
+ #if DEBUG_SORT
+ segment->debugShowSort(__FUNCTION__, sorted, firstIndex, winding, 0);
+ #endif
+ // we care about first sign and whether wind sum indicates this
+ // edge is inside or outside. Maybe need to pass span winding
+ // or first winding or something into this function?
+ // advance to first undone angle, then return it and winding
+ // (to set whether edges are active or not)
+ int nextIndex = firstIndex + 1;
+ int lastIndex = firstIndex != 0 ? firstIndex : angleCount;
+ angle = sorted[firstIndex];
+ winding -= angle->segment()->spanSign(angle);
+#else
+ do {
+ angle = sorted[++firstIndex];
+ segment = angle->segment();
+ } while (segment->windSum(angle) == SK_MinS32);
+ #if DEBUG_SORT
+ segment->debugShowSort(__FUNCTION__, sorted, firstIndex);
+ #endif
+ int sumWinding = segment->updateWindingReverse(angle);
+ int nextIndex = firstIndex + 1;
+ int lastIndex = firstIndex != 0 ? firstIndex : angleCount;
+ Segment* first = NULL;
+#endif
+ do {
+ SkASSERT(nextIndex != firstIndex);
+ if (nextIndex == angleCount) {
+ nextIndex = 0;
+ }
+ angle = sorted[nextIndex];
+ segment = angle->segment();
+#if OLD_FIND_CHASE
+ int maxWinding = winding;
+ winding -= segment->spanSign(angle);
+ #if DEBUG_SORT
+ SkDebugf("%s id=%d maxWinding=%d winding=%d sign=%d\n", __FUNCTION__,
+ segment->debugID(), maxWinding, winding, angle->sign());
+ #endif
+ tIndex = angle->start();
+ endIndex = angle->end();
+ int lesser = SkMin32(tIndex, endIndex);
+ const Span& nextSpan = segment->span(lesser);
+ if (!nextSpan.fDone) {
+#if 1
+ // FIXME: this be wrong? assign startWinding if edge is in
+ // same direction. If the direction is opposite, winding to
+ // assign is flipped sign or +/- 1?
+ if (useInnerWinding(maxWinding, winding)) {
+ maxWinding = winding;
+ }
+ segment->markAndChaseWinding(angle, maxWinding, 0);
+#endif
+ break;
+ }
+#else
+ int start = angle->start();
+ int end = angle->end();
+ int maxWinding;
+ segment->setUpWinding(start, end, maxWinding, sumWinding);
+ if (!segment->done(angle)) {
+ if (!first) {
+ first = segment;
+ tIndex = start;
+ endIndex = end;
+ }
+ (void) segment->markAngle(maxWinding, sumWinding, true, angle);
+ }
+#endif
+ } while (++nextIndex != lastIndex);
+ #if TRY_ROTATE
+ *chase.insert(0) = span;
+ #else
+ *chase.append() = span;
+ #endif
+ return segment;
+ }
+ return NULL;
+}
+
+#if DEBUG_ACTIVE_SPANS
+static void debugShowActiveSpans(SkTDArray<Contour*>& contourList) {
+ int index;
+ for (index = 0; index < contourList.count(); ++ index) {
+ contourList[index]->debugShowActiveSpans();
+ }
+ for (index = 0; index < contourList.count(); ++ index) {
+ contourList[index]->validateActiveSpans();
+ }
+}
+#endif
+
+static Segment* findSortableTop(SkTDArray<Contour*>& contourList, int& index,
+ int& endIndex, SkPoint& topLeft, bool& unsortable, bool& done, bool onlySortable) {
+ Segment* result;
+ do {
+ SkPoint bestXY = {SK_ScalarMax, SK_ScalarMax};
+ int contourCount = contourList.count();
+ Segment* topStart = NULL;
+ done = true;
+ for (int cIndex = 0; cIndex < contourCount; ++cIndex) {
+ Contour* contour = contourList[cIndex];
+ if (contour->done()) {
+ continue;
+ }
+ const Bounds& bounds = contour->bounds();
+ if (bounds.fBottom < topLeft.fY) {
+ done = false;
+ continue;
+ }
+ if (bounds.fBottom == topLeft.fY && bounds.fRight < topLeft.fX) {
+ done = false;
+ continue;
+ }
+ contour->topSortableSegment(topLeft, bestXY, topStart);
+ if (!contour->done()) {
+ done = false;
+ }
+ }
+ if (!topStart) {
+ return NULL;
+ }
+ topLeft = bestXY;
+ result = topStart->findTop(index, endIndex, unsortable, onlySortable);
+ } while (!result);
+ return result;
+}
+
+static int rightAngleWinding(SkTDArray<Contour*>& contourList,
+ Segment*& current, int& index, int& endIndex, double& tHit, SkScalar& hitDx, bool& tryAgain,
+ bool opp) {
+ double test = 0.9;
+ int contourWinding;
+ do {
+ contourWinding = contourRangeCheckY(contourList, current, index, endIndex, tHit, hitDx,
+ tryAgain, test, opp);
+ if (contourWinding != SK_MinS32 || tryAgain) {
+ return contourWinding;
+ }
+ test /= 2;
+ } while (!approximately_negative(test));
+ SkASSERT(0); // should be OK to comment out, but interested when this hits
+ return contourWinding;
+}
+
+static void skipVertical(SkTDArray<Contour*>& contourList,
+ Segment*& current, int& index, int& endIndex) {
+ if (!current->isVertical(index, endIndex)) {
+ return;
+ }
+ int contourCount = contourList.count();
+ for (int cIndex = 0; cIndex < contourCount; ++cIndex) {
+ Contour* contour = contourList[cIndex];
+ if (contour->done()) {
+ continue;
+ }
+ current = contour->nonVerticalSegment(index, endIndex);
+ if (current) {
+ return;
+ }
+ }
+}
+
+static Segment* findSortableTop(SkTDArray<Contour*>& contourList, bool& firstContour, int& index,
+ int& endIndex, SkPoint& topLeft, bool& unsortable, bool& done, bool binary) {
+ Segment* current = findSortableTop(contourList, index, endIndex, topLeft, unsortable, done,
+ true);
+ if (!current) {
+ return NULL;
+ }
+ if (firstContour) {
+ current->initWinding(index, endIndex);
+ firstContour = false;
+ return current;
+ }
+ int minIndex = SkMin32(index, endIndex);
+ int sumWinding = current->windSum(minIndex);
+ if (sumWinding != SK_MinS32) {
+ return current;
+ }
+ sumWinding = current->computeSum(index, endIndex, binary);
+ if (sumWinding != SK_MinS32) {
+ return current;
+ }
+ int contourWinding;
+ int oppContourWinding = 0;
+ // the simple upward projection of the unresolved points hit unsortable angles
+ // shoot rays at right angles to the segment to find its winding, ignoring angle cases
+ bool tryAgain;
+ double tHit;
+ SkScalar hitDx = 0;
+ SkScalar hitOppDx = 0;
+ do {
+ // if current is vertical, find another candidate which is not
+ // if only remaining candidates are vertical, then they can be marked done
+ SkASSERT(index != endIndex && index >= 0 && endIndex >= 0);
+ skipVertical(contourList, current, index, endIndex);
+ SkASSERT(index != endIndex && index >= 0 && endIndex >= 0);
+ tryAgain = false;
+ contourWinding = rightAngleWinding(contourList, current, index, endIndex, tHit, hitDx,
+ tryAgain, false);
+ if (tryAgain) {
+ continue;
+ }
+ if (!binary) {
+ break;
+ }
+ oppContourWinding = rightAngleWinding(contourList, current, index, endIndex, tHit, hitOppDx,
+ tryAgain, true);
+ } while (tryAgain);
+
+ current->initWinding(index, endIndex, tHit, contourWinding, hitDx, oppContourWinding, hitOppDx);
+ return current;
+}
+
+// rewrite that abandons keeping local track of winding
+static bool bridgeWinding(SkTDArray<Contour*>& contourList, PathWrapper& simple) {
+ bool firstContour = true;
+ bool unsortable = false;
+ bool topUnsortable = false;
+ SkPoint topLeft = {SK_ScalarMin, SK_ScalarMin};
+ do {
+ int index, endIndex;
+ bool topDone;
+ Segment* current = findSortableTop(contourList, firstContour, index, endIndex, topLeft,
+ topUnsortable, topDone, false);
+ if (!current) {
+ if (topUnsortable || !topDone) {
+ topUnsortable = false;
+ SkASSERT(topLeft.fX != SK_ScalarMin && topLeft.fY != SK_ScalarMin);
+ topLeft.fX = topLeft.fY = SK_ScalarMin;
+ continue;
+ }
+ break;
+ }
+ SkTDArray<Span*> chaseArray;
+ do {
+ if (current->activeWinding(index, endIndex)) {
+ do {
+ #if DEBUG_ACTIVE_SPANS
+ if (!unsortable && current->done()) {
+ debugShowActiveSpans(contourList);
+ }
+ #endif
+ SkASSERT(unsortable || !current->done());
+ int nextStart = index;
+ int nextEnd = endIndex;
+ Segment* next = current->findNextWinding(chaseArray, nextStart, nextEnd,
+ unsortable);
+ if (!next) {
+ if (!unsortable && simple.hasMove()
+ && current->verb() != SkPath::kLine_Verb
+ && !simple.isClosed()) {
+ current->addCurveTo(index, endIndex, simple, true);
+ SkASSERT(simple.isClosed());
+ }
+ break;
+ }
+ #if DEBUG_FLOW
+ SkDebugf("%s current id=%d from=(%1.9g,%1.9g) to=(%1.9g,%1.9g)\n", __FUNCTION__,
+ current->debugID(), current->xyAtT(index).fX, current->xyAtT(index).fY,
+ current->xyAtT(endIndex).fX, current->xyAtT(endIndex).fY);
+ #endif
+ current->addCurveTo(index, endIndex, simple, true);
+ current = next;
+ index = nextStart;
+ endIndex = nextEnd;
+ } while (!simple.isClosed() && (!unsortable
+ || !current->done(SkMin32(index, endIndex))));
+ if (current->activeWinding(index, endIndex) && !simple.isClosed()) {
+ SkASSERT(unsortable);
+ int min = SkMin32(index, endIndex);
+ if (!current->done(min)) {
+ current->addCurveTo(index, endIndex, simple, true);
+ current->markDoneUnary(min);
+ }
+ }
+ simple.close();
+ } else {
+ Span* last = current->markAndChaseDoneUnary(index, endIndex);
+ if (last && !last->fLoop) {
+ *chaseArray.append() = last;
+ }
+ }
+ current = findChase(chaseArray, index, endIndex);
+ #if DEBUG_ACTIVE_SPANS
+ debugShowActiveSpans(contourList);
+ #endif
+ if (!current) {
+ break;
+ }
+ } while (true);
+ } while (true);
+ return simple.someAssemblyRequired();
+}
+
+// returns true if all edges were processed
+static bool bridgeXor(SkTDArray<Contour*>& contourList, PathWrapper& simple) {
+ Segment* current;
+ int start, end;
+ bool unsortable = false;
+ bool closable = true;
+ while ((current = findUndone(contourList, start, end))) {
+ do {
+ #if DEBUG_ACTIVE_SPANS
+ if (!unsortable && current->done()) {
+ debugShowActiveSpans(contourList);
+ }
+ #endif
+ SkASSERT(unsortable || !current->done());
+ int nextStart = start;
+ int nextEnd = end;
+ Segment* next = current->findNextXor(nextStart, nextEnd, unsortable);
+ if (!next) {
+ if (!unsortable && simple.hasMove()
+ && current->verb() != SkPath::kLine_Verb
+ && !simple.isClosed()) {
+ current->addCurveTo(start, end, simple, true);
+ SkASSERT(simple.isClosed());
+ }
+ break;
+ }
+ #if DEBUG_FLOW
+ SkDebugf("%s current id=%d from=(%1.9g,%1.9g) to=(%1.9g,%1.9g)\n", __FUNCTION__,
+ current->debugID(), current->xyAtT(start).fX, current->xyAtT(start).fY,
+ current->xyAtT(end).fX, current->xyAtT(end).fY);
+ #endif
+ current->addCurveTo(start, end, simple, true);
+ current = next;
+ start = nextStart;
+ end = nextEnd;
+ } while (!simple.isClosed() && (!unsortable || !current->done(SkMin32(start, end))));
+ if (!simple.isClosed()) {
+ SkASSERT(unsortable);
+ int min = SkMin32(start, end);
+ if (!current->done(min)) {
+ current->addCurveTo(start, end, simple, true);
+ current->markDone(min, 1);
+ }
+ closable = false;
+ }
+ simple.close();
+ #if DEBUG_ACTIVE_SPANS
+ debugShowActiveSpans(contourList);
+ #endif
+ }
+ return closable;
+}
+
+static void fixOtherTIndex(SkTDArray<Contour*>& contourList) {
+ int contourCount = contourList.count();
+ for (int cTest = 0; cTest < contourCount; ++cTest) {
+ Contour* contour = contourList[cTest];
+ contour->fixOtherTIndex();
+ }
+}
+
+static void sortSegments(SkTDArray<Contour*>& contourList) {
+ int contourCount = contourList.count();
+ for (int cTest = 0; cTest < contourCount; ++cTest) {
+ Contour* contour = contourList[cTest];
+ contour->sortSegments();
+ }
+}
+
+static void makeContourList(SkTArray<Contour>& contours, SkTDArray<Contour*>& list,
+ bool evenOdd, bool oppEvenOdd) {
+ int count = contours.count();
+ if (count == 0) {
+ return;
+ }
+ for (int index = 0; index < count; ++index) {
+ Contour& contour = contours[index];
+ contour.setOppXor(contour.operand() ? evenOdd : oppEvenOdd);
+ *list.append() = &contour;
+ }
+ QSort<Contour>(list.begin(), list.end() - 1);
+}
+
+static bool approximatelyEqual(const SkPoint& a, const SkPoint& b) {
+ return AlmostEqualUlps(a.fX, b.fX) && AlmostEqualUlps(a.fY, b.fY);
+}
+
+static bool lessThan(SkTDArray<double>& distances, const int one, const int two) {
+ return distances[one] < distances[two];
+}
+ /*
+ check start and end of each contour
+ if not the same, record them
+ match them up
+ connect closest
+ reassemble contour pieces into new path
+ */
+static void assemble(const PathWrapper& path, PathWrapper& simple) {
+#if DEBUG_PATH_CONSTRUCTION
+ SkDebugf("%s\n", __FUNCTION__);
+#endif
+ SkTArray<Contour> contours;
+ EdgeBuilder builder(path, contours);
+ builder.finish();
+ int count = contours.count();
+ int outer;
+ SkTDArray<int> runs; // indices of partial contours
+ for (outer = 0; outer < count; ++outer) {
+ const Contour& eContour = contours[outer];
+ const SkPoint& eStart = eContour.start();
+ const SkPoint& eEnd = eContour.end();
+#if DEBUG_ASSEMBLE
+ SkDebugf("%s contour", __FUNCTION__);
+ if (!approximatelyEqual(eStart, eEnd)) {
+ SkDebugf("[%d]", runs.count());
+ } else {
+ SkDebugf(" ");
+ }
+ SkDebugf(" start=(%1.9g,%1.9g) end=(%1.9g,%1.9g)\n",
+ eStart.fX, eStart.fY, eEnd.fX, eEnd.fY);
+#endif
+ if (approximatelyEqual(eStart, eEnd)) {
+ eContour.toPath(simple);
+ continue;
+ }
+ *runs.append() = outer;
+ }
+ count = runs.count();
+ if (count == 0) {
+ return;
+ }
+ SkTDArray<int> sLink, eLink;
+ sLink.setCount(count);
+ eLink.setCount(count);
+ int rIndex, iIndex;
+ for (rIndex = 0; rIndex < count; ++rIndex) {
+ sLink[rIndex] = eLink[rIndex] = SK_MaxS32;
+ }
+ SkTDArray<double> distances;
+ const int ends = count * 2; // all starts and ends
+ const int entries = (ends - 1) * count; // folded triangle : n * (n - 1) / 2
+ distances.setCount(entries);
+ for (rIndex = 0; rIndex < ends - 1; ++rIndex) {
+ outer = runs[rIndex >> 1];
+ const Contour& oContour = contours[outer];
+ const SkPoint& oPt = rIndex & 1 ? oContour.end() : oContour.start();
+ const int row = rIndex < count - 1 ? rIndex * ends : (ends - rIndex - 2)
+ * ends - rIndex - 1;
+ for (iIndex = rIndex + 1; iIndex < ends; ++iIndex) {
+ int inner = runs[iIndex >> 1];
+ const Contour& iContour = contours[inner];
+ const SkPoint& iPt = iIndex & 1 ? iContour.end() : iContour.start();
+ double dx = iPt.fX - oPt.fX;
+ double dy = iPt.fY - oPt.fY;
+ double dist = dx * dx + dy * dy;
+ distances[row + iIndex] = dist; // oStart distance from iStart
+ }
+ }
+ SkTDArray<int> sortedDist;
+ sortedDist.setCount(entries);
+ for (rIndex = 0; rIndex < entries; ++rIndex) {
+ sortedDist[rIndex] = rIndex;
+ }
+ QSort<SkTDArray<double>, int>(distances, sortedDist.begin(), sortedDist.end() - 1, lessThan);
+ int remaining = count; // number of start/end pairs
+ for (rIndex = 0; rIndex < entries; ++rIndex) {
+ int pair = sortedDist[rIndex];
+ int row = pair / ends;
+ int col = pair - row * ends;
+ int thingOne = row < col ? row : ends - row - 2;
+ int ndxOne = thingOne >> 1;
+ bool endOne = thingOne & 1;
+ int* linkOne = endOne ? eLink.begin() : sLink.begin();
+ if (linkOne[ndxOne] != SK_MaxS32) {
+ continue;
+ }
+ int thingTwo = row < col ? col : ends - row + col - 1;
+ int ndxTwo = thingTwo >> 1;
+ bool endTwo = thingTwo & 1;
+ int* linkTwo = endTwo ? eLink.begin() : sLink.begin();
+ if (linkTwo[ndxTwo] != SK_MaxS32) {
+ continue;
+ }
+ SkASSERT(&linkOne[ndxOne] != &linkTwo[ndxTwo]);
+ bool flip = endOne == endTwo;
+ linkOne[ndxOne] = flip ? ~ndxTwo : ndxTwo;
+ linkTwo[ndxTwo] = flip ? ~ndxOne : ndxOne;
+ if (!--remaining) {
+ break;
+ }
+ }
+ SkASSERT(!remaining);
+#if DEBUG_ASSEMBLE
+ for (rIndex = 0; rIndex < count; ++rIndex) {
+ int s = sLink[rIndex];
+ int e = eLink[rIndex];
+ SkDebugf("%s %c%d <- s%d - e%d -> %c%d\n", __FUNCTION__, s < 0 ? 's' : 'e',
+ s < 0 ? ~s : s, rIndex, rIndex, e < 0 ? 'e' : 's', e < 0 ? ~e : e);
+ }
+#endif
+ rIndex = 0;
+ do {
+ bool forward = true;
+ bool first = true;
+ int sIndex = sLink[rIndex];
+ SkASSERT(sIndex != SK_MaxS32);
+ sLink[rIndex] = SK_MaxS32;
+ int eIndex;
+ if (sIndex < 0) {
+ eIndex = sLink[~sIndex];
+ sLink[~sIndex] = SK_MaxS32;
+ } else {
+ eIndex = eLink[sIndex];
+ eLink[sIndex] = SK_MaxS32;
+ }
+ SkASSERT(eIndex != SK_MaxS32);
+#if DEBUG_ASSEMBLE
+ SkDebugf("%s sIndex=%c%d eIndex=%c%d\n", __FUNCTION__, sIndex < 0 ? 's' : 'e',
+ sIndex < 0 ? ~sIndex : sIndex, eIndex < 0 ? 's' : 'e',
+ eIndex < 0 ? ~eIndex : eIndex);
+#endif
+ do {
+ outer = runs[rIndex];
+ const Contour& contour = contours[outer];
+ if (first) {
+ first = false;
+ const SkPoint* startPtr = &contour.start();
+ simple.deferredMove(startPtr[0]);
+ }
+ if (forward) {
+ contour.toPartialForward(simple);
+ } else {
+ contour.toPartialBackward(simple);
+ }
+#if DEBUG_ASSEMBLE
+ SkDebugf("%s rIndex=%d eIndex=%s%d close=%d\n", __FUNCTION__, rIndex,
+ eIndex < 0 ? "~" : "", eIndex < 0 ? ~eIndex : eIndex,
+ sIndex == ((rIndex != eIndex) ^ forward ? eIndex : ~eIndex));
+#endif
+ if (sIndex == ((rIndex != eIndex) ^ forward ? eIndex : ~eIndex)) {
+ simple.close();
+ break;
+ }
+ if (forward) {
+ eIndex = eLink[rIndex];
+ SkASSERT(eIndex != SK_MaxS32);
+ eLink[rIndex] = SK_MaxS32;
+ if (eIndex >= 0) {
+ SkASSERT(sLink[eIndex] == rIndex);
+ sLink[eIndex] = SK_MaxS32;
+ } else {
+ SkASSERT(eLink[~eIndex] == ~rIndex);
+ eLink[~eIndex] = SK_MaxS32;
+ }
+ } else {
+ eIndex = sLink[rIndex];
+ SkASSERT(eIndex != SK_MaxS32);
+ sLink[rIndex] = SK_MaxS32;
+ if (eIndex >= 0) {
+ SkASSERT(eLink[eIndex] == rIndex);
+ eLink[eIndex] = SK_MaxS32;
+ } else {
+ SkASSERT(sLink[~eIndex] == ~rIndex);
+ sLink[~eIndex] = SK_MaxS32;
+ }
+ }
+ rIndex = eIndex;
+ if (rIndex < 0) {
+ forward ^= 1;
+ rIndex = ~rIndex;
+ }
+ } while (true);
+ for (rIndex = 0; rIndex < count; ++rIndex) {
+ if (sLink[rIndex] != SK_MaxS32) {
+ break;
+ }
+ }
+ } while (rIndex < count);
+#if DEBUG_ASSEMBLE
+ for (rIndex = 0; rIndex < count; ++rIndex) {
+ SkASSERT(sLink[rIndex] == SK_MaxS32);
+ SkASSERT(eLink[rIndex] == SK_MaxS32);
+ }
+#endif
+}
+
+void simplifyx(const SkPath& path, SkPath& result) {
+#if DEBUG_SORT || DEBUG_SWAP_TOP
+ gDebugSortCount = gDebugSortCountDefault;
+#endif
+ // returns 1 for evenodd, -1 for winding, regardless of inverse-ness
+ result.reset();
+ result.setFillType(SkPath::kEvenOdd_FillType);
+ PathWrapper simple(result);
+
+ // turn path into list of segments
+ SkTArray<Contour> contours;
+ EdgeBuilder builder(path, contours);
+ builder.finish();
+ SkTDArray<Contour*> contourList;
+ makeContourList(contours, contourList, false, false);
+ Contour** currentPtr = contourList.begin();
+ if (!currentPtr) {
+ return;
+ }
+ Contour** listEnd = contourList.end();
+ // find all intersections between segments
+ do {
+ Contour** nextPtr = currentPtr;
+ Contour* current = *currentPtr++;
+ if (current->containsCubics()) {
+ addSelfIntersectTs(current);
+ }
+ Contour* next;
+ do {
+ next = *nextPtr++;
+ } while (addIntersectTs(current, next) && nextPtr != listEnd);
+ } while (currentPtr != listEnd);
+ // eat through coincident edges
+ coincidenceCheck(contourList, 0);
+ fixOtherTIndex(contourList);
+ sortSegments(contourList);
+#if DEBUG_ACTIVE_SPANS
+ debugShowActiveSpans(contourList);
+#endif
+ // construct closed contours
+ if (builder.xorMask() == kWinding_Mask ? bridgeWinding(contourList, simple)
+ : !bridgeXor(contourList, simple))
+ { // if some edges could not be resolved, assemble remaining fragments
+ SkPath temp;
+ temp.setFillType(SkPath::kEvenOdd_FillType);
+ PathWrapper assembled(temp);
+ assemble(simple, assembled);
+ result = *assembled.nativePath();
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/Simplify.h b/chromium/third_party/skia/experimental/Intersection/Simplify.h
new file mode 100644
index 00000000000..d2e238f35d3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/Simplify.h
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "CurveIntersection.h"
+#include "CurveUtilities.h"
+#include "Intersections.h"
+#include "LineIntersection.h"
+#include "LineParameters.h"
+#include "SkPath.h"
+#include "SkRect.h"
+#include "SkTArray.h"
+#include "SkTDArray.h"
+#include "ShapeOps.h"
+#include "TSearch.h"
diff --git a/chromium/third_party/skia/experimental/Intersection/SimplifyAddIntersectingTs_Test.cpp b/chromium/third_party/skia/experimental/Intersection/SimplifyAddIntersectingTs_Test.cpp
new file mode 100644
index 00000000000..89046a86b19
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/SimplifyAddIntersectingTs_Test.cpp
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "Simplify.h"
+
+namespace SimplifyAddIntersectingTsTest {
+
+#include "Simplify.cpp"
+
+} // end of SimplifyAddIntersectingTsTest namespace
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Intersection_Tests.h"
+
+static const SkPoint lines[][2] = {
+ {{ 1, 1}, { 1, 1}}, // degenerate
+ {{ 1, 1}, { 4, 1}}, // horizontal
+ {{ 4, 1}, { 9, 1}},
+ {{ 2, 1}, { 3, 1}},
+ {{ 2, 1}, { 6, 1}},
+ {{ 5, 1}, { 9, 1}},
+ {{ 1, 1}, { 1, 4}}, // vertical
+ {{ 1, 2}, { 1, 3}},
+ {{ 1, 2}, { 1, 6}},
+ {{ 1, 5}, { 1, 9}},
+ {{ 1, 1}, { 3, 3}}, // diagonal
+ {{ 2, 2}, { 4, 4}},
+ {{ 2, 4}, { 4, 2}},
+};
+
+static const size_t lineCount = sizeof(lines) / sizeof(lines[0]);
+
+static const SkPoint quads[][3] = {
+ {{ 1, 1}, { 1, 1}, { 1, 1}}, // degenerate
+ {{ 1, 1}, { 4, 1}, { 5, 1}}, // line
+ {{ 1, 1}, { 4, 1}, { 4, 4}}, // curve
+};
+
+static const size_t quadCount = sizeof(quads) / sizeof(quads[0]);
+
+static const SkPoint cubics[][4] = {
+ {{ 1, 1}, { 1, 1}, { 1, 1}, { 1, 1}}, // degenerate
+ {{ 1, 1}, { 4, 1}, { 5, 1}, { 6, 1}}, // line
+ {{ 1, 1}, { 3, 1}, { 4, 2}, { 4, 4}}, // curve
+};
+
+static const size_t cubicCount = sizeof(cubics) / sizeof(cubics[0]);
+static const size_t testCount = lineCount + quadCount + cubicCount;
+
+static SkPath::Verb setPath(size_t outer, SkPath& path, const SkPoint*& pts1) {
+ SkPath::Verb c1Type;
+ if (outer < lineCount) {
+ path.moveTo(lines[outer][0].fX, lines[outer][0].fY);
+ path.lineTo(lines[outer][1].fX, lines[outer][1].fY);
+ c1Type = SkPath::kLine_Verb;
+ pts1 = lines[outer];
+ } else {
+ outer -= lineCount;
+ if (outer < quadCount) {
+ path.moveTo(quads[outer][0].fX, quads[outer][0].fY);
+ path.quadTo(quads[outer][1].fX, quads[outer][1].fY,
+ quads[outer][2].fX, quads[outer][2].fY);
+ c1Type = SkPath::kQuad_Verb;
+ pts1 = quads[outer];
+ } else {
+ outer -= quadCount;
+ path.moveTo(cubics[outer][0].fX, cubics[outer][0].fY);
+ path.cubicTo(cubics[outer][1].fX, cubics[outer][1].fY,
+ cubics[outer][2].fX, cubics[outer][2].fY,
+ cubics[outer][3].fX, cubics[outer][3].fY);
+ c1Type = SkPath::kCubic_Verb;
+ pts1 = cubics[outer];
+ }
+ }
+ return c1Type;
+}
+
+static void testPath(const SkPath& path, const SkPoint* pts1, SkPath::Verb c1Type,
+ const SkPoint* pts2, SkPath::Verb c2Type) {
+ SkTArray<SimplifyAddIntersectingTsTest::Contour> contour;
+ SimplifyAddIntersectingTsTest::EdgeBuilder builder(path, contour);
+ if (contour.count() < 2) {
+ return;
+ }
+ SimplifyAddIntersectingTsTest::Contour& c1 = contour[0];
+ SimplifyAddIntersectingTsTest::Contour& c2 = contour[1];
+ addIntersectTs(&c1, &c2);
+#if DEBUG_DUMP
+ bool c1Intersected = c1.segments()[0].intersected();
+ // bool c2Intersected = c2.fSegments[0].intersected();
+ SkDebugf("%s %s (%1.9g,%1.9g %1.9g,%1.9g) %s %s (%1.9g,%1.9g %1.9g,%1.9g)\n",
+ __FUNCTION__, SimplifyAddIntersectingTsTest::kLVerbStr[c1Type],
+ pts1[0].fX, pts1[0].fY,
+ pts1[c1Type].fX, pts1[c1Type].fY,
+ c1Intersected ? "intersects" : "does not intersect",
+ SimplifyAddIntersectingTsTest::kLVerbStr[c2Type],
+ pts2[0].fX, pts2[0].fY,
+ pts2[c2Type].fX, pts2[c2Type].fY);
+ if (c1Intersected) {
+ c1.dump();
+ c2.dump();
+ }
+#endif
+}
+
+static const size_t firstO = 6;
+static const size_t firstI = 1;
+
+void SimplifyAddIntersectingTs_Test() {
+ const SkPoint* pts1, * pts2;
+ if (firstO > 0 || firstI > 0) {
+ SkPath path;
+ SkPath::Verb c1Type = setPath(firstO, path, pts1);
+ SkPath path2(path);
+ SkPath::Verb c2Type = setPath(firstI, path2, pts2);
+ testPath(path2, pts1, c1Type, pts2, c2Type);
+ }
+ for (size_t o = 0; o < testCount; ++o) {
+ SkPath path;
+ SkPath::Verb c1Type = setPath(o, path, pts1);
+ for (size_t i = 0; i < testCount; ++i) {
+ SkPath path2(path);
+ SkPath::Verb c2Type = setPath(i, path2, pts2);
+ testPath(path2, pts1, c1Type, pts2, c2Type);
+ }
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/SimplifyAngle_Test.cpp b/chromium/third_party/skia/experimental/Intersection/SimplifyAngle_Test.cpp
new file mode 100644
index 00000000000..e83a52f650f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/SimplifyAngle_Test.cpp
@@ -0,0 +1,342 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Simplify.h"
+
+namespace SimplifyAngleTest {
+
+#include "Simplify.cpp"
+
+} // end of SimplifyAngleTest namespace
+
+#include "Intersection_Tests.h"
+
+static const SkPoint lines[][2] = {
+ { { 10, 10}, { 10, 20} },
+ { { 10, 10}, { 20, 10} },
+ { { 10, 10}, {-20, 10} },
+ { { 10, 10}, { 10, -20} },
+ { { 10, 10}, { 20, 20} },
+ { { 10, 10}, {-20, -20} },
+ { { 10, 10}, {-20, 40} },
+ { { 10, 10}, { 40, -20} }
+};
+
+static const size_t lineCount = sizeof(lines) / sizeof(lines[0]);
+
+static const SkPoint quads[][3] = {
+ {{ 1, 1}, { 2, 2}, { 1, 3}}, // 0
+ {{ 1, 1}, { 3, 3}, { 1, 5}}, // 1
+ {{ 1, 1}, { 4, 4}, { 1, 7}}, // 2
+ {{ 1, 1}, { 5, 5}, { 9, 9}}, // 3
+ {{ 1, 1}, { 4, 4}, { 7, 1}}, // 4
+ {{ 1, 1}, { 3, 3}, { 5, 1}}, // 5
+ {{ 1, 1}, { 2, 2}, { 3, 1}}, // 6
+};
+
+static const size_t quadCount = sizeof(quads) / sizeof(quads[0]);
+
+static const SkPoint cubics[][4] = {
+ {{ 1, 1}, { 2, 2}, { 2, 3}, { 1, 4}},
+ {{ 1, 1}, { 3, 3}, { 3, 5}, { 1, 7}},
+ {{ 1, 1}, { 4, 4}, { 4, 7}, { 1, 10}},
+ {{ 1, 1}, { 5, 5}, { 8, 8}, { 9, 9}},
+ {{ 1, 1}, { 4, 4}, { 7, 4}, { 10, 1}},
+ {{ 1, 1}, { 3, 3}, { 5, 3}, { 7, 1}},
+ {{ 1, 1}, { 2, 2}, { 3, 2}, { 4, 1}},
+};
+
+static const size_t cubicCount = sizeof(cubics) / sizeof(cubics[0]);
+
+struct segment {
+ SkPath::Verb verb;
+ SkPoint pts[4];
+};
+
+static const segment segmentTest1[] = {
+ {SkPath::kLine_Verb, {{2, 1}, {1, 0} }},
+ {SkPath::kQuad_Verb, {{2, 1}, {1, 0}, {0, 0}}},
+ {SkPath::kQuad_Verb, {{2, 1}, {3, 2}, {2, 3}}},
+ {SkPath::kLine_Verb, {{2, 1}, {3, 2} }},
+ {SkPath::kMove_Verb }
+};
+
+static const segment segmentTest2[] = {
+ {SkPath::kLine_Verb, {{1, 0}, {0, 0} }},
+ {SkPath::kQuad_Verb, {{1, 0}, {1.89897954f, 0.898979485f}, {2.39387703f, 1.59591794f}}},
+ {SkPath::kLine_Verb, {{1, 0}, {3, 2} }},
+ {SkPath::kMove_Verb }
+};
+
+static const segment segmentTest3[] = {
+ {SkPath::kQuad_Verb, {{0, 0}, {2, 0}, {0, 1}}},
+ {SkPath::kQuad_Verb, {{0, 0}, {1, 0}, {0, 1}}},
+ {SkPath::kMove_Verb }
+};
+
+static const segment* segmentTests[] = {
+ segmentTest3,
+ segmentTest2,
+ segmentTest1,
+};
+
+static const size_t segmentTestCount = sizeof(segmentTests) / sizeof(segmentTests[0]);
+
+static void testSegments(bool testFlat) {
+ for (size_t testIndex = 0; testIndex < segmentTestCount; ++testIndex) {
+ const segment* segPtr = segmentTests[testIndex];
+ SimplifyAngleTest::Angle lesser, greater;
+ int index = 0;
+ do {
+ int next = index + 1;
+ SkTDArray<SimplifyAngleTest::Span> dummy;
+ lesser.set(segPtr[index].pts, segPtr[index].verb, NULL, index, next, dummy);
+ if (segPtr[next].verb == SkPath::kMove_Verb) {
+ break;
+ }
+ greater.set(segPtr[next].pts, segPtr[next].verb, NULL, index, next, dummy);
+ bool result = lesser < greater;
+ SkASSERT(result);
+ index = next;
+ } while (true);
+ }
+}
+
+static void testLines(bool testFlat) {
+ // create angles in a circle
+ SkTDArray<SimplifyAngleTest::Angle> angles;
+ SkTDArray<SimplifyAngleTest::Angle* > angleList;
+ SkTDArray<double> arcTans;
+ size_t x;
+ for (x = 0; x < lineCount; ++x) {
+ SimplifyAngleTest::Angle* angle = angles.append();
+ SkTDArray<SimplifyAngleTest::Span> dummy;
+ angle->set(lines[x], SkPath::kLine_Verb, 0, x, x + 1, dummy);
+ double arcTan = atan2(lines[x][0].fX - lines[x][1].fX,
+ lines[x][0].fY - lines[x][1].fY);
+ arcTans.push(arcTan);
+ }
+ for (x = 0; x < lineCount; ++x) {
+ angleList.push(&angles[x]);
+ }
+ QSort<SimplifyAngleTest::Angle>(angleList.begin(), angleList.end() - 1);
+ bool first = true;
+ bool wrap = false;
+ double base, last;
+ for (size_t x = 0; x < lineCount; ++x) {
+ const SimplifyAngleTest::Angle* angle = angleList[x];
+ int span = angle->start();
+// SkDebugf("%s [%d] %1.9g (%1.9g,%1.9g %1.9g,%1.9g)\n", __FUNCTION__,
+// span, arcTans[span], lines[span][0].fX, lines[span][0].fY,
+// lines[span][1].fX, lines[span][1].fY);
+ if (first) {
+ base = last = arcTans[span];
+ first = false;
+ continue;
+ }
+ if (last < arcTans[span]) {
+ last = arcTans[span];
+ continue;
+ }
+ if (!wrap) {
+ if (base < arcTans[span]) {
+ SkDebugf("%s !wrap [%d] %g\n", __FUNCTION__, span, arcTans[span]);
+ SkASSERT(0);
+ }
+ last = arcTans[span];
+ wrap = true;
+ continue;
+ }
+ SkDebugf("%s wrap [%d] %g\n", __FUNCTION__, span, arcTans[span]);
+ SkASSERT(0);
+ }
+}
+
+static void testQuads(bool testFlat) {
+ SkTDArray<SimplifyAngleTest::Angle> angles;
+ SkTDArray<SimplifyAngleTest::Angle* > angleList;
+ size_t x;
+ for (x = 0; x < quadCount; ++x) {
+ SimplifyAngleTest::Angle* angle = angles.append();
+ SkTDArray<SimplifyAngleTest::Span> dummy;
+ angle->set(quads[x], SkPath::kQuad_Verb, 0, x, x + 1, dummy);
+ }
+ for (x = 0; x < quadCount; ++x) {
+ angleList.push(&angles[x]);
+ }
+ QSort<SimplifyAngleTest::Angle>(angleList.begin(), angleList.end() - 1);
+ for (size_t x = 0; x < quadCount; ++x) {
+ *angleList[x] < *angleList[x + 1];
+ SkASSERT(x == quadCount - 1 || *angleList[x] < *angleList[x + 1]);
+ const SimplifyAngleTest::Angle* angle = angleList[x];
+ if ((int) x != angle->start()) {
+ SkDebugf("%s [%d] [%d]\n", __FUNCTION__, x, angle->start());
+ SkASSERT(0);
+ }
+ }
+}
+
+static void testCubics(bool testFlat) {
+ SkTDArray<SimplifyAngleTest::Angle> angles;
+ SkTDArray<SimplifyAngleTest::Angle* > angleList;
+ for (size_t x = 0; x < cubicCount; ++x) {
+ SimplifyAngleTest::Angle* angle = angles.append();
+ SkTDArray<SimplifyAngleTest::Span> dummy;
+ angle->set(cubics[x], SkPath::kCubic_Verb, 0, x, x + 1, dummy);
+ angleList.push(angle);
+ }
+ QSort<SimplifyAngleTest::Angle>(angleList.begin(), angleList.end() - 1);
+ for (size_t x = 0; x < cubicCount; ++x) {
+ const SimplifyAngleTest::Angle* angle = angleList[x];
+ if ((int) x != angle->start()) {
+ SkDebugf("%s [%d] [%d]\n", __FUNCTION__, x, angle->start());
+ SkASSERT(0);
+ }
+ }
+}
+
+struct segmentWithT {
+ SkPath::Verb verb;
+ SkPoint pts[4];
+ double ts[2];
+};
+
+
+static const segmentWithT oneOffTest1[] = {
+ {SkPath::kQuad_Verb, {{391.653534f, 183.286819f}, {391.653534f, 157.724487f}, {405.469604f, 141.372879f}},
+ {0.62346946335026932, 0.62344389027237135}},
+ {SkPath::kQuad_Verb, {{399.365234f, 171.695801f}, {399.365234f, 140.337967f}, {375.976227f, 140.337967f}},
+ {0.31638302676995866, 0.31637992418411398}},
+ {SkPath::kMove_Verb }
+};
+
+static const segmentWithT oneOffTest2[] = {
+ {SkPath::kQuad_Verb, {{399.070374f, 151.722f}, {391.101532f, 163.002533f}, {391.101532f, 182.665863f}},
+ {0.13793711854916513, 0.13790171160614006}},
+ {SkPath::kQuad_Verb, {{391.653534f, 183.286819f}, {391.653534f, 157.724487f}, {405.469604f, 141.372879f}},
+ {0.62344389027237135, 0.62346946335026932}},
+ {SkPath::kMove_Verb }
+};
+
+static const segmentWithT oneOffTest3[] = {
+ {SkPath::kQuad_Verb, {{399.365234f, 171.695801f}, {399.365234f, 140.337967f}, {375.976227f, 140.337967f}},
+ {0.31637992418411398, 0.31638302676995866, }},
+ {SkPath::kQuad_Verb, {{399.070374f, 151.722f}, {391.101532f, 163.002533f}, {391.101532f, 182.665863f}},
+ {0.13790171160614006, 0.13793711854916513}},
+ {SkPath::kMove_Verb }
+};
+
+static const segmentWithT oneOffTest4[] = {
+ {SkPath::kCubic_Verb, {{1,2}, {1,3}, {1,0}, {5,3}}, {0.134792, 0}},
+ {SkPath::kCubic_Verb, {{0,1}, {3,5}, {2,1}, {3,1}}, {0.134792094, 0}},
+ {SkPath::kCubic_Verb, {{0,1}, {3,5}, {2,1}, {3,1}}, {0.134792094, 0.551812363}},
+ {SkPath::kCubic_Verb, {{1,2}, {1,3}, {1,0}, {5,3}}, {0.134792, 0.333333333}},
+ {SkPath::kMove_Verb }
+};
+
+static const segmentWithT* oneOffTests[] = {
+ oneOffTest1,
+ oneOffTest2,
+ oneOffTest3,
+ oneOffTest4,
+};
+
+static const size_t oneOffTestCount = sizeof(oneOffTests) / sizeof(oneOffTests[0]);
+
+static void oneOffTest(bool testFlat) {
+ for (size_t testIndex = 0; testIndex < oneOffTestCount; ++testIndex) {
+ const segmentWithT* segPtr = oneOffTests[testIndex];
+ SimplifyAngleTest::Angle lesser, greater;
+ int index = 0;
+ do {
+ int next = index + 1;
+ SkTDArray<SimplifyAngleTest::Span> dummy; // FIXME
+ lesser.set(segPtr[index].pts, segPtr[index].verb, 0, index, next, dummy); // FIXME: segPtr[index].ts[0], segPtr[index].ts[1]);
+ if (segPtr[next].verb == SkPath::kMove_Verb) {
+ break;
+ }
+ greater.set(segPtr[next].pts, segPtr[next].verb, 0, index, next, dummy); // FIXME: segPtr[next].ts[0], segPtr[next].ts[1]);
+ bool result = lesser < greater;
+ SkASSERT(result);
+ index = next;
+ } while (true);
+ }
+ SkDebugf("%s finished\n", __FUNCTION__);
+}
+
+#if 0 // seems too complicated for this to be useful (didn't finish writing/debugging this)
+// this (trys to) take a pair of curves, construct segments/spans, and verify that they sort correctly
+static void oneOffTestNew() {
+ const segmentWithT* segPtr = oneOffTest4;
+ SimplifyAngleTest::Segment segOne, segTwo;
+ segOne.init(segPtr[0].pts, segPtr[0].verb, false, false);
+ segTwo.init(segPtr[1].pts, segPtr[1].verb, false, false);
+ int index = 0;
+ do {
+ int next = index + 1;
+ if (segPtr[index].verb == SkPath::kMove_Verb) {
+ break;
+ }
+ SkPoint sub[4];
+ (*SegmentSubDivide[segPtr[index].verb])(segPtr[index].pts, segPtr[index].ts[0],
+ segPtr[index].ts[1], sub);
+ if (memcmp(segPtr[index].pts, segPtr[0].pts, sizeof(SkPoint) * (segPtr[index].verb + 1) == 0) {
+ segOne.addT(&segTwo, sub[0], segPtr[index].ts[0]);
+ segOne.addT(&segTwo, sub[segPtr[index].verb], segPtr[index].ts[1]);
+ } else {
+ segTwo.addT(&segOne, sub[0], segPtr[index].ts[0]);
+ segTwo.addT(&v, sub[segPtr[index].verb], segPtr[index].ts[1]);
+ }
+ } while (true);
+ SimplifyAngleTest::Angle lesser, greater;
+ do {
+ int next = index + 1;
+ if (segPtr[next].verb == SkPath::kMove_Verb) {
+ break;
+ }
+ SkPoint one[4], two[4];
+ bool use1 = memcmp(segPtr[index].pts, segPtr[0].pts, sizeof(SkPoint) * (segPtr[index].verb + 1) == 0;
+ lesser.set(segPtr[index].pts, segPtr[index].verb, use1 ? &segOne : &segTwo, index, next, dummy);
+ use1 = memcmp(segPtr[next].pts, segPtr[0].pts, sizeof(SkPoint) * (segPtr[next].verb + 1) == 0;
+ greater.set(segPtr[next].pts, segPtr[next].verb, use1 ? &segOne : &segTwo, index, next, dummy);
+ bool result = lesser < greater;
+ SkASSERT(result);
+ index = next;
+ } while (true);
+ SkDebugf("%s finished\n", __FUNCTION__);
+}
+#endif
+
+static void (*tests[])(bool) = {
+ oneOffTest,
+ testSegments,
+ testLines,
+ testQuads,
+ testCubics
+};
+
+static const size_t testCount = sizeof(tests) / sizeof(tests[0]);
+
+static void (*firstTest)(bool) = 0;
+static bool skipAll = false;
+
+void SimplifyAngle_Test() {
+ if (skipAll) {
+ return;
+ }
+ size_t index = 0;
+ if (firstTest) {
+ while (index < testCount && tests[index] != firstTest) {
+ ++index;
+ }
+ }
+ bool firstTestComplete = false;
+ for ( ; index < testCount; ++index) {
+ (*tests[index])(false); // set to true to exercise setFlat
+ firstTestComplete = true;
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/SimplifyFindNext_Test.cpp b/chromium/third_party/skia/experimental/Intersection/SimplifyFindNext_Test.cpp
new file mode 100644
index 00000000000..0a04747bbba
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/SimplifyFindNext_Test.cpp
@@ -0,0 +1,153 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#define DEBUG_TEST 1
+
+#include "Simplify.h"
+
+namespace SimplifyFindNextTest {
+
+#include "Simplify.cpp"
+
+} // end of SimplifyFindNextTest namespace
+
+#include "Intersection_Tests.h"
+
+static const SimplifyFindNextTest::Segment* testCommon(
+ int contourWinding, int spanWinding, int startIndex, int endIndex,
+ SkTArray<SimplifyFindNextTest::Contour>& contours) {
+ SkTDArray<SimplifyFindNextTest::Contour*> contourList;
+ makeContourList(contours, contourList, false, false);
+ addIntersectTs(contourList[0], contourList[0]);
+ if (contours.count() > 1) {
+ SkASSERT(contours.count() == 2);
+ addIntersectTs(contourList[0], contourList[1]);
+ addIntersectTs(contourList[1], contourList[1]);
+ }
+ fixOtherTIndex(contourList);
+ SimplifyFindNextTest::Segment& segment = contours[0].debugSegments()[0];
+ SkPoint pts[2];
+ pts[0] = segment.xyAtT(&segment.span(endIndex));
+ int nextStart = startIndex;
+ int nextEnd = endIndex;
+ SkTDArray<SimplifyFindNextTest::Span*> chaseArray;
+ bool unsortable = false;
+ SimplifyFindNextTest::Segment* next = segment.findNextWinding(chaseArray,
+ nextStart, nextEnd, unsortable);
+ pts[1] = next->xyAtT(&next->span(nextStart));
+ SkASSERT(pts[0] == pts[1]);
+ return next;
+}
+
+static void test(const SkPath& path) {
+ SkTArray<SimplifyFindNextTest::Contour> contours;
+ SimplifyFindNextTest::EdgeBuilder builder(path, contours);
+ int contourWinding = 0;
+ int spanWinding = 1;
+ int start = 0;
+ int end = 1;
+ testCommon(contourWinding, spanWinding, start, end, contours);
+}
+
+static void test(const SkPath& path, int start, int end) {
+ SkTArray<SimplifyFindNextTest::Contour> contours;
+ SimplifyFindNextTest::EdgeBuilder builder(path, contours);
+ int contourWinding = 0;
+ int spanWinding = 1;
+ testCommon(contourWinding, spanWinding, start, end, contours);
+}
+
+static void testLine1() {
+ SkPath path;
+ path.moveTo(2,0);
+ path.lineTo(1,1);
+ path.lineTo(0,0);
+ path.close();
+ test(path);
+}
+
+static void addInnerCWTriangle(SkPath& path) {
+ path.moveTo(3,0);
+ path.lineTo(4,1);
+ path.lineTo(2,1);
+ path.close();
+}
+
+#if DEBUG_UNUSED
+static void addInnerCCWTriangle(SkPath& path) {
+ path.moveTo(3,0);
+ path.lineTo(2,1);
+ path.lineTo(4,1);
+ path.close();
+}
+#endif
+
+static void addOuterCWTriangle(SkPath& path) {
+ path.moveTo(3,0);
+ path.lineTo(6,2);
+ path.lineTo(0,2);
+ path.close();
+}
+
+#if DEBUG_UNUSED
+static void addOuterCCWTriangle(SkPath& path) {
+ path.moveTo(3,0);
+ path.lineTo(0,2);
+ path.lineTo(6,2);
+ path.close();
+}
+#endif
+
+static void testLine2() {
+ SkPath path;
+ addInnerCWTriangle(path);
+ addOuterCWTriangle(path);
+ test(path, 0, 3);
+}
+
+static void testLine3() {
+ SkPath path;
+ addInnerCWTriangle(path);
+ addOuterCWTriangle(path);
+ test(path, 3, 0);
+}
+
+static void testLine4() {
+ SkPath path;
+ addInnerCWTriangle(path);
+ addOuterCWTriangle(path);
+ test(path, 3, 2);
+}
+
+static void (*tests[])() = {
+ testLine1,
+ testLine2,
+ testLine3,
+ testLine4,
+};
+
+static const size_t testCount = sizeof(tests) / sizeof(tests[0]);
+
+static void (*firstTest)() = 0;
+static bool skipAll = false;
+
+void SimplifyFindNext_Test() {
+ if (skipAll) {
+ return;
+ }
+ size_t index = 0;
+ if (firstTest) {
+ while (index < testCount && tests[index] != firstTest) {
+ ++index;
+ }
+ }
+ bool firstTestComplete = false;
+ for ( ; index < testCount; ++index) {
+ (*tests[index])();
+ firstTestComplete = true;
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/SimplifyFindTop_Test.cpp b/chromium/third_party/skia/experimental/Intersection/SimplifyFindTop_Test.cpp
new file mode 100644
index 00000000000..5f267503a9c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/SimplifyFindTop_Test.cpp
@@ -0,0 +1,222 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Simplify.h"
+
+namespace SimplifyFindTopTest {
+
+#include "Simplify.cpp"
+
+} // end of SimplifyFindTopTest namespace
+
+#include "Intersection_Tests.h"
+
+static const SimplifyFindTopTest::Segment* testCommon(
+ SkTArray<SimplifyFindTopTest::Contour>& contours,
+ int& index, int& end) {
+ SkTDArray<SimplifyFindTopTest::Contour*> contourList;
+ makeContourList(contours, contourList, false, false);
+ addIntersectTs(contourList[0], contourList[0]);
+ if (contours.count() > 1) {
+ SkASSERT(contours.count() == 2);
+ addIntersectTs(contourList[0], contourList[1]);
+ addIntersectTs(contourList[1], contourList[1]);
+ }
+ fixOtherTIndex(contourList);
+#if SORTABLE_CONTOURS // old way
+ SimplifyFindTopTest::Segment* topStart = findTopContour(contourList);
+ const SimplifyFindTopTest::Segment* topSegment = topStart->findTop(index,
+ end);
+#else
+ SkPoint bestXY = {SK_ScalarMin, SK_ScalarMin};
+ bool done, unsortable = false;
+ const SimplifyFindTopTest::Segment* topSegment =
+ findSortableTop(contourList, index, end, bestXY, unsortable, done, true);
+#endif
+ return topSegment;
+}
+
+static void test(const SkPath& path) {
+ SkTArray<SimplifyFindTopTest::Contour> contours;
+ SimplifyFindTopTest::EdgeBuilder builder(path, contours);
+ int index, end;
+ testCommon(contours, index, end);
+ SkASSERT(index + 1 == end);
+}
+
+static void test(const SkPath& path, SkScalar x1, SkScalar y1,
+ SkScalar x2, SkScalar y2) {
+ SkTArray<SimplifyFindTopTest::Contour> contours;
+ SimplifyFindTopTest::EdgeBuilder builder(path, contours);
+ int index, end;
+ const SimplifyFindTopTest::Segment* topSegment =
+ testCommon(contours, index, end);
+ SkPoint pts[2];
+ double firstT = topSegment->t(index);
+ pts[0] = topSegment->xyAtT(&topSegment->span(index));
+ int direction = index < end ? 1 : -1;
+ do {
+ index += direction;
+ double nextT = topSegment->t(index);
+ if (nextT == firstT) {
+ continue;
+ }
+ pts[1] = topSegment->xyAtT(&topSegment->span(index));
+ if (pts[0] != pts[1]) {
+ break;
+ }
+ } while (true);
+ SkASSERT(pts[0].fX == x1);
+ SkASSERT(pts[0].fY == y1);
+ SkASSERT(pts[1].fX == x2);
+ SkASSERT(pts[1].fY == y2);
+}
+
+static void testLine1() {
+ SkPath path;
+ path.moveTo(2,0);
+ path.lineTo(1,1);
+ path.lineTo(0,0);
+ path.close();
+ test(path);
+}
+
+static void addInnerCWTriangle(SkPath& path) {
+ path.moveTo(3,0);
+ path.lineTo(4,1);
+ path.lineTo(2,1);
+ path.close();
+}
+
+static void addInnerCCWTriangle(SkPath& path) {
+ path.moveTo(3,0);
+ path.lineTo(2,1);
+ path.lineTo(4,1);
+ path.close();
+}
+
+static void addOuterCWTriangle(SkPath& path) {
+ path.moveTo(3,0);
+ path.lineTo(6,2);
+ path.lineTo(0,2);
+ path.close();
+}
+
+static void addOuterCCWTriangle(SkPath& path) {
+ path.moveTo(3,0);
+ path.lineTo(0,2);
+ path.lineTo(6,2);
+ path.close();
+}
+
+static void testLine2() {
+ SkPath path;
+ addInnerCWTriangle(path);
+ addOuterCWTriangle(path);
+ test(path, 0, 2, 3, 0);
+}
+
+static void testLine3() {
+ SkPath path;
+ addOuterCWTriangle(path);
+ addInnerCWTriangle(path);
+ test(path, 0, 2, 3, 0);
+}
+
+static void testLine4() {
+ SkPath path;
+ addInnerCCWTriangle(path);
+ addOuterCWTriangle(path);
+ test(path, 0, 2, 3, 0);
+}
+
+static void testLine5() {
+ SkPath path;
+ addOuterCWTriangle(path);
+ addInnerCCWTriangle(path);
+ test(path, 0, 2, 3, 0);
+}
+
+static void testLine6() {
+ SkPath path;
+ addInnerCWTriangle(path);
+ addOuterCCWTriangle(path);
+ test(path, 0, 2, 3, 0);
+}
+
+static void testLine7() {
+ SkPath path;
+ addOuterCCWTriangle(path);
+ addInnerCWTriangle(path);
+ test(path, 0, 2, 3, 0);
+}
+
+static void testLine8() {
+ SkPath path;
+ addInnerCCWTriangle(path);
+ addOuterCCWTriangle(path);
+ test(path, 0, 2, 3, 0);
+}
+
+static void testLine9() {
+ SkPath path;
+ addOuterCCWTriangle(path);
+ addInnerCCWTriangle(path);
+ test(path, 0, 2, 3, 0);
+}
+
+static void testQuads() {
+ SkPath path;
+ path.moveTo(2,0);
+ path.quadTo(1,1, 0,0);
+ path.close();
+ test(path);
+}
+
+static void testCubics() {
+ SkPath path;
+ path.moveTo(2,0);
+ path.cubicTo(2,3, 1,1, 0,0);
+ path.close();
+ test(path);
+}
+
+static void (*tests[])() = {
+ testLine1,
+ testLine2,
+ testLine3,
+ testLine4,
+ testLine5,
+ testLine6,
+ testLine7,
+ testLine8,
+ testLine9,
+ testQuads,
+ testCubics
+};
+
+static const size_t testCount = sizeof(tests) / sizeof(tests[0]);
+
+static void (*firstTest)() = 0;
+static bool skipAll = false;
+
+void SimplifyFindTop_Test() {
+ if (skipAll) {
+ return;
+ }
+ size_t index = 0;
+ if (firstTest) {
+ while (index < testCount && tests[index] != firstTest) {
+ ++index;
+ }
+ }
+ bool firstTestComplete = false;
+ for ( ; index < testCount; ++index) {
+ (*tests[index])();
+ firstTestComplete = true;
+ }
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/SimplifyNew_Test.cpp b/chromium/third_party/skia/experimental/Intersection/SimplifyNew_Test.cpp
new file mode 100644
index 00000000000..dc04cadc26e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/SimplifyNew_Test.cpp
@@ -0,0 +1,5194 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "EdgeWalker_Test.h"
+#include "Intersection_Tests.h"
+#include "ShapeOps.h"
+
+#define TEST(name) { name, #name }
+
+static void testLine1() {
+ SkPath path;
+ path.moveTo(2,0);
+ path.lineTo(1,1);
+ path.lineTo(0,0);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine1x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(2,0);
+ path.lineTo(1,1);
+ path.lineTo(0,0);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void addInnerCWTriangle(SkPath& path) {
+ path.moveTo(3,0);
+ path.lineTo(4,1);
+ path.lineTo(2,1);
+ path.close();
+}
+
+static void addInnerCCWTriangle(SkPath& path) {
+ path.moveTo(3,0);
+ path.lineTo(2,1);
+ path.lineTo(4,1);
+ path.close();
+}
+
+static void addOuterCWTriangle(SkPath& path) {
+ path.moveTo(3,0);
+ path.lineTo(6,2);
+ path.lineTo(0,2);
+ path.close();
+}
+
+static void addOuterCCWTriangle(SkPath& path) {
+ path.moveTo(3,0);
+ path.lineTo(0,2);
+ path.lineTo(6,2);
+ path.close();
+}
+
+static void testLine2() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addInnerCWTriangle(path);
+ addOuterCWTriangle(path);
+ testSimplifyx(path);
+}
+
+static void testLine2x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addInnerCWTriangle(path);
+ addOuterCWTriangle(path);
+ testSimplifyx(path);
+}
+
+static void testLine3() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addInnerCCWTriangle(path);
+ addOuterCWTriangle(path);
+ testSimplifyx(path);
+}
+
+static void testLine3x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addInnerCCWTriangle(path);
+ addOuterCWTriangle(path);
+ testSimplifyx(path);
+}
+
+static void testLine3a() {
+ SkPath path;
+ addInnerCWTriangle(path);
+ addOuterCCWTriangle(path);
+ testSimplifyx(path);
+}
+
+static void testLine3ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addInnerCWTriangle(path);
+ addOuterCCWTriangle(path);
+ testSimplifyx(path);
+}
+
+static void testLine3b() {
+ SkPath path;
+ addInnerCCWTriangle(path);
+ addOuterCCWTriangle(path);
+ testSimplifyx(path);
+}
+
+static void testLine3bx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addInnerCCWTriangle(path);
+ addOuterCCWTriangle(path);
+ testSimplifyx(path);
+}
+
+static void testLine4() {
+ SkPath path;
+ addOuterCCWTriangle(path);
+ addOuterCWTriangle(path);
+ testSimplifyx(path);
+}
+
+static void testLine4x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addOuterCCWTriangle(path);
+ addOuterCWTriangle(path);
+ testSimplifyx(path);
+}
+
+static void testLine5() {
+ SkPath path;
+ addOuterCWTriangle(path);
+ addOuterCWTriangle(path);
+ testSimplifyx(path);
+}
+
+static void testLine5x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addOuterCWTriangle(path);
+ addOuterCWTriangle(path);
+ testSimplifyx(path);
+}
+
+static void testLine6() {
+ SkPath path;
+ path.moveTo(0,0);
+ path.lineTo(4,0);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(2,0);
+ path.lineTo(6,0);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine6x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0,0);
+ path.lineTo(4,0);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(2,0);
+ path.lineTo(6,0);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine7() {
+ SkPath path;
+ path.moveTo(0,0);
+ path.lineTo(4,0);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(6,0);
+ path.lineTo(2,0);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine7x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0,0);
+ path.lineTo(4,0);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(6,0);
+ path.lineTo(2,0);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine7a() {
+ SkPath path;
+ path.moveTo(0,0);
+ path.lineTo(4,0);
+ path.lineTo(2,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine7ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0,0);
+ path.lineTo(4,0);
+ path.lineTo(2,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine7b() {
+ SkPath path;
+ path.moveTo(0,0);
+ path.lineTo(4,0);
+ path.close();
+ path.moveTo(6,0);
+ path.lineTo(2,0);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine7bx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0,0);
+ path.lineTo(4,0);
+ path.close();
+ path.moveTo(6,0);
+ path.lineTo(2,0);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine8() {
+ SkPath path;
+ path.moveTo(0,4);
+ path.lineTo(4,4);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(2,4);
+ path.lineTo(6,4);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine8x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0,4);
+ path.lineTo(4,4);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(2,4);
+ path.lineTo(6,4);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine9() {
+ SkPath path;
+ path.moveTo(0,4);
+ path.lineTo(4,4);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(6,4);
+ path.lineTo(2,4);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine9x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0,4);
+ path.lineTo(4,4);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(6,4);
+ path.lineTo(2,4);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine10() {
+ SkPath path;
+ path.moveTo(0,4);
+ path.lineTo(4,4);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(2,1);
+ path.lineTo(3,4);
+ path.lineTo(6,1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine10x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0,4);
+ path.lineTo(4,4);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(2,1);
+ path.lineTo(3,4);
+ path.lineTo(6,1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine10a() {
+ SkPath path;
+ path.moveTo(0,4);
+ path.lineTo(8,4);
+ path.lineTo(4,0);
+ path.close();
+ path.moveTo(2,2);
+ path.lineTo(3,3);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine10ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0,4);
+ path.lineTo(8,4);
+ path.lineTo(4,0);
+ path.close();
+ path.moveTo(2,2);
+ path.lineTo(3,3);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void addCWContainer(SkPath& path) {
+ path.moveTo(6,4);
+ path.lineTo(0,4);
+ path.lineTo(3,1);
+ path.close();
+}
+
+static void addCCWContainer(SkPath& path) {
+ path.moveTo(0,4);
+ path.lineTo(6,4);
+ path.lineTo(3,1);
+ path.close();
+}
+
+static void addCWContents(SkPath& path) {
+ path.moveTo(2,3);
+ path.lineTo(3,2);
+ path.lineTo(4,3);
+ path.close();
+}
+
+static void addCCWContents(SkPath& path) {
+ path.moveTo(3,2);
+ path.lineTo(2,3);
+ path.lineTo(4,3);
+ path.close();
+}
+
+static void testLine11() {
+ SkPath path;
+ addCWContainer(path);
+ addCWContents(path);
+ testSimplifyx(path);
+}
+
+static void testLine11x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addCWContainer(path);
+ addCWContents(path);
+ testSimplifyx(path);
+}
+
+static void testLine12() {
+ SkPath path;
+ addCCWContainer(path);
+ addCWContents(path);
+ testSimplifyx(path);
+}
+
+static void testLine12x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addCCWContainer(path);
+ addCWContents(path);
+ testSimplifyx(path);
+}
+
+static void testLine13() {
+ SkPath path;
+ addCWContainer(path);
+ addCCWContents(path);
+ testSimplifyx(path);
+}
+
+static void testLine13x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addCWContainer(path);
+ addCCWContents(path);
+ testSimplifyx(path);
+}
+
+static void testLine14() {
+ SkPath path;
+ addCCWContainer(path);
+ addCCWContents(path);
+ testSimplifyx(path);
+}
+
+static void testLine14x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ addCCWContainer(path);
+ addCCWContents(path);
+ testSimplifyx(path);
+}
+
+static void testLine15() {
+ SkPath path;
+ path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine15x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine16() {
+ SkPath path;
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 4, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine16x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 4, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine17() {
+ SkPath path;
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine17x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine18() {
+ SkPath path;
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 4, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine18x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 4, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine19() {
+ SkPath path;
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 16, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine19x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 16, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine20() {
+ SkPath path;
+ path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 12, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine20x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 12, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine21() {
+ SkPath path;
+ path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 16, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine21x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 16, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine22() {
+ SkPath path;
+ path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine22x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine23() {
+ SkPath path;
+ path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine23x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine24a() {
+ SkPath path;
+ path.moveTo(2,0);
+ path.lineTo(4,4);
+ path.lineTo(0,4);
+ path.close();
+ path.moveTo(2,0);
+ path.lineTo(1,2);
+ path.lineTo(2,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine24ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(2,0);
+ path.lineTo(4,4);
+ path.lineTo(0,4);
+ path.close();
+ path.moveTo(2,0);
+ path.lineTo(1,2);
+ path.lineTo(2,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine24() {
+ SkPath path;
+ path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine24x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine25() {
+ SkPath path;
+ path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine25x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine26() {
+ SkPath path;
+ path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 12, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine26x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 12, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine27() {
+ SkPath path;
+ path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 8, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine27x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 8, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine28() {
+ SkPath path;
+ path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine28x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine29() {
+ SkPath path;
+ path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 12, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine29x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 12, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine30() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 4, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine30x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 4, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine31() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 4, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine31x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 4, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine32() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine32x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine33() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine33x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine34() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine34x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine35() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 0, 18, 18, SkPath::kCW_Direction);
+ path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine35x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 0, 18, 18, SkPath::kCW_Direction);
+ path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine36() {
+ SkPath path;
+ path.addRect(0, 10, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 12, 18, 18, SkPath::kCW_Direction);
+ path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine36x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 10, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 12, 18, 18, SkPath::kCW_Direction);
+ path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine37() {
+ SkPath path;
+ path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
+ path.addRect(18, 24, 30, 30, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine37x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
+ path.addRect(18, 24, 30, 30, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine38() {
+ SkPath path;
+ path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(6, 12, 18, 18, SkPath::kCW_Direction);
+ path.addRect(12, 12, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine38x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(6, 12, 18, 18, SkPath::kCW_Direction);
+ path.addRect(12, 12, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine40() {
+ SkPath path;
+ path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(12, 18, 24, 24, SkPath::kCW_Direction);
+ path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine40x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(12, 18, 24, 24, SkPath::kCW_Direction);
+ path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine41() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(18, 24, 30, 30, SkPath::kCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine41x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(18, 24, 30, 30, SkPath::kCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine42() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(8, 16, 17, 17, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine42x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(8, 16, 17, 17, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine43() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 24, 18, 18, SkPath::kCW_Direction);
+ path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine43x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 24, 18, 18, SkPath::kCW_Direction);
+ path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine44() {
+ SkPath path;
+ path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
+ path.addRect(18, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(18, 32, 27, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine44x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
+ path.addRect(18, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(18, 32, 27, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine45() {
+ SkPath path;
+ path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(18, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 32, 33, 36, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine45x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(18, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 32, 33, 36, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine46() {
+ SkPath path;
+ path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 0, 36, 36, SkPath::kCW_Direction);
+ path.addRect(24, 32, 33, 36, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine46x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 0, 36, 36, SkPath::kCW_Direction);
+ path.addRect(24, 32, 33, 36, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine47() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine47x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine48() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine48x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine49() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine49x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine50() {
+ SkPath path;
+ path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 20, 36, 30, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine50x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 20, 36, 30, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine51() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine51x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine52() {
+ SkPath path;
+ path.addRect(0, 30, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 20, 18, 30, SkPath::kCW_Direction);
+ path.addRect(32, 0, 36, 41, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine52x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 30, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 20, 18, 30, SkPath::kCW_Direction);
+ path.addRect(32, 0, 36, 41, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine53() {
+ SkPath path;
+ path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
+ path.addRect(12, 20, 24, 30, SkPath::kCW_Direction);
+ path.addRect(12, 32, 21, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine53x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
+ path.addRect(12, 20, 24, 30, SkPath::kCW_Direction);
+ path.addRect(12, 32, 21, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine54() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 0, 18, 18, SkPath::kCW_Direction);
+ path.addRect(8, 4, 17, 17, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine54x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 0, 18, 18, SkPath::kCW_Direction);
+ path.addRect(8, 4, 17, 17, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine55() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 6, 18, 18, SkPath::kCW_Direction);
+ path.addRect(4, 4, 13, 13, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine55x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 6, 18, 18, SkPath::kCW_Direction);
+ path.addRect(4, 4, 13, 13, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine56() {
+ SkPath path;
+ path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
+ path.addRect(18, 20, 30, 30, SkPath::kCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine56x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
+ path.addRect(18, 20, 30, 30, SkPath::kCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine57() {
+ SkPath path;
+ path.addRect(20, 0, 40, 40, SkPath::kCW_Direction);
+ path.addRect(20, 0, 30, 40, SkPath::kCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine57x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(20, 0, 40, 40, SkPath::kCW_Direction);
+ path.addRect(20, 0, 30, 40, SkPath::kCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine58() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCCW_Direction);
+ path.addRect(0, 12, 9, 9, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine58x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCCW_Direction);
+ path.addRect(0, 12, 9, 9, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine59() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 6, 18, 18, SkPath::kCCW_Direction);
+ path.addRect(4, 4, 13, 13, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine59x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 6, 18, 18, SkPath::kCCW_Direction);
+ path.addRect(4, 4, 13, 13, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine60() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 12, 18, 18, SkPath::kCCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine60x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 12, 18, 18, SkPath::kCCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine61() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(12, 0, 24, 24, SkPath::kCCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine61x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(12, 0, 24, 24, SkPath::kCCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine62() {
+ SkPath path;
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine62x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine63() {
+ SkPath path;
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(0, 10, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 6, 12, 12, SkPath::kCCW_Direction);
+ path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine63x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(0, 10, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 6, 12, 12, SkPath::kCCW_Direction);
+ path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine64() {
+ SkPath path;
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
+ path.addRect(18, 6, 30, 30, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine64x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
+ path.addRect(18, 6, 30, 30, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine65() {
+ SkPath path;
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 0, 36, 36, SkPath::kCW_Direction);
+ path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine65x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 0, 36, 36, SkPath::kCW_Direction);
+ path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine66() {
+ SkPath path;
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(0, 30, 20, 20, SkPath::kCW_Direction);
+ path.addRect(12, 20, 24, 30, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine66x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(0, 30, 20, 20, SkPath::kCW_Direction);
+ path.addRect(12, 20, 24, 30, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine67() {
+ SkPath path;
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 20, 36, 30, SkPath::kCW_Direction);
+ path.addRect(32, 0, 36, 41, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine67x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 20, 36, 30, SkPath::kCW_Direction);
+ path.addRect(32, 0, 36, 41, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine68a() {
+ SkPath path;
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCW_Direction);
+ path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine68ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCW_Direction);
+ path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine68b() {
+ SkPath path;
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine68bx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine68c() {
+ SkPath path;
+ path.addRect(0, 0, 8, 8, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCW_Direction);
+ path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine68cx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 8, 8, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCW_Direction);
+ path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine68d() {
+ SkPath path;
+ path.addRect(0, 0, 8, 8, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine68dx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 8, 8, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine68e() {
+ SkPath path;
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine68ex() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine68f() {
+ SkPath path;
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine68fx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine68g() {
+ SkPath path;
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine68gx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine68h() {
+ SkPath path;
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine68hx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine69() {
+ SkPath path;
+ path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
+ path.addRect(12, 32, 21, 36, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine69x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
+ path.addRect(12, 32, 21, 36, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine70() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 24, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 32, 21, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine70x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 24, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 32, 21, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine71() {
+ SkPath path;
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(12, 0, 24, 24, SkPath::kCW_Direction);
+ path.addRect(12, 32, 21, 36, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine71x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(12, 0, 24, 24, SkPath::kCW_Direction);
+ path.addRect(12, 32, 21, 36, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine72() {
+ SkPath path;
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
+ path.addRect(6, 20, 18, 30, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine72x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
+ path.addRect(6, 20, 18, 30, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine73() {
+ SkPath path;
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(0, 40, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine73x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(0, 40, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine74() {
+ SkPath path;
+ path.addRect(20, 30, 40, 40, SkPath::kCW_Direction);
+ path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
+ path.addRect(32, 24, 36, 41, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine74x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(20, 30, 40, 40, SkPath::kCW_Direction);
+ path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
+ path.addRect(32, 24, 36, 41, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine75() {
+ SkPath path;
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(10, 0, 30, 30, SkPath::kCCW_Direction);
+ path.addRect(18, 0, 30, 30, SkPath::kCCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine75x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(10, 0, 30, 30, SkPath::kCCW_Direction);
+ path.addRect(18, 0, 30, 30, SkPath::kCCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine76() {
+ SkPath path;
+ path.addRect(36, 0, 66, 60, SkPath::kCW_Direction);
+ path.addRect(10, 20, 40, 30, SkPath::kCW_Direction);
+ path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
+ path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine76x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(36, 0, 66, 60, SkPath::kCW_Direction);
+ path.addRect(10, 20, 40, 30, SkPath::kCW_Direction);
+ path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
+ path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine77() {
+ SkPath path;
+ path.addRect(20, 0, 40, 40, SkPath::kCW_Direction);
+ path.addRect(24, 6, 36, 36, SkPath::kCCW_Direction);
+ path.addRect(24, 32, 33, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine77x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(20, 0, 40, 40, SkPath::kCW_Direction);
+ path.addRect(24, 6, 36, 36, SkPath::kCCW_Direction);
+ path.addRect(24, 32, 33, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine78() {
+ SkPath path;
+ path.addRect(0, 0, 30, 60, SkPath::kCW_Direction);
+ path.addRect(10, 20, 30, 30, SkPath::kCCW_Direction);
+ path.addRect(18, 20, 30, 30, SkPath::kCCW_Direction);
+ path.addRect(32, 0, 36, 41, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine78x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 30, 60, SkPath::kCW_Direction);
+ path.addRect(10, 20, 30, 30, SkPath::kCCW_Direction);
+ path.addRect(18, 20, 30, 30, SkPath::kCCW_Direction);
+ path.addRect(32, 0, 36, 41, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine79() {
+ SkPath path;
+ path.addRect(0, 36, 60, 30, SkPath::kCW_Direction);
+ path.addRect(10, 30, 40, 30, SkPath::kCW_Direction);
+ path.addRect(0, 20, 12, 30, SkPath::kCCW_Direction);
+ path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine79x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 36, 60, 30, SkPath::kCW_Direction);
+ path.addRect(10, 30, 40, 30, SkPath::kCW_Direction);
+ path.addRect(0, 20, 12, 30, SkPath::kCCW_Direction);
+ path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine81() {
+ SkPath path;
+ path.addRect(-1, -1, 3, 3, SkPath::kCW_Direction);
+ path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ path.addRect(1, 1, 2, 2, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testDegenerate1() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(2, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(2, 0);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testDegenerate1x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(2, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(2, 0);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testDegenerate2() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testDegenerate2x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testDegenerate3() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(2, 0);
+ path.lineTo(1, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(3, 0);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testDegenerate3x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(2, 0);
+ path.lineTo(1, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(3, 0);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testDegenerate4() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 1);
+ path.lineTo(1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testDegenerate4x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 1);
+ path.lineTo(1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testNondegenerate1() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(3, 0);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(1, 1);
+ path.lineTo(2, 1);
+ path.lineTo(1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testNondegenerate1x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(3, 0);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(1, 1);
+ path.lineTo(2, 1);
+ path.lineTo(1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testNondegenerate2() {
+ SkPath path;
+ path.moveTo(1, 0);
+ path.lineTo(0, 1);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(0, 2);
+ path.lineTo(0, 3);
+ path.lineTo(1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testNondegenerate2x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(1, 0);
+ path.lineTo(0, 1);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(0, 2);
+ path.lineTo(0, 3);
+ path.lineTo(1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testNondegenerate3() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(2, 1);
+ path.close();
+ path.moveTo(0, 1);
+ path.lineTo(1, 1);
+ path.lineTo(0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testNondegenerate3x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(2, 1);
+ path.close();
+ path.moveTo(0, 1);
+ path.lineTo(1, 1);
+ path.lineTo(0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testNondegenerate4() {
+ SkPath path;
+ path.moveTo(1, 0);
+ path.lineTo(0, 1);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 2);
+ path.lineTo(0, 3);
+ path.lineTo(1, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testNondegenerate4x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(1, 0);
+ path.lineTo(0, 1);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 2);
+ path.lineTo(0, 3);
+ path.lineTo(1, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadralateral5() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 2);
+ path.lineTo(3, 2);
+ path.lineTo(3, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadralateral5x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 2);
+ path.lineTo(3, 2);
+ path.lineTo(3, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadralateral6() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(2, 0);
+ path.lineTo(0, 2);
+ path.lineTo(2, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadralateral6x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(2, 0);
+ path.lineTo(0, 2);
+ path.lineTo(2, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testFauxQuadralateral6() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(2, 0);
+ path.lineTo(1 + 1.0f/3, 2.0f/3);
+ path.close();
+ path.moveTo(1 + 1.0f/3, 2.0f/3);
+ path.lineTo(0, 2);
+ path.lineTo(2, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testFauxQuadralateral6x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(2, 0);
+ path.lineTo(1 + 1.0f/3, 2.0f/3);
+ path.close();
+ path.moveTo(1 + 1.0f/3, 2.0f/3);
+ path.lineTo(0, 2);
+ path.lineTo(2, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testFauxQuadralateral6a() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(3, 0);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(4, 2);
+ path.close();
+ path.moveTo(4, 2);
+ path.lineTo(0, 6);
+ path.lineTo(6, 6);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testFauxQuadralateral6ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(3, 0);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(4, 2);
+ path.close();
+ path.moveTo(4, 2);
+ path.lineTo(0, 6);
+ path.lineTo(6, 6);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testFauxQuadralateral6b() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(3, 0);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(4, 2);
+ path.close();
+ path.moveTo(4, 2);
+ path.lineTo(6, 6);
+ path.lineTo(0, 6);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testFauxQuadralateral6bx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(3, 0);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(4, 2);
+ path.close();
+ path.moveTo(4, 2);
+ path.lineTo(6, 6);
+ path.lineTo(0, 6);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testFauxQuadralateral6c() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(3, 3);
+ path.lineTo(3, 0);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(4, 2);
+ path.close();
+ path.moveTo(4, 2);
+ path.lineTo(0, 6);
+ path.lineTo(6, 6);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testFauxQuadralateral6cx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(3, 3);
+ path.lineTo(3, 0);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(4, 2);
+ path.close();
+ path.moveTo(4, 2);
+ path.lineTo(0, 6);
+ path.lineTo(6, 6);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testFauxQuadralateral6d() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(3, 3);
+ path.lineTo(3, 0);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(4, 2);
+ path.close();
+ path.moveTo(4, 2);
+ path.lineTo(6, 6);
+ path.lineTo(0, 6);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testFauxQuadralateral6dx() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(3, 3);
+ path.lineTo(3, 0);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(4, 2);
+ path.close();
+ path.moveTo(4, 2);
+ path.lineTo(6, 6);
+ path.lineTo(0, 6);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadralateral6a() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(3, 0);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(0, 6);
+ path.lineTo(6, 6);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadralateral6ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(3, 0);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(0, 6);
+ path.lineTo(6, 6);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadralateral7() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(2, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 1);
+ path.lineTo(2, 2);
+ path.lineTo(1, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadralateral7x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(2, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 1);
+ path.lineTo(2, 2);
+ path.lineTo(1, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadralateral8() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(3, 1);
+ path.lineTo(1, 3);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(2, 1);
+ path.lineTo(0, 2);
+ path.lineTo(3, 2);
+ path.lineTo(2, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadralateral8x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(3, 1);
+ path.lineTo(1, 3);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(2, 1);
+ path.lineTo(0, 2);
+ path.lineTo(3, 2);
+ path.lineTo(2, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadralateral9() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 2);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(1, 1);
+ path.lineTo(2, 1);
+ path.lineTo(1, 3);
+ path.lineTo(2, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadralateral9x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 2);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(1, 1);
+ path.lineTo(2, 1);
+ path.lineTo(1, 3);
+ path.lineTo(2, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine1a() {
+ SkPath path;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 0, 13, 13, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine1ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 0, 13, 13, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine2ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine3aax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
+ path.addRect(18, 20, 30, 30, SkPath::kCCW_Direction);
+ path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine4ax() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
+ path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testQuadratic1() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(1, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic1x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(1, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic2() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(3, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic2x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(3, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic3() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic3x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic4() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic4x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic5() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic6() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(2, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(2, 0, 0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic7() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(3, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(3, 0, 1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic8() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic9() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(3, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(1, 2, 3, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic14() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(3, 2, 3, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic15() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(0, 1);
+ path.quadTo(1, 1, 0, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic17x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 3, 1);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(3, 1, 0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic18() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 1, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic19() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(2, 0, 0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic20() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic21() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic22() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(0, 1, 2, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic23() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(0, 2, 1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic24() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(2, 0, 0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic25() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 1);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(2, 1, 0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic26() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 1);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic27() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 1);
+ path.lineTo(2, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(2, 1, 0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic28() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 2);
+ path.quadTo(1, 2, 0, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic29() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 2, 1);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic30() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 2);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic31() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 2);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 1, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic32() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 2, 3);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(3, 1, 0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic33() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(2, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 1);
+ path.quadTo(2, 1, 2, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic34() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(2, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 1);
+ path.quadTo(2, 1, 1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic35() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 1, 1, 1);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(2, 0);
+ path.lineTo(3, 0);
+ path.quadTo(0, 1, 1, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic36() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(2, 1, 2, 3);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(3, 1);
+ path.lineTo(1, 2);
+ path.quadTo(3, 2, 1, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic37() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 2, 1, 2);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(3, 1);
+ path.quadTo(0, 2, 1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic38() {
+ SkPath path;
+ path.moveTo(1, 0);
+ path.quadTo(0, 1, 1, 1);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 2);
+ path.quadTo(2, 2, 1, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic51() {
+ SkPath path;
+ path.moveTo(369.863983f, 145.645813f);
+ path.quadTo(382.380371f, 121.254936f, 406.236359f, 121.254936f);
+ path.lineTo(369.863983f, 145.645813f);
+ path.close();
+ path.moveTo(369.970581f, 137.94342f);
+ path.quadTo(383.98465f, 121.254936f, 406.235992f, 121.254936f);
+ path.lineTo(369.970581f, 137.94342f);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic53() {
+ SkPath path;
+ path.moveTo(303.12088f, 141.299606f);
+ path.lineTo(330.463562f, 217.659027f);
+ path.lineTo(303.12088f, 141.299606f);
+ path.close();
+ path.moveTo(371.919067f, 205.854996f);
+ path.lineTo(326.236786f, 205.854996f);
+ path.quadTo(329.104431f, 231.663818f, 351.512085f, 231.663818f);
+ path.lineTo(371.919067f, 205.854996f);
+ path.close();
+ testSimplifyx(path);
+}
+static void testQuadratic55() {
+ SkPath path;
+path.moveTo(303.12088f, 141.299606f);
+path.lineTo(330.463562f, 217.659027f);
+path.lineTo(358.606506f, 141.299606f);
+path.lineTo(303.12088f, 141.299606f);
+path.close();
+path.moveTo(326.236786f, 205.854996f);
+path.quadTo(329.104431f, 231.663818f, 351.512085f, 231.663818f);
+path.lineTo(326.236786f, 205.854996f);
+path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic56() {
+ SkPath path;
+path.moveTo(366.608826f, 151.196014f);
+path.quadTo(378.803101f, 136.674606f, 398.164948f, 136.674606f);
+path.lineTo(354.009216f, 208.816208f);
+path.lineTo(393.291473f, 102.232819f);
+path.lineTo(359.978058f, 136.581512f);
+path.quadTo(378.315979f, 136.581512f, 388.322723f, 149.613556f);
+path.lineTo(364.390686f, 157.898193f);
+path.quadTo(375.281769f, 136.674606f, 396.039917f, 136.674606f);
+path.lineTo(350, 120);
+path.lineTo(366.608826f, 151.196014f);
+path.close();
+ testSimplifyx(path);
+}
+
+static void testLine80() {
+ SkPath path;
+path.moveTo(4, 0);
+path.lineTo(3, 7);
+path.lineTo(7, 5);
+path.lineTo(2, 2);
+path.close();
+path.moveTo(0, 6);
+path.lineTo(6, 12);
+path.lineTo(8, 3);
+path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic58() {
+ SkPath path;
+path.moveTo(283.714233f, 240);
+path.lineTo(283.714233f, 141.299606f);
+path.lineTo(303.12088f, 141.299606f);
+path.lineTo(330.463562f, 217.659027f);
+path.lineTo(358.606506f, 141.299606f);
+path.lineTo(362.874634f, 159.705902f);
+path.lineTo(335.665344f, 233.397751f);
+path.lineTo(322.12738f, 233.397751f);
+path.lineTo(295.718353f, 159.505829f);
+path.lineTo(295.718353f, 240);
+path.lineTo(283.714233f, 240);
+path.close();
+path.moveTo(322.935669f, 231.030273f);
+path.quadTo(312.832214f, 220.393295f, 312.832214f, 203.454178f);
+path.quadTo(312.832214f, 186.981888f, 321.73526f, 176.444946f);
+path.quadTo(330.638306f, 165.90802f, 344.509705f, 165.90802f);
+path.quadTo(357.647522f, 165.90802f, 364.81665f, 175.244537f);
+path.lineTo(371.919067f, 205.854996f);
+path.lineTo(326.236786f, 205.854996f);
+path.quadTo(329.104431f, 231.663818f, 351.512085f, 231.663818f);
+path.lineTo(322.935669f, 231.030273f);
+path.close();
+path.moveTo(326.837006f, 195.984955f);
+path.lineTo(358.78125f, 195.984955f);
+path.quadTo(358.78125f, 175.778046f, 343.709442f, 175.778046f);
+path.quadTo(328.570923f, 175.778046f, 326.837006f, 195.984955f);
+path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic59x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 0);
+ path.quadTo(3, 1, 1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic59() {
+ SkPath path;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 0);
+ path.quadTo(3, 1, 1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic63() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(2, 1);
+ path.quadTo(2, 1, 2, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic64() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(1, 2);
+ path.lineTo(2, 2);
+ path.quadTo(0, 3, 3, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic65() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(2, 1);
+ path.lineTo(2, 2);
+ path.quadTo(0, 3, 1, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic67x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 2, 1);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 0);
+ path.quadTo(1, 1, 3, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic68() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(0, 1, 2, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic69() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 1);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(2, 0);
+ path.lineTo(1, 1);
+ path.quadTo(3, 2, 2, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic70x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(0, 1, 2, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic71() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 1);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 1, 3, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic72() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 2);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 3, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic73() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 3);
+ path.lineTo(0, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 1, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic74() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 3);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.quadTo(3, 2, 2, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic75() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 3);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.quadTo(3, 2, 2, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic76() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 2);
+ path.quadTo(1, 2, 2, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic77() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 1);
+ path.lineTo(3, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 3, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic78() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 2);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(2, 1, 0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic79() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 2);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 3, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testEight1() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(2, 2);
+ path.lineTo(0, 2);
+ path.lineTo(2, 0);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testEight2() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(2, 0);
+ path.lineTo(0, 2);
+ path.lineTo(2, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testEight3() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(0, 2);
+ path.lineTo(2, 0);
+ path.lineTo(2, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testEight4() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(2, 2);
+ path.lineTo(2, 0);
+ path.lineTo(0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testEight5() {
+ SkPath path;
+ path.moveTo(1, 0);
+ path.lineTo(1, 2);
+ path.lineTo(0, 2);
+ path.lineTo(2, 0);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testEight6() {
+ SkPath path;
+ path.moveTo(1, 0);
+ path.lineTo(2, 0);
+ path.lineTo(0, 2);
+ path.lineTo(1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testEight7() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.lineTo(2, 1);
+ path.lineTo(2, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testEight8() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(2, 2);
+ path.lineTo(2, 1);
+ path.lineTo(0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testEight9() {
+ SkPath path;
+ path.moveTo(1, 0);
+ path.lineTo(1, 2);
+ path.lineTo(2, 1);
+ path.lineTo(0, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testEight10() {
+ SkPath path;
+ path.moveTo(1, 0);
+ path.lineTo(0, 1);
+ path.lineTo(2, 1);
+ path.lineTo(1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic80() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 2, 3);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(3, 0);
+ path.quadTo(0, 1, 1, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic81() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(2, 0, 1, 1);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(2, 1, 0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic82() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(2, 0, 1, 1);
+ path.lineTo(0, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(2, 1, 0, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic83() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 2, 0);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(0, 1);
+ path.lineTo(0, 2);
+ path.quadTo(2, 2, 1, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic84() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(2, 0, 1, 1);
+ path.lineTo(2, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(2, 0);
+ path.quadTo(0, 1, 2, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic85() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(3, 0, 1, 1);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(3, 0);
+ path.quadTo(0, 1, 1, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic86() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(0, 1, 1, 1);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 1, 1, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic87() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(2, 1, 0, 2);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 1);
+ path.quadTo(0, 2, 3, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic88() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(2, 1, 0, 2);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 1);
+ path.quadTo(0, 2, 2, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic89x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(3, 1, 2, 2);
+ path.lineTo(0, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 1);
+ path.quadTo(3, 1, 3, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic90x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(3, 0, 2, 2);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.quadTo(3, 2, 2, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic91() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.quadTo(3, 2, 2, 3);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 1);
+ path.quadTo(2, 1, 2, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic92x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(1, 0);
+ path.quadTo(3, 0, 2, 2);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(2, 0);
+ path.lineTo(0, 1);
+ path.quadTo(3, 2, 2, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testLine82() {
+ SkPath path;
+ path.addRect(20, 0, 40, 40, SkPath::kCCW_Direction);
+ path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
+ path.addRect(24, 32, 33, 36, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine82a() {
+ SkPath path;
+ path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
+ path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine82b() {
+ SkPath path;
+ path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
+ path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine82c() {
+ SkPath path;
+ path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
+ path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine82d() {
+ SkPath path;
+ path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
+ path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine82e() {
+ SkPath path;
+ path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
+ path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine82f() {
+ SkPath path;
+ path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
+ path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine82g() {
+ SkPath path;
+ path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
+ path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine82h() {
+ SkPath path;
+ path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
+ path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine83() {
+ SkPath path;
+path.addRect(10, 30, 30, 40, SkPath::kCCW_Direction);
+path.addRect(0, 12, 12, 18, SkPath::kCCW_Direction);
+path.addRect(4, 13, 13, 16, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine84() {
+ SkPath path;
+ path.addRect(0, 12, 60, 30, SkPath::kCCW_Direction);
+ path.addRect(10, 20, 40, 30, SkPath::kCW_Direction);
+ path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine84x() {
+ SkPath path;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 12, 60, 30, SkPath::kCCW_Direction);
+ path.addRect(10, 20, 40, 30, SkPath::kCCW_Direction);
+ path.addRect(0, 12, 12, 12, SkPath::kCCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testLine85() {
+ SkPath path;
+ path.addRect(36, 0, 66, 60, SkPath::kCCW_Direction);
+ path.addRect(20, 0, 40, 40, SkPath::kCCW_Direction);
+ path.addRect(12, 0, 24, 24, SkPath::kCCW_Direction);
+ path.addRect(32, 0, 36, 41, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+}
+
+static void testQuadralateral1() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 1);
+ path.lineTo(2, 2);
+ path.lineTo(2, 3);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testCubic1() {
+ SkPath path;
+ path.moveTo(0, 0);
+ path.cubicTo(0, 1, 1, 1, 1, 0);
+ path.close();
+ path.moveTo(1, 0);
+ path.cubicTo(0, 0, 0, 1, 1, 1);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuadratic93() {
+ SkPath path;
+ path.moveTo(3, 0);
+ path.quadTo(0, 1, 3, 2);
+ path.lineTo(0, 3);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(2, 0);
+ path.quadTo(1, 1, 2, 2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void cubicOp1d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,2, 1,0, 1,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,1, 1,0, 2,0);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp2d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(0,1, 1,0, 1,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,1, 2,0, 1,0);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp3d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,3, 1,0, 1,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,1, 1,0, 3,2);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp5d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,2, 1,0, 2,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,2, 1,0, 2,0);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp6d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,6, 1,0, 3,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,3, 1,0, 6,0);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp7d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(3,4, 1,0, 3,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,3, 1,0, 4,3);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp8d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,5, 1,0, 4,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,4, 1,0, 5,0);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp9d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,6, 1,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(1,2, 1,0, 6,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void quadOp9d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.quadTo(1,6, 1.5f,1);
+ path.quadTo(1.5f,0.5f, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.quadTo(1,2, 1.4f,1);
+ pathB.quadTo(3,0.4f, 6,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void lineOp9d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.lineTo(1,6);
+ path.lineTo(1.5f,1);
+ path.lineTo(1.8f,0.8f);
+ path.lineTo(2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.lineTo(1,2);
+ pathB.lineTo(1.4f,1);
+ pathB.lineTo(3,0.4f);
+ pathB.lineTo(6,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp1i() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,2, 1,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(1,2, 1,0, 2,1);
+ pathB.close();
+ testShapeOp(path, pathB, kIntersect_Op);
+}
+
+static void cubicOp10d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,3, 1,0, 4,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(1,4, 1,0, 3,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp11d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(3,4, 1,0, 5,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(1,5, 1,0, 4,3);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp12d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,6, 1,0, 1,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,1, 1,0, 6,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp13d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(4,5, 1,0, 5,3);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(3,5, 1,0, 5,4);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp14d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,2, 2,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,2);
+ pathB.cubicTo(1,2, 1,0, 2,0);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp15d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(3,6, 2,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,2);
+ pathB.cubicTo(1,2, 1,0, 6,3);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp16d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(0,1, 3,0, 1,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,3);
+ pathB.cubicTo(0,1, 2,0, 1,0);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp17d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(0,2, 4,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,4);
+ pathB.cubicTo(1,2, 2,0, 2,0);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp18d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(3,5, 2,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,2);
+ pathB.cubicTo(1,2, 1,0, 5,3);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp19i() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(0,1, 2,1, 6,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,2);
+ pathB.cubicTo(2,6, 2,0, 1,0);
+ pathB.close();
+ testShapeOp(path, pathB, kIntersect_Op);
+}
+
+static void cubicOp20d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,1, 6,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,6);
+ pathB.cubicTo(1,2, 1,0, 1,0);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp21d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,1, 2,1, 6,5);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,2);
+ pathB.cubicTo(5,6, 1,0, 1,0);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp22d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,3, 3,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,3);
+ pathB.cubicTo(1,2, 1,0, 3,2);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp23d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,2, 4,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,4);
+ pathB.cubicTo(1,2, 1,0, 2,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp24d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,2, 2,0, 3,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,2);
+ pathB.cubicTo(2,3, 1,0, 2,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void testIntersect1() {
+ SkPath one, two;
+ one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
+ two.addRect(3, 3, 9, 9, SkPath::kCW_Direction);
+ testShapeOp(one, two, kIntersect_Op);
+}
+
+static void testUnion1() {
+ SkPath one, two;
+ one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
+ two.addRect(3, 3, 9, 9, SkPath::kCW_Direction);
+ testShapeOp(one, two, kUnion_Op);
+}
+
+static void testDiff1() {
+ SkPath one, two;
+ one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
+ two.addRect(3, 3, 9, 9, SkPath::kCW_Direction);
+ testShapeOp(one, two, kDifference_Op);
+}
+
+static void testXor1() {
+ SkPath one, two;
+ one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
+ two.addRect(3, 3, 9, 9, SkPath::kCW_Direction);
+ testShapeOp(one, two, kXor_Op);
+}
+
+static void testIntersect2() {
+ SkPath one, two;
+ one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
+ two.addRect(0, 3, 9, 9, SkPath::kCW_Direction);
+ testShapeOp(one, two, kIntersect_Op);
+}
+
+static void testUnion2() {
+ SkPath one, two;
+ one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
+ two.addRect(0, 3, 9, 9, SkPath::kCW_Direction);
+ testShapeOp(one, two, kUnion_Op);
+}
+
+static void testDiff2() {
+ SkPath one, two;
+ one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
+ two.addRect(0, 3, 9, 9, SkPath::kCW_Direction);
+ testShapeOp(one, two, kDifference_Op);
+}
+
+static void testXor2() {
+ SkPath one, two;
+ one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
+ two.addRect(0, 3, 9, 9, SkPath::kCW_Direction);
+ testShapeOp(one, two, kXor_Op);
+}
+
+static void testOp1d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void testOp2d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
+ pathB.setFillType(SkPath::kEvenOdd_FillType);
+ pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void testOp3d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ path.addRect(1, 1, 2, 2, SkPath::kCW_Direction);
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void testOp1u() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ path.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ testShapeOp(path, pathB, kUnion_Op);
+}
+
+static void testOp4d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void testOp5d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
+ path.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
+ pathB.setFillType(SkPath::kEvenOdd_FillType);
+ pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void testOp6d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ path.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void testOp7d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
+ path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ pathB.setFillType(SkPath::kEvenOdd_FillType);
+ pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void testOp2u() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
+ path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
+ pathB.addRect(1, 1, 2, 2, SkPath::kCW_Direction);
+ testShapeOp(path, pathB, kUnion_Op);
+}
+
+static void testOp8d() {
+ SkPath path, pathB;
+ path.addRect(0, 0, 640, 480);
+ pathB.moveTo(577330, 1971.72f);
+ pathB.cubicTo(10.7082f, -116.596f, 262.057f, 45.6468f, 294.694f, 1.96237f);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+static void cubicOp25i() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,4, 5,0, 3,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,5);
+ pathB.cubicTo(2,3, 1,0, 4,2);
+ pathB.close();
+ testShapeOp(path, pathB, kIntersect_Op);
+}
+
+static void cubicOp26d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(3,4, 4,0, 3,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,4);
+ pathB.cubicTo(2,3, 1,0, 4,3);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp27d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(3,6, 1,0, 5,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(2,5, 1,0, 6,3);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp28u() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,4, 6,0, 3,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,6);
+ pathB.cubicTo(2,3, 1,0, 4,1);
+ pathB.close();
+ testShapeOp(path, pathB, kUnion_Op);
+}
+
+static void cubicOp29d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,5, 6,0, 4,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,6);
+ pathB.cubicTo(2,4, 1,0, 5,2);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp30d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,5, 6,0, 5,3);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,6);
+ pathB.cubicTo(3,5, 1,0, 5,2);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp31d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(0,3, 2,1, 4,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,2);
+ pathB.cubicTo(0,4, 2,0, 3,0);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp31u() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(0,3, 2,1, 4,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,2);
+ pathB.cubicTo(0,4, 2,0, 3,0);
+ pathB.close();
+ testShapeOp(path, pathB, kUnion_Op);
+}
+
+static void cubicOp31x() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(0,3, 2,1, 4,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,2);
+ pathB.cubicTo(0,4, 2,0, 3,0);
+ pathB.close();
+ testShapeOp(path, pathB, kXor_Op);
+}
+
+static void testCubic2() {
+ SkPath path;
+ path.moveTo(0,2);
+ path.cubicTo(0,3, 2,1, 4,0);
+ path.close();
+ path.moveTo(1,2);
+ path.cubicTo(0,4, 2,0, 3,0);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void cubicOp32d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,2, 6,0, 3,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,6);
+ pathB.cubicTo(1,3, 1,0, 2,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp33i() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,2, 6,0, 3,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,6);
+ pathB.cubicTo(1,3, 1,0, 2,1);
+ pathB.close();
+ testShapeOp(path, pathB, kIntersect_Op);
+}
+
+static void cubicOp34d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(3,5, 2,1, 3,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,2);
+ pathB.cubicTo(1,3, 1,0, 5,3);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp35d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,5, 2,1, 4,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,2);
+ pathB.cubicTo(0,4, 1,0, 5,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp36u() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,6, 2,0, 5,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,2);
+ pathB.cubicTo(1,5, 1,0, 6,1);
+ pathB.close();
+ testShapeOp(path, pathB, kUnion_Op);
+}
+
+static void cubicOp37d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,6, 6,1, 4,3);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,6);
+ pathB.cubicTo(3,4, 1,0, 6,2);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+#if 1
+// this fails to detect a cubic/cubic intersection
+// the slight overlap is missed when the cubics are approximated by quadratics
+// and the subsequent line/cubic intersection also (correctly) misses the intersection
+// if the line/cubic was a matching line/approx.quadratic then the missing intersection
+// could have been detected
+static void cubicOp38d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,6, 3,2, 4,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(2,3);
+ pathB.cubicTo(1,4, 1,0, 6,0);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+#endif
+
+static void cubicOp39d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,3, 5,1, 4,3);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,5);
+ pathB.cubicTo(3,4, 1,0, 3,2);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp40d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,5, 3,2, 4,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(2,3);
+ pathB.cubicTo(2,4, 1,0, 5,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp41i() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,6, 4,3, 6,4);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(3,4);
+ pathB.cubicTo(4,6, 1,0, 6,2);
+ pathB.close();
+ testShapeOp(path, pathB, kIntersect_Op);
+}
+
+static void cubicOp42d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,2, 6,5, 5,4);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(5,6);
+ pathB.cubicTo(4,5, 1,0, 2,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp43d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(1,2, 4,0, 3,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,4);
+ pathB.cubicTo(1,3, 2,0, 2,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp44d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(3,6, 4,0, 3,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,4);
+ pathB.cubicTo(2,3, 2,0, 6,3);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp45d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(2,4, 4,0, 3,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,4);
+ pathB.cubicTo(2,3, 2,0, 4,2);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp46d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(3,5, 5,0, 4,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,5);
+ pathB.cubicTo(2,4, 2,0, 5,3);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp47d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,6, 6,2, 5,4);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(2,6);
+ pathB.cubicTo(4,5, 1,0, 6,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp48d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(2,3, 5,1, 3,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,5);
+ pathB.cubicTo(2,3, 2,0, 3,2);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp49d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(1,5, 3,2, 4,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(2,3);
+ pathB.cubicTo(1,4, 2,0, 5,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp50d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,3);
+ path.cubicTo(1,6, 5,0, 5,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,5);
+ pathB.cubicTo(1,5, 3,0, 6,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp51d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,3);
+ path.cubicTo(1,2, 4,1, 6,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,4);
+ pathB.cubicTo(0,6, 3,0, 2,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp52d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(1,2, 5,4, 4,3);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(4,5);
+ pathB.cubicTo(3,4, 2,0, 2,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp53d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,3);
+ path.cubicTo(1,2, 5,3, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(3,5);
+ pathB.cubicTo(1,2, 3,0, 2,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp54d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,4);
+ path.cubicTo(1,3, 5,4, 4,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(4,5);
+ pathB.cubicTo(2,4, 4,0, 3,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp55d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,5);
+ path.cubicTo(1,3, 3,2, 5,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(2,3);
+ pathB.cubicTo(0,5, 5,0, 3,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp56d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,6, 5,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,5);
+ pathB.cubicTo(1,2, 1,0, 6,2);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp57d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,5);
+ path.cubicTo(0,5, 5,4, 6,4);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(4,5);
+ pathB.cubicTo(4,6, 5,0, 5,0);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp58d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,5);
+ path.cubicTo(3,4, 6,5, 5,3);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(5,6);
+ pathB.cubicTo(3,5, 5,0, 4,3);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp59d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(5,6, 4,0, 4,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,4);
+ pathB.cubicTo(1,4, 1,0, 6,5);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp60d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(4,6, 6,0, 5,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,6);
+ pathB.cubicTo(2,5, 2,0, 6,4);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp61d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(1,2);
+ path.cubicTo(0,5, 3,2, 6,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(2,3);
+ pathB.cubicTo(1,6, 2,1, 5,0);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp62d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(1,3);
+ path.cubicTo(5,6, 5,3, 5,4);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(3,5);
+ pathB.cubicTo(4,5, 3,1, 6,5);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void cubicOp63d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(2,3);
+ path.cubicTo(0,4, 3,2, 5,3);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(2,3);
+ pathB.cubicTo(3,5, 3,2, 4,0);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void testQuad1() {
+ SkPath path;
+ path.moveTo(0,0);
+ path.quadTo(0,0, 0,1);
+ path.lineTo(1,1);
+ path.close();
+ path.moveTo(0,0);
+ path.quadTo(1,1, 0,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuad1z() {
+ SkPath path;
+ path.moveTo(0,0);
+ path.quadTo(0,0, 0,1);
+ path.lineTo(1,1);
+ path.close();
+ path.moveTo(0,0);
+ path.lineTo(0.5f,1);
+ path.lineTo(0,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testQuad1c() {
+ SkPath path;
+ path.moveTo(0,0);
+ path.quadTo(0,0, 0,1);
+ path.lineTo(1,1);
+ path.close();
+ path.moveTo(0,0);
+ path.cubicTo(0.5f,0.5f, 0.5f,1.5f, 0,2);
+ path.close();
+ testSimplifyx(path);
+}
+
+static void testRectOp1d() {
+ SkPath path, pathB;
+ path.moveTo(0,1);
+ path.cubicTo(0,1, 1,0, 3,0);
+ path.lineTo(0,1);
+ path.close();
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,3, 1,0, 1,0);
+ pathB.lineTo(0,1);
+ pathB.close();
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void testCubicOp64d() {
+ SkPath path, pathB;
+ path.setFillType(SkPath::kWinding_FillType);
+ path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ path.addRect(2, 2, 3, 3, SkPath::kCW_Direction);
+ pathB.setFillType(SkPath::kEvenOdd_FillType);
+ pathB.addRect(0, 0, 4, 4, SkPath::kCW_Direction);
+ pathB.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
+ testShapeOp(path, pathB, kDifference_Op);
+}
+
+static void (*firstTest)() = testRectOp1d;
+
+static struct {
+ void (*fun)();
+ const char* str;
+} tests[] = {
+ TEST(testRectOp1d),
+ TEST(testCubicOp64d),
+ TEST(testQuad1c),
+ TEST(testQuad1z),
+ TEST(testQuad1),
+ TEST(testQuadratic93), // FIXME: gets stuck in a loop because top is unsortable
+ TEST(cubicOp63d),
+ TEST(cubicOp62d),
+ TEST(cubicOp61d),
+ TEST(cubicOp60d),
+ TEST(cubicOp59d),
+ TEST(cubicOp58d),
+ TEST(cubicOp57d),
+ TEST(cubicOp56d),
+ TEST(cubicOp55d),
+ TEST(cubicOp54d),
+ TEST(cubicOp53d),
+ TEST(cubicOp52d),
+ TEST(cubicOp51d),
+ TEST(cubicOp50d),
+ TEST(cubicOp49d),
+ TEST(cubicOp48d),
+ TEST(cubicOp47d),
+ TEST(cubicOp46d),
+ TEST(cubicOp45d),
+ TEST(cubicOp44d),
+ TEST(cubicOp43d),
+ TEST(cubicOp42d),
+ TEST(cubicOp41i),
+ TEST(cubicOp40d),
+ TEST(cubicOp39d),
+ TEST(cubicOp38d),
+ TEST(cubicOp37d),
+ TEST(cubicOp36u),
+ TEST(cubicOp35d),
+ TEST(cubicOp34d),
+ TEST(cubicOp33i),
+ TEST(cubicOp32d),
+ TEST(cubicOp31d),
+ TEST(testCubic2),
+ TEST(cubicOp31x),
+ TEST(cubicOp31u),
+ TEST(cubicOp30d),
+ TEST(cubicOp29d),
+ TEST(cubicOp28u),
+ TEST(cubicOp27d),
+ TEST(cubicOp26d),
+ TEST(cubicOp25i),
+ TEST(testOp8d),
+ TEST(testDiff1),
+ TEST(testIntersect1),
+ TEST(testUnion1),
+ TEST(testXor1),
+ TEST(testDiff2),
+ TEST(testIntersect2),
+ TEST(testUnion2),
+ TEST(testXor2),
+ TEST(testOp1d),
+ TEST(testOp2d),
+ TEST(testOp3d),
+ TEST(testOp1u),
+ TEST(testOp4d),
+ TEST(testOp5d),
+ TEST(testOp6d),
+ TEST(testOp7d),
+ TEST(testOp2u),
+
+ TEST(cubicOp24d),
+ TEST(cubicOp23d),
+ TEST(cubicOp22d),
+ TEST(cubicOp21d),
+ TEST(cubicOp20d),
+ TEST(cubicOp19i),
+ TEST(cubicOp18d),
+ TEST(cubicOp17d),
+ TEST(cubicOp16d),
+ TEST(cubicOp15d),
+ TEST(cubicOp14d),
+ TEST(cubicOp13d),
+ TEST(cubicOp12d),
+ TEST(cubicOp11d),
+ TEST(cubicOp10d),
+ TEST(cubicOp1i),
+ TEST(cubicOp9d),
+ TEST(quadOp9d),
+ TEST(lineOp9d),
+ TEST(cubicOp8d),
+ TEST(cubicOp7d),
+ TEST(cubicOp6d),
+ TEST(cubicOp5d),
+ TEST(cubicOp3d),
+ TEST(cubicOp2d),
+ TEST(cubicOp1d),
+ TEST(testCubic1),
+ TEST(testQuadralateral1),
+ TEST(testLine85),
+ TEST(testLine84),
+ TEST(testLine84x),
+ TEST(testLine83),
+ TEST(testLine82h),
+ TEST(testLine82g),
+ TEST(testLine82f),
+ TEST(testLine82e),
+ TEST(testLine82d),
+ TEST(testLine82c),
+ TEST(testLine82b),
+ TEST(testLine82a),
+ TEST(testLine82),
+ TEST(testQuadratic92x),
+ TEST(testQuadratic91),
+ TEST(testQuadratic90x),
+ TEST(testQuadratic89x),
+ TEST(testQuadratic88),
+ TEST(testQuadratic87),
+ TEST(testQuadratic86),
+ TEST(testQuadratic85),
+ TEST(testQuadratic84),
+ TEST(testQuadratic83),
+ TEST(testQuadratic82),
+ TEST(testQuadratic81),
+ TEST(testQuadratic80),
+ TEST(testEight1),
+ TEST(testEight2),
+ TEST(testEight3),
+ TEST(testEight4),
+ TEST(testEight5),
+ TEST(testEight6),
+ TEST(testEight7),
+ TEST(testEight8),
+ TEST(testEight9),
+ TEST(testEight10),
+ TEST(testQuadratic79),
+ TEST(testQuadratic78),
+ TEST(testQuadratic77),
+ TEST(testQuadratic76),
+ TEST(testQuadratic75),
+ TEST(testQuadratic74),
+ TEST(testQuadratic73),
+ TEST(testQuadratic72),
+ TEST(testQuadratic71),
+ TEST(testQuadratic70x),
+ TEST(testQuadratic69),
+ TEST(testQuadratic68),
+ TEST(testQuadratic67x),
+ TEST(testQuadratic65),
+ TEST(testQuadratic64),
+ TEST(testQuadratic63),
+ TEST(testLine1a),
+ TEST(testLine1ax),
+ TEST(testQuadratic59),
+ TEST(testQuadratic59x),
+ TEST(testQuadratic58),
+ TEST(testQuadratic56),
+ TEST(testQuadratic55),
+ TEST(testQuadratic53),
+ TEST(testQuadratic51),
+ TEST(testQuadratic38),
+ TEST(testQuadratic37),
+ TEST(testQuadratic36),
+ TEST(testQuadratic35),
+ TEST(testQuadratic34),
+ TEST(testQuadratic33),
+ TEST(testQuadratic32),
+ TEST(testQuadratic31),
+ TEST(testQuadratic30),
+ TEST(testQuadratic29),
+ TEST(testQuadratic28),
+ TEST(testQuadratic27),
+ TEST(testQuadratic26),
+ TEST(testQuadratic25),
+ TEST(testQuadratic24),
+ TEST(testQuadratic23),
+ TEST(testQuadratic22),
+ TEST(testQuadratic21),
+ TEST(testQuadratic20),
+ TEST(testQuadratic19),
+ TEST(testQuadratic18),
+ TEST(testQuadratic17x),
+ TEST(testQuadratic15),
+ TEST(testQuadratic14),
+ TEST(testQuadratic9),
+ TEST(testQuadratic8),
+ TEST(testQuadratic7),
+ TEST(testQuadratic6),
+ TEST(testQuadratic5),
+ TEST(testQuadratic4x),
+ TEST(testQuadratic3x),
+ TEST(testQuadratic2x),
+ TEST(testQuadratic1x),
+ TEST(testQuadratic4),
+ TEST(testQuadratic3),
+ TEST(testQuadratic2),
+ TEST(testQuadratic1),
+ TEST(testLine4ax),
+ TEST(testLine3aax),
+ TEST(testLine2ax),
+ TEST(testLine1ax),
+ TEST(testQuadralateral9x),
+ TEST(testQuadralateral8x),
+ TEST(testQuadralateral7x),
+ TEST(testQuadralateral6x),
+ TEST(testQuadralateral6ax),
+ TEST(testQuadralateral9),
+ TEST(testQuadralateral8),
+ TEST(testQuadralateral7),
+ TEST(testQuadralateral6),
+ TEST(testQuadralateral6a),
+ TEST(testFauxQuadralateral6dx),
+ TEST(testFauxQuadralateral6cx),
+ TEST(testFauxQuadralateral6bx),
+ TEST(testFauxQuadralateral6ax),
+ TEST(testFauxQuadralateral6x),
+ TEST(testFauxQuadralateral6d),
+ TEST(testFauxQuadralateral6c),
+ TEST(testFauxQuadralateral6b),
+ TEST(testFauxQuadralateral6a),
+ TEST(testFauxQuadralateral6),
+ TEST(testQuadralateral5x),
+ TEST(testQuadralateral5),
+ TEST(testNondegenerate4x),
+ TEST(testNondegenerate3x),
+ TEST(testNondegenerate2x),
+ TEST(testNondegenerate1x),
+ TEST(testNondegenerate4),
+ TEST(testNondegenerate3),
+ TEST(testNondegenerate2),
+ TEST(testNondegenerate1),
+ TEST(testDegenerate4x),
+ TEST(testDegenerate3x),
+ TEST(testDegenerate2x),
+ TEST(testDegenerate1x),
+ TEST(testDegenerate4),
+ TEST(testDegenerate3),
+ TEST(testDegenerate2),
+ TEST(testDegenerate1),
+ TEST(testLine79x),
+ TEST(testLine78x),
+ TEST(testLine77x),
+ TEST(testLine76x),
+ TEST(testLine75x),
+ TEST(testLine74x),
+ TEST(testLine73x),
+ TEST(testLine72x),
+ TEST(testLine71x),
+ TEST(testLine70x),
+ TEST(testLine69x),
+ TEST(testLine68hx),
+ TEST(testLine68gx),
+ TEST(testLine68fx),
+ TEST(testLine68ex),
+ TEST(testLine68dx),
+ TEST(testLine68cx),
+ TEST(testLine68bx),
+ TEST(testLine68ax),
+ TEST(testLine67x),
+ TEST(testLine66x),
+ TEST(testLine65x),
+ TEST(testLine64x),
+ TEST(testLine63x),
+ TEST(testLine62x),
+ TEST(testLine61x),
+ TEST(testLine60x),
+ TEST(testLine59x),
+ TEST(testLine58x),
+ TEST(testLine57x),
+ TEST(testLine56x),
+ TEST(testLine55x),
+ TEST(testLine54x),
+ TEST(testLine53x),
+ TEST(testLine52x),
+ TEST(testLine51x),
+ TEST(testLine50x),
+ TEST(testLine49x),
+ TEST(testLine48x),
+ TEST(testLine47x),
+ TEST(testLine46x),
+ TEST(testLine45x),
+ TEST(testLine44x),
+ TEST(testLine43x),
+ TEST(testLine42x),
+ TEST(testLine41x),
+ TEST(testLine40x),
+ TEST(testLine38x),
+ TEST(testLine37x),
+ TEST(testLine36x),
+ TEST(testLine35x),
+ TEST(testLine34x),
+ TEST(testLine33x),
+ TEST(testLine32x),
+ TEST(testLine31x),
+ TEST(testLine30x),
+ TEST(testLine29x),
+ TEST(testLine28x),
+ TEST(testLine27x),
+ TEST(testLine26x),
+ TEST(testLine25x),
+ TEST(testLine24ax),
+ TEST(testLine24x),
+ TEST(testLine23x),
+ TEST(testLine22x),
+ TEST(testLine21x),
+ TEST(testLine20x),
+ TEST(testLine19x),
+ TEST(testLine18x),
+ TEST(testLine17x),
+ TEST(testLine16x),
+ TEST(testLine15x),
+ TEST(testLine14x),
+ TEST(testLine13x),
+ TEST(testLine12x),
+ TEST(testLine11x),
+ TEST(testLine10ax),
+ TEST(testLine10x),
+ TEST(testLine9x),
+ TEST(testLine8x),
+ TEST(testLine7bx),
+ TEST(testLine7ax),
+ TEST(testLine7x),
+ TEST(testLine6x),
+ TEST(testLine5x),
+ TEST(testLine4x),
+ TEST(testLine3bx),
+ TEST(testLine3ax),
+ TEST(testLine3x),
+ TEST(testLine2x),
+ TEST(testLine1x),
+ TEST(testLine81),
+ TEST(testLine80),
+ TEST(testLine79),
+ TEST(testLine78),
+ TEST(testLine77),
+ TEST(testLine76),
+ TEST(testLine75),
+ TEST(testLine74),
+ TEST(testLine73),
+ TEST(testLine72),
+ TEST(testLine71),
+ TEST(testLine70),
+ TEST(testLine69),
+ TEST(testLine68h),
+ TEST(testLine68g),
+ TEST(testLine68f),
+ TEST(testLine68e),
+ TEST(testLine68d),
+ TEST(testLine68c),
+ TEST(testLine68b),
+ TEST(testLine68a),
+ TEST(testLine67),
+ TEST(testLine66),
+ TEST(testLine65),
+ TEST(testLine64),
+ TEST(testLine63),
+ TEST(testLine62),
+ TEST(testLine61),
+ TEST(testLine60),
+ TEST(testLine59),
+ TEST(testLine58),
+ TEST(testLine57),
+ TEST(testLine56),
+ TEST(testLine55),
+ TEST(testLine54),
+ TEST(testLine53),
+ TEST(testLine52),
+ TEST(testLine51),
+ TEST(testLine50),
+ TEST(testLine49),
+ TEST(testLine48),
+ TEST(testLine47),
+ TEST(testLine46),
+ TEST(testLine45),
+ TEST(testLine44),
+ TEST(testLine43),
+ TEST(testLine42),
+ TEST(testLine41),
+ TEST(testLine40),
+ TEST(testLine38),
+ TEST(testLine37),
+ TEST(testLine36),
+ TEST(testLine35),
+ TEST(testLine34),
+ TEST(testLine33),
+ TEST(testLine32),
+ TEST(testLine31),
+ TEST(testLine30),
+ TEST(testLine29),
+ TEST(testLine28),
+ TEST(testLine27),
+ TEST(testLine26),
+ TEST(testLine25),
+ TEST(testLine24a),
+ TEST(testLine24),
+ TEST(testLine23),
+ TEST(testLine22),
+ TEST(testLine21),
+ TEST(testLine20),
+ TEST(testLine19),
+ TEST(testLine18),
+ TEST(testLine17),
+ TEST(testLine16),
+ TEST(testLine15),
+ TEST(testLine14),
+ TEST(testLine13),
+ TEST(testLine12),
+ TEST(testLine11),
+ TEST(testLine10a),
+ TEST(testLine10),
+ TEST(testLine9),
+ TEST(testLine8),
+ TEST(testLine7b),
+ TEST(testLine7a),
+ TEST(testLine7),
+ TEST(testLine6),
+ TEST(testLine5),
+ TEST(testLine4),
+ TEST(testLine3b),
+ TEST(testLine3a),
+ TEST(testLine3),
+ TEST(testLine2),
+ TEST(testLine1),
+};
+
+static const size_t testCount = sizeof(tests) / sizeof(tests[0]);
+
+
+static struct {
+ void (*fun)();
+ const char* str;
+} subTests[] = {
+ TEST(cubicOp43d),
+ TEST(quadOp9d),
+ TEST(cubicOp9d),
+ TEST(cubicOp1i),
+ TEST(cubicOp10d),
+ TEST(cubicOp11d),
+ TEST(cubicOp15d),
+ TEST(cubicOp18d),
+ TEST(cubicOp22d),
+ TEST(cubicOp23d),
+ TEST(cubicOp24d),
+ TEST(cubicOp28u),
+ TEST(cubicOp33i),
+ TEST(cubicOp36u),
+ TEST(cubicOp40d),
+};
+
+static const size_t subTestCount = sizeof(subTests) / sizeof(subTests[0]);
+
+static void (*firstSubTest)() = 0;
+
+static bool skipAll = false;
+static bool runSubTestsFirst = false;
+static bool runReverse = false;
+static void (*stopTest)() = 0;
+
+void SimplifyNew_Test() {
+ if (skipAll) {
+ return;
+ }
+#ifdef SK_DEBUG
+ gDebugMaxWindSum = 4;
+ gDebugMaxWindValue = 4;
+#endif
+ size_t index;
+ if (runSubTestsFirst && firstSubTest) {
+ index = subTestCount - 1;
+ while (index > 0 && subTests[index].fun != firstSubTest) {
+ --index;
+ }
+ SkDebugf(" %s [%s]\n", __FUNCTION__, subTests[index].str);
+ (*subTests[index].fun)();
+ }
+ if (runSubTestsFirst) {
+ index = subTestCount - 1;
+ do {
+ SkDebugf(" %s [%s]\n", __FUNCTION__, subTests[index].str);
+ (*subTests[index].fun)();
+ } while (index--);
+ }
+ index = testCount - 1;
+ if (firstTest) {
+ while (index > 0 && tests[index].fun != firstTest) {
+ --index;
+ }
+ #if FORCE_RELEASE == 0
+ SkDebugf("<div id=\"%s\">\n", tests[index].str);
+ #endif
+ SkDebugf(" %s [%s]\n", __FUNCTION__, tests[index].str);
+ (*tests[index].fun)();
+ }
+ index = runReverse ? testCount - 1 : 0;
+ size_t last = runReverse ? 0 : testCount - 1;
+ bool firstTestComplete = false;
+ do {
+ SkDebugf(" %s [%s]\n", __FUNCTION__, tests[index].str);
+ (*tests[index].fun)();
+ firstTestComplete = true;
+ if (tests[index].fun == stopTest) {
+ SkDebugf("lastTest\n");
+ }
+ if (index == last) {
+ break;
+ }
+ index += runReverse ? -1 : 1;
+ } while (true);
+ if (!runSubTestsFirst) {
+ index = subTestCount - 1;
+ do {
+ SkDebugf(" %s [%s]\n", __FUNCTION__, subTests[index].str);
+ (*subTests[index].fun)();
+ } while (index--);
+ }
+#ifdef SK_DEBUG
+ gDebugMaxWindSum = SK_MaxS32;
+ gDebugMaxWindValue = SK_MaxS32;
+#endif
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/SimplifyRect4x4_Test.cpp b/chromium/third_party/skia/experimental/Intersection/SimplifyRect4x4_Test.cpp
new file mode 100644
index 00000000000..caa4597e205
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/SimplifyRect4x4_Test.cpp
@@ -0,0 +1,200 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "EdgeWalker_Test.h"
+#include "Intersection_Tests.h"
+#include "ShapeOps.h"
+
+// four rects, of four sizes
+// for 3 smaller sizes, tall, wide
+ // top upper mid lower bottom aligned (3 bits, 5 values)
+ // same with x (3 bits, 5 values)
+// not included, square, tall, wide (2 bits)
+// cw or ccw (1 bit)
+
+static void* testSimplify4x4RectsMain(void* data)
+{
+ SkASSERT(data);
+ State4& state = *(State4*) data;
+ char pathStr[1024]; // gdb: set print elements 400
+ bzero(pathStr, sizeof(pathStr));
+ do {
+ int aShape = state.a & 0x03;
+ SkPath::Direction aCW = state.a >> 2 ? SkPath::kCCW_Direction : SkPath::kCW_Direction;
+ int bShape = state.b & 0x03;
+ SkPath::Direction bCW = state.b >> 2 ? SkPath::kCCW_Direction : SkPath::kCW_Direction;
+ int cShape = state.c & 0x03;
+ SkPath::Direction cCW = state.c >> 2 ? SkPath::kCCW_Direction : SkPath::kCW_Direction;
+ int dShape = state.d & 0x03;
+ SkPath::Direction dCW = state.d >> 2 ? SkPath::kCCW_Direction : SkPath::kCW_Direction;
+ for (int aXAlign = 0 ; aXAlign < 5; ++aXAlign) {
+ for (int aYAlign = 0 ; aYAlign < 5; ++aYAlign) {
+ for (int bXAlign = 0 ; bXAlign < 5; ++bXAlign) {
+ for (int bYAlign = 0 ; bYAlign < 5; ++bYAlign) {
+ for (int cXAlign = 0 ; cXAlign < 5; ++cXAlign) {
+ for (int cYAlign = 0 ; cYAlign < 5; ++cYAlign) {
+ for (int dXAlign = 0 ; dXAlign < 5; ++dXAlign) {
+ for (int dYAlign = 0 ; dYAlign < 5; ++dYAlign) {
+ SkPath path, out;
+ char* str = pathStr;
+ path.setFillType(SkPath::kWinding_FillType);
+ int l, t, r, b;
+ if (aShape) {
+ switch (aShape) {
+ case 1: // square
+ l = 0; r = 60;
+ t = 0; b = 60;
+ aXAlign = 5;
+ aYAlign = 5;
+ break;
+ case 2:
+ l = aXAlign * 12;
+ r = l + 30;
+ t = 0; b = 60;
+ aYAlign = 5;
+ break;
+ case 3:
+ l = 0; r = 60;
+ t = aYAlign * 12;
+ b = l + 30;
+ aXAlign = 5;
+ break;
+ }
+ path.addRect(l, t, r, b, aCW);
+ str += sprintf(str, " path.addRect(%d, %d, %d, %d,"
+ " SkPath::kC%sW_Direction);\n", l, t, r, b, aCW ? "C" : "");
+ } else {
+ aXAlign = 5;
+ aYAlign = 5;
+ }
+ if (bShape) {
+ switch (bShape) {
+ case 1: // square
+ l = bXAlign * 10;
+ r = l + 20;
+ t = bYAlign * 10;
+ b = l + 20;
+ break;
+ case 2:
+ l = bXAlign * 10;
+ r = l + 20;
+ t = 10; b = 40;
+ bYAlign = 5;
+ break;
+ case 3:
+ l = 10; r = 40;
+ t = bYAlign * 10;
+ b = l + 20;
+ bXAlign = 5;
+ break;
+ }
+ path.addRect(l, t, r, b, bCW);
+ str += sprintf(str, " path.addRect(%d, %d, %d, %d,"
+ " SkPath::kC%sW_Direction);\n", l, t, r, b, bCW ? "C" : "");
+ } else {
+ bXAlign = 5;
+ bYAlign = 5;
+ }
+ if (cShape) {
+ switch (cShape) {
+ case 1: // square
+ l = cXAlign * 6;
+ r = l + 12;
+ t = cYAlign * 6;
+ b = l + 12;
+ break;
+ case 2:
+ l = cXAlign * 6;
+ r = l + 12;
+ t = 20; b = 30;
+ cYAlign = 5;
+ break;
+ case 3:
+ l = 20; r = 30;
+ t = cYAlign * 6;
+ b = l + 20;
+ cXAlign = 5;
+ break;
+ }
+ path.addRect(l, t, r, b, cCW);
+ str += sprintf(str, " path.addRect(%d, %d, %d, %d,"
+ " SkPath::kC%sW_Direction);\n", l, t, r, b, cCW ? "C" : "");
+ } else {
+ cXAlign = 5;
+ cYAlign = 5;
+ }
+ if (dShape) {
+ switch (dShape) {
+ case 1: // square
+ l = dXAlign * 4;
+ r = l + 9;
+ t = dYAlign * 4;
+ b = l + 9;
+ break;
+ case 2:
+ l = dXAlign * 6;
+ r = l + 9;
+ t = 32; b = 36;
+ dYAlign = 5;
+ break;
+ case 3:
+ l = 32; r = 36;
+ t = dYAlign * 6;
+ b = l + 9;
+ dXAlign = 5;
+ break;
+ }
+ path.addRect(l, t, r, b, dCW);
+ str += sprintf(str, " path.addRect(%d, %d, %d, %d,"
+ " SkPath::kC%sW_Direction);\n", l, t, r, b, dCW ? "C" : "");
+ } else {
+ dXAlign = 5;
+ dYAlign = 5;
+ }
+ path.close();
+ outputProgress(state, pathStr, SkPath::kWinding_FillType);
+ testSimplifyx(path, false, out, state, pathStr);
+ state.testsRun++;
+ outputProgress(state, pathStr, SkPath::kEvenOdd_FillType);
+ testSimplifyx(path, true, out, state, pathStr);
+ state.testsRun++;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ } while (runNextTestSet(state));
+ return NULL;
+}
+
+void Simplify4x4RectsThreaded_Test(int& testsRun)
+{
+ SkDebugf("%s\n", __FUNCTION__);
+#ifdef SK_DEBUG
+ gDebugMaxWindSum = 4;
+ gDebugMaxWindValue = 4;
+#endif
+ const char testLineStr[] = "testLine";
+ initializeTests(testLineStr, sizeof(testLineStr));
+ int testsStart = testsRun;
+ for (int a = 0; a < 8; ++a) { // outermost
+ for (int b = a ; b < 8; ++b) {
+ for (int c = b ; c < 8; ++c) {
+ for (int d = c; d < 8; ++d) {
+ testsRun += dispatchTest4(testSimplify4x4RectsMain, a, b, c, d);
+ }
+ if (!gRunTestsInOneThread) SkDebugf(".");
+ }
+ if (!gRunTestsInOneThread) SkDebugf("%d", b);
+ }
+ if (!gRunTestsInOneThread) SkDebugf("\n%d", a);
+ }
+ testsRun += waitForCompletion();
+ SkDebugf("%s tests=%d total=%d\n", __FUNCTION__, testsRun - testsStart, testsRun);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/SkAntiEdge.cpp b/chromium/third_party/skia/experimental/Intersection/SkAntiEdge.cpp
new file mode 100644
index 00000000000..2cce960e52d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/SkAntiEdge.cpp
@@ -0,0 +1,1086 @@
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "SkAntiEdge.h"
+#include "SkPoint.h"
+
+/** Returns the signed fraction of a SkFixed
+ */
+static inline SkFixed SkFixedFraction(SkFixed x)
+{
+ SkFixed mask = x >> 31 << 16;
+ return (x & 0xFFFF) | mask;
+}
+
+void SkAntiEdge::pointOnLine(SkFixed x, SkFixed y) {
+ float x0 = SkFixedToFloat(x);
+ float y0 = SkFixedToFloat(y);
+ float x1 = SkFixedToFloat(fFirstX);
+ float y1 = SkFixedToFloat(fFirstY);
+ float x2 = SkFixedToFloat(fLastX);
+ float y2 = SkFixedToFloat(fLastY);
+ float numer = (x2 - x1) * (y1 - y0) - (x1 - x0) * (y2 - y1);
+ float denom = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);
+ double dist = fabs(numer) / sqrt(denom);
+ SkAssertResult(dist < 0.01);
+}
+
+void SkAntiEdge::pointInLine(SkFixed x, SkFixed y) {
+ if (y == SK_MaxS32) {
+ return;
+ }
+ pointOnLine(x, y);
+ SkAssertResult(y >= fFirstY && y <= fLastY);
+}
+
+void SkAntiEdge::validate() {
+ pointOnLine(fWalkX, fY);
+ pointOnLine(fX, fWalkY);
+}
+
+bool SkAntiEdge::setLine(const SkPoint& p0, const SkPoint& p1) {
+ fFirstY = SkScalarToFixed(p0.fY);
+ fLastY = SkScalarToFixed(p1.fY);
+ if (fFirstY == fLastY) {
+ return false;
+ }
+ fFirstX = SkScalarToFixed(p0.fX);
+ fLastX = SkScalarToFixed(p1.fX);
+ if (fFirstY > fLastY) {
+ SkTSwap(fFirstX, fLastX);
+ SkTSwap(fFirstY, fLastY);
+ fWinding = -1;
+ } else {
+ fWinding = 1;
+ }
+ SkFixed dx = fLastX - fFirstX;
+ fDXFlipped = dx < 0;
+ SkFixed dy = fLastY - fFirstY;
+ fDX = SkFixedDiv(dx, dy);
+ fDY = dx == 0 ? SK_MaxS32 : SkFixedDiv(dy, SkFixedAbs(dx));
+ fLink = NULL;
+ fLinkSet = false;
+ return true;
+}
+
+void SkAntiEdge::calcLine() {
+ SkFixed yStartFrac = SkFixedFraction(fFirstY);
+ if (fDXFlipped) {
+ SkFixed vert = SK_Fixed1 - yStartFrac; // distance from y start to x-axis
+ fX0 = fFirstX + SkFixedMul(fDX, vert);
+ SkFixed backupX = fFirstX + SkFixedMul(vert, fDX); // x cell to back up to
+ SkFixed cellX = SkIntToFixed(SkFixedFloor(backupX));
+ SkFixed endX = SkIntToFixed(SkFixedFloor(fLastX));
+ if (cellX < endX) {
+ cellX = endX;
+ }
+ SkFixed distX = fFirstX - cellX; // to y-axis
+ fY0 = fFirstY + SkFixedMul(fDY, distX);
+ SkFixed rowBottom = SkIntToFixed(SkFixedCeil(fFirstY + 1));
+ if (fLastY > rowBottom) {
+ fPartialY = 0;
+ fX = fX0;
+ fY = rowBottom;
+ } else {
+ fPartialY = SkFixedFraction(fLastY);
+ fX = fLastX;
+ fY = fLastY;
+ }
+ } else {
+ fPartialY = yStartFrac;
+ fX0 = fFirstX - SkFixedMul(fDX, yStartFrac);
+ fY0 = fFirstY;
+ if (fDY != SK_MaxS32) {
+ SkFixed xStartFrac = SkFixedFraction(fFirstX);
+ fY0 -= SkFixedMul(fDY, xStartFrac);
+ }
+ fX = fFirstX;
+ fY = fFirstY;
+ }
+ fWalkX = fX;
+ fWalkY = fY;
+ fFinished = false;
+}
+
+static SkFixed SkFixedAddPin(SkFixed a, SkFixed b) {
+ SkFixed result = a + b;
+ if (((a ^ ~b) & (a ^ result)) >= 0) { // one positive, one negative
+ return result; // or all three same sign
+ }
+ return a < 0 ? -SK_FixedMax : SK_FixedMax;
+}
+
+// edge is increasing in x and y
+uint16_t SkAntiEdge::advanceX(SkFixed left) {
+ validate();
+ SkFixed x = SkFixedAddPin(fX0, fDX);
+ SkFixed wy = SkIntToFixed(SkFixedFloor(fWalkY + SK_Fixed1));
+ pointOnLine(x, wy);
+ SkFixed partial = SK_Fixed1 - fPartialY;
+ SkFixed bottomPartial = wy - fLastY;
+ if (bottomPartial > 0) {
+ partial -= bottomPartial;
+ }
+ if (x > fLastX) {
+ x = fLastX;
+ wy = fLastY;
+ }
+ uint16_t coverage;
+ if (left >= x) {
+ fFinished = true;
+ coverage = partial - 1; // walker is to the right of edge
+ } else {
+ SkFixed y = SkFixedAddPin(fY0, fDY);
+ SkFixed wx = SkIntToFixed(SkFixedFloor(fWalkX + SK_Fixed1));
+ if (fDY != SK_MaxS32) {
+ pointOnLine(wx, y);
+ }
+ if (y > fLastY) {
+ y = fLastY;
+ wx = fLastX;
+ }
+ bool topCorner = fWalkX <= fX;
+ bool bottomCorner = x <= wx;
+ bool halfPlane = !(topCorner ^ bottomCorner);
+ if (halfPlane) {
+ if (x - SkIntToFixed(SkFixedFloor(fX)) <= SK_Fixed1) {
+ coverage = ~((fX + x) >> 1); // avg of fx, fx+dx
+ fFinished = true;
+ if (x >= left + SK_Fixed1) {
+ fWalkX = wx;
+ fY = fY0 = y;
+ }
+ } else {
+ SkAssertResult(y - SkIntToFixed(SkFixedFloor(fY)) <= SK_Fixed1);
+ coverage = ((fY + y) >> 1);
+ fFinished = y == fLastY;
+ fWalkX = wx;
+ fY = fY0 = y;
+ }
+ coverage = coverage * partial >> 16;
+ } else if (topCorner) {
+ SkFixed xDiff = wx - fX;
+ SkAssertResult(xDiff >= 0);
+ SkAssertResult(xDiff <= SK_Fixed1);
+ SkFixed yDiff = y - fWalkY;
+ // This may be a very small negative number if error accumulates
+ // FIXME: for now, try setting it to zero in that case.
+ if (yDiff < 0) {
+ fX = fX0 = SkIntToFixed(SkFixedCeil(fX));
+ yDiff = 0;
+ }
+ SkAssertResult(yDiff >= 0);
+ SkAssertResult(yDiff <= SK_Fixed1);
+ int xCoverage = xDiff >> 1; // throw away 1 bit so multiply
+ int yCoverage = yDiff >> 1; // stays in range
+ int triangle = xCoverage * yCoverage; // 30 bits
+ SkFixed bottomPartial = y - fLastY;
+ fFinished = bottomPartial >= 0;
+ if (fFinished) {
+ yCoverage = bottomPartial >> 1;
+ xCoverage = (wx - fLastX) >> 1;
+ triangle -= xCoverage * yCoverage;
+ }
+ coverage = triangle >> 15;
+ fWalkX = wx;
+ fY = fY0 = y;
+ } else {
+ SkAssertResult(bottomCorner);
+ SkFixed xDiff = x - fWalkX;
+ SkAssertResult(xDiff >= 0);
+ SkAssertResult(xDiff <= SK_Fixed1);
+ SkFixed yDiff = wy - fY;
+ SkAssertResult(yDiff >= 0);
+ SkAssertResult(yDiff <= SK_Fixed1);
+ int xCoverage = xDiff >> 1; // throw away 1 bit so multiply
+ int yCoverage = yDiff >> 1; // stays in range
+ int triangle = xCoverage * yCoverage >> 15;
+ coverage = partial - 1 - triangle;
+ fFinished = true;
+ }
+ }
+ validate();
+ return coverage;
+}
+
+// edge is increasing in x, but decreasing in y
+uint16_t SkAntiEdge::advanceFlippedX(SkFixed left) {
+ validate();
+ SkFixed x = SkFixedAddPin(fX0, -fDX);
+ SkFixed wy = SkIntToFixed(SkFixedFloor(fWalkY - 1));
+ pointOnLine(x, wy);
+ SkFixed partial = fPartialY ? fPartialY : SK_Fixed1;
+ SkFixed topPartial = fFirstY - wy;
+ if (topPartial > 0) {
+ partial -= topPartial;
+ }
+ if (x > fFirstX) {
+ x = fFirstX;
+ wy = fFirstY;
+ }
+ uint16_t coverage;
+ if (left >= x) {
+ fFinished = true;
+ coverage = partial - 1; // walker is to the right of edge
+ } else {
+ SkFixed y = SkFixedAddPin(fY0, -fDY);
+ SkFixed wx = SkIntToFixed(SkFixedFloor(fWalkX + SK_Fixed1));
+ pointOnLine(wx, y);
+ if (y < fFirstY) {
+ y = fFirstY;
+ wx = fFirstX;
+ }
+ bool bottomCorner = fWalkX <= fX;
+ bool topCorner = x <= wx;
+ bool halfPlane = !(topCorner ^ bottomCorner);
+ if (halfPlane) {
+ if (x - SkIntToFixed(SkFixedFloor(fX)) <= SK_Fixed1) {
+ coverage = ~((fX + x) >> 1); // avg of fx, fx+dx
+ fFinished = true;
+ } else {
+ SkAssertResult(y - SkIntToFixed(SkFixedFloor(fY)) <= SK_Fixed1);
+ coverage = ~((fY + y) >> 1);
+ fFinished = y == fY;
+ fWalkX = wx;
+ fY = fY0 = y;
+ }
+ coverage = coverage * partial >> 16;
+ } else if (bottomCorner) {
+ SkFixed xDiff = wx - fX;
+ SkAssertResult(xDiff >= 0);
+ SkAssertResult(xDiff <= SK_Fixed1);
+ SkFixed yDiff = fWalkY - y;
+ SkAssertResult(yDiff >= 0);
+ SkAssertResult(yDiff <= SK_Fixed1);
+ int xCoverage = xDiff >> 1; // throw away 1 bit so multiply
+ int yCoverage = yDiff >> 1; // stays in range
+ int triangle = xCoverage * yCoverage; // 30 bits
+ SkFixed bottomPartial = fFirstY - y;
+ fFinished = bottomPartial >= 0;
+ if (fFinished) {
+ yCoverage = bottomPartial >> 1;
+ xCoverage = (wx - fFirstX) >> 1;
+ triangle -= xCoverage * yCoverage;
+ }
+ coverage = triangle >> 15;
+ fWalkX = wx;
+ fY = fY0 = y;
+ } else {
+ SkAssertResult(topCorner);
+ SkFixed xDiff = x - fWalkX;
+ SkAssertResult(xDiff >= 0);
+ SkAssertResult(xDiff <= SK_Fixed1);
+ SkFixed yDiff = fY - wy;
+ SkAssertResult(yDiff >= 0);
+ SkAssertResult(yDiff <= SK_Fixed1);
+ int xCoverage = xDiff >> 1; // throw away 1 bit so multiply
+ int yCoverage = yDiff >> 1; // stays in range
+ int triangle = xCoverage * yCoverage >> 15;
+ coverage = partial - 1 - triangle;
+ fFinished = true;
+ }
+ }
+ validate();
+ return coverage;
+}
+
+void SkAntiEdge::advanceY(SkFixed top) {
+ validate();
+ fX0 = SkFixedAddPin(fX0, fDX);
+ fPartialY = 0;
+ if (fDXFlipped) {
+ if (fX0 < fLastX) {
+ fWalkX = fX = fLastX;
+ } else {
+ fWalkX = fX = fX0;
+ }
+ SkFixed bottom = top + SK_Fixed1;
+ if (bottom > fLastY) {
+ bottom = fLastY;
+ }
+ SkFixed vert = bottom - fFirstY; // distance from y start to x-axis
+ SkFixed backupX = fFirstX + SkFixedMul(vert, fDX); // x cell to back up to
+ SkFixed distX = fFirstX - SkIntToFixed(SkFixedFloor(backupX)); // to y-axis
+ fY0 = fFirstY + SkFixedMul(fDY, distX);
+
+ fY = top + SK_Fixed1;
+ if (fY > fLastY) {
+ fY = fLastY;
+ }
+ if (fLastY < top + SK_Fixed1) {
+ fPartialY = SkFixedFraction(fLastY);
+ }
+ } else {
+ if (fX0 > fLastX) {
+ fX0 = fLastX;
+ }
+ fX = fX0;
+ }
+ fWalkY = SkIntToFixed(SkFixedFloor(fWalkY + SK_Fixed1));
+ if (fWalkY > fLastY) {
+ fWalkY = fLastY;
+ }
+ validate();
+ fFinished = false;
+}
+
+int SkAntiEdgeBuilder::build(const SkPoint pts[], int count) {
+ SkAntiEdge* edge = fEdges.append();
+ for (int index = 0; index < count; ++index) {
+ if (edge->setLine(pts[index], pts[(index + 1) % count])) {
+ edge = fEdges.append();
+ }
+ }
+ int result = fEdges.count();
+ fEdges.setCount(--result);
+ if (result > 0) {
+ sk_bzero(&fHeadEdge, sizeof(fHeadEdge));
+ sk_bzero(&fTailEdge, sizeof(fTailEdge));
+ for (int index = 0; index < result; ++index) {
+ *fList.append() = &fEdges[index];
+ }
+ }
+ return result;
+}
+
+void SkAntiEdgeBuilder::calc() {
+ for (SkAntiEdge* active = fEdges.begin(); active != fEdges.end(); ++active) {
+ active->calcLine();
+ }
+ // compute winding sum for edges
+ SkAntiEdge* first = fHeadEdge.fNext;
+ SkAntiEdge* active;
+ SkAntiEdge* listTop = first;
+ for (active = first; active != &fTailEdge; active = active->fNext) {
+ active->fWindingSum = active->fWinding;
+ while (listTop->fLastY < active->fFirstY) {
+ listTop = listTop->fNext;
+ }
+ for (SkAntiEdge* check = listTop; check->fFirstY <= active->fFirstY; check = check->fNext) {
+ if (check == active) {
+ continue;
+ }
+ if (check->fLastY <= active->fFirstY) {
+ continue;
+ }
+ if (check->fFirstX > active->fFirstX) {
+ continue;
+ }
+ if (check->fFirstX == active->fFirstX && check->fDX > active->fDX) {
+ continue;
+ }
+ active->fWindingSum += check->fWinding;
+ }
+ }
+}
+
+extern "C" {
+ static int edge_compare(const void* a, const void* b) {
+ const SkAntiEdge* edgea = *(const SkAntiEdge**)a;
+ const SkAntiEdge* edgeb = *(const SkAntiEdge**)b;
+
+ int valuea = edgea->fFirstY;
+ int valueb = edgeb->fFirstY;
+
+ if (valuea == valueb) {
+ valuea = edgea->fFirstX;
+ valueb = edgeb->fFirstX;
+ }
+
+ if (valuea == valueb) {
+ valuea = edgea->fDX;
+ valueb = edgeb->fDX;
+ }
+
+ return valuea - valueb;
+ }
+}
+
+void SkAntiEdgeBuilder::sort(SkTDArray<SkAntiEdge*>& listOfEdges) {
+ SkAntiEdge** list = listOfEdges.begin();
+ int count = listOfEdges.count();
+ qsort(list, count, sizeof(SkAntiEdge*), edge_compare);
+
+ // link the edges in sorted order
+ for (int i = 1; i < count; i++) {
+ list[i - 1]->fNext = list[i];
+ list[i]->fPrev = list[i - 1];
+ }
+}
+
+#define kEDGE_HEAD_XY SK_MinS32
+#define kEDGE_TAIL_XY SK_MaxS32
+
+void SkAntiEdgeBuilder::sort() {
+ sort(fList);
+ SkAntiEdge* last = fList.end()[-1];
+ fHeadEdge.fNext = fList[0];
+ fHeadEdge.fFirstX = fHeadEdge.fFirstY = fHeadEdge.fWalkY = fHeadEdge.fLastY = kEDGE_HEAD_XY;
+ fList[0]->fPrev = &fHeadEdge;
+
+ fTailEdge.fPrev = last;
+ fTailEdge.fFirstX = fTailEdge.fFirstY = fTailEdge.fWalkY = fTailEdge.fLastY = kEDGE_TAIL_XY;
+ last->fNext = &fTailEdge;
+}
+
+static inline void remove_edge(SkAntiEdge* edge) {
+ edge->fPrev->fNext = edge->fNext;
+ edge->fNext->fPrev = edge->fPrev;
+}
+
+static inline void swap_edges(SkAntiEdge* prev, SkAntiEdge* next) {
+ SkASSERT(prev->fNext == next && next->fPrev == prev);
+
+ // remove prev from the list
+ prev->fPrev->fNext = next;
+ next->fPrev = prev->fPrev;
+
+ // insert prev after next
+ prev->fNext = next->fNext;
+ next->fNext->fPrev = prev;
+ next->fNext = prev;
+ prev->fPrev = next;
+}
+
+static void backward_insert_edge_based_on_x(SkAntiEdge* edge SkDECLAREPARAM(int, y)) {
+ SkFixed x = edge->fFirstX;
+
+ for (;;) {
+ SkAntiEdge* prev = edge->fPrev;
+
+ // add 1 to curr_y since we may have added new edges (built from curves)
+ // that start on the next scanline
+ SkASSERT(prev && SkFixedFloor(prev->fWalkY - prev->fDXFlipped) <= y + 1);
+
+ if (prev->fFirstX <= x) {
+ break;
+ }
+ swap_edges(prev, edge);
+ }
+}
+
+static void insert_new_edges(SkAntiEdge* newEdge, SkFixed curr_y) {
+ int y = SkFixedFloor(curr_y);
+ if (SkFixedFloor(newEdge->fWalkY - newEdge->fDXFlipped) < y) {
+ return;
+ }
+ while (SkFixedFloor(newEdge->fWalkY - newEdge->fDXFlipped) == y) {
+ SkAntiEdge* next = newEdge->fNext;
+ backward_insert_edge_based_on_x(newEdge SkPARAM(y));
+ newEdge = next;
+ }
+}
+
+static int find_active_edges(int y, SkAntiEdge** activeLeft,
+ SkAntiEdge** activeLast) {
+ SkAntiEdge* first = *activeLeft;
+ SkFixed bottom = first->fLastY;
+ SkAntiEdge* active = first->fNext;
+ first->fLinkSet = false;
+ SkFixed yLimit = SkIntToFixed(y + 1); // limiting pixel edge
+ for ( ; active->fWalkY != kEDGE_TAIL_XY; active = active->fNext) {
+ active->fLinkSet = false;
+ if (yLimit <= active->fWalkY - active->fDXFlipped) {
+ break;
+ }
+ if ((*activeLeft)->fWalkX > active->fWalkX) {
+ *activeLeft = active;
+ }
+ if (bottom > active->fLastY) {
+ bottom = active->fLastY;
+ }
+ }
+ *activeLast = active;
+ return SkFixedCeil(bottom);
+}
+
+// All edges are oriented to increase in y. Link edges with common tops and
+// bottoms so the links can share their winding sum.
+void SkAntiEdgeBuilder::link() {
+ SkAntiEdge* tail = fEdges.end();
+ // look for links forwards and backwards
+ SkAntiEdge* prev = fEdges.begin();
+ SkAntiEdge* active;
+ for (active = prev + 1; active != tail; ++active) {
+ if (prev->fWinding == active->fWinding) {
+ if (prev->fLastX == active->fFirstX && prev->fLastY == active->fFirstY) {
+ prev->fLink = active;
+ active->fLinkSet = true;
+ } else if (active->fLastX == prev->fFirstX && active->fLastY == prev->fFirstY) {
+ active->fLink = prev;
+ prev->fLinkSet = true;
+ }
+ }
+ prev = active;
+ }
+ // look for stragglers
+ prev = fEdges.begin() - 1;
+ do {
+ do {
+ if (++prev == tail) {
+ return;
+ }
+ } while (prev->fLinkSet || NULL != prev->fLink);
+ for (active = prev + 1; active != tail; ++active) {
+ if (active->fLinkSet || NULL != active->fLink) {
+ continue;
+ }
+ if (prev->fWinding != active->fWinding) {
+ continue;
+ }
+ if (prev->fLastX == active->fFirstX && prev->fLastY == active->fFirstY) {
+ prev->fLink = active;
+ active->fLinkSet = true;
+ break;
+ }
+ if (active->fLastX == prev->fFirstX && active->fLastY == prev->fFirstY) {
+ active->fLink = prev;
+ prev->fLinkSet = true;
+ break;
+ }
+ }
+ } while (true);
+}
+
+void SkAntiEdgeBuilder::split(SkAntiEdge* edge, SkFixed y) {
+ SkPoint upperPoint = {edge->fFirstX, edge->fFirstY};
+ SkPoint midPoint = {edge->fFirstX + SkMulDiv(y - edge->fFirstY,
+ edge->fLastX - edge->fFirstX, edge->fLastY - edge->fFirstY), y};
+ SkPoint lowerPoint = {edge->fLastX, edge->fLastY};
+ int8_t winding = edge->fWinding;
+ edge->setLine(upperPoint, midPoint);
+ edge->fWinding = winding;
+ SkAntiEdge* lower = fEdges.append();
+ lower->setLine(midPoint, lowerPoint);
+ lower->fWinding = winding;
+ insert_new_edges(lower, y);
+}
+
+// An edge computes pixel coverage by considering the integral winding value
+// to its left. If an edge is enclosed by fractional winding, split it.
+// FIXME: This is also a good time to find crossing edges and split them, too.
+void SkAntiEdgeBuilder::split() {
+ // create a new set of edges that describe the whole link
+ SkTDArray<SkAntiEdge> links;
+ SkAntiEdge* first = fHeadEdge.fNext;
+ SkAntiEdge* active;
+ for (active = first; active != &fTailEdge; active = active->fNext) {
+ if (active->fLinkSet || NULL == active->fLink) {
+ continue;
+ }
+ SkAntiEdge* link = links.append();
+ link->fFirstX = active->fFirstX;
+ link->fFirstY = active->fFirstY;
+ SkAntiEdge* linkEnd;
+ SkAntiEdge* next = active;
+ do {
+ linkEnd = next;
+ next = next->fLink;
+ } while (NULL != next);
+ link->fLastX = linkEnd->fLastX;
+ link->fLastY = linkEnd->fLastY;
+ }
+ // create a list of all edges, links and singletons
+ SkTDArray<SkAntiEdge*> list;
+ for (active = links.begin(); active != links.end(); ++active) {
+ *list.append() = active;
+ }
+ for (active = first; active != &fTailEdge; active = active->fNext) {
+ if (!active->fLinkSet && NULL == active->fLink) {
+ SkAntiEdge* link = links.append();
+ link->fFirstX = active->fFirstX;
+ link->fFirstY = active->fFirstY;
+ link->fLastX = active->fLastX;
+ link->fLastY = active->fLastY;
+ *list.append() = link;
+ }
+ }
+ SkAntiEdge tail;
+ tail.fFirstY = tail.fLastY = kEDGE_TAIL_XY;
+ *list.append() = &tail;
+ sort(list);
+ // walk the list, splitting edges partially occluded on the left
+ SkAntiEdge* listTop = list[0];
+ for (active = first; active != &fTailEdge; active = active->fNext) {
+ while (listTop->fLastY < active->fFirstY) {
+ listTop = listTop->fNext;
+ }
+ for (SkAntiEdge* check = listTop; check->fFirstY < active->fLastY; check = check->fNext) {
+ if (check->fFirstX > active->fFirstX) {
+ continue;
+ }
+ if (check->fFirstX == active->fFirstX && check->fDX > active->fDX) {
+ continue;
+ }
+ if (check->fFirstY > active->fFirstY) {
+ split(active, check->fFirstY);
+ }
+ if (check->fLastY < active->fLastY) {
+ split(active, check->fLastY);
+ }
+ }
+ }
+}
+
+static inline uint8_t coverage_to_8(int coverage) {
+ uint16_t x = coverage < 0 ? 0 : coverage > 0xFFFF ? 0xFFFF : coverage;
+ // for values 0x7FFF and smaller, add (0x7F - high byte) and trunc
+ // for values 0x8000 and larger, subtract (high byte - 0x80) and trunc
+ return (x + 0x7f + (x >> 15) - (x >> 8)) >> 8;
+}
+
+void SkAntiEdgeBuilder::walk(uint8_t* result, int rowBytes, int height) {
+ SkAntiEdge* first = fHeadEdge.fNext;
+ SkFixed top = first->fWalkY - first->fDXFlipped;
+ int y = SkFixedFloor(top);
+ do {
+ SkAntiEdge* activeLeft = first;
+ SkAntiEdge* activeLast, * active;
+ int yLast = find_active_edges(y, &activeLeft, &activeLast);
+ while (y < yLast) {
+ SkAssertResult(y >= 0);
+ SkAssertResult(y < height);
+ SkFixed left = activeLeft->fWalkX;
+ int x = SkFixedFloor(left);
+ uint8_t* resultPtr = &result[y * rowBytes + x];
+ bool finished;
+ do {
+ left = SkIntToFixed(x);
+ SkAssertResult(x >= 0);
+ // SkAssertResult(x < pixelCol);
+ if (x >= rowBytes) { // FIXME: cumulative error in fX += fDX
+ break; // fails to set fFinished early enough
+ } // see test 6 (dy<dx)
+ finished = true;
+ int coverage = 0;
+ for (active = first; active != activeLast; active = active->fNext) {
+ if (left + SK_Fixed1 <= active->fX) {
+ finished = false;
+ continue; // walker is to the left of edge
+ }
+ int cover = active->fDXFlipped ?
+ active->advanceFlippedX(left) : active->advanceX(left);
+ if (0 == active->fWindingSum) {
+ cover = -cover;
+ }
+ coverage += cover;
+ finished &= active->fFinished;
+ }
+ uint8_t old = *resultPtr;
+ uint8_t pix = coverage_to_8(coverage);
+ uint8_t blend = old > pix ? old : pix;
+ *resultPtr++ = blend;
+ ++x;
+ } while (!finished);
+ ++y;
+ top = SkIntToFixed(y);
+ SkFixed topLimit = top + SK_Fixed1;
+ SkFixed xSort = -SK_FixedMax;
+ for (active = first; active != activeLast; active = active->fNext) {
+ if (xSort > active->fX || topLimit > active->fLastY) {
+ yLast = y; // recompute bottom after all Ys are advanced
+ }
+ xSort = active->fX;
+ if (active->fWalkY < active->fLastY) {
+ active->advanceY(top);
+ }
+ }
+ for (active = first; active != activeLast; ) {
+ SkAntiEdge* next = active->fNext;
+ if (top >= active->fLastY) {
+ remove_edge(active);
+ }
+ active = next;
+ }
+ first = fHeadEdge.fNext;
+ }
+ SkAntiEdge* prev = activeLast->fPrev;
+ if (prev != &fHeadEdge) {
+ insert_new_edges(prev, top);
+ first = fHeadEdge.fNext;
+ }
+ } while (first->fWalkY < kEDGE_TAIL_XY);
+}
+
+void SkAntiEdgeBuilder::process(const SkPoint* points, int ptCount,
+ uint8_t* result, int pixelCol, int pixelRow) {
+ if (ptCount < 3) {
+ return;
+ }
+ int count = build(points, ptCount);
+ if (count == 0) {
+ return;
+ }
+ SkAssertResult(count > 1);
+ link();
+ sort();
+ split();
+ calc();
+ walk(result, pixelCol, pixelRow);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+int test3by3_test;
+
+// input is a rectangle
+static void test_3_by_3() {
+ const int pixelRow = 3;
+ const int pixelCol = 3;
+ const int ptCount = 4;
+ const int pixelCount = pixelRow * pixelCol;
+ const SkPoint tests[][ptCount] = {
+ {{2.0f, 1.0f}, {1.0f, 1.0f}, {1.0f, 2.0f}, {2.0f, 2.0f}}, // 0: full rect
+ {{2.5f, 1.0f}, {1.5f, 1.0f}, {1.5f, 2.0f}, {2.5f, 2.0f}}, // 1: y edge
+ {{2.0f, 1.5f}, {1.0f, 1.5f}, {1.0f, 2.5f}, {2.0f, 2.5f}}, // 2: x edge
+ {{2.5f, 1.5f}, {1.5f, 1.5f}, {1.5f, 2.5f}, {2.5f, 2.5f}}, // 3: x/y edge
+ {{2.8f, 0.2f}, {0.2f, 0.2f}, {0.2f, 2.8f}, {2.8f, 2.8f}}, // 4: large
+ {{1.8f, 1.2f}, {1.2f, 1.2f}, {1.2f, 1.8f}, {1.8f, 1.8f}}, // 5: small
+ {{0.0f, 0.0f}, {0.0f, 1.0f}, {3.0f, 2.0f}, {3.0f, 1.0f}}, // 6: dy<dx
+ {{3.0f, 0.0f}, {0.0f, 1.0f}, {0.0f, 2.0f}, {3.0f, 1.0f}}, // 7: dy<-dx
+ {{1.0f, 0.0f}, {0.0f, 0.0f}, {1.0f, 3.0f}, {2.0f, 3.0f}}, // 8: dy>dx
+ {{2.0f, 0.0f}, {1.0f, 0.0f}, {0.0f, 3.0f}, {1.0f, 3.0f}}, // 9: dy>-dx
+ {{0.5f, 0.5f}, {0.5f, 1.5f}, {2.5f, 2.5f}, {2.5f, 1.5f}}, // 10: dy<dx 2
+ {{2.5f, 0.5f}, {0.5f, 1.5f}, {0.5f, 2.5f}, {2.5f, 1.5f}}, // 11: dy<-dx 2
+ {{0.0f, 0.0f}, {2.0f, 0.0f}, {2.0f, 2.0f}, {0.0f, 2.0f}}, // 12: 2x2
+ {{0.0f, 0.0f}, {3.0f, 0.0f}, {3.0f, 3.0f}, {0.0f, 3.0f}}, // 13: 3x3
+ {{1.75f, 0.25f}, {2.75f, 1.25f}, {1.25f, 2.75f}, {0.25f, 1.75f}}, // 14
+ {{2.25f, 0.25f}, {2.75f, 0.75f}, {0.75f, 2.75f}, {0.25f, 2.25f}}, // 15
+ {{0.25f, 0.75f}, {0.75f, 0.25f}, {2.75f, 2.25f}, {2.25f, 2.75f}}, // 16
+ {{1.25f, 0.50f}, {1.75f, 0.25f}, {2.75f, 2.25f}, {2.25f, 2.50f}}, // 17
+ {{1.00f, 0.75f}, {2.00f, 0.50f}, {2.00f, 1.50f}, {1.00f, 1.75f}}, // 18
+ {{1.00f, 0.50f}, {2.00f, 0.75f}, {2.00f, 1.75f}, {1.00f, 1.50f}}, // 19
+ {{1.00f, 0.75f}, {1.00f, 1.75f}, {2.00f, 1.50f}, {2.00f, 0.50f}}, // 20
+ {{1.00f, 0.50f}, {1.00f, 1.50f}, {2.00f, 1.75f}, {2.00f, 0.75f}}, // 21
+ };
+ const uint8_t results[][pixelCount] = {
+ {0x00, 0x00, 0x00, // 0: 1 pixel rect
+ 0x00, 0xFF, 0x00,
+ 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, // 1: y edge
+ 0x00, 0x7F, 0x80,
+ 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, // 2: x edge
+ 0x00, 0x7F, 0x00,
+ 0x00, 0x7F, 0x00},
+ {0x00, 0x00, 0x00, // 3: x/y edge
+ 0x00, 0x40, 0x40,
+ 0x00, 0x40, 0x40},
+ {0xA3, 0xCC, 0xA3, // 4: large
+ 0xCC, 0xFF, 0xCC,
+ 0xA3, 0xCC, 0xA3},
+ {0x00, 0x00, 0x00, // 5: small
+ 0x00, 0x5C, 0x00,
+ 0x00, 0x00, 0x00},
+ {0xD5, 0x80, 0x2B, // 6: dy<dx
+ 0x2A, 0x7F, 0xD4,
+ 0x00, 0x00, 0x00},
+ {0x2B, 0x80, 0xD5, // 7: dy<-dx
+ 0xD4, 0x7F, 0x2A,
+ 0x00, 0x00, 0x00},
+ {0xD5, 0x2A, 0x00, // 8: dy>dx
+ 0x80, 0x7F, 0x00,
+ 0x2B, 0xD4, 0x00},
+ {0x2A, 0xD5, 0x00, // 9: dy>-dx
+ 0x7F, 0x80, 0x00,
+ 0xD4, 0x2B, 0x00},
+ {0x30, 0x10, 0x00, // 10: dy<dx 2
+ 0x50, 0xDF, 0x50,
+ 0x00, 0x10, 0x30},
+ {0x00, 0x10, 0x30, // 11: dy<-dx 2
+ 0x50, 0xDF, 0x50,
+ 0x30, 0x10, 0x00},
+ {0xFF, 0xFF, 0x00, // 12: 2x2
+ 0xFF, 0xFF, 0x00,
+ 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, // 13: 3x3
+ 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF},
+ {0x00, 0x70, 0x20, // 14
+ 0x70, 0xFF, 0x70,
+ 0x20, 0x70, 0x00},
+ {0x00, 0x20, 0x60, // 15
+ 0x20, 0xBF, 0x20,
+ 0x60, 0x20, 0x00},
+ {0x60, 0x20, 0x00, // 16
+ 0x20, 0xBF, 0x20,
+ 0x00, 0x20, 0x60},
+ {0x00, 0x60, 0x04, // 17
+ 0x00, 0x40, 0x60,
+ 0x00, 0x00, 0x3C},
+ {0x00, 0x60, 0x00, // 18
+ 0x00, 0x9F, 0x00,
+ 0x00, 0x00, 0x00},
+ {0x00, 0x60, 0x00, // 19
+ 0x00, 0x9F, 0x00,
+ 0x00, 0x00, 0x00},
+ {0x00, 0x60, 0x00, // 20
+ 0x00, 0x9F, 0x00,
+ 0x00, 0x00, 0x00},
+ {0x00, 0x60, 0x00, // 21
+ 0x00, 0x9F, 0x00,
+ 0x00, 0x00, 0x00},
+ };
+ const int testCount = sizeof(tests) / sizeof(tests[0]);
+ SkAssertResult(testCount == sizeof(results) / sizeof(results[0]));
+ int testFirst = test3by3_test < 0 ? 0 : test3by3_test;
+ int testLast = test3by3_test < 0 ? testCount : test3by3_test + 1;
+ for (int testIndex = testFirst; testIndex < testLast; ++testIndex) {
+ uint8_t result[pixelRow][pixelCol];
+ sk_bzero(result, sizeof(result));
+ const SkPoint* rect = tests[testIndex];
+ SkAntiEdgeBuilder builder;
+ builder.process(rect, ptCount, result[0], pixelCol, pixelRow);
+ SkAssertResult(memcmp(results[testIndex], result[0], pixelCount) == 0);
+ }
+}
+
+// input has arbitrary number of points
+static void test_arbitrary_3_by_3() {
+ const int pixelRow = 3;
+ const int pixelCol = 3;
+ const int pixelCount = pixelRow * pixelCol;
+ const SkPoint t1[] = { {1,1}, {2,1}, {2,1.5f}, {1,1.5f}, {1,2}, {2,2},
+ {2,1.5f}, {1,1.5f}, {1,1} };
+ const SkPoint* tests[] = { t1 };
+ size_t testPts[] = { sizeof(t1) / sizeof(t1[0]) };
+ const uint8_t results[][pixelCount] = {
+ {0x00, 0x00, 0x00, // 0: 1 pixel rect
+ 0x00, 0xFF, 0x00,
+ 0x00, 0x00, 0x00},
+ };
+ const int testCount = sizeof(tests) / sizeof(tests[0]);
+ SkAssertResult(testCount == sizeof(results) / sizeof(results[0]));
+ int testFirst = test3by3_test < 0 ? 0 : test3by3_test;
+ int testLast = test3by3_test < 0 ? testCount : test3by3_test + 1;
+ for (int testIndex = testFirst; testIndex < testLast; ++testIndex) {
+ uint8_t result[pixelRow][pixelCol];
+ sk_bzero(result, sizeof(result));
+ const SkPoint* pts = tests[testIndex];
+ size_t ptCount = testPts[testIndex];
+ SkAntiEdgeBuilder builder;
+ builder.process(pts, ptCount, result[0], pixelCol, pixelRow);
+ SkAssertResult(memcmp(results[testIndex], result[0], pixelCount) == 0);
+ }
+}
+
+#include "SkRect.h"
+#include "SkPath.h"
+
+int testsweep_test;
+
+static void create_sweep(uint8_t* result, int pixelRow, int pixelCol, SkScalar rectWidth) {
+ const int ptCount = 4;
+ SkRect refRect = {pixelCol / 2 - rectWidth / 2, 5,
+ pixelCol / 2 + rectWidth / 2, pixelRow / 2 - 5};
+ SkPath refPath;
+ refPath.addRect(refRect);
+ SkScalar angleFirst = testsweep_test < 0 ? 0 : testsweep_test;
+ SkScalar angleLast = testsweep_test < 0 ? 360 : testsweep_test + 1;
+ for (SkScalar angle = angleFirst; angle < angleLast; angle += 12) {
+ SkPath rotPath;
+ SkMatrix matrix;
+ matrix.setRotate(angle, SkIntToScalar(pixelCol) / 2,
+ SkIntToScalar(pixelRow) / 2);
+ refPath.transform(matrix, &rotPath);
+ SkPoint rect[ptCount], temp[2];
+ SkPath::Iter iter(rotPath, false);
+ int index = 0;
+ for (;;) {
+ SkPath::Verb verb = iter.next(temp);
+ if (verb == SkPath::kMove_Verb) {
+ continue;
+ }
+ if (verb == SkPath::kClose_Verb) {
+ break;
+ }
+ SkAssertResult(SkPath::kLine_Verb == verb);
+ rect[index++] = temp[0];
+ }
+ SkAntiEdgeBuilder builder;
+ builder.process(rect, ptCount, result, pixelCol, pixelRow);
+ }
+}
+
+static void create_horz(uint8_t* result, int pixelRow, int pixelCol) {
+ const int ptCount = 4;
+ for (SkScalar x = 0; x < 100; x += 5) {
+ SkPoint rect[ptCount];
+ rect[0].fX = 0; rect[0].fY = x;
+ rect[1].fX = 100; rect[1].fY = x;
+ rect[2].fX = 100; rect[2].fY = x + x / 50;
+ rect[3].fX = 0; rect[3].fY = x + x / 50;
+ SkAntiEdgeBuilder builder;
+ builder.process(rect, ptCount, result, pixelCol, pixelRow);
+ }
+}
+
+static void create_vert(uint8_t* result, int pixelRow, int pixelCol) {
+ const int ptCount = 4;
+ for (SkScalar x = 0; x < 100; x += 5) {
+ SkPoint rect[ptCount];
+ rect[0].fY = 0; rect[0].fX = x;
+ rect[1].fY = 100; rect[1].fX = x;
+ rect[2].fY = 100; rect[2].fX = x + x / 50;
+ rect[3].fY = 0; rect[3].fX = x + x / 50;
+ SkAntiEdgeBuilder builder;
+ builder.process(rect, ptCount, result, pixelCol, pixelRow);
+ }
+}
+
+static void create_angle(uint8_t* result, int pixelRow, int pixelCol, SkScalar angle) {
+ const int ptCount = 4;
+ SkRect refRect = {25, 25, 125, 125};
+ SkPath refPath;
+ for (SkScalar x = 30; x < 125; x += 5) {
+ refRect.fTop = x;
+ refRect.fBottom = x + (x - 25) / 50;
+ refPath.addRect(refRect);
+ }
+ SkPath rotPath;
+ SkMatrix matrix;
+ matrix.setRotate(angle, 75, 75);
+ refPath.transform(matrix, &rotPath);
+ SkPath::Iter iter(rotPath, false);
+ for (SkScalar x = 30; x < 125; x += 5) {
+ SkPoint rect[ptCount], temp[2];
+ int index = 0;
+ for (;;) {
+ SkPath::Verb verb = iter.next(temp);
+ if (verb == SkPath::kMove_Verb) {
+ continue;
+ }
+ if (verb == SkPath::kClose_Verb) {
+ break;
+ }
+ SkAssertResult(SkPath::kLine_Verb == verb);
+ rect[index++] = temp[0];
+ }
+ // if ((x == 30 || x == 75) && angle == 12) continue;
+ SkAntiEdgeBuilder builder;
+ builder.process(rect, ptCount, result, pixelCol, pixelRow);
+ }
+}
+
+static void test_sweep() {
+ const int pixelRow = 100;
+ const int pixelCol = 100;
+ uint8_t result[pixelRow][pixelCol];
+ sk_bzero(result, sizeof(result));
+ create_sweep(result[0], pixelRow, pixelCol, 1);
+}
+
+static void test_horz() {
+ const int pixelRow = 100;
+ const int pixelCol = 100;
+ uint8_t result[pixelRow][pixelCol];
+ sk_bzero(result, sizeof(result));
+ create_horz(result[0], pixelRow, pixelCol);
+}
+
+static void test_vert() {
+ const int pixelRow = 100;
+ const int pixelCol = 100;
+ uint8_t result[pixelRow][pixelCol];
+ sk_bzero(result, sizeof(result));
+ create_vert(result[0], pixelRow, pixelCol);
+}
+
+static void test_angle(SkScalar angle) {
+ const int pixelRow = 150;
+ const int pixelCol = 150;
+ uint8_t result[pixelRow][pixelCol];
+ sk_bzero(result, sizeof(result));
+ create_angle(result[0], pixelRow, pixelCol, angle);
+}
+
+#include "SkBitmap.h"
+
+void CreateSweep(SkBitmap* sweep, SkScalar rectWidth) {
+ const int pixelRow = 100;
+ const int pixelCol = 100;
+ sweep->setConfig(SkBitmap::kA8_Config, pixelCol, pixelRow);
+ sweep->allocPixels();
+ sweep->eraseColor(SK_ColorTRANSPARENT);
+ sweep->lockPixels();
+ void* pixels = sweep->getPixels();
+ create_sweep((uint8_t*) pixels, pixelRow, pixelCol, rectWidth);
+ sweep->unlockPixels();
+}
+
+void CreateHorz(SkBitmap* sweep) {
+ const int pixelRow = 100;
+ const int pixelCol = 100;
+ sweep->setConfig(SkBitmap::kA8_Config, pixelCol, pixelRow);
+ sweep->allocPixels();
+ sweep->eraseColor(SK_ColorTRANSPARENT);
+ sweep->lockPixels();
+ void* pixels = sweep->getPixels();
+ create_horz((uint8_t*) pixels, pixelRow, pixelCol);
+ sweep->unlockPixels();
+}
+
+void CreateVert(SkBitmap* sweep) {
+ const int pixelRow = 100;
+ const int pixelCol = 100;
+ sweep->setConfig(SkBitmap::kA8_Config, pixelCol, pixelRow);
+ sweep->allocPixels();
+ sweep->eraseColor(SK_ColorTRANSPARENT);
+ sweep->lockPixels();
+ void* pixels = sweep->getPixels();
+ create_vert((uint8_t*) pixels, pixelRow, pixelCol);
+ sweep->unlockPixels();
+}
+
+void CreateAngle(SkBitmap* sweep, SkScalar angle) {
+ const int pixelRow = 150;
+ const int pixelCol = 150;
+ sweep->setConfig(SkBitmap::kA8_Config, pixelCol, pixelRow);
+ sweep->allocPixels();
+ sweep->eraseColor(SK_ColorTRANSPARENT);
+ sweep->lockPixels();
+ void* pixels = sweep->getPixels();
+ create_angle((uint8_t*) pixels, pixelRow, pixelCol, angle);
+ sweep->unlockPixels();
+}
+
+#include "SkCanvas.h"
+
+static void testPng() {
+ SkBitmap device;
+ device.setConfig(SkBitmap::kARGB_8888_Config, 4, 4);
+ device.allocPixels();
+ device.eraseColor(0xFFFFFFFF);
+
+ SkCanvas canvas(device);
+ canvas.drawARGB(167, 0, 0, 0);
+
+ device.lockPixels();
+ unsigned char* pixels = (unsigned char*) device.getPixels();
+ SkDebugf("%02x%02x%02x%02x", pixels[3], pixels[2], pixels[1], pixels[0]);
+}
+
+void SkAntiEdge_Test() {
+ testPng();
+ test_arbitrary_3_by_3();
+ test_angle(12);
+#if 0
+ test3by3_test = 18;
+#else
+ test3by3_test = -1;
+#endif
+#if 0
+ testsweep_test = 7 * 12;
+#else
+ testsweep_test = -1;
+#endif
+ if (testsweep_test == -1) {
+ test_3_by_3();
+ }
+ test_sweep();
+ test_horz();
+ test_vert();
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/SkAntiEdge.h b/chromium/third_party/skia/experimental/Intersection/SkAntiEdge.h
new file mode 100644
index 00000000000..17baca6d4df
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/SkAntiEdge.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#ifndef SkAntiEdge_DEFINED
+#define SkAntiEdge_DEFINED
+
+#include "SkFixed.h"
+#include "SkTDArray.h"
+
+struct SkBitmap;
+struct SkPoint;
+
+struct SkAntiEdge {
+ SkAntiEdge* fNext; // list in walking order (y, then x, then diag)
+ SkAntiEdge* fPrev; // reverse in walking order
+ SkAntiEdge* fLink; // list in connected order, top to bottom
+
+ SkFixed fFirstX; // starting X
+ SkFixed fFirstY; // starting Y
+ SkFixed fLastX; // ending X
+ SkFixed fLastY; // ending Y
+ SkFixed fX0; // computed edge current value (may be off end)
+ SkFixed fY0;
+ SkFixed fX; // edge current value (always on edge)
+ SkFixed fY;
+ SkFixed fDX; // change in X per unit step in Y
+ SkFixed fDY; // change in Y per unit step in X
+ SkFixed fWalkX; // unit step position (integer after initial step)
+ SkFixed fWalkY;
+ uint16_t fPartialY; // initial partial coverage in Y (0 .. SkFixed1]
+ int16_t fWindingSum; // winding including contributions to the left
+ int8_t fWinding; // 1 or -1 (could be 2 bits)
+ bool fFinished : 1;
+ unsigned fDXFlipped : 1; // used as bool and to adjust calculations (0/1)
+ bool fLinkSet : 1; // set if edge has been attached to another edge
+
+ void calcLine();
+ bool setLine(const SkPoint& p0, const SkPoint& p1);
+ uint16_t advanceX(SkFixed left);
+ uint16_t advanceFlippedX(SkFixed left);
+ void advanceY(SkFixed top);
+// FIXME: mark DEBUG
+ void pointInLine(SkFixed x, SkFixed y);
+ void pointOnLine(SkFixed x, SkFixed y);
+ void validate();
+};
+
+class SkAntiEdgeBuilder {
+public:
+void process(const SkPoint* points, int ptCount,
+ uint8_t* result, int pixelCol, int pixelRow);
+private:
+ int build(const SkPoint pts[], int count);
+ void calc();
+ void link();
+ void sort();
+ void sort(SkTDArray<SkAntiEdge*>&);
+ void split();
+ void split(SkAntiEdge* edge, SkFixed y);
+ void walk(uint8_t* result, int rowBytes, int height);
+ SkAntiEdge fHeadEdge;
+ SkAntiEdge fTailEdge;
+ SkTDArray<SkAntiEdge> fEdges;
+ SkTDArray<SkAntiEdge*> fList;
+};
+
+void SkAntiEdge_Test();
+void CreateSweep(SkBitmap* , float width);
+void CreateHorz(SkBitmap* );
+void CreateVert(SkBitmap* );
+void CreateAngle(SkBitmap* sweep, float angle);
+
+#endif
diff --git a/chromium/third_party/skia/experimental/Intersection/TSearch.h b/chromium/third_party/skia/experimental/Intersection/TSearch.h
new file mode 100644
index 00000000000..2635470f537
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/TSearch.h
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#ifndef TSearch_DEFINED
+#define TSearch_DEFINED
+
+// FIXME: Move this templated version into SKTSearch.h
+
+template <typename T>
+static T* QSort_Partition(T* left, T* right, T* pivot)
+{
+ T pivotValue = *pivot;
+ SkTSwap(*pivot, *right);
+ T* newPivot = left;
+ while (left < right) {
+ if (*left < pivotValue) {
+ SkTSwap(*left, *newPivot);
+ newPivot += 1;
+ }
+ left += 1;
+ }
+ SkTSwap(*newPivot, *right);
+ return newPivot;
+}
+
+template <typename T>
+void QSort(T* left, T* right)
+{
+ if (left >= right) {
+ return;
+ }
+ T* pivot = left + (right - left >> 1);
+ pivot = QSort_Partition(left, right, pivot);
+ QSort(left, pivot - 1);
+ QSort(pivot + 1, right);
+}
+
+template <typename T>
+static T** QSort_Partition(T** left, T** right, T** pivot)
+{
+ T* pivotValue = *pivot;
+ SkTSwap(*pivot, *right);
+ T** newPivot = left;
+ while (left < right) {
+ if (**left < *pivotValue) {
+ SkTSwap(*left, *newPivot);
+ newPivot += 1;
+ }
+ left += 1;
+ }
+ SkTSwap(*newPivot, *right);
+ return newPivot;
+}
+
+template <typename T>
+void QSort(T** left, T** right)
+{
+ if (left >= right) {
+ return;
+ }
+ T** pivot = left + (right - left >> 1);
+ pivot = QSort_Partition(left, right, pivot);
+ QSort(left, pivot - 1);
+ QSort(pivot + 1, right);
+}
+
+template <typename S, typename T>
+static T* QSort_Partition(S& context, T* left, T* right, T* pivot,
+ bool (*lessThan)(S&, const T, const T))
+{
+ T pivotValue = *pivot;
+ SkTSwap(*pivot, *right);
+ T* newPivot = left;
+ while (left < right) {
+ if (lessThan(context, *left, pivotValue)) {
+ SkTSwap(*left, *newPivot);
+ newPivot += 1;
+ }
+ left += 1;
+ }
+ SkTSwap(*newPivot, *right);
+ return newPivot;
+}
+
+template <typename S, typename T>
+void QSort(S& context, T* left, T* right,
+ bool (*lessThan)(S& , const T, const T))
+{
+ if (left >= right) {
+ return;
+ }
+ T* pivot = left + (right - left >> 1);
+ pivot = QSort_Partition(context, left, right, pivot, lessThan);
+ QSort(context, left, pivot - 1, lessThan);
+ QSort(context, pivot + 1, right, lessThan);
+}
+
+#endif
diff --git a/chromium/third_party/skia/experimental/Intersection/TestUtilities.cpp b/chromium/third_party/skia/experimental/Intersection/TestUtilities.cpp
new file mode 100644
index 00000000000..3ae10d216a2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/TestUtilities.cpp
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "CubicUtilities.h"
+#include "CurveIntersection.h"
+#include "TestUtilities.h"
+
+void quad_to_cubic(const Quadratic& quad, Cubic& cubic) {
+ cubic[0] = quad[0];
+ cubic[1].x = quad[0].x / 3 + quad[1].x * 2 / 3;
+ cubic[1].y = quad[0].y / 3 + quad[1].y * 2 / 3;
+ cubic[2].x = quad[2].x / 3 + quad[1].x * 2 / 3;
+ cubic[2].y = quad[2].y / 3 + quad[1].y * 2 / 3;
+ cubic[3] = quad[2];
+}
+
+static bool tiny(const Cubic& cubic) {
+ int index, minX, maxX, minY, maxY;
+ minX = maxX = minY = maxY = 0;
+ for (index = 1; index < 4; ++index) {
+ if (cubic[minX].x > cubic[index].x) {
+ minX = index;
+ }
+ if (cubic[minY].y > cubic[index].y) {
+ minY = index;
+ }
+ if (cubic[maxX].x < cubic[index].x) {
+ maxX = index;
+ }
+ if (cubic[maxY].y < cubic[index].y) {
+ maxY = index;
+ }
+ }
+ return approximately_equal(cubic[maxX].x, cubic[minX].x)
+ && approximately_equal(cubic[maxY].y, cubic[minY].y);
+}
+
+void find_tight_bounds(const Cubic& cubic, _Rect& bounds) {
+ CubicPair cubicPair;
+ chop_at(cubic, cubicPair, 0.5);
+ if (!tiny(cubicPair.first()) && !controls_inside(cubicPair.first())) {
+ find_tight_bounds(cubicPair.first(), bounds);
+ } else {
+ bounds.add(cubicPair.first()[0]);
+ bounds.add(cubicPair.first()[3]);
+ }
+ if (!tiny(cubicPair.second()) && !controls_inside(cubicPair.second())) {
+ find_tight_bounds(cubicPair.second(), bounds);
+ } else {
+ bounds.add(cubicPair.second()[0]);
+ bounds.add(cubicPair.second()[3]);
+ }
+}
+
+bool controls_inside(const Cubic& cubic) {
+ return
+ ((cubic[0].x <= cubic[1].x && cubic[0].x <= cubic[2].x && cubic[1].x <= cubic[3].x && cubic[2].x <= cubic[3].x)
+ || (cubic[0].x >= cubic[1].x && cubic[0].x >= cubic[2].x && cubic[1].x >= cubic[3].x && cubic[2].x >= cubic[3].x))
+ && ((cubic[0].y <= cubic[1].y && cubic[0].y <= cubic[2].y && cubic[1].y <= cubic[3].y && cubic[2].y <= cubic[3].y)
+ || (cubic[0].y >= cubic[1].y && cubic[0].y >= cubic[2].y && cubic[1].y >= cubic[3].y && cubic[2].x >= cubic[3].y));
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/TestUtilities.h b/chromium/third_party/skia/experimental/Intersection/TestUtilities.h
new file mode 100644
index 00000000000..2bce308ade5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/TestUtilities.h
@@ -0,0 +1,11 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "DataTypes.h"
+
+bool controls_inside(const Cubic& );
+void find_tight_bounds(const Cubic& , _Rect& );
+void quad_to_cubic(const Quadratic& , Cubic& );
diff --git a/chromium/third_party/skia/experimental/Intersection/TriangleUtilities.cpp b/chromium/third_party/skia/experimental/Intersection/TriangleUtilities.cpp
new file mode 100644
index 00000000000..98893680790
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/TriangleUtilities.cpp
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "TriangleUtilities.h"
+
+// http://www.blackpawn.com/texts/pointinpoly/default.html
+bool pointInTriangle(const Triangle& triangle, const _Point& pt) {
+// Compute vectors
+ _Vector v0 = triangle[2] - triangle[0];
+ _Vector v1 = triangle[1] - triangle[0];
+ _Vector v2 = pt - triangle[0];
+
+// Compute dot products
+ double dot00 = v0.dot(v0);
+ double dot01 = v0.dot(v1);
+ double dot02 = v0.dot(v2);
+ double dot11 = v1.dot(v1);
+ double dot12 = v1.dot(v2);
+
+// Compute barycentric coordinates
+ double invDenom = 1 / (dot00 * dot11 - dot01 * dot01);
+ double u = (dot11 * dot02 - dot01 * dot12) * invDenom;
+ double v = (dot00 * dot12 - dot01 * dot02) * invDenom;
+
+// Check if point is in triangle
+ return (u >= 0) && (v >= 0) && (u + v < 1);
+}
diff --git a/chromium/third_party/skia/experimental/Intersection/TriangleUtilities.h b/chromium/third_party/skia/experimental/Intersection/TriangleUtilities.h
new file mode 100644
index 00000000000..b09dbc6ef68
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/TriangleUtilities.h
@@ -0,0 +1,10 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "DataTypes.h"
+
+bool pointInTriangle(const Triangle& triangle, const _Point& pt);
diff --git a/chromium/third_party/skia/experimental/Intersection/as.htm b/chromium/third_party/skia/experimental/Intersection/as.htm
new file mode 100644
index 00000000000..595ab4d0f6d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/as.htm
@@ -0,0 +1,7027 @@
+<html>
+<head>
+<div style="height:0">
+
+<div id="cubicOp36u">
+ SimplifyNew_Test [cubicOp36u]
+{{0,1}, {1,6}, {2,0}, {5,1}},
+{{5,1}, {0,1}},
+op union
+{{0,2}, {1,5}, {1,0}, {6,1}},
+{{6,1}, {0,2}},
+debugShowCubicIntersection no self intersect {{0,2}, {1,5}, {1,0}, {6,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,2}, {1,5}, {1,0}, {6,1}} {{0,2}} wtTs[1]=0.633333333 {{2.2208888888888882,1.6298518518518521}} wtTs[2]=1 {{6,1}} wnTs[0]=1 {{6,1}, {0,2}} wnTs[1]=0.629851852 wnTs[2]=0
+debugShowCubicIntersection wtTs[0]=0.281761651 {{0,2}, {1,5}, {1,0}, {6,1}} {{0.74132978521392334,2.9436691246202122}} wtTs[1]=0.83051493 {{3.8593908381032738,0.94043932231067462}} wtTs[2]=0.830515061 {{3.8593922073023155,0.94043907360367252}} wtTs[3]=0.867315861 {{4.2597986321159249,0.88613622701319239}} wtTs[4]=0.867316009 {{4.2598003089230945,0.88613607359480184}} wnTs[0]=0.23811 {{0,1}, {1,6}, {2,0}, {5,1}} wnTs[1]=0.860977989 wnTs[2]=0.860978176 wnTs[3]=0.912837717 wnTs[4]=0.912837923
+debugShowCubicLineIntersection wtTs[0]=0.803214143 {{0,2}, {1,5}, {1,0}, {6,1}} {{3.5833594368204942,1}} wnTs[0]=0.283328 {{5,1}, {0,1}}
+debugShowCubicLineIntersection wtTs[0]=0.0764226429 {{0,1}, {1,6}, {2,0}, {5,1}} {{0.23016060940409022,1.9616398984326517}} wtTs[1]=0.691654855 {{2.7367211708698314,1.543879804855028}} wnTs[0]=0.96164 {{6,1}, {0,2}} wnTs[1]=0.543879805
+debugShowLineIntersection no intersect {{6,1}, {0,2}} {{5,1}, {0,1}}
+debugShowCubicIntersection no self intersect {{0,1}, {1,6}, {2,0}, {5,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,1}, {1,6}, {2,0}, {5,1}} {{0,1}} wtTs[1]=0.833333333 {{3.6574074074074132,0.99999999999999789}} wtTs[2]=1 {{5,1}} wnTs[0]=1 {{5,1}, {0,1}} wnTs[1]=0.268518519 wnTs[2]=0
+debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0 (0,2) tEnd=0.281761651 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0.281761651 (0.741329789,2.94366908) tEnd=0.633333333 other=1 otherT=0.238109917 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0.633333333 (2.22088885,1.62985182) tEnd=0.803214143 other=4 otherT=0.629851852 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0.803214143 (3.58335948,1) tEnd=0.83051493 other=2 otherT=0.283328113 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0.83051493 (3.85939074,0.940439343) tEnd=0.830515061 other=1 otherT=0.860977989 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0.830515061 (3.85939217,0.940439045) tEnd=0.867315861 other=1 otherT=0.860978176 otherIndex=6 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0.867315861 (4.25979853,0.886136234) tEnd=0.867316009 other=1 otherT=0.912837717 otherIndex=7 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0.867316009 (4.25980043,0.886136055) tEnd=1 other=1 otherT=0.912837923 otherIndex=8 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,1 0,2) t=0 (6,1) tEnd=0.543879805 other=3 otherT=1 otherIndex=8 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,1 0,2) t=0.543879805 (2.73672128,1.54387975) tEnd=0.629851852 other=1 otherT=0.691654855 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,1 0,2) t=0.629851852 (2.22088885,1.62985182) tEnd=0.961639898 other=3 otherT=0.633333333 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,1 0,2) t=0.961639898 (0.230160609,1.96163988) tEnd=1 other=1 otherT=0.0764226429 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0 (0,1) tEnd=0.0764226429 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.0764226429 (0.230160609,1.96163988) tEnd=0.238109917 other=4 otherT=0.961639898 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.238109917 (0.741329789,2.94366908) tEnd=0.691654855 other=3 otherT=0.281761651 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.691654855 (2.73672128,1.54387975) tEnd=0.833333333 other=4 otherT=0.543879805 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.833333333 (3.65740752,1) tEnd=0.860977989 other=2 otherT=0.268518519 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.860977989 (3.85939074,0.940439343) tEnd=0.860978176 other=3 otherT=0.83051493 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.860978176 (3.85939217,0.940439045) tEnd=0.912837717 other=3 otherT=0.830515061 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.912837717 (4.25979853,0.886136234) tEnd=0.912837923 other=3 otherT=0.867315861 otherIndex=6 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.912837923 (4.25980043,0.886136055) tEnd=1 other=3 otherT=0.867316009 otherIndex=7 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,1 0,1) t=0 (5,1) tEnd=0.268518519 other=1 otherT=1 otherIndex=9 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,1 0,1) t=0.268518519 (3.65740752,1) tEnd=0.283328113 other=1 otherT=0.833333333 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,1 0,1) t=0.283328113 (3.58335948,1) tEnd=1 other=3 otherT=0.803214143 otherIndex=3 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=1 tEnd=0.867316009 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{6,1}, {0,2}} tStart=0 tEnd=0.543879805 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+findTop xyE=(6,1) xyS=(4.25980043,0.886136055)
+findTop dxyE=(15,3) dxyS=(11.3363714,-1.03721189) cross=-49.5672913 bumpsUp=true
+markWinding id=3 (0,2 1,5 1,0 6,1) t=0.867316009 [7] (4.25980043,0.886136055) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (6,1 0,2) t=0 [0] (6,1) tEnd=0.543879805 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (0,2 1,5 1,0 6,1) t=0.867316009 [7] (4.25980043,0.886136055) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
+findNextOp simple
+markDoneBinary id=3 (0,2 1,5 1,0 6,1) t=0.867316009 [7] (4.25980043,0.886136055) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+bridgeOp current id=3 from=(4.25980043,0.886136055) to=(6,1)
+path.moveTo(4.25980043,0.886136055);
+path.cubicTo(4.76118517,0.840262294, 5.33658028,0.867316008, 6,1);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{6,1}, {0,2}} tStart=0.543879805 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.691654855 tEnd=0.833333333 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [2] {{6,1}, {0,2}} tStart=0.543879805 tEnd=0.629851852 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.691654855 tEnd=0.238109917 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[0] sign=1
+activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,1 1,6 2,0 5,1) t=0.691654855 [3] (2.73672128,1.54387975) tEnd=0.833333333 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=union miFrom=1 miTo=1 suFrom=1 suTo=0 result=0
+markDoneBinary id=4 (6,1 0,2) t=0.543879805 [1] (2.73672128,1.54387975) tEnd=0.629851852 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+markWinding id=1 (0,1 1,6 2,0 5,1) t=0.238109917 [2] (0.741329789,2.94366908) tEnd=0.691654855 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+markDoneBinary id=4 (6,1 0,2) t=0 [0] (6,1) tEnd=0.543879805 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[4] to:[1] start=3 end=2
+bridgeOp current id=4 from=(6,1) to=(2.73672128,1.54387975)
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [3] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.238109917 tEnd=0.691654855 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.281761651 tEnd=0.633333333 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [1] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.238109917 tEnd=0.0764226429 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.281761651 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=-1
+activeOp op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0
+markDoneBinary id=3 (0,2 1,5 1,0 6,1) t=0.281761651 [1] (0.741329789,2.94366908) tEnd=0.633333333 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,1 1,6 2,0 5,1) t=0.0764226429 [1] (0.230160609,1.96163988) tEnd=0.238109917 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
+markWinding id=3 (0,2 1,5 1,0 6,1) t=0 [0] (0,2) tEnd=0.281761651 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (6,1 0,2) t=0.961639898 [3] (0.230160609,1.96163988) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+markDoneBinary id=1 (0,1 1,6 2,0 5,1) t=0.238109917 [2] (0.741329789,2.94366908) tEnd=0.691654855 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[1] to:[3] start=1 end=0
+bridgeOp current id=1 from=(2.73672128,1.54387975) to=(0.741329789,2.94366908)
+path.lineTo(2.73672128,1.54387975);
+path.cubicTo(1.84923673,2.27202392, 1.2463032,3.29839373, 0.741329789,2.94366908);
+findNextOp simple
+markDoneBinary id=3 (0,2 1,5 1,0 6,1) t=0 [0] (0,2) tEnd=0.281761651 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=3 from=(0.741329789,2.94366908) to=(0,2)
+path.cubicTo(0.484133661,3.05545282, 0.281761646,2.84528494, 0,2);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [2] {{6,1}, {0,2}} tStart=0.961639898 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.0764226429 tEnd=0.238109917 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+debugShowSort [0] {{6,1}, {0,2}} tStart=0.961639898 tEnd=0.629851852 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.0764226429 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=-1
+activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+activeOp op=union miFrom=1 miTo=1 suFrom=1 suTo=0 result=0
+markDoneBinary id=4 (6,1 0,2) t=0.629851852 [2] (2.22088885,1.62985182) tEnd=0.961639898 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+markWinding id=1 (0,1 1,6 2,0 5,1) t=0 [0] (0,1) tEnd=0.0764226429 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (5,1 0,1) t=0.283328113 [2] (3.58335948,1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+markDoneBinary id=4 (6,1 0,2) t=0.961639898 [3] (0.230160609,1.96163988) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[4] to:[1] start=1 end=0
+bridgeOp current id=4 from=(0,2) to=(0.230160609,1.96163988)
+findNextOp simple
+markDoneBinary id=1 (0,1 1,6 2,0 5,1) t=0 [0] (0,1) tEnd=0.0764226429 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=1 from=(0.230160609,1.96163988) to=(0,1)
+path.lineTo(0.230160609,1.96163988);
+path.cubicTo(0.152845293,1.69998181, 0.0764226392,1.38211322, 0,1);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [1] {{5,1}, {0,1}} tStart=0.283328113 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.803214143 tEnd=0.633333333 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [3] {{5,1}, {0,1}} tStart=0.283328113 tEnd=0.268518519 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.803214143 tEnd=0.83051493 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=-1
+activeOp op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0
+markDoneBinary id=3 (0,2 1,5 1,0 6,1) t=0.633333333 [2] (2.22088885,1.62985182) tEnd=0.803214143 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (5,1 0,1) t=0.268518519 [1] (3.65740752,1) tEnd=0.283328113 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
+markWinding id=3 (0,2 1,5 1,0 6,1) t=0.803214143 [3] (3.58335948,1) tEnd=0.83051493 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+markDoneBinary id=2 (5,1 0,1) t=0.283328113 [2] (3.58335948,1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[2] to:[3] start=3 end=4
+bridgeOp current id=2 from=(0,1) to=(3.58335948,1)
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.83051493 tEnd=0.803214143 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.860977989 tEnd=0.833333333 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [2] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.860977989 tEnd=0.860978176 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [3] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.83051493 tEnd=0.830515061 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[0] sign=1
+activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,1 1,6 2,0 5,1) t=0.833333333 [4] (3.65740752,1) tEnd=0.860977989 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,1 1,6 2,0 5,1) t=0.860977989 [5] (3.85939074,0.940439343) tEnd=0.860978176 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
+markWinding id=3 (0,2 1,5 1,0 6,1) t=0.83051493 [4] (3.85939074,0.940439343) tEnd=0.830515061 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+markDoneBinary id=3 (0,2 1,5 1,0 6,1) t=0.803214143 [3] (3.58335948,1) tEnd=0.83051493 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[3] to:[3] start=4 end=5
+bridgeOp current id=3 from=(3.58335948,1) to=(3.85939074,0.940439343)
+path.lineTo(3.58335948,1);
+path.cubicTo(3.67248249,0.97763288, 3.76445246,0.957684338, 3.85939074,0.940439343);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [2] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.830515061 tEnd=0.83051493 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.860978176 tEnd=0.860977989 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+debugShowSort [0] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.830515061 tEnd=0.867315861 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.860978176 tEnd=0.912837717 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=1
+activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+activeOp op=union miFrom=1 miTo=1 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (0,2 1,5 1,0 6,1) t=0.830515061 [5] (3.85939217,0.940439045) tEnd=0.867315861 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+markWinding id=1 (0,1 1,6 2,0 5,1) t=0.860978176 [6] (3.85939217,0.940439045) tEnd=0.912837717 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+markDoneBinary id=3 (0,2 1,5 1,0 6,1) t=0.83051493 [4] (3.85939074,0.940439343) tEnd=0.830515061 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[3] to:[1] start=6 end=7
+bridgeOp current id=3 from=(3.85939074,0.940439343) to=(3.85939217,0.940439045)
+path.cubicTo(3.85939145,0.940439224, 3.85939169,0.940439165, 3.85939217,0.940439045);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.912837717 tEnd=0.860978176 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.867315861 tEnd=0.830515061 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+debugShowSort [2] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.912837717 tEnd=0.912837923 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.867315861 tEnd=0.867316009 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[0] sign=1
+activeOp op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0
+activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,1 1,6 2,0 5,1) t=0.912837717 [7] (4.25979853,0.886136234) tEnd=0.912837923 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
+markWinding id=3 (0,2 1,5 1,0 6,1) t=0.867315861 [6] (4.25979853,0.886136234) tEnd=0.867316009 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+markDoneBinary id=1 (0,1 1,6 2,0 5,1) t=0.860978176 [6] (3.85939217,0.940439045) tEnd=0.912837717 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[1] to:[3] start=6 end=7
+bridgeOp current id=1 from=(3.85939217,0.940439045) to=(4.25979853,0.886136234)
+path.cubicTo(3.98813701,0.909405351, 4.12151289,0.890467525, 4.25980043,0.886136055);
+path.close();
+debugShowActiveSpans id=3 (0,2 1,5 1,0 6,1) t=0.867315861 (4.25979853,0.886136234) tEnd=0.867316009 other=1 otherT=0.912837717 otherIndex=7 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.912837923 (4.25980043,0.886136055) tEnd=1 other=3 otherT=0.867316009 otherIndex=7 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,1 0,1) t=0 (5,1) tEnd=0.268518519 other=1 otherT=1 otherIndex=9 windSum=? windValue=1 oppValue=0
+activeOp op=union miFrom=0 miTo=0 suFrom=0 suTo=1 result=1
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [3] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.867315861 tEnd=0.867316009 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.912837717 tEnd=0.860978176 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+debugShowSort [1] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.867315861 tEnd=0.830515061 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.912837717 tEnd=0.912837923 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=-1
+activeOp op=union miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+activeOp op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0
+activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=3 (0,2 1,5 1,0 6,1) t=0.867315861 [6] (4.25979853,0.886136234) tEnd=0.867316009 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[3] to:[1] start=7 end=6
+bridgeOp current id=3 from=(4.25980043,0.886136055) to=(4.25979853,0.886136234)
+path.moveTo(4.25980043,0.886136055);
+path.cubicTo(4.25979948,0.886136115, 4.25979948,0.886136174, 4.25979853,0.886136234);
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [1] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.860978176 tEnd=0.912837717 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.830515061 tEnd=0.83051493 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+debugShowSort [3] {{0,1}, {1,6}, {2,0}, {5,1}} tStart=0.860978176 tEnd=0.860977989 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [0] {{0,2}, {1,5}, {1,0}, {6,1}} tStart=0.830515061 tEnd=0.867315861 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=-1
+activeOp op=union miFrom=0 miTo=0 suFrom=0 suTo=1 result=1
+activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+activeOp op=union miFrom=1 miTo=1 suFrom=1 suTo=0 result=0
+findNextOp from:[1] to:[3] start=5 end=4
+bridgeOp current id=1 from=(4.25979853,0.886136234) to=(3.85939217,0.940439045)
+path.cubicTo(4.12151289,0.890467525, 3.98813701,0.909405351, 3.85939217,0.940439045);
+debugShowActiveSpans id=1 (0,1 1,6 2,0 5,1) t=0.912837923 (4.25980043,0.886136055) tEnd=1 other=3 otherT=0.867316009 otherIndex=7 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,1 0,1) t=0 (5,1) tEnd=0.268518519 other=1 otherT=1 otherIndex=9 windSum=? windValue=1 oppValue=0
+</div>
+
+<div id="cubicOp35da">
+{{x = 0.44618727783085621, y = 2.2840286415243063}, {x = 0.51170845243761109, y = 2.4044088819954914}, {x = 0.57783675570457882, y = 2.4985733182515446}, {x = 0.64483584772311509, y = 2.5694222112973661}}
+{{x = 0.64244110111854291, y = 2.5673840215265367}, {x = 0.63479413812245555, y = 2.5620057200094775}, {x = 0.64115438240274059, y = 2.533597555954064}, {x = 0.6620248993310307, y = 2.4876932484482714}}
+</div>
+
+<div id="cubicOp38d">
+ SimplifyNew_Test [cubicOp38d]
+{{0,1}, {0,6}, {3,2}, {4,1}},
+{{4,1}, {0,1}},
+op difference
+{{2,3}, {1,4}, {1,0}, {6,0}},
+{{6,0}, {2,3}},
+debugShowCubicIntersection no self intersect {{2,3}, {1,4}, {1,0}, {6,0}}
+debugShowCubicLineIntersection wtTs[0]=0 {{2,3}, {1,4}, {1,0}, {6,0}} {{2,3}} wtTs[1]=1 {{6,0}} wnTs[0]=1 {{6,0}, {2,3}} wnTs[1]=0
+debugShowCubicIntersection no intersect {{2,3}, {1,4}, {1,0}, {6,0}} {{0,1}, {0,6}, {3,2}, {4,1}}
+debugShowCubicLineIntersection wtTs[0]=0.666666667 {{2,3}, {1,4}, {1,0}, {6,0}} {{2.518518518518519,0.99999999999999967}} wnTs[0]=0.37037 {{4,1}, {0,1}}
+debugShowCubicLineIntersection no intersect {{0,1}, {0,6}, {3,2}, {4,1}} {{6,0}, {2,3}}
+debugShowLineIntersection no intersect {{6,0}, {2,3}} {{4,1}, {0,1}}
+debugShowCubicIntersection no self intersect {{0,1}, {0,6}, {3,2}, {4,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,1}, {0,6}, {3,2}, {4,1}} {{0,1}} wtTs[1]=1 {{4,1}} wnTs[0]=1 {{4,1}, {0,1}} wnTs[1]=0
+debugShowActiveSpans id=3 (2,3 1,4 1,0 6,0) t=0 (2,3) tEnd=0.666666667 other=4 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,4 1,0 6,0) t=0.666666667 (2.51851845,1) tEnd=1 other=2 otherT=0.37037037 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,0 2,3) t=0 (6,0) tEnd=1 other=3 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 0,6 3,2 4,1) t=0 (0,1) tEnd=1 other=2 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,1 0,1) t=0 (4,1) tEnd=0.37037037 other=1 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,1 0,1) t=0.37037037 (2.51851845,1) tEnd=1 other=3 otherT=0.666666667 otherIndex=1 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{2,3}, {1,4}, {1,0}, {6,0}} tStart=1 tEnd=0.666666667 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{6,0}, {2,3}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+findTop xyE=(6,0) xyS=(2.51851845,1)
+findTop dxyE=(15,0) dxyS=(6.33333349,-5) cross=-75 bumpsUp=false
+markWinding id=3 (2,3 1,4 1,0 6,0) t=0.666666667 [1] (2.51851845,1) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (6,0 2,3) t=0 [0] (6,0) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (2,3 1,4 1,0 6,0) t=0 [0] (2,3) tEnd=0.666666667 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (2,3 1,4 1,0 6,0) t=0.666666667 [1] (2.51851845,1) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (2,3 1,4 1,0 6,0) t=0.666666667 [1] (2.51851845,1) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+markDoneBinary id=4 (6,0 2,3) t=0 [0] (6,0) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+markDoneBinary id=3 (2,3 1,4 1,0 6,0) t=0 [0] (2,3) tEnd=0.666666667 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [0] {{2,3}, {1,4}, {1,0}, {6,0}} tStart=0.666666667 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{4,1}, {0,1}} tStart=0.37037037 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [2] {{2,3}, {1,4}, {1,0}, {6,0}} tStart=0.666666667 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [3] {{4,1}, {0,1}} tStart=0.37037037 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [0] {{2,3}, {1,4}, {1,0}, {6,0}} tStart=0.666666667 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{4,1}, {0,1}} tStart=0.37037037 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [2] {{2,3}, {1,4}, {1,0}, {6,0}} tStart=0.666666667 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [3] {{4,1}, {0,1}} tStart=0.37037037 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+markWinding id=2 (4,1 0,1) t=0.37037037 [1] (2.51851845,1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,1 0,6 3,2 4,1) t=0 [0] (0,1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (4,1 0,1) t=0 [0] (4,1) tEnd=0.37037037 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (4,1 0,1) t=0 [0] (4,1) tEnd=0.37037037 newWindSum=1 newOppSum=-1 oppSum=0 windSum=1 windValue=1
+</div>
+
+<div id="cubicOp38da">
+ {{0,1}, {0,6}, {3,2}, {4,1}},
+ {{2,3}, {1,4}, {1,0}, {6,0}},
+computed quadratics set 2
+ {{2,3}, {1.46296296,3.41666667}, {1.48148148,2.66666667}},
+ {{1.48148148,2.66666667}, {1.5,1.91666667}, {2.51851852,1}},
+ {{2.51851852,1}, {3.53703704,0.0833333333}, {6,0}},
+computed quadratics set 1
+ {{0,1}, {0.0311951689,3.11686153}, {0.643808143,3.37716704}},
+ {{0.643808143,3.37716704}, {1.25642112,3.63747255}, {2.07610987,2.9396429}},
+ {{2.07610987,2.9396429}, {2.89579862,2.24181325}, {3.54822112,1.48426931}},
+ {{3.54822112,1.48426931}, {3.81269436,1.19058669}, {4,1}},
+</div>
+
+<div id="cubicOp39d">
+ SimplifyNew_Test [cubicOp39d]
+{{0,1}, {2,3}, {5,1}, {4,3}},
+{{4,3}, {0,1}},
+op difference
+{{1,5}, {3,4}, {1,0}, {3,2}},
+{{3,2}, {1,5}},
+debugShowCubicIntersection no self intersect {{0,1}, {2,3}, {5,1}, {4,3}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,1}, {2,3}, {5,1}, {4,3}} {{0,1}} wtTs[1]=0.285714286 {{1.8425655976676385,1.9212827988338192}} wtTs[2]=1 {{4,3}} wnTs[0]=1 {{4,3}, {0,1}} wnTs[1]=0.539358601 wnTs[2]=0
+debugShowCubicIntersection wtTs[0]=0.311007457 {{0,1}, {2,3}, {5,1}, {4,3}} {{2.005809685956442,1.9459962410665144}} wnTs[0]=0.589885 {{1,5}, {3,4}, {1,0}, {3,2}}
+debugShowCubicLineIntersection no intersect {{0,1}, {2,3}, {5,1}, {4,3}} {{3,2}, {1,5}}
+debugShowCubicLineIntersection wtTs[0]=0.576935809 {{1,5}, {3,4}, {1,0}, {3,2}} {{2.0036431374219883,2.0018215687109939}} wnTs[0]=0.499089 {{4,3}, {0,1}}
+debugShowLineIntersection wtTs[0]=0.3125 {{4,3}, {0,1}} {{2.75,2.375}} wnTs[0]=0.125 {{3,2}, {1,5}}
+debugShowCubicIntersection no self intersect {{1,5}, {3,4}, {1,0}, {3,2}}
+debugShowCubicLineIntersection wtTs[0]=0 {{1,5}, {3,4}, {1,0}, {3,2}} {{1,5}} wtTs[1]=0.285714286 {{1.9212827988338184,3.6180758017492725}} wtTs[2]=1 {{3,2}} wnTs[0]=1 {{3,2}, {1,5}} wnTs[1]=0.539358601 wnTs[2]=0
+debugShowActiveSpans id=1 (0,1 2,3 5,1 4,3) t=0 (0,1) tEnd=0.285714286 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 2,3 5,1 4,3) t=0.285714286 (1.84256566,1.92128277) tEnd=0.311007457 other=2 otherT=0.539358601 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 2,3 5,1 4,3) t=0.311007457 (2.00580978,1.94599628) tEnd=1 other=3 otherT=0.589885081 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,3 0,1) t=0 (4,3) tEnd=0.3125 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,3 0,1) t=0.3125 (2.75,2.375) tEnd=0.499089216 other=4 otherT=0.125 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,3 0,1) t=0.499089216 (2.00364304,2.00182152) tEnd=0.539358601 other=3 otherT=0.576935809 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,3 0,1) t=0.539358601 (1.84256566,1.92128277) tEnd=1 other=1 otherT=0.285714286 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0 (1,5) tEnd=0.285714286 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0.285714286 (1.92128277,3.61807585) tEnd=0.576935809 other=4 otherT=0.539358601 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0.576935809 (2.00364304,2.00182152) tEnd=0.589885081 other=2 otherT=0.499089216 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0.589885081 (2.00580978,1.94599628) tEnd=1 other=1 otherT=0.311007457 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,2 1,5) t=0 (3,2) tEnd=0.125 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,2 1,5) t=0.125 (2.75,2.375) tEnd=0.539358601 other=2 otherT=0.3125 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,2 1,5) t=0.539358601 (1.92128277,3.61807585) tEnd=1 other=3 otherT=0.285714286 otherIndex=1 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,1}, {2,3}, {5,1}, {4,3}} tStart=0 tEnd=0.285714286 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{4,3}, {0,1}} tStart=1 tEnd=0.539358601 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+findTop xyE=(0,1) xyS=(1.84256566,1.92128277)
+findTop dxyE=(6,6) dxyS=(6.48979568,1.10204077) cross=-32.3265305 bumpsUp=false
+markWinding id=1 (0,1 2,3 5,1 4,3) t=0 [0] (0,1) tEnd=0.285714286 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (4,3 0,1) t=0.539358601 [3] (1.84256566,1.92128277) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,1 2,3 5,1 4,3) t=0 [0] (0,1) tEnd=0.285714286 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+findNextOp simple
+markDoneBinary id=1 (0,1 2,3 5,1 4,3) t=0 [0] (0,1) tEnd=0.285714286 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=1 from=(1.84256566,1.92128277) to=(0,1)
+path.moveTo(1.84256566,1.92128277);
+path.cubicTo(1.22448969,1.8163265, 0.571428597,1.57142854, 0,1);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{4,3}, {0,1}} tStart=0.539358601 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,1}, {2,3}, {5,1}, {4,3}} tStart=0.285714286 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{4,3}, {0,1}} tStart=0.539358601 tEnd=0.499089216 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,1}, {2,3}, {5,1}, {4,3}} tStart=0.285714286 tEnd=0.311007457 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[0] sign=-1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markWinding id=2 (4,3 0,1) t=0.499089216 [2] (2.00364304,2.00182152) tEnd=0.539358601 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+markWinding id=1 (0,1 2,3 5,1 4,3) t=0.285714286 [1] (1.84256566,1.92128277) tEnd=0.311007457 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+markDoneBinary id=2 (4,3 0,1) t=0.539358601 [3] (1.84256566,1.92128277) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[2] to:[1] start=1 end=2
+bridgeOp current id=2 from=(0,1) to=(1.84256566,1.92128277)
+path.lineTo(1.84256566,1.92128277);
+path.close();
+debugShowActiveSpans id=1 (0,1 2,3 5,1 4,3) t=0.285714286 (1.84256566,1.92128277) tEnd=0.311007457 other=2 otherT=0.539358601 otherIndex=3 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 2,3 5,1 4,3) t=0.311007457 (2.00580978,1.94599628) tEnd=1 other=3 otherT=0.589885081 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,3 0,1) t=0 (4,3) tEnd=0.3125 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,3 0,1) t=0.3125 (2.75,2.375) tEnd=0.499089216 other=4 otherT=0.125 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,3 0,1) t=0.499089216 (2.00364304,2.00182152) tEnd=0.539358601 other=3 otherT=0.576935809 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0 (1,5) tEnd=0.285714286 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0.285714286 (1.92128277,3.61807585) tEnd=0.576935809 other=4 otherT=0.539358601 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0.576935809 (2.00364304,2.00182152) tEnd=0.589885081 other=2 otherT=0.499089216 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0.589885081 (2.00580978,1.94599628) tEnd=1 other=1 otherT=0.311007457 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,2 1,5) t=0 (3,2) tEnd=0.125 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,2 1,5) t=0.125 (2.75,2.375) tEnd=0.539358601 other=2 otherT=0.3125 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,2 1,5) t=0.539358601 (1.92128277,3.61807585) tEnd=1 other=3 otherT=0.285714286 otherIndex=1 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [3] {{0,1}, {2,3}, {5,1}, {4,3}} tStart=0.285714286 tEnd=0.311007457 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{4,3}, {0,1}} tStart=0.539358601 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [1] {{0,1}, {2,3}, {5,1}, {4,3}} tStart=0.285714286 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{4,3}, {0,1}} tStart=0.539358601 tEnd=0.499089216 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[3] sign=-1
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=1 (0,1 2,3 5,1 4,3) t=0.285714286 [1] (1.84256566,1.92128277) tEnd=0.311007457 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[1] to:[2] start=3 end=2
+bridgeOp current id=1 from=(2.00580978,1.94599628) to=(1.84256566,1.92128277)
+path.moveTo(2.00580978,1.94599628);
+path.cubicTo(1.9517231,1.93876874, 1.89728141,1.93057418, 1.84256566,1.92128277);
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [1] {{4,3}, {0,1}} tStart=0.499089216 tEnd=0.539358601 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{1,5}, {3,4}, {1,0}, {3,2}} tStart=0.576935809 tEnd=0.285714286 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [3] {{4,3}, {0,1}} tStart=0.499089216 tEnd=0.3125 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{1,5}, {3,4}, {1,0}, {3,2}} tStart=0.576935809 tEnd=0.589885081 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=-1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+markDoneBinary id=3 (1,5 3,4 1,0 3,2) t=0.285714286 [1] (1.92128277,3.61807585) tEnd=0.576935809 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (4,3 0,1) t=0.3125 [1] (2.75,2.375) tEnd=0.499089216 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markWinding id=3 (1,5 3,4 1,0 3,2) t=0.576935809 [2] (2.00364304,2.00182152) tEnd=0.589885081 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+markDoneBinary id=2 (4,3 0,1) t=0.499089216 [2] (2.00364304,2.00182152) tEnd=0.539358601 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[2] to:[3] start=2 end=3
+bridgeOp current id=2 from=(1.84256566,1.92128277) to=(2.00364304,2.00182152)
+findNextOp debugShowSort contourWinding=0 oppContourWinding=-1 sign=1
+debugShowSort [2] {{1,5}, {3,4}, {1,0}, {3,2}} tStart=0.589885081 tEnd=0.576935809 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,1}, {2,3}, {5,1}, {4,3}} tStart=0.311007457 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [0] {{1,5}, {3,4}, {1,0}, {3,2}} tStart=0.589885081 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,1}, {2,3}, {5,1}, {4,3}} tStart=0.311007457 tEnd=0.285714286 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,1 2,3 5,1 4,3) t=0.311007457 [2] (2.00580978,1.94599628) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markDoneBinary id=2 (4,3 0,1) t=0 [0] (4,3) tEnd=0.3125 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (1,5 3,4 1,0 3,2) t=0.589885081 [3] (2.00580978,1.94599628) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markDoneBinary id=4 (3,2 1,5) t=0 [0] (3,2) tEnd=0.125 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=3 (1,5 3,4 1,0 3,2) t=0.576935809 [2] (2.00364304,2.00182152) tEnd=0.589885081 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
+findNextOp from:[3] to:[1] start=2 end=1
+bridgeOp current id=3 from=(2.00364304,2.00182152) to=(2.00580978,1.94599628)
+path.lineTo(2.00364304,2.00182152);
+path.cubicTo(2.00425649,1.98283899, 2.0049727,1.96422386, 2.00580978,1.94599628);
+path.close();
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{3,2}, {1,5}} tStart=0.125 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{4,3}, {0,1}} tStart=0.3125 tEnd=0.499089216 sign=-1 windValue=1 windSum=-1 0->1 (max=1) done=1 tiny=0 opp=1
+debugShowSort [2] {{3,2}, {1,5}} tStart=0.125 tEnd=0.539358601 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{4,3}, {0,1}} tStart=0.3125 tEnd=0 sign=1 windValue=1 windSum=-1 1->0 (max=1) done=1 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{3,2}, {1,5}} tStart=0.125 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{4,3}, {0,1}} tStart=0.3125 tEnd=0.499089216 sign=-1 windValue=1 windSum=-1 0->1 (max=1) done=1 tiny=0 opp=1
+debugShowSort [2] {{3,2}, {1,5}} tStart=0.125 tEnd=0.539358601 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{4,3}, {0,1}} tStart=0.3125 tEnd=0 sign=1 windValue=1 windSum=-1 1->0 (max=1) done=1 tiny=0 opp=1
+markWinding id=4 (3,2 1,5) t=0.125 [1] (2.75,2.375) tEnd=0.539358601 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (1,5 3,4 1,0 3,2) t=0 (1,5) tEnd=0.285714286 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,2 1,5) t=0.125 (2.75,2.375) tEnd=0.539358601 other=2 otherT=0.3125 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,2 1,5) t=0.539358601 (1.92128277,3.61807585) tEnd=1 other=3 otherT=0.285714286 otherIndex=1 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
+debugShowSort [0] {{3,2}, {1,5}} tStart=0.539358601 tEnd=0.125 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{1,5}, {3,4}, {1,0}, {3,2}} tStart=0.285714286 tEnd=0.576935809 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{3,2}, {1,5}} tStart=0.539358601 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{1,5}, {3,4}, {1,0}, {3,2}} tStart=0.285714286 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[0] sign=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=4 (3,2 1,5) t=0.539358601 [2] (1.92128277,3.61807585) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=3 (1,5 3,4 1,0 3,2) t=0 [0] (1,5) tEnd=0.285714286 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markDoneBinary id=4 (3,2 1,5) t=0.125 [1] (2.75,2.375) tEnd=0.539358601 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[4] to:[3] start=1 end=0
+bridgeOp current id=4 from=(2.75,2.375) to=(1.92128277,3.61807585)
+findNextOp simple
+markDoneBinary id=3 (1,5 3,4 1,0 3,2) t=0 [0] (1,5) tEnd=0.285714286 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+bridgeOp current id=3 from=(1.92128277,3.61807585) to=(1,5)
+path.moveTo(2.75,2.375);
+path.lineTo(1.92128277,3.61807585);
+path.cubicTo(1.8163265,4.18367338, 1.57142854,4.71428585, 1,5);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=-1
+debugShowSort [2] {{3,2}, {1,5}} tStart=0.539358601 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{1,5}, {3,4}, {1,0}, {3,2}} tStart=0.285714286 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [0] {{3,2}, {1,5}} tStart=0.539358601 tEnd=0.125 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{1,5}, {3,4}, {1,0}, {3,2}} tStart=0.285714286 tEnd=0.576935809 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+findNextOp firstIndex=[2] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markDoneBinary id=4 (3,2 1,5) t=0.539358601 [2] (1.92128277,3.61807585) tEnd=1 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+findNextOp from:[4] to:[3] start=1 end=2
+bridgeOp current id=4 from=(1,5) to=(1.92128277,3.61807585)
+</div>
+
+<div id="cubicOp39da">
+computed quadratics given
+ {{2.512,1.571}, {2.64,1.66}, {2.8,1.8}, {3,2}},
+ {{2.41818762,1.98497726}, {2.82699049,2.00933065}, {3.20046793,1.99420472}, {3.49861995,2.00359946}},
+computed quadratics set 1
+ {{2.512,1.571}, {2.702,1.70225}, {3,2}},
+computed quadratics set 2
+ {{2.41818762,1.98497726}, {2.79879886,2.00375569}, {3.125,2}},
+ {{3.125,2}, {3.32670858,1.99910014}, {3.49861995,2.00359946}},
+</div>
+
+<div id="cubicOp40d">
+ SimplifyNew_Test [cubicOp40d]
+{{0,1}, {1,5}, {3,2}, {4,2}},
+{{4,2}, {0,1}},
+op difference
+{{2,3}, {2,4}, {1,0}, {5,1}},
+{{5,1}, {2,3}},
+debugShowCubicIntersection no self intersect {{2,3}, {2,4}, {1,0}, {5,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{2,3}, {2,4}, {1,0}, {5,1}} {{2,3}} wtTs[1]=1 {{5,1}} wnTs[0]=1 {{5,1}, {2,3}} wnTs[1]=0
+debugShowCubicIntersection wtTs[0]=0 {{2,3}, {2,4}, {1,0}, {5,1}} {{2,3}} wtTs[1]=0.226611502 {{1.915764455286163,3.0259142027140675}} wnTs[0]=0.5 {{0,1}, {1,5}, {3,2}, {4,2}} wnTs[1]=0.481278074
+debugShowCubicLineIntersection wtTs[0]=0.601219833 {{2,3}, {2,4}, {1,0}, {5,1}} {{2.2195247359544519,1.554881183988613}} wnTs[0]=0.445119 {{4,2}, {0,1}}
+debugShowCubicLineIntersection wtTs[0]=0.5 {{0,1}, {1,5}, {3,2}, {4,2}} {{2.0000000000000009,2.9999999999999996}} wnTs[0]=1 {{5,1}, {2,3}}
+debugShowLineIntersection wtTs[0]=0.454545455 {{5,1}, {2,3}} {{3.6363636363636362,1.9090909090909089}} wnTs[0]=0.0909091 {{4,2}, {0,1}}
+debugShowCubicIntersection no self intersect {{0,1}, {1,5}, {3,2}, {4,2}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,1}, {1,5}, {3,2}, {4,2}} {{0,1}} wtTs[1]=1 {{4,2}} wnTs[0]=1 {{4,2}, {0,1}} wnTs[1]=0
+debugShowActiveSpans id=3 (2,3 2,4 1,0 5,1) t=0 (2,3) tEnd=0.226611502 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 2,4 1,0 5,1) t=0.226611502 (1.91576445,3.02591419) tEnd=0.601219833 other=1 otherT=0.481278074 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 2,4 1,0 5,1) t=0.601219833 (2.21952462,1.55488122) tEnd=1 other=2 otherT=0.445118816 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,1 2,3) t=0 (5,1) tEnd=0.454545455 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,1 2,3) t=0.454545455 (3.63636374,1.90909088) tEnd=1 other=2 otherT=0.0909090909 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,1 2,3) t=1 (2,3) tEnd=1 other=1 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0 (0,1) tEnd=0.481278074 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.481278074 (1.91576445,3.02591419) tEnd=0.5 other=3 otherT=0.226611502 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.5 (2,3) tEnd=1 other=3 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.5 (2,3) tEnd=1 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,1) t=0 (4,2) tEnd=0.0909090909 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,1) t=0.0909090909 (3.63636374,1.90909088) tEnd=0.445118816 other=4 otherT=0.454545455 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,1) t=0.445118816 (2.21952462,1.55488122) tEnd=1 other=3 otherT=0.601219833 otherIndex=3 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=1 tEnd=0.601219833 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{5,1}, {2,3}} tStart=0 tEnd=0.454545455 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+findTop xyE=(5,1) xyS=(2.21952462,1.55488122)
+findTop dxyE=(12,3) dxyS=(2.8990562,-4.19263649) cross=-59.0088043 bumpsUp=true
+markWinding id=3 (2,3 2,4 1,0 5,1) t=0.601219833 [3] (2.21952462,1.55488122) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (5,1 2,3) t=0 [0] (5,1) tEnd=0.454545455 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (2,3 2,4 1,0 5,1) t=0.601219833 [3] (2.21952462,1.55488122) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (2,3 2,4 1,0 5,1) t=0.601219833 [3] (2.21952462,1.55488122) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+markDoneBinary id=4 (5,1 2,3) t=0 [0] (5,1) tEnd=0.454545455 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{5,1}, {2,3}} tStart=0.454545455 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{4,2}, {0,1}} tStart=0.0909090909 tEnd=0.445118816 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [2] {{5,1}, {2,3}} tStart=0.454545455 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{4,2}, {0,1}} tStart=0.0909090909 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{5,1}, {2,3}} tStart=0.454545455 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{4,2}, {0,1}} tStart=0.0909090909 tEnd=0.445118816 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [2] {{5,1}, {2,3}} tStart=0.454545455 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{4,2}, {0,1}} tStart=0.0909090909 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+markWinding id=2 (4,2 0,1) t=0.0909090909 [1] (3.63636374,1.90909088) tEnd=0.445118816 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=4 (5,1 2,3) t=0.454545455 [1] (3.63636374,1.90909088) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=2 (4,2 0,1) t=0 [0] (4,2) tEnd=0.0909090909 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,1 1,5 3,2 4,2) t=0.5 [2] (2,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,1 1,5 3,2 4,2) t=0.5 [3] (2,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (2,3 2,4 1,0 5,1) t=0 (2,3) tEnd=0.226611502 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 2,4 1,0 5,1) t=0.226611502 (1.91576445,3.02591419) tEnd=0.601219833 other=1 otherT=0.481278074 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,1 2,3) t=0.454545455 (3.63636374,1.90909088) tEnd=1 other=2 otherT=0.0909090909 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,1 2,3) t=1 (2,3) tEnd=1 other=1 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0 (0,1) tEnd=0.481278074 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.481278074 (1.91576445,3.02591419) tEnd=0.5 other=3 otherT=0.226611502 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.5 (2,3) tEnd=1 other=3 otherT=0 otherIndex=1 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.5 (2,3) tEnd=1 other=4 otherT=1 otherIndex=2 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,1) t=0 (4,2) tEnd=0.0909090909 other=1 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,1) t=0.0909090909 (3.63636374,1.90909088) tEnd=0.445118816 other=4 otherT=0.454545455 otherIndex=1 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,1) t=0.445118816 (2.21952462,1.55488122) tEnd=1 other=3 otherT=0.601219833 otherIndex=3 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (4,2 0,1) t=0.0909090909 [1] (3.63636374,1.90909088) tEnd=0.445118816 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [0] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0.601219833 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{4,2}, {0,1}} tStart=0.445118816 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [2] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0.601219833 tEnd=0.226611502 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{4,2}, {0,1}} tStart=0.445118816 tEnd=0.0909090909 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [0] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0.601219833 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{4,2}, {0,1}} tStart=0.445118816 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [2] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0.601219833 tEnd=0.226611502 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{4,2}, {0,1}} tStart=0.445118816 tEnd=0.0909090909 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+markWinding id=2 (4,2 0,1) t=0.445118816 [2] (2.21952462,1.55488122) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,1 1,5 3,2 4,2) t=0 [0] (0,1) tEnd=0.481278074 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (2,3 2,4 1,0 5,1) t=0.226611502 [2] (1.91576445,3.02591419) tEnd=0.601219833 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (2,3 2,4 1,0 5,1) t=0 (2,3) tEnd=0.226611502 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 2,4 1,0 5,1) t=0.226611502 (1.91576445,3.02591419) tEnd=0.601219833 other=1 otherT=0.481278074 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,1 2,3) t=0.454545455 (3.63636374,1.90909088) tEnd=1 other=2 otherT=0.0909090909 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,1 2,3) t=1 (2,3) tEnd=1 other=1 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0 (0,1) tEnd=0.481278074 other=2 otherT=1 otherIndex=3 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.481278074 (1.91576445,3.02591419) tEnd=0.5 other=3 otherT=0.226611502 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.5 (2,3) tEnd=1 other=3 otherT=0 otherIndex=1 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.5 (2,3) tEnd=1 other=4 otherT=1 otherIndex=2 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,1) t=0 (4,2) tEnd=0.0909090909 other=1 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,1) t=0.445118816 (2.21952462,1.55488122) tEnd=1 other=3 otherT=0.601219833 otherIndex=3 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+findNextOp simple
+markDoneBinary id=2 (4,2 0,1) t=0.445118816 [2] (2.21952462,1.55488122) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=2 from=(2.21952462,1.55488122) to=(0,1)
+findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
+debugShowSort [2] {{0,1}, {1,5}, {3,2}, {4,2}} tStart=0.481278074 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0.226611502 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [0] {{0,1}, {1,5}, {3,2}, {4,2}} tStart=0.481278074 tEnd=0.5 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0.226611502 tEnd=0.601219833 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+markDoneBinary id=3 (2,3 2,4 1,0 5,1) t=0 [0] (2,3) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markDoneBinary id=3 (2,3 2,4 1,0 5,1) t=0 [1] (2,3) tEnd=0.226611502 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,1 1,5 3,2 4,2) t=0.481278074 [1] (1.91576445,3.02591419) tEnd=0.5 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markDoneBinary id=1 (0,1 1,5 3,2 4,2) t=0 [0] (0,1) tEnd=0.481278074 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[1] to:[3] start=2 end=3
+bridgeOp current id=1 from=(0,1) to=(1.91576445,3.02591419)
+path.moveTo(2.21952462,1.55488122);
+path.lineTo(0,1);
+path.cubicTo(0.481278062,2.92511225, 1.19418478,3.22882462, 1.91576445,3.02591419);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
+debugShowSort [2] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0.601219833 tEnd=0.226611502 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{4,2}, {0,1}} tStart=0.445118816 tEnd=0.0909090909 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+debugShowSort [0] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0.601219833 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{4,2}, {0,1}} tStart=0.445118816 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=3 (2,3 2,4 1,0 5,1) t=0.226611502 [2] (1.91576445,3.02591419) tEnd=0.601219833 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[3] to:[2] start=2 end=3
+bridgeOp current id=3 from=(1.91576445,3.02591419) to=(2.21952462,1.55488122)
+path.cubicTo(1.86140633,2.74398875, 1.8575213,2.07841325, 2.21952462,1.55488122);
+path.close();
+debugShowActiveSpans id=4 (5,1 2,3) t=0.454545455 (3.63636374,1.90909088) tEnd=1 other=2 otherT=0.0909090909 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,1 2,3) t=1 (2,3) tEnd=1 other=1 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.5 (2,3) tEnd=1 other=3 otherT=0 otherIndex=1 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,5 3,2 4,2) t=0.5 (2,3) tEnd=1 other=4 otherT=1 otherIndex=2 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,1) t=0 (4,2) tEnd=0.0909090909 other=1 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+findNextOp simple
+markDoneBinary id=1 (0,1 1,5 3,2 4,2) t=0.5 [2] (2,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markDoneBinary id=1 (0,1 1,5 3,2 4,2) t=0.5 [3] (2,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=1 from=(2,3) to=(4,2)
+path.moveTo(2,3);
+path.cubicTo(2.75,2.75, 3.5,2, 4,2);
+findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
+debugShowSort [3] {{4,2}, {0,1}} tStart=0.0909090909 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{5,1}, {2,3}} tStart=0.454545455 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+debugShowSort [1] {{4,2}, {0,1}} tStart=0.0909090909 tEnd=0.445118816 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{5,1}, {2,3}} tStart=0.454545455 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markDoneBinary id=2 (4,2 0,1) t=0 [0] (4,2) tEnd=0.0909090909 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[2] to:[4] start=1 end=2
+bridgeOp current id=2 from=(4,2) to=(3.63636374,1.90909088)
+findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
+debugShowSort [1] {{5,1}, {2,3}} tStart=1 tEnd=0.454545455 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,1}, {1,5}, {3,2}, {4,2}} tStart=0.5 tEnd=0.481278074 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+debugShowSort [3] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0 tEnd=0.226611502 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [0] {{0,1}, {1,5}, {3,2}, {4,2}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=4 (5,1 2,3) t=0.454545455 [1] (3.63636374,1.90909088) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[4] to:[1] start=3 end=4
+bridgeOp current id=4 from=(3.63636374,1.90909088) to=(2,3)
+path.lineTo(3.63636374,1.90909088);
+path.lineTo(2,3);
+path.close();
+debugShowActiveSpans id=4 (5,1 2,3) t=1 (2,3) tEnd=1 other=1 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,1}, {1,5}, {3,2}, {4,2}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [1] {{5,1}, {2,3}} tStart=1 tEnd=0.454545455 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+debugShowSort [2] {{0,1}, {1,5}, {3,2}, {4,2}} tStart=0.5 tEnd=0.481278074 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [3] {{2,3}, {2,4}, {1,0}, {5,1}} tStart=0 tEnd=0.226611502 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+</div>
+
+<div id="cubicOp41i">
+ SimplifyNew_Test [cubicOp41i]
+{{0,1}, {2,6}, {4,3}, {6,4}},
+{{6,4}, {0,1}},
+op intersect
+{{3,4}, {4,6}, {1,0}, {6,2}},
+{{6,2}, {3,4}},
+debugShowCubicIntersection no self intersect {{0,1}, {2,6}, {4,3}, {6,4}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,1}, {2,6}, {4,3}, {6,4}} {{0,1}} wtTs[1]=1 {{6,4}} wnTs[0]=1 {{6,4}, {0,1}} wnTs[1]=0
+debugShowCubicIntersection wtTs[0]=0.5 {{0,1}, {2,6}, {4,3}, {6,4}} {{2.9999999999509201,3.9999999999999996}} wtTs[1]=0.521137715 {{3.1268262924910069,3.9974325146613827}} wnTs[0]=0 {{3,4}, {4,6}, {1,0}, {6,2}} wnTs[1]=0.317571165
+debugShowCubicLineIntersection wtTs[0]=0.5 {{0,1}, {2,6}, {4,3}, {6,4}} {{3,4}} wnTs[0]=1 {{6,2}, {3,4}}
+debugShowCubicLineIntersection wtTs[0]=0.580941393 {{3,4}, {4,6}, {1,0}, {6,2}} {{3.0456725133851208,2.5228362566925604}} wnTs[0]=0.492388 {{6,4}, {0,1}}
+debugShowLineIntersection wtTs[0]=0.285714286 {{6,4}, {0,1}} {{4.2857142857142856,3.1428571428571428}} wnTs[0]=0.571429 {{6,2}, {3,4}}
+debugShowCubicIntersection no self intersect {{3,4}, {4,6}, {1,0}, {6,2}}
+debugShowCubicLineIntersection wtTs[0]=0 {{3,4}, {4,6}, {1,0}, {6,2}} {{3,4}} wtTs[1]=0.333333333 {{3.1111111111111116,3.9259259259259256}} wtTs[2]=1 {{6,2}} wnTs[0]=1 {{6,2}, {3,4}} wnTs[1]=0.962962963 wnTs[2]=0
+debugShowActiveSpans id=1 (0,1 2,6 4,3 6,4) t=0 (0,1) tEnd=0.5 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 2,6 4,3 6,4) t=0.5 (3,4) tEnd=0.521137715 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 2,6 4,3 6,4) t=0.521137715 (3.12682629,3.99743247) tEnd=1 other=3 otherT=0.317571165 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,4 0,1) t=0 (6,4) tEnd=0.285714286 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,4 0,1) t=0.285714286 (4.28571415,3.14285707) tEnd=0.492387914 other=4 otherT=0.571428571 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,4 0,1) t=0.492387914 (3.04567242,2.52283621) tEnd=1 other=3 otherT=0.580941393 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0 (3,4) tEnd=0.317571165 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.317571165 (3.12682629,3.99743247) tEnd=0.333333333 other=1 otherT=0.521137715 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.333333333 (3.11111116,3.92592597) tEnd=0.580941393 other=4 otherT=0.962962963 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.580941393 (3.04567242,2.52283621) tEnd=1 other=2 otherT=0.492387914 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,2 3,4) t=0 (6,2) tEnd=0.571428571 other=3 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,2 3,4) t=0.571428571 (4.28571415,3.14285707) tEnd=0.962962963 other=2 otherT=0.285714286 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,2 3,4) t=0.962962963 (3.11111116,3.92592597) tEnd=1 other=3 otherT=0.333333333 otherIndex=3 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,1}, {2,6}, {4,3}, {6,4}} tStart=0 tEnd=0.5 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{6,4}, {0,1}} tStart=1 tEnd=0.492387914 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+findTop xyE=(0,1) xyS=(3,4)
+findTop dxyE=(6,15) dxyS=(6,9.81599801e-11) cross=-90 bumpsUp=false
+markWinding id=1 (0,1 2,6 4,3 6,4) t=0 [0] (0,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (6,4 0,1) t=0.492387914 [2] (3.04567242,2.52283621) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,1 2,6 4,3 6,4) t=0 [0] (0,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+activeOp op=sect miFrom=1 miTo=0 suFrom=0 suTo=0 result=0
+markDoneBinary id=1 (0,1 2,6 4,3 6,4) t=0 [0] (0,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markDoneBinary id=2 (6,4 0,1) t=0.492387914 [2] (3.04567242,2.52283621) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=-1
+debugShowSort [0] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.580941393 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [1] {{6,4}, {0,1}} tStart=0.492387914 tEnd=1 sign=-1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=1
+debugShowSort [2] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.580941393 tEnd=0.333333333 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [3] {{6,4}, {0,1}} tStart=0.492387914 tEnd=0.285714286 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [1] {{6,4}, {0,1}} tStart=0.492387914 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.580941393 tEnd=0.333333333 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [3] {{6,4}, {0,1}} tStart=0.492387914 tEnd=0.285714286 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.580941393 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+markWinding id=3 (3,4 4,6 1,0 6,2) t=0.333333333 [3] (3.11111116,3.92592597) tEnd=0.580941393 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=2 (6,4 0,1) t=0.285714286 [1] (4.28571415,3.14285707) tEnd=0.492387914 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=3 (3,4 4,6 1,0 6,2) t=0.580941393 [4] (3.04567242,2.52283621) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (6,2 3,4) t=0 [0] (6,2) tEnd=0.571428571 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=1 (0,1 2,6 4,3 6,4) t=0.5 (3,4) tEnd=0.521137715 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 2,6 4,3 6,4) t=0.521137715 (3.12682629,3.99743247) tEnd=1 other=3 otherT=0.317571165 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,4 0,1) t=0 (6,4) tEnd=0.285714286 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,4 0,1) t=0.285714286 (4.28571415,3.14285707) tEnd=0.492387914 other=4 otherT=0.571428571 otherIndex=1 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0 (3,4) tEnd=0.317571165 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.317571165 (3.12682629,3.99743247) tEnd=0.333333333 other=1 otherT=0.521137715 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.333333333 (3.11111116,3.92592597) tEnd=0.580941393 other=4 otherT=0.962962963 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.580941393 (3.04567242,2.52283621) tEnd=1 other=2 otherT=0.492387914 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,2 3,4) t=0 (6,2) tEnd=0.571428571 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,2 3,4) t=0.571428571 (4.28571415,3.14285707) tEnd=0.962962963 other=2 otherT=0.285714286 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,2 3,4) t=0.962962963 (3.11111116,3.92592597) tEnd=1 other=3 otherT=0.333333333 otherIndex=3 windSum=? windValue=1 oppValue=0
+activeOp op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
+debugShowSort [1] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.333333333 tEnd=0.580941393 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{6,2}, {3,4}} tStart=0.962962963 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.333333333 tEnd=0.317571165 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{6,2}, {3,4}} tStart=0.962962963 tEnd=0.571428571 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[1] sign=-1
+activeOp op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=4 (6,2 3,4) t=0.962962963 [2] (3.11111116,3.92592597) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=sect miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markWinding id=3 (3,4 4,6 1,0 6,2) t=0.317571165 [2] (3.12682629,3.99743247) tEnd=0.333333333 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=4 (6,2 3,4) t=0.571428571 [1] (4.28571415,3.14285707) tEnd=0.962962963 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+markDoneBinary id=3 (3,4 4,6 1,0 6,2) t=0.333333333 [3] (3.11111116,3.92592597) tEnd=0.580941393 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[3] to:[4] start=2 end=3
+bridgeOp current id=3 from=(3.04567242,2.52283621) to=(3.11111116,3.92592597)
+path.moveTo(3.04567242,2.52283621);
+path.cubicTo(2.9460392,2.99209714, 3.02857494,3.54075789, 3.11111116,3.92592597);
+markUnsortable id=4 (6,2 3,4) t=0.962962963 [2] (3.11111116,3.92592597) tEnd=1 newWindSum=0 windSum=1 windValue=1
+markUnsortable id=1 (0,1 2,6 4,3 6,4) t=0.5 [2] (3,4) tEnd=0.521137715 newWindSum=0 windSum=? windValue=1
+markUnsortable id=1 (0,1 2,6 4,3 6,4) t=0.5 [1] (3,4) tEnd=0.5 newWindSum=0 windSum=? windValue=1
+markUnsortable id=3 (3,4 4,6 1,0 6,2) t=0 [1] (3,4) tEnd=0.317571165 newWindSum=0 windSum=? windValue=1
+findNextOp debugShowSort contourWinding=1 oppContourWinding=1 sign=1
+debugShowSort [0] {{6,2}, {3,4}} tStart=1 tEnd=0.962962963 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,1}, {2,6}, {4,3}, {6,4}} tStart=0.5 tEnd=0.521137715 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=1
+debugShowSort [2] *** UNSORTABLE *** {{0,1}, {2,6}, {4,3}, {6,4}} tStart=0.5 tEnd=0.5 sign=1 windValue=1 windSum=? 2->1 (max=2) done=1 tiny=1 opp=1
+debugShowSort [3] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0 tEnd=0.317571165 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+markDoneBinary id=4 (6,2 3,4) t=0.962962963 [2] (3.11111116,3.92592597) tEnd=1 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+path.lineTo(3,4);
+debugShowActiveSpans id=1 (0,1 2,6 4,3 6,4) t=0.5 (3,4) tEnd=0.521137715 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 2,6 4,3 6,4) t=0.521137715 (3.12682629,3.99743247) tEnd=1 other=3 otherT=0.317571165 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,4 0,1) t=0 (6,4) tEnd=0.285714286 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,4 0,1) t=0.285714286 (4.28571415,3.14285707) tEnd=0.492387914 other=4 otherT=0.571428571 otherIndex=1 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0 (3,4) tEnd=0.317571165 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.317571165 (3.12682629,3.99743247) tEnd=0.333333333 other=1 otherT=0.521137715 otherIndex=3 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.580941393 (3.04567242,2.52283621) tEnd=1 other=2 otherT=0.492387914 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,2 3,4) t=0 (6,2) tEnd=0.571428571 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,2 3,4) t=0.571428571 (4.28571415,3.14285707) tEnd=0.962962963 other=2 otherT=0.285714286 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+activeOp op=sect miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
+debugShowSort [0] {{6,2}, {3,4}} tStart=0.962962963 tEnd=0.571428571 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.333333333 tEnd=0.580941393 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{6,2}, {3,4}} tStart=0.962962963 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [3] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.333333333 tEnd=0.317571165 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[0] sign=1
+activeOp op=sect miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+activeOp op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+activeOp op=sect miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markDoneBinary id=4 (6,2 3,4) t=0.571428571 [1] (4.28571415,3.14285707) tEnd=0.962962963 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[4] to:[3] start=3 end=2
+bridgeOp current id=4 from=(4.28571415,3.14285707) to=(3.11111116,3.92592597)
+findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=-1
+debugShowSort [1] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.317571165 tEnd=0.333333333 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,1}, {2,6}, {4,3}, {6,4}} tStart=0.521137715 tEnd=0.5 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+debugShowSort [3] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.317571165 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,1}, {2,6}, {4,3}, {6,4}} tStart=0.521137715 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=-1
+activeOp op=sect miFrom=1 miTo=0 suFrom=1 suTo=1 result=1
+markWinding id=1 (0,1 2,6 4,3 6,4) t=0.5 [2] (3,4) tEnd=0.521137715 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (3,4 4,6 1,0 6,2) t=0 [0] (3,4) tEnd=0 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markDoneBinary id=3 (3,4 4,6 1,0 6,2) t=0 [1] (3,4) tEnd=0.317571165 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=sect miFrom=0 miTo=1 suFrom=0 suTo=0 result=0
+markDoneBinary id=1 (0,1 2,6 4,3 6,4) t=0.521137715 [3] (3.12682629,3.99743247) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markDoneBinary id=2 (6,4 0,1) t=0 [0] (6,4) tEnd=0.285714286 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+markDoneBinary id=3 (3,4 4,6 1,0 6,2) t=0.317571165 [2] (3.12682629,3.99743247) tEnd=0.333333333 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+findNextOp from:[3] to:[1] start=3 end=2
+bridgeOp current id=3 from=(3.11111116,3.92592597) to=(3.12682629,3.99743247)
+path.moveTo(4.28571415,3.14285707);
+path.lineTo(3.11111116,3.92592597);
+path.cubicTo(3.11636519,3.9504447, 3.12161922,3.97430134, 3.12682629,3.99743247);
+setSpans unsortable [2] (3,4) [3] (3.12682629,3.99743247)
+setSpans unsortable [3] (3,4) [2] (3.11111116,3.92592597)
+markUnsortable id=1 (0,1 2,6 4,3 6,4) t=0.5 [2] (3,4) tEnd=0.521137715 newWindSum=0 windSum=1 windValue=1
+markUnsortable id=1 (0,1 2,6 4,3 6,4) t=0.5 [1] (3,4) tEnd=0.5 newWindSum=0 windSum=? windValue=1
+markUnsortable id=4 (6,2 3,4) t=0.962962963 [2] (3.11111116,3.92592597) tEnd=1 newWindSum=0 windSum=1 windValue=1
+findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=-1
+debugShowSort [0] *** UNSORTABLE *** {{0,1}, {2,6}, {4,3}, {6,4}} tStart=0.5 tEnd=0.521137715 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] *** UNSORTABLE *** {{0,1}, {2,6}, {4,3}, {6,4}} tStart=0.5 tEnd=0.5 sign=1 windValue=1 windSum=? 1->0 (max=1) done=1 tiny=1 opp=0
+debugShowSort [2] *** UNSORTABLE *** {{6,2}, {3,4}} tStart=1 tEnd=0.962962963 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+path.cubicTo(3.08455086,3.99910641, 3.04227543,4, 3,4);
+markDoneBinary id=1 (0,1 2,6 4,3 6,4) t=0.5 [2] (3,4) tEnd=0.521137715 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+debugShowActiveSpans id=2 (6,4 0,1) t=0.285714286 (4.28571415,3.14285707) tEnd=0.492387914 other=4 otherT=0.571428571 otherIndex=1 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.580941393 (3.04567242,2.52283621) tEnd=1 other=2 otherT=0.492387914 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,2 3,4) t=0 (6,2) tEnd=0.571428571 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+activeOp op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
+findNextOp debugShowSort contourWinding=1 oppContourWinding=-1 sign=1
+debugShowSort [3] {{6,4}, {0,1}} tStart=0.492387914 tEnd=0.285714286 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.580941393 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [1] {{6,4}, {0,1}} tStart=0.492387914 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{3,4}, {4,6}, {1,0}, {6,2}} tStart=0.580941393 tEnd=0.333333333 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=1
+activeOp op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+activeOp op=sect miFrom=0 miTo=1 suFrom=0 suTo=0 result=0
+activeOp op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markDoneBinary id=2 (6,4 0,1) t=0.285714286 [1] (4.28571415,3.14285707) tEnd=0.492387914 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+findNextOp from:[2] to:[3] start=4 end=3
+bridgeOp current id=2 from=(4.28571415,3.14285707) to=(3.04567242,2.52283621)
+path.moveTo(4.28571415,3.14285707);
+path.lineTo(3.04567242,2.52283621);
+setSpans unsortable [1] (3,4) [2] (3.12682629,3.99743247)
+setSpans all tiny unsortable [1] (3,4) [0] (0,1)
+setSpans unsortable [3] (3,4) [2] (3.11111116,3.92592597)
+setSpans unsortable [2] (3,4) [3] (3.12682629,3.99743247)
+setSpans unsortable [1] (3,4) [2] (3.12682629,3.99743247)
+setSpans unsortable [3] (3,4) [2] (3.11111116,3.92592597)
+setSpans unsortable [3] (3,4) [2] (3.11111116,3.92592597)
+setSpans unsortable [2] (3,4) [3] (3.12682629,3.99743247)
+setSpans unsortable [1] (3,4) [2] (3.12682629,3.99743247)
+debugShowActiveSpans id=3 (3,4 4,6 1,0 6,2) t=0.580941393 (3.04567242,2.52283621) tEnd=1 other=2 otherT=0.492387914 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,2 3,4) t=0 (6,2) tEnd=0.571428571 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+activeOp op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (3,4 4,6 1,0 6,2) t=0.580941393 [4] (3.04567242,2.52283621) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+markDoneBinary id=4 (6,2 3,4) t=0 [0] (6,2) tEnd=0.571428571 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+</div>
+
+<div id="cubicOp42d">
+ SimplifyNew_Test [cubicOp42d]
+{{0,1}, {1,2}, {6,5}, {5,4}},
+{{5,4}, {0,1}},
+op difference
+{{5,6}, {4,5}, {1,0}, {2,1}},
+{{2,1}, {5,6}},
+debugShowCubicIntersection no self intersect {{5,6}, {4,5}, {1,0}, {2,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{5,6}, {4,5}, {1,0}, {2,1}} {{5,6}} wtTs[1]=1 {{2,1}} wnTs[0]=1 {{2,1}, {5,6}} wnTs[1]=0
+debugShowCubicIntersection no intersect {{5,6}, {4,5}, {1,0}, {2,1}} {{0,1}, {1,2}, {6,5}, {5,4}}
+debugShowCubicLineIntersection wtTs[0]=0.520955385 {{5,6}, {4,5}, {1,0}, {2,1}} {{2.6570733652881806,2.5942440191729084}} wnTs[0]=0.468585 {{5,4}, {0,1}}
+debugShowCubicLineIntersection wtTs[0]=0.520955385 {{0,1}, {1,2}, {6,5}, {5,4}} {{3.4057559808270916,3.3429266347118194}} wnTs[0]=0.468585 {{2,1}, {5,6}}
+debugShowLineIntersection wtTs[0]=0.375 {{2,1}, {5,6}} {{3.125,2.875}} wnTs[0]=0.375 {{5,4}, {0,1}}
+debugShowCubicIntersection no self intersect {{0,1}, {1,2}, {6,5}, {5,4}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,1}, {1,2}, {6,5}, {5,4}} {{0,1}} wtTs[1]=1 {{5,4}} wnTs[0]=1 {{5,4}, {0,1}} wnTs[1]=0
+debugShowActiveSpans id=3 (5,6 4,5 1,0 2,1) t=0 (5,6) tEnd=0.520955385 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (5,6 4,5 1,0 2,1) t=0.520955385 (2.65707326,2.594244) tEnd=1 other=2 otherT=0.468585327 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 5,6) t=0 (2,1) tEnd=0.375 other=3 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 5,6) t=0.375 (3.125,2.875) tEnd=0.468585327 other=2 otherT=0.375 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 5,6) t=0.468585327 (3.405756,3.34292674) tEnd=1 other=1 otherT=0.520955385 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,2 6,5 5,4) t=0 (0,1) tEnd=0.520955385 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,2 6,5 5,4) t=0.520955385 (3.405756,3.34292674) tEnd=1 other=4 otherT=0.468585327 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,4 0,1) t=0 (5,4) tEnd=0.375 other=1 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,4 0,1) t=0.375 (3.125,2.875) tEnd=0.468585327 other=4 otherT=0.375 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,4 0,1) t=0.468585327 (2.65707326,2.594244) tEnd=1 other=3 otherT=0.520955385 otherIndex=1 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,1}, {1,2}, {6,5}, {5,4}} tStart=0 tEnd=0.520955385 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{5,4}, {0,1}} tStart=1 tEnd=0.468585327 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+findTop xyE=(0,1) xyS=(3.405756,3.34292674)
+findTop dxyE=(3,3) dxyS=(7.361094,4.36636353) cross=-8.98419189 bumpsUp=false
+markWinding id=1 (0,1 1,2 6,5 5,4) t=0 [0] (0,1) tEnd=0.520955385 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (5,4 0,1) t=0.468585327 [2] (2.65707326,2.594244) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,1 1,2 6,5 5,4) t=0 [0] (0,1) tEnd=0.520955385 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+findNextOp simple
+markDoneBinary id=1 (0,1 1,2 6,5 5,4) t=0 [0] (0,1) tEnd=0.520955385 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=1 from=(3.405756,3.34292674) to=(0,1)
+path.moveTo(3.405756,3.34292674);
+path.cubicTo(2.12748885,2.58469963, 0.520955384,1.52095544, 0,1);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [1] {{5,4}, {0,1}} tStart=0.468585327 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{5,6}, {4,5}, {1,0}, {2,1}} tStart=0.520955385 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [3] {{5,4}, {0,1}} tStart=0.468585327 tEnd=0.375 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{5,6}, {4,5}, {1,0}, {2,1}} tStart=0.520955385 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=3 (5,6 4,5 1,0 2,1) t=0 [0] (5,6) tEnd=0.520955385 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=4 (2,1 5,6) t=0.468585327 [2] (3.405756,3.34292674) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (5,4 0,1) t=0.375 [1] (3.125,2.875) tEnd=0.468585327 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (5,6 4,5 1,0 2,1) t=0.520955385 [1] (2.65707326,2.594244) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markDoneBinary id=4 (2,1 5,6) t=0 [0] (2,1) tEnd=0.375 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+markDoneBinary id=2 (5,4 0,1) t=0.468585327 [2] (2.65707326,2.594244) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[2] to:[3] start=1 end=0
+bridgeOp current id=2 from=(0,1) to=(2.65707326,2.594244)
+findNextOp simple
+markDoneBinary id=3 (5,6 4,5 1,0 2,1) t=0 [0] (5,6) tEnd=0.520955385 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+bridgeOp current id=3 from=(2.65707326,2.594244) to=(5,6)
+path.lineTo(2.65707326,2.594244);
+path.cubicTo(3.41530037,3.87251115, 4.47904444,5.47904444, 5,6);
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
+debugShowSort [2] {{2,1}, {5,6}} tStart=0.468585327 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,1}, {1,2}, {6,5}, {5,4}} tStart=0.520955385 tEnd=1 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=1
+debugShowSort [0] {{2,1}, {5,6}} tStart=0.468585327 tEnd=0.375 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,1}, {1,2}, {6,5}, {5,4}} tStart=0.520955385 tEnd=0 sign=1 windValue=1 windSum=1 2->1 (max=2) done=1 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
+markDoneBinary id=1 (0,1 1,2 6,5 5,4) t=0.520955385 [1] (3.405756,3.34292674) tEnd=1 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
+markDoneBinary id=2 (5,4 0,1) t=0 [0] (5,4) tEnd=0.375 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=4 (2,1 5,6) t=0.375 [1] (3.125,2.875) tEnd=0.468585327 newWindSum=-1 newOppSum=2 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=4 (2,1 5,6) t=0.468585327 [2] (3.405756,3.34292674) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[4] to:[4] start=2 end=1
+bridgeOp current id=4 from=(5,6) to=(3.405756,3.34292674)
+path.lineTo(3.405756,3.34292674);
+path.close();
+debugShowActiveSpans id=4 (2,1 5,6) t=0.375 (3.125,2.875) tEnd=0.468585327 other=2 otherT=0.375 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+findNextOp debugShowSort contourWinding=0 oppContourWinding=2 sign=1
+debugShowSort [0] {{2,1}, {5,6}} tStart=0.468585327 tEnd=0.375 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,1}, {1,2}, {6,5}, {5,4}} tStart=0.520955385 tEnd=0 sign=1 windValue=1 windSum=1 2->1 (max=2) done=1 tiny=0 opp=1
+debugShowSort [2] {{2,1}, {5,6}} tStart=0.468585327 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [3] {{0,1}, {1,2}, {6,5}, {5,4}} tStart=0.520955385 tEnd=1 sign=-1 windValue=1 windSum=2 1->2 (max=2) done=1 tiny=0 opp=1
+findNextOp firstIndex=[0] sign=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
+markDoneBinary id=4 (2,1 5,6) t=0.375 [1] (3.125,2.875) tEnd=0.468585327 newWindSum=-1 newOppSum=2 oppSum=2 windSum=-1 windValue=1
+findNextOp from:[4] to:[4] start=2 end=3
+bridgeOp current id=4 from=(3.125,2.875) to=(3.405756,3.34292674)
+</div>
+
+<div id="cubicOp42da">
+computed quadratics given
+ {{0,1}, {1,2}, {6,5}, {5,4}},
+ {{5,6}, {4,5}, {1,0}, {2,1}},
+computed quadratics set 1
+ {{0,1}, {0.4140625,1.3984375}, {1.34375,2.03125}},
+ {{1.34375,2.03125}, {2.2734375,2.6640625}, {3.25,3.25}},
+ {{3.25,3.25}, {4.2265625,3.8359375}, {4.78125,4.09375}},
+ {{4.78125,4.09375}, {5.3359375,4.3515625}, {5,4}},
+computed quadratics set 2
+ {{5,6}, {4.6015625,5.5859375}, {3.96875,4.65625}},
+ {{3.96875,4.65625}, {3.3359375,3.7265625}, {2.75,2.75}},
+ {{2.75,2.75}, {2.1640625,1.7734375}, {1.90625,1.21875}},
+ {{1.90625,1.21875}, {1.6484375,0.6640625}, {2,1}},
+</div>
+
+<div id="cubicOp42db">
+ {{1.34375,2.03125}, {2.2734375,2.6640625}, {3.25,3.25}},
+ {{3.96875,4.65625}, {3.3359375,3.7265625}, {2.75,2.75}},
+</div>
+
+<div id="cubicOp43d">
+ SimplifyNew_Test [cubicOp43d]
+{{0,2}, {1,2}, {4,0}, {3,1}},
+{{3,1}, {0,2}},
+op difference
+{{0,4}, {1,3}, {2,0}, {2,1}},
+{{2,1}, {0,4}},
+debugShowCubicIntersection no self intersect {{0,2}, {1,2}, {4,0}, {3,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,2}, {1,2}, {4,0}, {3,1}} {{0,2}} wtTs[1]=0.333333333 {{1.4444444444444446,1.5185185185185186}} wtTs[2]=1 {{3,1}} wnTs[0]=1 {{3,1}, {0,2}} wnTs[1]=0.518518519 wnTs[2]=0
+debugShowCubicIntersection wtTs[0]=0.345547542 {{0,2}, {1,2}, {4,0}, {3,1}} {{1.5055045552472988,1.4898786220870244}} wnTs[0]=0.560544 {{0,4}, {1,3}, {2,0}, {2,1}}
+debugShowCubicLineIntersection wtTs[0]=0.395188999 {{0,2}, {1,2}, {4,0}, {3,1}} {{1.7523027701818603,1.3715458447272095}} wnTs[0]=0.123849 {{2,1}, {0,4}}
+debugShowCubicLineIntersection wtTs[0]=0.558102564 {{0,4}, {1,3}, {2,0}, {2,1}} {{1.5004707573680853,1.4998430808773049}} wnTs[0]=0.499843 {{3,1}, {0,2}}
+debugShowLineIntersection wtTs[0]=0.428571429 {{3,1}, {0,2}} {{1.7142857142857142,1.4285714285714284}} wnTs[0]=0.142857 {{2,1}, {0,4}}
+debugShowCubicIntersection no self intersect {{0,4}, {1,3}, {2,0}, {2,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,4}, {1,3}, {2,0}, {2,1}} {{0,4}} wtTs[1]=0.333333333 {{0.96296296296296258,2.5555555555555562}} wtTs[2]=1 {{2,1}} wnTs[0]=1 {{2,1}, {0,4}} wnTs[1]=0.518518519 wnTs[2]=0
+debugShowActiveSpans id=1 (0,2 1,2 4,0 3,1) t=0 (0,2) tEnd=0.333333333 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 1,2 4,0 3,1) t=0.333333333 (1.44444442,1.51851857) tEnd=0.345547542 other=2 otherT=0.518518519 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 1,2 4,0 3,1) t=0.345547542 (1.50550461,1.48987865) tEnd=0.395188999 other=3 otherT=0.560544414 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 1,2 4,0 3,1) t=0.395188999 (1.75230277,1.37154579) tEnd=1 other=4 otherT=0.123848615 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,1 0,2) t=0 (3,1) tEnd=0.428571429 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,1 0,2) t=0.428571429 (1.71428573,1.42857146) tEnd=0.499843081 other=4 otherT=0.142857143 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,1 0,2) t=0.499843081 (1.50047076,1.49984312) tEnd=0.518518519 other=3 otherT=0.558102564 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,1 0,2) t=0.518518519 (1.44444442,1.51851857) tEnd=1 other=1 otherT=0.333333333 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 1,3 2,0 2,1) t=0 (0,4) tEnd=0.333333333 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 1,3 2,0 2,1) t=0.333333333 (0.962962985,2.55555558) tEnd=0.558102564 other=4 otherT=0.518518519 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 1,3 2,0 2,1) t=0.558102564 (1.50047076,1.49984312) tEnd=0.560544414 other=2 otherT=0.499843081 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 1,3 2,0 2,1) t=0.560544414 (1.50550461,1.48987865) tEnd=1 other=1 otherT=0.345547542 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 0,4) t=0 (2,1) tEnd=0.123848615 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 0,4) t=0.123848615 (1.75230277,1.37154579) tEnd=0.142857143 other=1 otherT=0.395188999 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 0,4) t=0.142857143 (1.71428573,1.42857146) tEnd=0.518518519 other=2 otherT=0.428571429 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 0,4) t=0.518518519 (0.962962985,2.55555558) tEnd=1 other=3 otherT=0.333333333 otherIndex=1 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{0,2}, {1,2}, {4,0}, {3,1}} tStart=1 tEnd=0.395188999 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,1}, {0,2}} tStart=0 tEnd=0.428571429 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+findTop xyE=(3,1) xyS=(1.75230277,1.37154579)
+findTop dxyE=(-3,3) dxyS=(4.93112993,-2.39965272) cross=-7.59443188 bumpsUp=true
+findTop cross bump disagree
+findTop swap
+markWinding id=1 (0,2 1,2 4,0 3,1) t=0.395188999 [3] (1.75230277,1.37154579) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,2 1,2 4,0 3,1) t=0.395188999 [3] (1.75230277,1.37154579) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markWinding id=2 (3,1 0,2) t=0 [0] (3,1) tEnd=0.428571429 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,2}, {1,2}, {4,0}, {3,1}} tStart=0.395188999 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{2,1}, {0,4}} tStart=0.123848615 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [2] {{0,2}, {1,2}, {4,0}, {3,1}} tStart=0.395188999 tEnd=0.345547542 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{2,1}, {0,4}} tStart=0.123848615 tEnd=0.142857143 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[0] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=4 (2,1 0,4) t=0 [0] (2,1) tEnd=0.123848615 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=3 (0,4 1,3 2,0 2,1) t=0.560544414 [3] (1.50550461,1.48987865) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,2 1,2 4,0 3,1) t=0.345547542 [2] (1.50550461,1.48987865) tEnd=0.395188999 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=4 (2,1 0,4) t=0.123848615 [1] (1.75230277,1.37154579) tEnd=0.142857143 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+markDoneBinary id=1 (0,2 1,2 4,0 3,1) t=0.395188999 [3] (1.75230277,1.37154579) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[1] to:[4] start=1 end=0
+bridgeOp current id=1 from=(3,1) to=(1.75230277,1.37154579)
+path.moveTo(3,1);
+path.cubicTo(3.60481095,0.395188987, 2.7464366,0.887767076, 1.75230277,1.37154579);
+findNextOp simple
+markDoneBinary id=4 (2,1 0,4) t=0 [0] (2,1) tEnd=0.123848615 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+bridgeOp current id=4 from=(1.75230277,1.37154579) to=(2,1)
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
+debugShowSort [1] {{0,4}, {1,3}, {2,0}, {2,1}} tStart=0.560544414 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,2}, {1,2}, {4,0}, {3,1}} tStart=0.345547542 tEnd=0.333333333 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+debugShowSort [3] {{0,4}, {1,3}, {2,0}, {2,1}} tStart=0.560544414 tEnd=0.558102564 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,2}, {1,2}, {4,0}, {3,1}} tStart=0.345547542 tEnd=0.395188999 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=-1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+markWinding id=1 (0,2 1,2 4,0 3,1) t=0.333333333 [1] (1.44444442,1.51851857) tEnd=0.345547542 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+markDoneBinary id=3 (0,4 1,3 2,0 2,1) t=0.558102564 [2] (1.50047076,1.49984312) tEnd=0.560544414 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=3 (0,4 1,3 2,0 2,1) t=0.560544414 [3] (1.50550461,1.48987865) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[3] to:[1] start=2 end=1
+bridgeOp current id=3 from=(2,1) to=(1.50550461,1.48987865)
+path.lineTo(2,1);
+path.cubicTo(2,0.560544431, 1.80687881,0.893573642, 1.50550461,1.48987865);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [1] {{0,2}, {1,2}, {4,0}, {3,1}} tStart=0.333333333 tEnd=0.345547542 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{3,1}, {0,2}} tStart=0.518518519 tEnd=1 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,2}, {1,2}, {4,0}, {3,1}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=? 2->1 (max=2) done=0 tiny=0 opp=0
+debugShowSort [0] {{3,1}, {0,2}} tStart=0.518518519 tEnd=0.499843081 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[1] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
+markDoneBinary id=2 (3,1 0,2) t=0.518518519 [3] (1.44444442,1.51851857) tEnd=1 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
+markDoneBinary id=1 (0,2 1,2 4,0 3,1) t=0 [0] (0,2) tEnd=0.333333333 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+markWinding id=2 (3,1 0,2) t=0.499843081 [2] (1.50047076,1.49984312) tEnd=0.518518519 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+markDoneBinary id=1 (0,2 1,2 4,0 3,1) t=0.333333333 [1] (1.44444442,1.51851857) tEnd=0.345547542 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[1] to:[2] start=3 end=2
+bridgeOp current id=1 from=(1.50550461,1.48987865) to=(1.44444442,1.51851857)
+path.cubicTo(1.48515844,1.49946892, 1.46480155,1.50901854, 1.44444442,1.51851857);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [2] {{3,1}, {0,2}} tStart=0.499843081 tEnd=0.518518519 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,4}, {1,3}, {2,0}, {2,1}} tStart=0.558102564 tEnd=0.333333333 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [0] {{3,1}, {0,2}} tStart=0.499843081 tEnd=0.428571429 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,4}, {1,3}, {2,0}, {2,1}} tStart=0.558102564 tEnd=0.560544414 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=3 (0,4 1,3 2,0 2,1) t=0.333333333 [1] (0.962962985,2.55555558) tEnd=0.558102564 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (3,1 0,2) t=0.428571429 [1] (1.71428573,1.42857146) tEnd=0.499843081 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=2 (3,1 0,2) t=0.499843081 [2] (1.50047076,1.49984312) tEnd=0.518518519 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[2] to:[3] start=2 end=1
+bridgeOp current id=2 from=(1.44444442,1.51851857) to=(1.50047076,1.49984312)
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
+debugShowSort [1] {{0,4}, {1,3}, {2,0}, {2,1}} tStart=0.333333333 tEnd=0.558102564 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{2,1}, {0,4}} tStart=0.518518519 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,4}, {1,3}, {2,0}, {2,1}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{2,1}, {0,4}} tStart=0.518518519 tEnd=0.142857143 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[1] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=4 (2,1 0,4) t=0.518518519 [3] (0.962962985,2.55555558) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=3 (0,4 1,3 2,0 2,1) t=0 [0] (0,4) tEnd=0.333333333 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=4 (2,1 0,4) t=0.142857143 [2] (1.71428573,1.42857146) tEnd=0.518518519 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+markDoneBinary id=3 (0,4 1,3 2,0 2,1) t=0.333333333 [1] (0.962962985,2.55555558) tEnd=0.558102564 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[3] to:[4] start=3 end=4
+bridgeOp current id=3 from=(1.50047076,1.49984312) to=(0.962962985,2.55555558)
+path.lineTo(1.50047076,1.49984312);
+path.cubicTo(1.3457123,1.80632472, 1.16275787,2.18094015, 0.962962985,2.55555558);
+findNextOp simple
+markDoneBinary id=4 (2,1 0,4) t=0.518518519 [3] (0.962962985,2.55555558) tEnd=1 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+bridgeOp current id=4 from=(0.962962985,2.55555558) to=(0,4)
+findNextOp debugShowSort contourWinding=1 oppContourWinding=1 sign=1
+debugShowSort [3] {{0,4}, {1,3}, {2,0}, {2,1}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{2,1}, {0,4}} tStart=0.518518519 tEnd=0.142857143 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,4}, {1,3}, {2,0}, {2,1}} tStart=0.333333333 tEnd=0.558102564 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{2,1}, {0,4}} tStart=0.518518519 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+findNextOp firstIndex=[3] sign=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markDoneBinary id=3 (0,4 1,3 2,0 2,1) t=0 [0] (0,4) tEnd=0.333333333 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+findNextOp from:[3] to:[4] start=3 end=2
+bridgeOp current id=3 from=(0,4) to=(0.962962985,2.55555558)
+path.lineTo(0,4);
+path.cubicTo(0.333333343,3.66666675, 0.666666627,3.11111116, 0.962962985,2.55555558);
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
+debugShowSort [3] {{2,1}, {0,4}} tStart=0.142857143 tEnd=0.518518519 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{3,1}, {0,2}} tStart=0.428571429 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=1
+debugShowSort [1] {{2,1}, {0,4}} tStart=0.142857143 tEnd=0.123848615 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{3,1}, {0,2}} tStart=0.428571429 tEnd=0.499843081 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=-1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=4 (2,1 0,4) t=0.142857143 [2] (1.71428573,1.42857146) tEnd=0.518518519 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[4] to:[2] start=1 end=0
+bridgeOp current id=4 from=(0.962962985,2.55555558) to=(1.71428573,1.42857146)
+findNextOp simple
+markDoneBinary id=2 (3,1 0,2) t=0 [0] (3,1) tEnd=0.428571429 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=2 from=(1.71428573,1.42857146) to=(3,1)
+path.lineTo(1.71428573,1.42857146);
+path.lineTo(3,1);
+path.close();
+assemble
+assemble contour start=(3,1) end=(3,1)
+</div>
+
+<div id="cubicOp44d">
+ SimplifyNew_Test [cubicOp44d]
+{{0,2}, {3,6}, {4,0}, {3,2}},
+{{3,2}, {0,2}},
+op difference
+{{0,4}, {2,3}, {2,0}, {6,3}},
+{{6,3}, {0,4}},
+debugShowCubicIntersection no self intersect {{0,2}, {3,6}, {4,0}, {3,2}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,2}, {3,6}, {4,0}, {3,2}} {{0,2}} wtTs[1]=1 {{3,2}} wnTs[0]=1 {{3,2}, {0,2}} wnTs[1]=0
+debugShowCubicIntersection wtTs[0]=0.135342164 {{0,2}, {3,6}, {4,0}, {3,2}} {{1.1081744689414279,3.1192052729330815}} wtTs[1]=0.754165096 {{3.3748959118747366,1.708000079031383}} wtTs[2]=0.93333707 {{3.1733251116708114,1.7013446943452044}} wnTs[0]=0.223477 {{0,4}, {2,3}, {2,0}, {6,3}} wnTs[1]=0.708782366 wnTs[2]=0.67692927
+debugShowCubicLineIntersection no intersect {{0,2}, {3,6}, {4,0}, {3,2}} {{6,3}, {0,4}}
+debugShowCubicLineIntersection wtTs[0]=0.5 {{0,4}, {2,3}, {2,0}, {6,3}} {{2.25,2}} wnTs[0]=0.25 {{3,2}, {0,2}}
+debugShowCubicIntersection no self intersect {{0,4}, {2,3}, {2,0}, {6,3}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,4}, {2,3}, {2,0}, {6,3}} {{0,4}} wtTs[1]=1 {{6,3}} wnTs[0]=1 {{6,3}, {0,4}} wnTs[1]=0
+debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0 (0,2) tEnd=0.135342164 other=2 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0.135342164 (1.10817444,3.11920524) tEnd=0.754165096 other=3 otherT=0.223476766 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0.754165096 (3.37489581,1.70800006) tEnd=0.93333707 other=3 otherT=0.708782366 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0.93333707 (3.17332506,1.70134473) tEnd=1 other=3 otherT=0.67692927 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0 (3,2) tEnd=0.25 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0.25 (2.25,2) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0 (0,4) tEnd=0.223476766 other=4 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.223476766 (1.10817444,3.11920524) tEnd=0.5 other=1 otherT=0.135342164 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.5 (2.25,2) tEnd=0.67692927 other=2 otherT=0.25 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.67692927 (3.17332506,1.70134473) tEnd=0.708782366 other=1 otherT=0.93333707 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.708782366 (3.37489581,1.70800006) tEnd=1 other=1 otherT=0.754165096 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,3 0,4) t=0 (6,3) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.67692927 tEnd=0.708782366 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.93333707 tEnd=0.754165096 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [2] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.67692927 tEnd=0.5 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.93333707 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+findTop swap
+markWinding id=3 (0,4 2,3 2,0 6,3) t=0.67692927 [3] (3.17332506,1.70134473) tEnd=0.708782366 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (0,4 2,3 2,0 6,3) t=0.67692927 [3] (3.17332506,1.70134473) tEnd=0.708782366 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (0,4 2,3 2,0 6,3) t=0.67692927 [3] (3.17332506,1.70134473) tEnd=0.708782366 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=-1
+debugShowSort [0] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.754165096 tEnd=0.93333707 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.708782366 tEnd=0.67692927 sign=1 windValue=1 windSum=-1 ?->? (max=?) done=1 tiny=0 opp=1
+debugShowSort [2] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.754165096 tEnd=0.135342164 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.708782366 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [1] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.708782366 tEnd=0.67692927 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.754165096 tEnd=0.135342164 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [3] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.708782366 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.754165096 tEnd=0.93333707 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+markWinding id=1 (0,2 3,6 4,0 3,2) t=0.135342164 [1] (1.10817444,3.11920524) tEnd=0.754165096 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=3 (0,4 2,3 2,0 6,3) t=0.708782366 [4] (3.37489581,1.70800006) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=4 (6,3 0,4) t=0 [0] (6,3) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=3 (0,4 2,3 2,0 6,3) t=0 [0] (0,4) tEnd=0.223476766 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,2 3,6 4,0 3,2) t=0.754165096 [2] (3.37489581,1.70800006) tEnd=0.93333707 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0 (0,2) tEnd=0.135342164 other=2 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0.135342164 (1.10817444,3.11920524) tEnd=0.754165096 other=3 otherT=0.223476766 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0.754165096 (3.37489581,1.70800006) tEnd=0.93333707 other=3 otherT=0.708782366 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0.93333707 (3.17332506,1.70134473) tEnd=1 other=3 otherT=0.67692927 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0 (3,2) tEnd=0.25 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0.25 (2.25,2) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0 (0,4) tEnd=0.223476766 other=4 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.223476766 (1.10817444,3.11920524) tEnd=0.5 other=1 otherT=0.135342164 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.5 (2.25,2) tEnd=0.67692927 other=2 otherT=0.25 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.708782366 (3.37489581,1.70800006) tEnd=1 other=1 otherT=0.754165096 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,3 0,4) t=0 (6,3) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,2 3,6 4,0 3,2) t=0.135342164 [1] (1.10817444,3.11920524) tEnd=0.754165096 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
+debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0 (0,2) tEnd=0.135342164 other=2 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0.754165096 (3.37489581,1.70800006) tEnd=0.93333707 other=3 otherT=0.708782366 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 3,6 4,0 3,2) t=0.93333707 (3.17332506,1.70134473) tEnd=1 other=3 otherT=0.67692927 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0 (3,2) tEnd=0.25 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0.25 (2.25,2) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0 (0,4) tEnd=0.223476766 other=4 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.223476766 (1.10817444,3.11920524) tEnd=0.5 other=1 otherT=0.135342164 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.5 (2.25,2) tEnd=0.67692927 other=2 otherT=0.25 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 6,3) t=0.708782366 (3.37489581,1.70800006) tEnd=1 other=1 otherT=0.754165096 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,3 0,4) t=0 (6,3) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+findNextOp simple
+markDoneBinary id=3 (0,4 2,3 2,0 6,3) t=0 [0] (0,4) tEnd=0.223476766 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
+bridgeOp current id=3 from=(1.10817444,3.11920524) to=(0,4)
+path.moveTo(1.10817444,3.11920524);
+path.cubicTo(0.794023395,3.45316267, 0.446953505,3.77652311, 0,4);
+findNextOp simple
+markDoneBinary id=4 (6,3 0,4) t=0 [0] (6,3) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
+bridgeOp current id=4 from=(0,4) to=(6,3)
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=-1 sign=-1
+debugShowSort [3] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.708782366 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.754165096 tEnd=0.93333707 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [1] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.708782366 tEnd=0.67692927 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.754165096 tEnd=0.135342164 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=-1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=3 (0,4 2,3 2,0 6,3) t=0.708782366 [4] (3.37489581,1.70800006) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
+findNextOp from:[3] to:[1] start=2 end=3
+bridgeOp current id=3 from=(6,3) to=(3.37489581,1.70800006)
+path.lineTo(6,3);
+path.cubicTo(4.83512926,2.12634706, 4.00949001,1.76154041, 3.37489581,1.70800006);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [1] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.93333707 tEnd=0.754165096 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.67692927 tEnd=0.5 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [3] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.93333707 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.67692927 tEnd=0.708782366 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=3 (0,4 2,3 2,0 6,3) t=0.5 [2] (2.25,2) tEnd=0.67692927 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,2 3,6 4,0 3,2) t=0.93333707 [3] (3.17332506,1.70134473) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markDoneBinary id=2 (3,2 0,2) t=0 [0] (3,2) tEnd=0.25 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=1 (0,2 3,6 4,0 3,2) t=0.754165096 [2] (3.37489581,1.70800006) tEnd=0.93333707 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[1] to:[3] start=3 end=2
+bridgeOp current id=1 from=(3.37489581,1.70800006) to=(3.17332506,1.70134473)
+path.cubicTo(3.37191081,1.55650449, 3.30472064,1.51977468, 3.17332506,1.70134473);
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=-1 sign=-1
+debugShowSort [0] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.5 tEnd=0.67692927 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,2}, {0,2}} tStart=0.25 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [2] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.5 tEnd=0.223476766 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{3,2}, {0,2}} tStart=0.25 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[0] sign=-1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+markWinding id=2 (3,2 0,2) t=0.25 [1] (2.25,2) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,2 3,6 4,0 3,2) t=0 [0] (0,2) tEnd=0.135342164 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+markDoneBinary id=3 (0,4 2,3 2,0 6,3) t=0.223476766 [1] (1.10817444,3.11920524) tEnd=0.5 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=3 (0,4 2,3 2,0 6,3) t=0.5 [2] (2.25,2) tEnd=0.67692927 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
+findNextOp from:[3] to:[2] start=1 end=2
+bridgeOp current id=3 from=(3.17332506,1.70134473) to=(2.25,2)
+path.cubicTo(2.81209183,1.70874941, 2.51539397,1.82307076, 2.25,2);
+findNextOp simple
+markDoneBinary id=2 (3,2 0,2) t=0.25 [1] (2.25,2) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+bridgeOp current id=2 from=(2.25,2) to=(0,2)
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [1] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.135342164 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.223476766 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+debugShowSort [3] {{0,2}, {3,6}, {4,0}, {3,2}} tStart=0.135342164 tEnd=0.754165096 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [0] {{0,4}, {2,3}, {2,0}, {6,3}} tStart=0.223476766 tEnd=0.5 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=1 (0,2 3,6 4,0 3,2) t=0 [0] (0,2) tEnd=0.135342164 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[1] to:[3] start=1 end=0
+bridgeOp current id=1 from=(0,2) to=(1.10817444,3.11920524)
+path.lineTo(0,2);
+path.cubicTo(0.406026483,2.54136872, 0.775417984,2.89956236, 1.10817444,3.11920524);
+path.close();
+assemble
+assemble contour start=(1.10817444,3.11920524) end=(1.10817444,3.11920524)
+</div>
+
+<div id="cubicOp45d">
+ SimplifyNew_Test [cubicOp45d]
+{{0,2}, {2,4}, {4,0}, {3,2}},
+{{3,2}, {0,2}},
+op difference
+{{0,4}, {2,3}, {2,0}, {4,2}},
+{{4,2}, {0,4}},
+debugShowCubicIntersection no self intersect {{0,4}, {2,3}, {2,0}, {4,2}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,4}, {2,3}, {2,0}, {4,2}} {{0,4}} wtTs[1]=1 {{4,2}} wnTs[0]=1 {{4,2}, {0,4}} wnTs[1]=0
+debugShowCubicIntersection wtTs[0]=0.341662805 {{0,4}, {2,3}, {2,0}, {4,2}} {{1.5091099386066631,2.5537951499735922}} wtTs[1]=0.856247521 {{3.2495913270767485,1.4266624658205882}} wtTs[2]=0.859816875 {{3.2657899721435943,1.4343874043112959}} wnTs[0]=0.260341 {{0,2}, {2,4}, {4,0}, {3,2}} wnTs[1]=0.768795564 wnTs[2]=0.821660252
+debugShowCubicLineIntersection wtTs[0]=0.467845317 {{0,4}, {2,3}, {2,0}, {4,2}} {{1.9034029684653309,1.9999999999999998}} wnTs[0]=0.365532 {{3,2}, {0,2}}
+debugShowCubicLineIntersection no intersect {{0,2}, {2,4}, {4,0}, {3,2}} {{4,2}, {0,4}}
+debugShowLineIntersection no intersect {{4,2}, {0,4}} {{3,2}, {0,2}}
+debugShowCubicIntersection no self intersect {{0,2}, {2,4}, {4,0}, {3,2}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,2}, {2,4}, {4,0}, {3,2}} {{0,2}} wtTs[1]=0.5 {{2.625,2}} wtTs[2]=1 {{3,2}} wnTs[0]=1 {{3,2}, {0,2}} wnTs[1]=0.125 wnTs[2]=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0 (0,4) tEnd=0.341662805 other=4 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.341662805 (1.50910997,2.5537951) tEnd=0.467845317 other=1 otherT=0.260340927 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.467845317 (1.90340292,2) tEnd=0.856247521 other=2 otherT=0.365532344 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.856247521 (3.24959135,1.42666245) tEnd=0.859816875 other=1 otherT=0.768795564 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.859816875 (3.26578999,1.43438745) tEnd=1 other=1 otherT=0.821660252 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,2 0,4) t=0 (4,2) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0 (0,2) tEnd=0.260340927 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.260340927 (1.50910997,2.5537951) tEnd=0.5 other=3 otherT=0.341662805 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.5 (2.625,2) tEnd=0.768795564 other=2 otherT=0.125 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.768795564 (3.24959135,1.42666245) tEnd=0.821660252 other=3 otherT=0.856247521 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.821660252 (3.26578999,1.43438745) tEnd=1 other=3 otherT=0.859816875 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0 (3,2) tEnd=0.125 other=1 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0.125 (2.625,2) tEnd=0.365532344 other=1 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0.365532344 (1.90340292,2) tEnd=1 other=3 otherT=0.467845317 otherIndex=2 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [1] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.859816875 tEnd=0.856247521 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.821660252 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [3] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.859816875 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.821660252 tEnd=0.768795564 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+markWinding id=3 (0,4 2,3 2,0 4,2) t=0.856247521 [3] (3.24959135,1.42666245) tEnd=0.859816875 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (0,4 2,3 2,0 4,2) t=0.856247521 [3] (3.24959135,1.42666245) tEnd=0.859816875 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (0,4 2,3 2,0 4,2) t=0.856247521 [3] (3.24959135,1.42666245) tEnd=0.859816875 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
+debugShowSort [0] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.821660252 tEnd=0.768795564 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.859816875 tEnd=0.856247521 sign=1 windValue=1 windSum=-1 ?->? (max=?) done=1 tiny=0 opp=1
+debugShowSort [2] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.821660252 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.859816875 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [1] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.859816875 tEnd=0.856247521 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.821660252 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [3] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.859816875 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.821660252 tEnd=0.768795564 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+markWinding id=1 (0,2 2,4 4,0 3,2) t=0.821660252 [4] (3.26578999,1.43438745) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=2 (3,2 0,2) t=0 [0] (3,2) tEnd=0.125 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=3 (0,4 2,3 2,0 4,2) t=0.859816875 [4] (3.26578999,1.43438745) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=4 (4,2 0,4) t=0 [0] (4,2) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=3 (0,4 2,3 2,0 4,2) t=0 [0] (0,4) tEnd=0.341662805 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,2 2,4 4,0 3,2) t=0.768795564 [3] (3.24959135,1.42666245) tEnd=0.821660252 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0 (0,4) tEnd=0.341662805 other=4 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.341662805 (1.50910997,2.5537951) tEnd=0.467845317 other=1 otherT=0.260340927 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.467845317 (1.90340292,2) tEnd=0.856247521 other=2 otherT=0.365532344 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.859816875 (3.26578999,1.43438745) tEnd=1 other=1 otherT=0.821660252 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,2 0,4) t=0 (4,2) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0 (0,2) tEnd=0.260340927 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.260340927 (1.50910997,2.5537951) tEnd=0.5 other=3 otherT=0.341662805 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.5 (2.625,2) tEnd=0.768795564 other=2 otherT=0.125 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.768795564 (3.24959135,1.42666245) tEnd=0.821660252 other=3 otherT=0.856247521 otherIndex=3 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.821660252 (3.26578999,1.43438745) tEnd=1 other=3 otherT=0.859816875 otherIndex=4 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0 (3,2) tEnd=0.125 other=1 otherT=1 otherIndex=5 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0.125 (2.625,2) tEnd=0.365532344 other=1 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0.365532344 (1.90340292,2) tEnd=1 other=3 otherT=0.467845317 otherIndex=2 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,2 2,4 4,0 3,2) t=0.821660252 [4] (3.26578999,1.43438745) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+markDoneBinary id=2 (3,2 0,2) t=0 [0] (3,2) tEnd=0.125 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=-1
+debugShowSort [0] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.5 tEnd=0.768795564 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,2}, {0,2}} tStart=0.125 tEnd=0.365532344 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.5 tEnd=0.260340927 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [3] {{3,2}, {0,2}} tStart=0.125 tEnd=0 sign=1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=0
+findChaseOp debugShowSort contourWinding=1 oppContourWinding=-1 sign=1
+debugShowSort [3] {{3,2}, {0,2}} tStart=0.125 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [0] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.5 tEnd=0.768795564 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,2}, {0,2}} tStart=0.125 tEnd=0.365532344 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.5 tEnd=0.260340927 sign=1 windValue=1 windSum=? 2->1 (max=2) done=0 tiny=0 opp=0
+markWinding id=1 (0,2 2,4 4,0 3,2) t=0.5 [2] (2.625,2) tEnd=0.768795564 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=2 (3,2 0,2) t=0.125 [1] (2.625,2) tEnd=0.365532344 newWindSum=2 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,2 2,4 4,0 3,2) t=0.260340927 [1] (1.50910997,2.5537951) tEnd=0.5 newWindSum=2 newOppSum=-1 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0 (0,4) tEnd=0.341662805 other=4 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.341662805 (1.50910997,2.5537951) tEnd=0.467845317 other=1 otherT=0.260340927 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.467845317 (1.90340292,2) tEnd=0.856247521 other=2 otherT=0.365532344 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.859816875 (3.26578999,1.43438745) tEnd=1 other=1 otherT=0.821660252 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,2 0,4) t=0 (4,2) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0 (0,2) tEnd=0.260340927 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.260340927 (1.50910997,2.5537951) tEnd=0.5 other=3 otherT=0.341662805 otherIndex=1 windSum=2 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.5 (2.625,2) tEnd=0.768795564 other=2 otherT=0.125 otherIndex=1 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.768795564 (3.24959135,1.42666245) tEnd=0.821660252 other=3 otherT=0.856247521 otherIndex=3 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0.125 (2.625,2) tEnd=0.365532344 other=1 otherT=0.5 otherIndex=2 windSum=2 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0.365532344 (1.90340292,2) tEnd=1 other=3 otherT=0.467845317 otherIndex=2 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,2 2,4 4,0 3,2) t=0.5 [2] (2.625,2) tEnd=0.768795564 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0 (0,4) tEnd=0.341662805 other=4 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.341662805 (1.50910997,2.5537951) tEnd=0.467845317 other=1 otherT=0.260340927 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.467845317 (1.90340292,2) tEnd=0.856247521 other=2 otherT=0.365532344 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,4 2,3 2,0 4,2) t=0.859816875 (3.26578999,1.43438745) tEnd=1 other=1 otherT=0.821660252 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,2 0,4) t=0 (4,2) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0 (0,2) tEnd=0.260340927 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.260340927 (1.50910997,2.5537951) tEnd=0.5 other=3 otherT=0.341662805 otherIndex=1 windSum=2 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.768795564 (3.24959135,1.42666245) tEnd=0.821660252 other=3 otherT=0.856247521 otherIndex=3 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0.125 (2.625,2) tEnd=0.365532344 other=1 otherT=0.5 otherIndex=2 windSum=2 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0.365532344 (1.90340292,2) tEnd=1 other=3 otherT=0.467845317 otherIndex=2 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
+debugShowSort [0] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.821660252 tEnd=0.768795564 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.859816875 tEnd=0.856247521 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+debugShowSort [2] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.821660252 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [3] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.859816875 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[0] sign=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markDoneBinary id=1 (0,2 2,4 4,0 3,2) t=0.768795564 [3] (3.24959135,1.42666245) tEnd=0.821660252 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[1] to:[3] start=4 end=5
+bridgeOp current id=1 from=(3.24959135,1.42666245) to=(3.26578999,1.43438745)
+path.moveTo(3.24959135,1.42666245);
+path.cubicTo(3.26158428,1.4196322, 3.26713157,1.42161608, 3.26578999,1.43438745);
+findNextOp simple
+markDoneBinary id=3 (0,4 2,3 2,0 4,2) t=0.859816875 [4] (3.26578999,1.43438745) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+bridgeOp current id=3 from=(3.26578999,1.43438745) to=(4,2)
+path.cubicTo(3.47857022,1.53752398, 3.71963382,1.71963382, 4,2);
+findNextOp simple
+markDoneBinary id=4 (4,2 0,4) t=0 [0] (4,2) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+bridgeOp current id=4 from=(4,2) to=(0,4)
+findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
+debugShowSort [3] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.341662805 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.260340927 tEnd=0.5 sign=-1 windValue=1 windSum=2 1->2 (max=2) done=0 tiny=0 opp=1
+debugShowSort [1] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.341662805 tEnd=0.467845317 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.260340927 tEnd=0 sign=1 windValue=1 windSum=? 2->1 (max=2) done=0 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markWinding id=3 (0,4 2,3 2,0 4,2) t=0.341662805 [1] (1.50910997,2.5537951) tEnd=0.467845317 newWindSum=-1 newOppSum=2 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
+markDoneBinary id=1 (0,2 2,4 4,0 3,2) t=0 [0] (0,2) tEnd=0.260340927 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
+markDoneBinary id=2 (3,2 0,2) t=0.365532344 [2] (1.90340292,2) tEnd=1 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+markDoneBinary id=3 (0,4 2,3 2,0 4,2) t=0 [0] (0,4) tEnd=0.341662805 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[3] to:[3] start=1 end=2
+bridgeOp current id=3 from=(0,4) to=(1.50910997,2.5537951)
+path.lineTo(0,4);
+path.cubicTo(0.683325648,3.65833712, 1.13318419,3.08320737, 1.50910997,2.5537951);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=2 sign=1
+debugShowSort [2] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.467845317 tEnd=0.341662805 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{3,2}, {0,2}} tStart=0.365532344 tEnd=0.125 sign=1 windValue=1 windSum=2 2->1 (max=2) done=0 tiny=0 opp=1
+debugShowSort [0] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.467845317 tEnd=0.856247521 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,2}, {0,2}} tStart=0.365532344 tEnd=1 sign=-1 windValue=1 windSum=2 1->2 (max=2) done=1 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markWinding id=3 (0,4 2,3 2,0 4,2) t=0.467845317 [2] (1.90340292,2) tEnd=0.856247521 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
+markDoneBinary id=3 (0,4 2,3 2,0 4,2) t=0.341662805 [1] (1.50910997,2.5537951) tEnd=0.467845317 newWindSum=-1 newOppSum=2 oppSum=2 windSum=-1 windValue=1
+findNextOp from:[3] to:[3] start=2 end=3
+bridgeOp current id=3 from=(1.50910997,2.5537951) to=(1.90340292,2)
+path.cubicTo(1.64794636,2.35827327, 1.77669871,2.16898704, 1.90340292,2);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
+debugShowSort [1] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.856247521 tEnd=0.467845317 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.768795564 tEnd=0.5 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+debugShowSort [3] {{0,4}, {2,3}, {2,0}, {4,2}} tStart=0.856247521 tEnd=0.859816875 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [0] {{0,2}, {2,4}, {4,0}, {3,2}} tStart=0.768795564 tEnd=0.821660252 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=3 (0,4 2,3 2,0 4,2) t=0.467845317 [2] (1.90340292,2) tEnd=0.856247521 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[3] to:[1] start=3 end=4
+bridgeOp current id=3 from=(1.90340292,2) to=(3.24959135,1.42666245)
+path.cubicTo(2.29341149,1.47984147, 2.66401696,1.15201211, 3.24959135,1.42666245);
+path.close();
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.260340927 (1.50910997,2.5537951) tEnd=0.5 other=3 otherT=0.341662805 otherIndex=1 windSum=2 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0.125 (2.625,2) tEnd=0.365532344 other=1 otherT=0.5 otherIndex=2 windSum=2 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (3,2 0,2) t=0.125 [1] (2.625,2) tEnd=0.365532344 newWindSum=2 newOppSum=-1 oppSum=-1 windSum=2 windValue=1
+debugShowActiveSpans id=1 (0,2 2,4 4,0 3,2) t=0.260340927 (1.50910997,2.5537951) tEnd=0.5 other=3 otherT=0.341662805 otherIndex=1 windSum=2 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,2 2,4 4,0 3,2) t=0.260340927 [1] (1.50910997,2.5537951) tEnd=0.5 newWindSum=2 newOppSum=-1 oppSum=-1 windSum=2 windValue=1
+</div>
+
+<div id="cubicOp46d">
+ SimplifyNew_Test [cubicOp46d]
+{{0,2}, {3,5}, {5,0}, {4,2}},
+{{4,2}, {0,2}},
+op difference
+{{0,5}, {2,4}, {2,0}, {5,3}},
+{{5,3}, {0,5}},
+debugShowCubicIntersection no self intersect {{0,2}, {3,5}, {5,0}, {4,2}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,2}, {3,5}, {5,0}, {4,2}} {{0,2}} wtTs[1]=0.6 {{3.887999999999999,2.0000000000000013}} wtTs[2]=1 {{4,2}} wnTs[0]=1 {{4,2}, {0,2}} wnTs[1]=0.028 wnTs[2]=0
+debugShowCubicIntersection wtTs[0]=0.215060475 {{0,2}, {3,5}, {5,0}, {4,2}} {{1.7768977226209808,2.9747215410507057}} wtTs[1]=0.578517386 {{3.8153702411617676,2.0785732044555085}} wnTs[0]=0.404694 {{0,5}, {2,4}, {2,0}, {5,3}} wnTs[1]=0.846938928
+debugShowCubicLineIntersection wtTs[0]=0.64696132 {{0,5}, {2,4}, {2,0}, {5,3}} {{2.7243714728959709,2}} wtTs[1]=0.819132784 {{3.6370281018311013,1.9999999999999996}} wnTs[0]=0.318907 {{4,2}, {0,2}} wnTs[1]=0.0907429745
+debugShowCubicIntersection no self intersect {{0,5}, {2,4}, {2,0}, {5,3}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,5}, {2,4}, {2,0}, {5,3}} {{0,5}} wtTs[1]=1 {{5,3}} wnTs[0]=1 {{5,3}, {0,5}} wnTs[1]=0
+debugShowActiveSpans id=1 (0,2 3,5 5,0 4,2) t=0 (0,2) tEnd=0.215060475 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 3,5 5,0 4,2) t=0.215060475 (1.77689767,2.97472143) tEnd=0.578517386 other=3 otherT=0.404693629 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 3,5 5,0 4,2) t=0.578517386 (3.81537032,2.07857323) tEnd=0.6 other=3 otherT=0.846938928 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 3,5 5,0 4,2) t=0.6 (3.88800001,2) tEnd=1 other=2 otherT=0.028 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,2) t=0 (4,2) tEnd=0.028 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,2) t=0.028 (3.88800001,2) tEnd=0.0907429745 other=1 otherT=0.6 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,2) t=0.0907429745 (3.63702822,2) tEnd=0.318907132 other=3 otherT=0.819132784 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,2) t=0.318907132 (2.72437143,2) tEnd=1 other=3 otherT=0.64696132 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0 (0,5) tEnd=0.404693629 other=4 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0.404693629 (1.77689767,2.97472143) tEnd=0.64696132 other=1 otherT=0.215060475 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0.64696132 (2.72437143,2) tEnd=0.819132784 other=2 otherT=0.318907132 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0.819132784 (3.63702822,2) tEnd=0.846938928 other=2 otherT=0.0907429745 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0.846938928 (3.81537032,2.07857323) tEnd=1 other=1 otherT=0.578517386 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,3 0,5) t=0 (5,3) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=1 tEnd=0.6 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{4,2}, {0,2}} tStart=0 tEnd=0.028 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+findTop swap
+markWinding id=1 (0,2 3,5 5,0 4,2) t=0.6 [3] (3.88800001,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,2 3,5 5,0 4,2) t=0.6 [3] (3.88800001,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markWinding id=2 (4,2 0,2) t=0 [0] (4,2) tEnd=0.028 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.6 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{4,2}, {0,2}} tStart=0.028 tEnd=0.0907429745 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.6 tEnd=0.578517386 sign=1 windValue=1 windSum=? 2->1 (max=2) done=0 tiny=0 opp=0
+debugShowSort [3] {{4,2}, {0,2}} tStart=0.028 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[0] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
+markDoneBinary id=2 (4,2 0,2) t=0.028 [1] (3.88800001,2) tEnd=0.0907429745 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
+markDoneBinary id=1 (0,2 3,5 5,0 4,2) t=0.578517386 [2] (3.81537032,2.07857323) tEnd=0.6 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+markDoneBinary id=1 (0,2 3,5 5,0 4,2) t=0.6 [3] (3.88800001,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[1] to:[2] start=1 end=0
+bridgeOp current id=1 from=(4,2) to=(3.88800001,2)
+path.moveTo(4,2);
+path.cubicTo(4.4000001,1.20000005, 4.32000017,1.51999998, 3.88800001,2);
+findNextOp simple
+markDoneBinary id=2 (4,2 0,2) t=0 [0] (4,2) tEnd=0.028 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=2 from=(3.88800001,2) to=(4,2)
+path.lineTo(4,2);
+path.close();
+findChaseOp debugShowSort contourWinding=1 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.578517386 tEnd=0.6 sign=-1 windValue=1 windSum=2 1->2 (max=2) done=1 tiny=0 opp=0
+debugShowSort [1] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.846938928 tEnd=0.819132784 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [2] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.578517386 tEnd=0.215060475 sign=1 windValue=1 windSum=? 2->1 (max=2) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.846938928 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=1 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.578517386 tEnd=0.6 sign=-1 windValue=1 windSum=2 1->2 (max=2) done=1 tiny=0 opp=0
+debugShowSort [1] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.846938928 tEnd=0.819132784 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [2] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.578517386 tEnd=0.215060475 sign=1 windValue=1 windSum=? 2->1 (max=2) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.846938928 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+markWinding id=3 (0,5 2,4 2,0 5,3) t=0.819132784 [3] (3.63702822,2) tEnd=0.846938928 newWindSum=-1 newOppSum=2 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,2 3,5 5,0 4,2) t=0.215060475 [1] (1.77689767,2.97472143) tEnd=0.578517386 newWindSum=2 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=3 (0,5 2,4 2,0 5,3) t=0.846938928 [4] (3.81537032,2.07857323) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=4 (5,3 0,5) t=0 [0] (5,3) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=3 (0,5 2,4 2,0 5,3) t=0 [0] (0,5) tEnd=0.404693629 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=1 (0,2 3,5 5,0 4,2) t=0 (0,2) tEnd=0.215060475 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 3,5 5,0 4,2) t=0.215060475 (1.77689767,2.97472143) tEnd=0.578517386 other=3 otherT=0.404693629 otherIndex=1 windSum=2 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,2) t=0.0907429745 (3.63702822,2) tEnd=0.318907132 other=3 otherT=0.819132784 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,2) t=0.318907132 (2.72437143,2) tEnd=1 other=3 otherT=0.64696132 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0 (0,5) tEnd=0.404693629 other=4 otherT=1 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0.404693629 (1.77689767,2.97472143) tEnd=0.64696132 other=1 otherT=0.215060475 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0.64696132 (2.72437143,2) tEnd=0.819132784 other=2 otherT=0.318907132 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0.819132784 (3.63702822,2) tEnd=0.846938928 other=2 otherT=0.0907429745 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,5 2,4 2,0 5,3) t=0.846938928 (3.81537032,2.07857323) tEnd=1 other=1 otherT=0.578517386 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,3 0,5) t=0 (5,3) tEnd=1 other=3 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=2 sign=-1
+debugShowSort [2] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.819132784 tEnd=0.846938928 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{4,2}, {0,2}} tStart=0.0907429745 tEnd=0.028 sign=1 windValue=1 windSum=2 2->1 (max=2) done=1 tiny=0 opp=1
+debugShowSort [0] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.819132784 tEnd=0.64696132 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{4,2}, {0,2}} tStart=0.0907429745 tEnd=0.318907132 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=3 (0,5 2,4 2,0 5,3) t=0.64696132 [2] (2.72437143,2) tEnd=0.819132784 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (4,2 0,2) t=0.0907429745 [2] (3.63702822,2) tEnd=0.318907132 newWindSum=2 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+markDoneBinary id=3 (0,5 2,4 2,0 5,3) t=0.819132784 [3] (3.63702822,2) tEnd=0.846938928 newWindSum=-1 newOppSum=2 oppSum=2 windSum=-1 windValue=1
+findNextOp from:[3] to:[3] start=3 end=2
+bridgeOp current id=3 from=(3.81537032,2.07857323) to=(3.63702822,2)
+path.moveTo(3.81537032,2.07857323);
+path.cubicTo(3.75423074,2.04822493, 3.69481921,2.02210546, 3.63702822,2);
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
+debugShowSort [0] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.64696132 tEnd=0.819132784 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{4,2}, {0,2}} tStart=0.318907132 tEnd=1 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=1
+debugShowSort [2] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.64696132 tEnd=0.404693629 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{4,2}, {0,2}} tStart=0.318907132 tEnd=0.0907429745 sign=1 windValue=1 windSum=2 2->1 (max=2) done=1 tiny=0 opp=1
+findNextOp firstIndex=[0] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
+markDoneBinary id=2 (4,2 0,2) t=0.318907132 [3] (2.72437143,2) tEnd=1 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
+markDoneBinary id=1 (0,2 3,5 5,0 4,2) t=0 [0] (0,2) tEnd=0.215060475 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=3 (0,5 2,4 2,0 5,3) t=0.404693629 [1] (1.77689767,2.97472143) tEnd=0.64696132 newWindSum=-1 newOppSum=2 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=3 (0,5 2,4 2,0 5,3) t=0.64696132 [2] (2.72437143,2) tEnd=0.819132784 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[3] to:[3] start=2 end=1
+bridgeOp current id=3 from=(3.63702822,2) to=(2.72437143,2)
+path.cubicTo(3.2791934,1.86312568, 2.98348093,1.88013792, 2.72437143,2);
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=2 sign=-1
+debugShowSort [0] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.404693629 tEnd=0.64696132 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.215060475 tEnd=0 sign=1 windValue=1 windSum=2 2->1 (max=2) done=1 tiny=0 opp=1
+debugShowSort [2] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.404693629 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.215060475 tEnd=0.578517386 sign=-1 windValue=1 windSum=2 1->2 (max=2) done=0 tiny=0 opp=1
+findNextOp firstIndex=[0] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=3 (0,5 2,4 2,0 5,3) t=0.404693629 [1] (1.77689767,2.97472143) tEnd=0.64696132 newWindSum=-1 newOppSum=2 oppSum=2 windSum=-1 windValue=1
+findNextOp from:[3] to:[3] start=1 end=0
+bridgeOp current id=3 from=(2.72437143,2) to=(1.77689767,2.97472143)
+path.cubicTo(2.35977101,2.16866159, 2.06764531,2.54096746, 1.77689767,2.97472143);
+findNextOp simple
+markDoneBinary id=3 (0,5 2,4 2,0 5,3) t=0 [0] (0,5) tEnd=0.404693629 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+bridgeOp current id=3 from=(1.77689767,2.97472143) to=(0,5)
+path.cubicTo(1.29122055,3.69928193, 0.809387267,4.5953064, 0,5);
+findNextOp simple
+markDoneBinary id=4 (5,3 0,5) t=0 [0] (5,3) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+bridgeOp current id=4 from=(0,5) to=(5,3)
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
+debugShowSort [3] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.846938928 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.578517386 tEnd=0.6 sign=-1 windValue=1 windSum=2 1->2 (max=2) done=1 tiny=0 opp=1
+debugShowSort [1] {{0,5}, {2,4}, {2,0}, {5,3}} tStart=0.846938928 tEnd=0.819132784 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{0,2}, {3,5}, {5,0}, {4,2}} tStart=0.578517386 tEnd=0.215060475 sign=1 windValue=1 windSum=2 2->1 (max=2) done=0 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=3 (0,5 2,4 2,0 5,3) t=0.846938928 [4] (3.81537032,2.07857323) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[3] to:[3] start=4 end=3
+bridgeOp current id=3 from=(5,3) to=(3.81537032,2.07857323)
+path.lineTo(5,3);
+path.cubicTo(4.54081678,2.54081678, 4.1519165,2.2456274, 3.81537032,2.07857323);
+path.close();
+debugShowActiveSpans id=1 (0,2 3,5 5,0 4,2) t=0.215060475 (1.77689767,2.97472143) tEnd=0.578517386 other=3 otherT=0.404693629 otherIndex=1 windSum=2 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,2 3,5 5,0 4,2) t=0.215060475 [1] (1.77689767,2.97472143) tEnd=0.578517386 newWindSum=2 newOppSum=-1 oppSum=-1 windSum=2 windValue=1
+assemble
+assemble contour start=(4,2) end=(4,2)
+</div>
+
+<div id="cubicOp46da">
+ {{0,2}, {3,5}, {5,0}, {4,2}},
+
+ {{0,2}, {1.1328125,3.06640625}, {2.03125,2.984375}},
+ {{2.03125,2.984375}, {2.9296875,2.90234375}, {3.5,2.375}},
+ {{3.5,2.375}, {4.0703125,1.84765625}, {4.21875,1.578125}},
+ {{4.21875,1.578125}, {4.3671875,1.30859375}, {4,2}},
+</div>
+
+<div id="cubicOp46db">
+{{x = 3, y = 4}, {x = 4.0000000000000009, y = 6}, {x = 0.99999999999999845, y = 7.894919286223335e-16}, {x = 6, y = 2}}
+</div>
+
+<div id="cubicOp47d">
+ SimplifyNew_Test [cubicOp47d]
+{{0,1}, {1,6}, {6,2}, {5,4}},
+{{5,4}, {0,1}},
+op difference
+{{2,6}, {4,5}, {1,0}, {6,1}},
+{{6,1}, {2,6}},
+debugShowCubicIntersection no self intersect {{2,6}, {4,5}, {1,0}, {6,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{2,6}, {4,5}, {1,0}, {6,1}} {{2,6}} wtTs[1]=0.171428571 {{2.6532478134110784,5.1834402332361513}} wtTs[2]=1 {{6,1}} wnTs[0]=1 {{6,1}, {2,6}} wnTs[1]=0.836688047 wnTs[2]=0
+debugShowCubicIntersection no intersect {{2,6}, {4,5}, {1,0}, {6,1}} {{0,1}, {1,6}, {6,2}, {5,4}}
+debugShowCubicLineIntersection wtTs[0]=0.503145036 {{2,6}, {4,5}, {1,0}, {6,1}} {{2.8774036920020918,2.7264422152012551}} wnTs[0]=0.424519 {{5,4}, {0,1}}
+debugShowCubicLineIntersection wtTs[0]=0.604274731 {{0,1}, {1,6}, {6,2}, {5,4}} {{3.9881028045490883,3.5148714943136397}} wnTs[0]=0.502974 {{6,1}, {2,6}}
+debugShowLineIntersection wtTs[0]=0.486486486 {{6,1}, {2,6}} {{4.0540540540540535,3.4324324324324329}} wnTs[0]=0.189189 {{5,4}, {0,1}}
+debugShowCubicIntersection no self intersect {{0,1}, {1,6}, {6,2}, {5,4}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,1}, {1,6}, {6,2}, {5,4}} {{0,1}} wtTs[1]=0.628571429 {{4.1434402332361522,3.486064139941691}} wtTs[2]=1 {{5,4}} wnTs[0]=1 {{5,4}, {0,1}} wnTs[1]=0.171311953 wnTs[2]=0
+debugShowActiveSpans id=3 (2,6 4,5 1,0 6,1) t=0 (2,6) tEnd=0.171428571 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,6 4,5 1,0 6,1) t=0.171428571 (2.65324783,5.18344021) tEnd=0.503145036 other=4 otherT=0.836688047 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,6 4,5 1,0 6,1) t=0.503145036 (2.87740374,2.7264421) tEnd=1 other=2 otherT=0.424519262 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,1 2,6) t=0 (6,1) tEnd=0.486486486 other=3 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,1 2,6) t=0.486486486 (4.05405426,3.43243241) tEnd=0.502974299 other=2 otherT=0.189189189 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,1 2,6) t=0.502974299 (3.98810291,3.5148716) tEnd=0.836688047 other=1 otherT=0.604274731 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,1 2,6) t=0.836688047 (2.65324783,5.18344021) tEnd=1 other=3 otherT=0.171428571 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,6 6,2 5,4) t=0 (0,1) tEnd=0.604274731 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,6 6,2 5,4) t=0.604274731 (3.98810291,3.5148716) tEnd=0.628571429 other=4 otherT=0.502974299 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,6 6,2 5,4) t=0.628571429 (4.14344025,3.4860642) tEnd=1 other=2 otherT=0.171311953 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,4 0,1) t=0 (5,4) tEnd=0.171311953 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,4 0,1) t=0.171311953 (4.14344025,3.4860642) tEnd=0.189189189 other=1 otherT=0.628571429 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,4 0,1) t=0.189189189 (4.05405426,3.43243241) tEnd=0.424519262 other=4 otherT=0.486486486 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,4 0,1) t=0.424519262 (2.87740374,2.7264421) tEnd=1 other=3 otherT=0.503145036 otherIndex=2 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,1}, {1,6}, {6,2}, {5,4}} tStart=0 tEnd=0.604274731 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{5,4}, {0,1}} tStart=1 tEnd=0.424519262 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+markWinding id=1 (0,1 1,6 6,2 5,4) t=0 [0] (0,1) tEnd=0.604274731 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (5,4 0,1) t=0.424519262 [3] (2.87740374,2.7264421) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,1 1,6 6,2 5,4) t=0 [0] (0,1) tEnd=0.604274731 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+findNextOp simple
+markDoneBinary id=1 (0,1 1,6 6,2 5,4) t=0 [0] (0,1) tEnd=0.604274731 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=1 from=(3.98810291,3.5148716) to=(0,1)
+path.moveTo(3.98810291,3.5148716);
+path.cubicTo(2.66914129,3.75641561, 0.60427475,4.02137375, 0,1);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [1] {{5,4}, {0,1}} tStart=0.424519262 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{2,6}, {4,5}, {1,0}, {6,1}} tStart=0.503145036 tEnd=0.171428571 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [3] {{5,4}, {0,1}} tStart=0.424519262 tEnd=0.189189189 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{2,6}, {4,5}, {1,0}, {6,1}} tStart=0.503145036 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=3 (2,6 4,5 1,0 6,1) t=0.171428571 [1] (2.65324783,5.18344021) tEnd=0.503145036 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (5,4 0,1) t=0.189189189 [2] (4.05405426,3.43243241) tEnd=0.424519262 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (2,6 4,5 1,0 6,1) t=0.503145036 [2] (2.87740374,2.7264421) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markDoneBinary id=4 (6,1 2,6) t=0 [0] (6,1) tEnd=0.486486486 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+markDoneBinary id=2 (5,4 0,1) t=0.424519262 [3] (2.87740374,2.7264421) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[2] to:[3] start=2 end=1
+bridgeOp current id=2 from=(0,1) to=(2.87740374,2.7264421)
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
+debugShowSort [1] {{2,6}, {4,5}, {1,0}, {6,1}} tStart=0.171428571 tEnd=0.503145036 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{6,1}, {2,6}} tStart=0.836688047 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{2,6}, {4,5}, {1,0}, {6,1}} tStart=0.171428571 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{6,1}, {2,6}} tStart=0.836688047 tEnd=0.502974299 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[1] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=4 (6,1 2,6) t=0.836688047 [3] (2.65324783,5.18344021) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=3 (2,6 4,5 1,0 6,1) t=0 [0] (2,6) tEnd=0.171428571 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=4 (6,1 2,6) t=0.502974299 [2] (3.98810291,3.5148716) tEnd=0.836688047 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+markDoneBinary id=3 (2,6 4,5 1,0 6,1) t=0.171428571 [1] (2.65324783,5.18344021) tEnd=0.503145036 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[3] to:[4] start=3 end=4
+bridgeOp current id=3 from=(2.87740374,2.7264421) to=(2.65324783,5.18344021)
+path.lineTo(2.87740374,2.7264421);
+path.cubicTo(2.7913022,3.55361414, 2.87475324,4.49428225, 2.65324783,5.18344021);
+findNextOp simple
+markDoneBinary id=4 (6,1 2,6) t=0.836688047 [3] (2.65324783,5.18344021) tEnd=1 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+bridgeOp current id=4 from=(2.65324783,5.18344021) to=(2,6)
+findNextOp debugShowSort contourWinding=1 oppContourWinding=1 sign=1
+debugShowSort [3] {{2,6}, {4,5}, {1,0}, {6,1}} tStart=0.171428571 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{6,1}, {2,6}} tStart=0.836688047 tEnd=0.502974299 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{2,6}, {4,5}, {1,0}, {6,1}} tStart=0.171428571 tEnd=0.503145036 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{6,1}, {2,6}} tStart=0.836688047 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+findNextOp firstIndex=[3] sign=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markDoneBinary id=3 (2,6 4,5 1,0 6,1) t=0 [0] (2,6) tEnd=0.171428571 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+findNextOp from:[3] to:[4] start=3 end=2
+bridgeOp current id=3 from=(2,6) to=(2.65324783,5.18344021)
+path.lineTo(2,6);
+path.cubicTo(2.34285712,5.82857132, 2.53877544,5.53959179, 2.65324783,5.18344021);
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
+debugShowSort [3] {{6,1}, {2,6}} tStart=0.502974299 tEnd=0.836688047 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,1}, {1,6}, {6,2}, {5,4}} tStart=0.604274731 tEnd=0.628571429 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=1
+debugShowSort [1] {{6,1}, {2,6}} tStart=0.502974299 tEnd=0.486486486 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,1}, {1,6}, {6,2}, {5,4}} tStart=0.604274731 tEnd=0 sign=1 windValue=1 windSum=1 2->1 (max=2) done=1 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
+markDoneBinary id=1 (0,1 1,6 6,2 5,4) t=0.604274731 [1] (3.98810291,3.5148716) tEnd=0.628571429 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=4 (6,1 2,6) t=0.486486486 [1] (4.05405426,3.43243241) tEnd=0.502974299 newWindSum=-1 newOppSum=2 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=4 (6,1 2,6) t=0.502974299 [2] (3.98810291,3.5148716) tEnd=0.836688047 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[4] to:[4] start=2 end=1
+bridgeOp current id=4 from=(2.65324783,5.18344021) to=(3.98810291,3.5148716)
+path.lineTo(3.98810291,3.5148716);
+path.close();
+debugShowActiveSpans id=4 (6,1 2,6) t=0.486486486 (4.05405426,3.43243241) tEnd=0.502974299 other=2 otherT=0.189189189 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,6 6,2 5,4) t=0.628571429 (4.14344025,3.4860642) tEnd=1 other=2 otherT=0.171311953 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,4 0,1) t=0 (5,4) tEnd=0.171311953 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,4 0,1) t=0.171311953 (4.14344025,3.4860642) tEnd=0.189189189 other=1 otherT=0.628571429 otherIndex=2 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+findNextOp debugShowSort contourWinding=0 oppContourWinding=2 sign=1
+debugShowSort [1] {{6,1}, {2,6}} tStart=0.502974299 tEnd=0.486486486 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,1}, {1,6}, {6,2}, {5,4}} tStart=0.604274731 tEnd=0 sign=1 windValue=1 windSum=1 2->1 (max=2) done=1 tiny=0 opp=1
+debugShowSort [3] {{6,1}, {2,6}} tStart=0.502974299 tEnd=0.836688047 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [0] {{0,1}, {1,6}, {6,2}, {5,4}} tStart=0.604274731 tEnd=0.628571429 sign=-1 windValue=1 windSum=2 1->2 (max=2) done=1 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
+markDoneBinary id=4 (6,1 2,6) t=0.486486486 [1] (4.05405426,3.43243241) tEnd=0.502974299 newWindSum=-1 newOppSum=2 oppSum=2 windSum=-1 windValue=1
+findNextOp from:[4] to:[4] start=2 end=3
+bridgeOp current id=4 from=(4.05405426,3.43243241) to=(3.98810291,3.5148716)
+debugShowActiveSpans id=1 (0,1 1,6 6,2 5,4) t=0.628571429 (4.14344025,3.4860642) tEnd=1 other=2 otherT=0.171311953 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,4 0,1) t=0 (5,4) tEnd=0.171311953 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,4 0,1) t=0.171311953 (4.14344025,3.4860642) tEnd=0.189189189 other=1 otherT=0.628571429 otherIndex=2 windSum=? windValue=1 oppValue=0
+</div>
+
+<div id="cubicOp47da">
+computed quadratics given
+ {{2,6}, {4,5}, {1,0}, {6,1}},
+ {{0,1}, {1,6}, {6,2}, {5,4}},
+computed quadratics set 1
+ {{2,6}, {2.2404737,5.87759298}, {2.39345162,5.68487367}},
+ {{2.39345162,5.68487367}, {2.67348969,5.31541246}, {2.74792918,4.77711896}},
+ {{2.74792918,4.77711896}, {2.82236867,4.23882547}, {2.82848144,3.63729341}},
+ {{2.82848144,3.63729341}, {2.83027876,3.57616472}, {2.83215462,3.51498289}},
+ {{2.83215462,3.51498289}, {2.78850872,2.32758859}, {3.26769775,1.50382966}},
+ {{3.26769775,1.50382966}, {3.55499101,1.08453908}, {4.20162956,0.930553195}},
+ {{4.20162956,0.930553195}, {4.84826812,0.776567313}, {6,1}},
+computed quadratics set 2
+ {{0,1}, {0.337189878,2.53658624}, {1.06305813,3.09524088}},
+ {{1.06305813,3.09524088}, {1.78892639,3.65389552}, {2.62772567,3.64823958}},
+ {{2.62772567,3.64823958}, {3.46652495,3.64258364}, {4.1425079,3.48623815}},
+ {{4.1425079,3.48623815}, {4.88772835,3.3075243}, {5.09137748,3.46764237}},
+ {{5.09137748,3.46764237}, {5.20611277,3.58418013}, {5,4}},
+</div>
+
+<div id="cubicOp47db">
+ {{2.74792918,4.77711896}, {2.82236867,4.23882547}, {2.82848144,3.63729341}},
+ {{2.62772567,3.64823958}, {3.46652495,3.64258364}, {4.1425079,3.48623815}},
+</div>
+
+<div id="cubicOp48d">
+ SimplifyNew_Test [cubicOp48d]
+{{0,2}, {2,3}, {5,1}, {3,2}},
+{{3,2}, {0,2}},
+op difference
+{{1,5}, {2,3}, {2,0}, {3,2}},
+{{3,2}, {1,5}},
+debugShowCubicIntersection no self intersect {{1,5}, {2,3}, {2,0}, {3,2}}
+debugShowCubicLineIntersection wtTs[0]=0 {{1,5}, {2,3}, {2,0}, {3,2}} {{1,5}} wtTs[1]=1 {{3,2}} wnTs[0]=1 {{3,2}, {1,5}} wnTs[1]=0
+debugShowCubicIntersection wtTs[0]=0.447821962 {{1,5}, {2,3}, {2,0}, {3,2}} {{1.921448828321461,2.2502841146969206}} wtTs[1]=1 {{3,2}} wnTs[0]=0.302178 {{0,2}, {2,3}, {5,1}, {3,2}} wnTs[1]=1
+debugShowCubicLineIntersection wtTs[0]=0.5 {{1,5}, {2,3}, {2,0}, {3,2}} {{2,2}} wtTs[1]=1 {{3,2}} wnTs[0]=0.333333 {{3,2}, {0,2}} wnTs[1]=0
+debugShowCubicLineIntersection wtTs[0]=0.5 {{0,2}, {2,3}, {5,1}, {3,2}} {{3,2}} wtTs[1]=1 {{3,2}} wnTs[0]=0 {{3,2}, {1,5}} wnTs[1]=0
+debugShowLineIntersection wtTs[0]=0 {{3,2}, {1,5}} {{3,2}} wnTs[0]=0 {{3,2}, {0,2}}
+debugShowCubicIntersection wtTs[0]=0.5 {{0,2}, {2,3}, {5,1}, {3,2}} {{3,2}} wtTs[1]=1
+debugShowCubicLineIntersection wtTs[0]=0 {{0,2}, {2,3}, {5,1}, {3,2}} {{0,2}} wtTs[1]=0.5 {{3,2}} wtTs[2]=1 {{3,2}} wnTs[0]=1 {{3,2}, {0,2}} wnTs[1]=0 wnTs[2]=0
+debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0 (1,5) tEnd=0.447821962 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0.447821962 (1.92144883,2.25028419) tEnd=0.5 other=1 otherT=0.302178051 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0.5 (2,2) tEnd=1 other=2 otherT=0.333333333 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,2 1,5) t=0 (3,2) tEnd=1 other=3 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0 (0,2) tEnd=0.302178051 other=2 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0.302178051 (1.92144883,2.25028419) tEnd=0.5 other=3 otherT=0.447821962 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0.5 (3,2) tEnd=1 other=4 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0 (3,2) tEnd=0.333333333 other=3 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0.333333333 (2,2) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [1] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{3,2}, {0,2}} tStart=0 tEnd=0.333333333 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [3] {{3,2}, {1,5}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+markWinding id=3 (1,5 2,3 2,0 3,2) t=0.5 [2] (2,2) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (1,5 2,3 2,0 3,2) t=0.5 [2] (2,2) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (1,5 2,3 2,0 3,2) t=0.5 [2] (2,2) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
+debugShowSort [0] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [1] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=-1 ?->? (max=?) done=1 tiny=0 opp=1
+debugShowSort [2] {{3,2}, {0,2}} tStart=0 tEnd=0.333333333 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [3] {{3,2}, {1,5}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [1] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{3,2}, {0,2}} tStart=0 tEnd=0.333333333 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [3] {{3,2}, {1,5}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+markWinding id=2 (3,2 0,2) t=0 [0] (3,2) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=2 (3,2 0,2) t=0 [1] (3,2) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=2 (3,2 0,2) t=0 [2] (3,2) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=2 (3,2 0,2) t=0 [3] (3,2) tEnd=0.333333333 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=4 (3,2 1,5) t=0 [0] (3,2) tEnd=0 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=4 (3,2 1,5) t=0 [1] (3,2) tEnd=0 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=4 (3,2 1,5) t=0 [2] (3,2) tEnd=0 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=4 (3,2 1,5) t=0 [3] (3,2) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=3 (1,5 2,3 2,0 3,2) t=0 [0] (1,5) tEnd=0.447821962 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,2 2,3 5,1 3,2) t=0.5 [3] (3,2) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,2 2,3 5,1 3,2) t=0.5 [2] (3,2) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,2 2,3 5,1 3,2) t=0.5 [4] (3,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0 (1,5) tEnd=0.447821962 other=4 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0.447821962 (1.92144883,2.25028419) tEnd=0.5 other=1 otherT=0.302178051 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,2 1,5) t=0 (3,2) tEnd=1 other=3 otherT=1 otherIndex=3 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0 (0,2) tEnd=0.302178051 other=2 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0.302178051 (1.92144883,2.25028419) tEnd=0.5 other=3 otherT=0.447821962 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0.5 (3,2) tEnd=1 other=4 otherT=0 otherIndex=1 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0 (3,2) tEnd=0.333333333 other=3 otherT=1 otherIndex=5 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0.333333333 (2,2) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (3,2 0,2) t=0 [0] (3,2) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+markDoneBinary id=2 (3,2 0,2) t=0 [1] (3,2) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+markDoneBinary id=2 (3,2 0,2) t=0 [2] (3,2) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+markDoneBinary id=2 (3,2 0,2) t=0 [3] (3,2) tEnd=0.333333333 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [0] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{3,2}, {0,2}} tStart=0.333333333 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [2] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.5 tEnd=0.447821962 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{3,2}, {0,2}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [0] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{3,2}, {0,2}} tStart=0.333333333 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [2] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.5 tEnd=0.447821962 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{3,2}, {0,2}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+markWinding id=2 (3,2 0,2) t=0.333333333 [4] (2,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,2 2,3 5,1 3,2) t=0 [0] (0,2) tEnd=0.302178051 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (1,5 2,3 2,0 3,2) t=0.447821962 [1] (1.92144883,2.25028419) tEnd=0.5 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0 (1,5) tEnd=0.447821962 other=4 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0.447821962 (1.92144883,2.25028419) tEnd=0.5 other=1 otherT=0.302178051 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,2 1,5) t=0 (3,2) tEnd=1 other=3 otherT=1 otherIndex=3 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0 (0,2) tEnd=0.302178051 other=2 otherT=1 otherIndex=5 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0.302178051 (1.92144883,2.25028419) tEnd=0.5 other=3 otherT=0.447821962 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0.5 (3,2) tEnd=1 other=4 otherT=0 otherIndex=1 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (3,2 0,2) t=0.333333333 (2,2) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+findNextOp simple
+markDoneBinary id=2 (3,2 0,2) t=0.333333333 [4] (2,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=2 from=(2,2) to=(0,2)
+findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
+debugShowSort [2] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=0.302178051 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.447821962 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [0] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=0.302178051 tEnd=0.5 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.447821962 tEnd=0.5 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,2 2,3 5,1 3,2) t=0.302178051 [1] (1.92144883,2.25028419) tEnd=0.5 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markDoneBinary id=1 (0,2 2,3 5,1 3,2) t=0 [0] (0,2) tEnd=0.302178051 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[1] to:[3] start=1 end=2
+bridgeOp current id=1 from=(0,2) to=(1.92144883,2.25028419)
+path.moveTo(2,2);
+path.lineTo(0,2);
+path.cubicTo(0.60435605,2.30217814, 1.30002379,2.33042121, 1.92144883,2.25028419);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
+debugShowSort [2] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.5 tEnd=0.447821962 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{3,2}, {0,2}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+debugShowSort [0] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{3,2}, {0,2}} tStart=0.333333333 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=3 (1,5 2,3 2,0 3,2) t=0.447821962 [1] (1.92144883,2.25028419) tEnd=0.5 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[3] to:[2] start=4 end=5
+bridgeOp current id=3 from=(1.92144883,2.25028419) to=(2,2)
+path.cubicTo(1.94782197,2.1619792, 1.97391093,2.0782671, 2,2);
+path.close();
+debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0 (1,5) tEnd=0.447821962 other=4 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,2 1,5) t=0 (3,2) tEnd=1 other=3 otherT=1 otherIndex=3 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 2,3 5,1 3,2) t=0.5 (3,2) tEnd=1 other=4 otherT=0 otherIndex=1 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
+debugShowSort [1] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+debugShowSort [3] {{3,2}, {0,2}} tStart=0 tEnd=0.333333333 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [4] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=0.5 tEnd=0.302178051 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [5] {{3,2}, {1,5}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [0] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[1] sign=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=1 (0,2 2,3 5,1 3,2) t=0.5 [2] (3,2) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markDoneBinary id=1 (0,2 2,3 5,1 3,2) t=0.5 [3] (3,2) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markDoneBinary id=1 (0,2 2,3 5,1 3,2) t=0.5 [4] (3,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[1] to:[1] start=3 end=5
+bridgeOp current id=1 from=(3,2) to=(3,2)
+path.moveTo(3,2);
+path.cubicTo(3.75,1.75, 4,1.5, 3,2);
+path.close();
+debugShowActiveSpans id=3 (1,5 2,3 2,0 3,2) t=0 (1,5) tEnd=0.447821962 other=4 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,2 1,5) t=0 (3,2) tEnd=1 other=3 otherT=1 otherIndex=3 windSum=-1 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+findNextOp simple
+markDoneBinary id=4 (3,2 1,5) t=0 [0] (3,2) tEnd=0 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+markDoneBinary id=4 (3,2 1,5) t=0 [1] (3,2) tEnd=0 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+markDoneBinary id=4 (3,2 1,5) t=0 [2] (3,2) tEnd=0 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+markDoneBinary id=4 (3,2 1,5) t=0 [3] (3,2) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+bridgeOp current id=4 from=(3,2) to=(1,5)
+findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
+debugShowSort [3] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.447821962 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=0.302178051 tEnd=0.5 sign=-1 windValue=1 windSum=1 1->2 (max=2) done=1 tiny=0 opp=1
+debugShowSort [1] {{1,5}, {2,3}, {2,0}, {3,2}} tStart=0.447821962 tEnd=0.5 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{0,2}, {2,3}, {5,1}, {3,2}} tStart=0.302178051 tEnd=0 sign=1 windValue=1 windSum=1 2->1 (max=2) done=1 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
+markDoneBinary id=3 (1,5 2,3 2,0 3,2) t=0 [0] (1,5) tEnd=0.447821962 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[3] to:[3] start=1 end=2
+bridgeOp current id=3 from=(1,5) to=(1.92144883,2.25028419)
+path.moveTo(3,2);
+path.lineTo(1,5);
+path.cubicTo(1.44782197,4.10435629, 1.69509947,3.00816751, 1.92144883,2.25028419);
+</div>
+
+<div id="cubicOp48da">
+ {{0,2}, {2,3}, {5,1}, {3,2}},
+
+ {{0,2}, {0.796711951,2.36012932}, {1.63878124,2.27837338}},
+ {{1.63878124,2.27837338}, {2.48085053,2.19661745}, {3.06246392,1.97878949}},
+ {{3.06246392,1.97878949}, {3.64407731,1.76096154}, {3.65942155,1.71287481}},
+ {{3.65942155,1.71287481}, {3.66835761,1.67480112}, {3,2}},
+</div>
+
+<div id="cubicOp32d">
+ SimplifyNew_Test [cubicOp32d]
+{{0,1}, {1,2}, {6,0}, {3,1}},
+{{3,1}, {0,1}},
+op difference
+{{0,6}, {1,3}, {1,0}, {2,1}},
+{{2,1}, {0,6}},
+insert t=0.5 pts roughly equal
+insert t=0.5 pts roughly equal
+insert t=0.5 pts roughly equal
+debugShowCubicIntersection wtTs[0]=1 {{0,1}, {1,2}, {6,0}, {3,1}} {{3,1}} wtTs[1]=0.5
+insert t=0.5 pts roughly equal
+debugShowCubicLineIntersection wtTs[0]=0 {{0,1}, {1,2}, {6,0}, {3,1}} {{0,1}} wtTs[1]=0.5 {{3,1}} wtTs[2]=1 {{3,1}} wnTs[0]=1 {{3,1}, {0,1}} wnTs[1]=0 wnTs[2]=0
+debugShowCubicIntersection wtTs[0]=0.235702334 {{0,1}, {1,2}, {6,0}, {3,1}} {{1.2166390977965289,1.2856741834504377}} wnTs[0]=0.640711 {{0,6}, {1,3}, {1,0}, {2,1}}
+debugShowCubicLineIntersection wtTs[0]=0.336702456 {{0,1}, {1,2}, {6,0}, {3,1}} {{1.9124722896380537,1.2188192759048657}} wnTs[0]=0.0437639 {{2,1}, {0,6}}
+debugShowCubicLineIntersection wtTs[0]=0.724744871 {{0,6}, {1,3}, {1,0}, {2,1}} {{1.359821149611685,1.0000000000000004}} wtTs[1]=1 {{2,1}} wnTs[0]=0.546726 {{3,1}, {0,1}} wnTs[1]=0.333333333
+debugShowLineIntersection wtTs[0]=0 {{3,1}, {0,1}} {{2,1}} wnTs[0]=0.333333 {{2,1}, {0,6}}
+debugShowCubicIntersection no self intersect {{0,6}, {1,3}, {1,0}, {2,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,6}, {1,3}, {1,0}, {2,1}} {{0,6}} wtTs[1]=1 {{2,1}} wnTs[0]=1 {{2,1}, {0,6}} wnTs[1]=0
+debugShowActiveSpans id=1 (0,1 1,2 6,0 3,1) t=0 (0,1) tEnd=0.235702334 other=2 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,2 6,0 3,1) t=0.235702334 (1.21663904,1.28567421) tEnd=0.336702456 other=3 otherT=0.640711351 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,1 1,2 6,0 3,1) t=0.336702456 (1.91247225,1.21881926) tEnd=0.5 other=4 otherT=0.0437638552 otherIndex=2 windSum=? windValue=1 oppValue=0
+</div>
+
+<div id="cubicOp48db">
+computed quadratics given
+ {{0,2}, {2,3}, {5,1}, {3,2}},
+ {{1,5}, {2,3}, {2,0}, {3,2}},
+computed quadratics set 1
+ {{0,2}, {0.796711951,2.36012932}, {1.63878124,2.27837338}},
+ {{1.63878124,2.27837338}, {2.48085053,2.19661745}, {3.06246392,1.97878949}},
+ {{3.06246392,1.97878949}, {3.64407731,1.76096154}, {3.65942155,1.71287481}},
+ {{3.65942155,1.71287481}, {3.66835761,1.67480112}, {3,2}},
+computed quadratics set 2
+ {{1,5}, {1.50173477,3.89061296}, {1.76597918,2.79793753}},
+ {{1.76597918,2.79793753}, {2.0153684,1.78464605}, {2.27205088,1.42969352}},
+ {{2.27205088,1.42969352}, {2.52873337,1.07474099}, {3,2}},
+</div>
+
+<div id="cubicOp48dc">
+ {{1.63878124,2.27837338}, {2.48085053,2.19661745}, {3.06246392,1.97878949}},
+ {{2.27205088,1.42969352}, {2.52873337,1.07474099}, {3,2}},
+</div>
+
+<div id="cubicOp49d">
+ SimplifyNew_Test [cubicOp49d]
+{{0,2}, {1,5}, {3,2}, {4,1}},
+{{4,1}, {0,2}},
+op difference
+{{2,3}, {1,4}, {2,0}, {5,1}},
+{{5,1}, {2,3}},
+debugShowCubicIntersection no self intersect {{2,3}, {1,4}, {2,0}, {5,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{2,3}, {1,4}, {2,0}, {5,1}} {{2,3}} wtTs[1]=1 {{5,1}} wnTs[0]=1 {{5,1}, {2,3}} wnTs[1]=0
+debugShowCubicIntersection wtTs[0]=1.74609417e-09 {{2,3}, {1,4}, {2,0}, {5,1}} {{1.9999999947617175,3.0000000052382827}} wtTs[1]=0.122781788 {{1.7221068406383582,3.1607246577308117}} wnTs[0]=0.5 {{0,2}, {1,5}, {3,2}, {4,1}} wnTs[1]=0.438140761
+debugShowCubicLineIntersection wtTs[0]=0.651913155 {{2,3}, {1,4}, {2,0}, {5,1}} {{2.5942051033446676,1.3514487241638331}} wnTs[0]=0.351449 {{4,1}, {0,2}}
+debugShowCubicLineIntersection wtTs[0]=0.5 {{0,2}, {1,5}, {3,2}, {4,1}} {{2,3}} wnTs[0]=1 {{5,1}, {2,3}}
+debugShowLineIntersection no intersect {{5,1}, {2,3}} {{4,1}, {0,2}}
+debugShowCubicIntersection no self intersect {{0,2}, {1,5}, {3,2}, {4,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,2}, {1,5}, {3,2}, {4,1}} {{0,2}} wtTs[1]=1 {{4,1}} wnTs[0]=1 {{4,1}, {0,2}} wnTs[1]=0
+debugShowActiveSpans id=3 (2,3 1,4 2,0 5,1) t=1.74609417e-09 (2,3) tEnd=0.122781788 other=1 otherT=0.499999999 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,4 2,0 5,1) t=0.122781788 (1.72210681,3.16072464) tEnd=0.651913155 other=1 otherT=0.438140761 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,4 2,0 5,1) t=0.651913155 (2.59420514,1.35144877) tEnd=1 other=2 otherT=0.351448724 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,1 2,3) t=0 (5,1) tEnd=1 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 1,5 3,2 4,1) t=0 (0,2) tEnd=0.438140761 other=2 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 1,5 3,2 4,1) t=0.438140761 (1.72210681,3.16072464) tEnd=0.499999999 other=3 otherT=0.122781788 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 1,5 3,2 4,1) t=0.5 (2,3) tEnd=1 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,1 0,2) t=0 (4,1) tEnd=0.351448724 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,1 0,2) t=0.351448724 (2.59420514,1.35144877) tEnd=1 other=3 otherT=0.651913155 otherIndex=3 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [1] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.122781788 tEnd=0.651913155 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,2}, {1,5}, {3,2}, {4,1}} tStart=0.438140761 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [3] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.122781788 tEnd=1.74609417e-09 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,2}, {1,5}, {3,2}, {4,1}} tStart=0.438140761 tEnd=0.499999999 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+findTop swap
+markWinding id=3 (2,3 1,4 2,0 5,1) t=0.122781788 [2] (1.72210681,3.16072464) tEnd=0.651913155 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (2,3 1,4 2,0 5,1) t=0.122781788 [2] (1.72210681,3.16072464) tEnd=0.651913155 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (2,3 1,4 2,0 5,1) t=0.122781788 [2] (1.72210681,3.16072464) tEnd=0.651913155 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
+debugShowSort [0] {{4,1}, {0,2}} tStart=0.351448724 tEnd=0 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [1] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.651913155 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
+debugShowSort [2] {{4,1}, {0,2}} tStart=0.351448724 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [3] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.651913155 tEnd=0.122781788 sign=1 windValue=1 windSum=-1 ?->? (max=?) done=1 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [3] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.651913155 tEnd=0.122781788 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [0] {{4,1}, {0,2}} tStart=0.351448724 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [1] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.651913155 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{4,1}, {0,2}} tStart=0.351448724 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+markWinding id=2 (4,1 0,2) t=0 [0] (4,1) tEnd=0.351448724 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,2 1,5 3,2 4,1) t=0.5 [3] (2,3) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=3 (2,3 1,4 2,0 5,1) t=0.651913155 [3] (2.59420514,1.35144877) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=4 (5,1 2,3) t=0 [0] (5,1) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=2 (4,1 0,2) t=0.351448724 [1] (2.59420514,1.35144877) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,2 1,5 3,2 4,1) t=0 [0] (0,2) tEnd=0.438140761 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (2,3 1,4 2,0 5,1) t=1.74609417e-09 (2,3) tEnd=0.122781788 other=1 otherT=0.499999999 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,4 2,0 5,1) t=0.651913155 (2.59420514,1.35144877) tEnd=1 other=2 otherT=0.351448724 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,1 2,3) t=0 (5,1) tEnd=1 other=3 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 1,5 3,2 4,1) t=0 (0,2) tEnd=0.438140761 other=2 otherT=1 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 1,5 3,2 4,1) t=0.438140761 (1.72210681,3.16072464) tEnd=0.499999999 other=3 otherT=0.122781788 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 1,5 3,2 4,1) t=0.5 (2,3) tEnd=1 other=4 otherT=1 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,1 0,2) t=0 (4,1) tEnd=0.351448724 other=1 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,1 0,2) t=0.351448724 (2.59420514,1.35144877) tEnd=1 other=3 otherT=0.651913155 otherIndex=3 windSum=-1 windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (4,1 0,2) t=0 [0] (4,1) tEnd=0.351448724 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
+markDoneBinary id=1 (0,2 1,5 3,2 4,1) t=0.5 [3] (2,3) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
+setSpans unsortable [1] (2,3) [2] (1.72210681,3.16072464)
+debugShowActiveSpans id=3 (2,3 1,4 2,0 5,1) t=1.74609417e-09 (2,3) tEnd=0.122781788 other=1 otherT=0.499999999 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,4 2,0 5,1) t=0.651913155 (2.59420514,1.35144877) tEnd=1 other=2 otherT=0.351448724 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,1 2,3) t=0 (5,1) tEnd=1 other=3 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 1,5 3,2 4,1) t=0 (0,2) tEnd=0.438140761 other=2 otherT=1 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,2 1,5 3,2 4,1) t=0.438140761 (1.72210681,3.16072464) tEnd=0.499999999 other=3 otherT=0.122781788 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,1 0,2) t=0.351448724 (2.59420514,1.35144877) tEnd=1 other=3 otherT=0.651913155 otherIndex=3 windSum=-1 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+findNextOp simple
+markDoneBinary id=4 (5,1 2,3) t=0 [0] (5,1) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
+bridgeOp current id=4 from=(2,3) to=(5,1)
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=-1 sign=-1
+debugShowSort [1] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.651913155 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{4,1}, {0,2}} tStart=0.351448724 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [3] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.651913155 tEnd=0.122781788 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [0] {{4,1}, {0,2}} tStart=0.351448724 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=-1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=3 (2,3 1,4 2,0 5,1) t=0.651913155 [3] (2.59420514,1.35144877) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
+findNextOp from:[3] to:[2] start=1 end=2
+bridgeOp current id=3 from=(5,1) to=(2.59420514,1.35144877)
+path.moveTo(2,3);
+path.lineTo(5,1);
+path.cubicTo(3.9557395,0.651913166, 3.15380788,0.909648538, 2.59420514,1.35144877);
+findNextOp simple
+markDoneBinary id=2 (4,1 0,2) t=0.351448724 [1] (2.59420514,1.35144877) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+bridgeOp current id=2 from=(2.59420514,1.35144877) to=(0,2)
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [2] {{0,2}, {1,5}, {3,2}, {4,1}} tStart=0.438140761 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.122781788 tEnd=1.74609417e-09 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [0] {{0,2}, {1,5}, {3,2}, {4,1}} tStart=0.438140761 tEnd=0.499999999 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{2,3}, {1,4}, {2,0}, {5,1}} tStart=0.122781788 tEnd=0.651913155 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=3 (2,3 1,4 2,0 5,1) t=1.74609417e-09 [1] (2,3) tEnd=0.122781788 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,2 1,5 3,2 4,1) t=0.438140761 [1] (1.72210681,3.16072464) tEnd=0.499999999 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=1 (0,2 1,5 3,2 4,1) t=0 [0] (0,2) tEnd=0.438140761 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[1] to:[3] start=2 end=1
+bridgeOp current id=1 from=(0,2) to=(1.72210681,3.16072464)
+path.lineTo(0,2);
+path.cubicTo(0.43814075,3.31442237, 1.06824887,3.47704053, 1.72210681,3.16072464);
+setSpans unsortable [1] (2,3) [2] (1.72210681,3.16072464)
+setSpans all tiny unsortable [2] (2,3) [1] (1.72210681,3.16072464)
+markUnsortable id=3 (2,3 1,4 2,0 5,1) t=1.74609417e-09 [1] (2,3) tEnd=0.122781788 newWindSum=0 windSum=-1 windValue=1
+markUnsortable id=3 (2,3 1,4 2,0 5,1) t=0 [0] (2,3) tEnd=1.74609417e-09 newWindSum=0 windSum=? windValue=1
+markUnsortable id=1 (0,2 1,5 3,2 4,1) t=0.499999999 [2] (2,3) tEnd=0.5 newWindSum=0 windSum=? windValue=1
+markUnsortable id=1 (0,2 1,5 3,2 4,1) t=0.438140761 [1] (1.72210681,3.16072464) tEnd=0.499999999 newWindSum=0 windSum=-1 windValue=1
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=-1 sign=-1
+debugShowSort [0] *** UNSORTABLE *** {{2,3}, {1,4}, {2,0}, {5,1}} tStart=1.74609417e-09 tEnd=0.122781788 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] *** UNSORTABLE *** {{2,3}, {1,4}, {2,0}, {5,1}} tStart=1.74609417e-09 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=1 tiny=1 opp=0
+debugShowSort [2] *** UNSORTABLE *** {{0,2}, {1,5}, {3,2}, {4,1}} tStart=0.499999999 tEnd=0.5 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=1 tiny=1 opp=1
+debugShowSort [3] *** UNSORTABLE *** {{0,2}, {1,5}, {3,2}, {4,1}} tStart=0.499999999 tEnd=0.438140761 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+path.cubicTo(1.78458714,3.17018676, 1.87721825,3.12278175, 2,3);
+markDoneBinary id=3 (2,3 1,4 2,0 5,1) t=1.74609417e-09 [1] (2,3) tEnd=0.122781788 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
+path.close();
+setSpans all tiny unsortable [2] (2,3) [1] (1.72210681,3.16072464)
+setSpans unsortable [1] (2,3) [2] (1.72210681,3.16072464)
+setSpans unsortable [1] (2,3) [2] (1.72210681,3.16072464)
+setSpans all tiny unsortable [2] (2,3) [1] (1.72210681,3.16072464)
+setSpans unsortable [1] (2,3) [2] (1.72210681,3.16072464)
+assemble
+assemble contour start=(2,3) end=(2,3)
+</div>
+
+<div id="cubicOp50d">
+ SimplifyNew_Test [cubicOp50d]
+{{0,3}, {1,6}, {5,0}, {5,1}},
+{{5,1}, {0,3}},
+op difference
+{{0,5}, {1,5}, {3,0}, {6,1}},
+{{6,1}, {0,5}},
+debugShowCubicIntersection no self intersect {{0,5}, {1,5}, {3,0}, {6,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,5}, {1,5}, {3,0}, {6,1}} {{0,5}} wtTs[1]=0.181818182 {{0.64462809917355357,4.5702479338842981}} wtTs[2]=1 {{6,1}} wnTs[0]=1 {{6,1}, {0,5}} wnTs[1]=0.892561983 wnTs[2]=0
+debugShowCubicIntersection wtTs[0]=0.326064989 {{0,5}, {1,5}, {3,0}, {6,1}} {{1.2971500960309803,3.7865580517965118}} wnTs[0]=0.265062 {{0,3}, {1,6}, {5,0}, {5,1}}
+debugShowCubicLineIntersection wtTs[0]=0.639696212 {{0,5}, {1,5}, {3,0}, {6,1}} {{3.1467223651509295,1.7413110539396279}} wnTs[0]=0.370656 {{5,1}, {0,3}}
+debugShowCubicLineIntersection no intersect {{0,3}, {1,6}, {5,0}, {5,1}} {{6,1}, {0,5}}
+debugShowLineIntersection no intersect {{6,1}, {0,5}} {{5,1}, {0,3}}
+debugShowCubicIntersection no self intersect {{0,3}, {1,6}, {5,0}, {5,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,3}, {1,6}, {5,0}, {5,1}} {{0,3}} wtTs[1]=0.772727273 {{4.4623403456048081,1.2150638617580767}} wtTs[2]=1 {{5,1}} wnTs[0]=1 {{5,1}, {0,3}} wnTs[1]=0.107531931 wnTs[2]=0
+debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0 (0,5) tEnd=0.181818182 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0.181818182 (0.644628108,4.57024813) tEnd=0.326064989 other=4 otherT=0.892561983 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0.326064989 (1.29715014,3.78655815) tEnd=0.639696212 other=1 otherT=0.26506234 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0.639696212 (3.14672232,1.74131107) tEnd=1 other=2 otherT=0.370655527 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,1 0,5) t=0 (6,1) tEnd=0.892561983 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,1 0,5) t=0.892561983 (0.644628108,4.57024813) tEnd=1 other=3 otherT=0.181818182 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,6 5,0 5,1) t=0 (0,3) tEnd=0.26506234 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,6 5,0 5,1) t=0.26506234 (1.29715014,3.78655815) tEnd=0.772727273 other=3 otherT=0.326064989 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,6 5,0 5,1) t=0.772727273 (4.46234035,1.21506381) tEnd=1 other=2 otherT=0.107531931 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,1 0,3) t=0 (5,1) tEnd=0.107531931 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,1 0,3) t=0.107531931 (4.46234035,1.21506381) tEnd=0.370655527 other=1 otherT=0.772727273 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,1 0,3) t=0.370655527 (3.14672232,1.74131107) tEnd=1 other=3 otherT=0.639696212 otherIndex=3 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{0,3}, {1,6}, {5,0}, {5,1}} tStart=1 tEnd=0.772727273 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{5,1}, {0,3}} tStart=0 tEnd=0.107531931 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+markWinding id=1 (0,3 1,6 5,0 5,1) t=0.772727273 [2] (4.46234035,1.21506381) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (5,1 0,3) t=0 [0] (5,1) tEnd=0.107531931 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,3 1,6 5,0 5,1) t=0.772727273 [2] (4.46234035,1.21506381) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+findNextOp simple
+markDoneBinary id=1 (0,3 1,6 5,0 5,1) t=0.772727273 [2] (4.46234035,1.21506381) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+bridgeOp current id=1 from=(4.46234035,1.21506381) to=(5,1)
+path.moveTo(4.46234035,1.21506381);
+path.cubicTo(4.79338837,0.90702486, 5,0.772727251, 5,1);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{5,1}, {0,3}} tStart=0.107531931 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,3}, {1,6}, {5,0}, {5,1}} tStart=0.772727273 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{5,1}, {0,3}} tStart=0.107531931 tEnd=0.370655527 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,3}, {1,6}, {5,0}, {5,1}} tStart=0.772727273 tEnd=0.26506234 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[0] sign=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markWinding id=2 (5,1 0,3) t=0.107531931 [1] (4.46234035,1.21506381) tEnd=0.370655527 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+markWinding id=1 (0,3 1,6 5,0 5,1) t=0.26506234 [1] (1.29715014,3.78655815) tEnd=0.772727273 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+markDoneBinary id=2 (5,1 0,3) t=0 [0] (5,1) tEnd=0.107531931 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[2] to:[1] start=2 end=1
+bridgeOp current id=2 from=(5,1) to=(4.46234035,1.21506381)
+path.lineTo(4.46234035,1.21506381);
+path.close();
+debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0 (0,5) tEnd=0.181818182 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0.181818182 (0.644628108,4.57024813) tEnd=0.326064989 other=4 otherT=0.892561983 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0.326064989 (1.29715014,3.78655815) tEnd=0.639696212 other=1 otherT=0.26506234 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0.639696212 (3.14672232,1.74131107) tEnd=1 other=2 otherT=0.370655527 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,1 0,5) t=0 (6,1) tEnd=0.892561983 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,1 0,5) t=0.892561983 (0.644628108,4.57024813) tEnd=1 other=3 otherT=0.181818182 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,6 5,0 5,1) t=0 (0,3) tEnd=0.26506234 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,6 5,0 5,1) t=0.26506234 (1.29715014,3.78655815) tEnd=0.772727273 other=3 otherT=0.326064989 otherIndex=2 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,1 0,3) t=0.107531931 (4.46234035,1.21506381) tEnd=0.370655527 other=1 otherT=0.772727273 otherIndex=2 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,1 0,3) t=0.370655527 (3.14672232,1.74131107) tEnd=1 other=3 otherT=0.639696212 otherIndex=3 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
+debugShowSort [3] {{0,3}, {1,6}, {5,0}, {5,1}} tStart=0.772727273 tEnd=0.26506234 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{5,1}, {0,3}} tStart=0.107531931 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{0,3}, {1,6}, {5,0}, {5,1}} tStart=0.772727273 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{5,1}, {0,3}} tStart=0.107531931 tEnd=0.370655527 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[3] sign=1
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=1 (0,3 1,6 5,0 5,1) t=0.26506234 [1] (1.29715014,3.78655815) tEnd=0.772727273 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[1] to:[2] start=1 end=2
+bridgeOp current id=1 from=(1.29715014,3.78655815) to=(4.46234035,1.21506381)
+path.moveTo(1.29715014,3.78655815);
+path.cubicTo(2.36251926,3.45810199, 3.72286963,1.90313876, 4.46234035,1.21506381);
+findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
+debugShowSort [0] {{5,1}, {0,3}} tStart=0.370655527 tEnd=0.107531931 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,5}, {1,5}, {3,0}, {6,1}} tStart=0.639696212 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [2] {{5,1}, {0,3}} tStart=0.370655527 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,5}, {1,5}, {3,0}, {6,1}} tStart=0.639696212 tEnd=0.326064989 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[0] sign=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+markDoneBinary id=3 (0,5 1,5 3,0 6,1) t=0.639696212 [3] (3.14672232,1.74131107) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markDoneBinary id=4 (6,1 0,5) t=0 [0] (6,1) tEnd=0.892561983 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (5,1 0,3) t=0.370655527 [2] (3.14672232,1.74131107) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+markDoneBinary id=1 (0,3 1,6 5,0 5,1) t=0 [0] (0,3) tEnd=0.26506234 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markWinding id=3 (0,5 1,5 3,0 6,1) t=0.326064989 [2] (1.29715014,3.78655815) tEnd=0.639696212 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+markDoneBinary id=2 (5,1 0,3) t=0.107531931 [1] (4.46234035,1.21506381) tEnd=0.370655527 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[2] to:[3] start=3 end=2
+bridgeOp current id=2 from=(4.46234035,1.21506381) to=(3.14672232,1.74131107)
+findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=-1
+debugShowSort [1] {{0,5}, {1,5}, {3,0}, {6,1}} tStart=0.326064989 tEnd=0.639696212 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,3}, {1,6}, {5,0}, {5,1}} tStart=0.26506234 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+debugShowSort [3] {{0,5}, {1,5}, {3,0}, {6,1}} tStart=0.326064989 tEnd=0.181818182 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,3}, {1,6}, {5,0}, {5,1}} tStart=0.26506234 tEnd=0.772727273 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=-1
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (0,5 1,5 3,0 6,1) t=0.181818182 [1] (0.644628108,4.57024813) tEnd=0.326064989 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=3 (0,5 1,5 3,0 6,1) t=0.326064989 [2] (1.29715014,3.78655815) tEnd=0.639696212 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+findNextOp from:[3] to:[1] start=1 end=2
+bridgeOp current id=3 from=(3.14672232,1.74131107) to=(1.29715014,3.78655815)
+path.lineTo(3.14672232,1.74131107);
+path.cubicTo(2.43183374,2.33584237, 1.81530964,3.13070869, 1.29715014,3.78655815);
+path.close();
+findChaseOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
+debugShowSort [0] {{6,1}, {0,5}} tStart=0.892561983 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [1] {{0,5}, {1,5}, {3,0}, {6,1}} tStart=0.181818182 tEnd=0.326064989 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{6,1}, {0,5}} tStart=0.892561983 tEnd=1 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,5}, {1,5}, {3,0}, {6,1}} tStart=0.181818182 tEnd=0 sign=1 windValue=1 windSum=? 2->1 (max=2) done=0 tiny=0 opp=0
+findChaseOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
+debugShowSort [0] {{6,1}, {0,5}} tStart=0.892561983 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [1] {{0,5}, {1,5}, {3,0}, {6,1}} tStart=0.181818182 tEnd=0.326064989 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{6,1}, {0,5}} tStart=0.892561983 tEnd=1 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,5}, {1,5}, {3,0}, {6,1}} tStart=0.181818182 tEnd=0 sign=1 windValue=1 windSum=? 2->1 (max=2) done=0 tiny=0 opp=0
+markWinding id=4 (6,1 0,5) t=0.892561983 [1] (0.644628108,4.57024813) tEnd=1 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (0,5 1,5 3,0 6,1) t=0 [0] (0,5) tEnd=0.181818182 newWindSum=2 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (0,5 1,5 3,0 6,1) t=0 [0] (0,5) tEnd=0.181818182 newWindSum=2 newOppSum=0 oppSum=0 windSum=2 windValue=1
+debugShowActiveSpans id=3 (0,5 1,5 3,0 6,1) t=0 (0,5) tEnd=0.181818182 other=4 otherT=1 otherIndex=2 windSum=2 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,1 0,5) t=0.892561983 (0.644628108,4.57024813) tEnd=1 other=3 otherT=0.181818182 otherIndex=1 windSum=2 windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=4 (6,1 0,5) t=0.892561983 [1] (0.644628108,4.57024813) tEnd=1 newWindSum=2 newOppSum=0 oppSum=0 windSum=2 windValue=1
+markDoneBinary id=3 (0,5 1,5 3,0 6,1) t=0 [0] (0,5) tEnd=0.181818182 newWindSum=2 newOppSum=0 oppSum=0 windSum=2 windValue=1
+assemble
+assemble contour start=(4.46234035,1.21506381) end=(4.46234035,1.21506381)
+path.moveTo(4.46234035,1.21506381);
+path.cubicTo(4.79338837,0.90702486, 5,0.772727251, 5,1);
+path.lineTo(4.46234035,1.21506381);
+path.close();
+assemble contour start=(1.29715014,3.78655815) end=(1.29715014,3.78655815)
+</div>
+
+<div id="cubicOp51d">
+ SimplifyNew_Test [cubicOp51d]
+{{0,3}, {1,2}, {4,1}, {6,0}},
+{{6,0}, {0,3}},
+op difference
+{{1,4}, {0,6}, {3,0}, {2,1}},
+{{2,1}, {1,4}},
+debugShowCubicIntersection no self intersect {{0,3}, {1,2}, {4,1}, {6,0}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,3}, {1,2}, {4,1}, {6,0}} {{0,3}} wtTs[1]=1 {{6,0}} wnTs[0]=1 {{6,0}, {0,3}} wnTs[1]=0
+debugShowCubicIntersection wtTs[0]=0.397354824 {{0,3}, {1,2}, {4,1}, {6,0}} {{1.9511935265302276,1.8079355291007386}} wnTs[0]=0.661665 {{1,4}, {0,6}, {3,0}, {2,1}}
+debugShowCubicLineIntersection wtTs[0]=0.355273081 {{0,3}, {1,2}, {4,1}, {6,0}} {{1.6886064138367243,1.9341807584898274}} wnTs[0]=0.311394 {{2,1}, {1,4}}
+debugShowCubicLineIntersection wtTs[0]=0.6185225 {{1,4}, {0,6}, {3,0}, {2,1}} {{1.8422478636338226,2.0788760681830887}} wnTs[0]=0.692959 {{6,0}, {0,3}}
+debugShowLineIntersection wtTs[0]=0.733333333 {{6,0}, {0,3}} {{1.6000000000000003,2.1999999999999997}} wnTs[0]=0.4 {{2,1}, {1,4}}
+debugShowCubicIntersection no self intersect {{1,4}, {0,6}, {3,0}, {2,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{1,4}, {0,6}, {3,0}, {2,1}} {{1,4}} wtTs[1]=0.333333333 {{1.0370370370370368,3.8888888888888897}} wtTs[2]=1 {{2,1}} wnTs[0]=1 {{2,1}, {1,4}} wnTs[1]=0.962962963 wnTs[2]=0
+debugShowActiveSpans id=1 (0,3 1,2 4,1 6,0) t=0 (0,3) tEnd=0.355273081 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 4,1 6,0) t=0.355273081 (1.68860638,1.93418074) tEnd=0.397354824 other=4 otherT=0.311393586 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 4,1 6,0) t=0.397354824 (1.95119357,1.80793548) tEnd=1 other=3 otherT=0.66166507 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,0 0,3) t=0 (6,0) tEnd=0.692958689 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,0 0,3) t=0.692958689 (1.84224784,2.07887602) tEnd=0.733333333 other=3 otherT=0.6185225 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,0 0,3) t=0.733333333 (1.60000002,2.20000005) tEnd=1 other=4 otherT=0.4 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,4 0,6 3,0 2,1) t=0 (1,4) tEnd=0.333333333 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,4 0,6 3,0 2,1) t=0.333333333 (1.03703701,3.88888884) tEnd=0.6185225 other=4 otherT=0.962962963 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,4 0,6 3,0 2,1) t=0.6185225 (1.84224784,2.07887602) tEnd=0.66166507 other=2 otherT=0.692958689 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,4 0,6 3,0 2,1) t=0.66166507 (1.95119357,1.80793548) tEnd=1 other=1 otherT=0.397354824 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 1,4) t=0 (2,1) tEnd=0.311393586 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 1,4) t=0.311393586 (1.68860638,1.93418074) tEnd=0.4 other=1 otherT=0.355273081 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 1,4) t=0.4 (1.60000002,2.20000005) tEnd=0.962962963 other=2 otherT=0.733333333 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 1,4) t=0.962962963 (1.03703701,3.88888884) tEnd=1 other=3 otherT=0.333333333 otherIndex=1 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{0,3}, {1,2}, {4,1}, {6,0}} tStart=1 tEnd=0.397354824 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{6,0}, {0,3}} tStart=0 tEnd=0.692958689 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+findTop swap
+markWinding id=1 (0,3 1,2 4,1 6,0) t=0.397354824 [2] (1.95119357,1.80793548) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,3 1,2 4,1 6,0) t=0.397354824 [2] (1.95119357,1.80793548) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markWinding id=2 (6,0 0,3) t=0 [0] (6,0) tEnd=0.692958689 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,3}, {1,2}, {4,1}, {6,0}} tStart=0.397354824 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{1,4}, {0,6}, {3,0}, {2,1}} tStart=0.66166507 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [2] {{0,3}, {1,2}, {4,1}, {6,0}} tStart=0.397354824 tEnd=0.355273081 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{1,4}, {0,6}, {3,0}, {2,1}} tStart=0.66166507 tEnd=0.6185225 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[0] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=3 (1,4 0,6 3,0 2,1) t=0.66166507 [3] (1.95119357,1.80793548) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=4 (2,1 1,4) t=0 [0] (2,1) tEnd=0.311393586 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,3 1,2 4,1 6,0) t=0.355273081 [1] (1.68860638,1.93418074) tEnd=0.397354824 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (1,4 0,6 3,0 2,1) t=0.6185225 [2] (1.84224784,2.07887602) tEnd=0.66166507 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+markDoneBinary id=1 (0,3 1,2 4,1 6,0) t=0.397354824 [2] (1.95119357,1.80793548) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[1] to:[3] start=3 end=4
+bridgeOp current id=1 from=(6,0) to=(1.95119357,1.80793548)
+path.moveTo(6,0);
+path.cubicTo(4.79470968,0.602645159, 3.22623801,1.20529044, 1.95119357,1.80793548);
+findNextOp simple
+markDoneBinary id=3 (1,4 0,6 3,0 2,1) t=0.66166507 [3] (1.95119357,1.80793548) tEnd=1 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+bridgeOp current id=3 from=(1.95119357,1.80793548) to=(2,1)
+path.cubicTo(2.21878767,1.12462389, 2.33833504,0.661665022, 2,1);
+findNextOp debugShowSort contourWinding=1 oppContourWinding=1 sign=1
+debugShowSort [1] {{2,1}, {1,4}} tStart=0.311393586 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,3}, {1,2}, {4,1}, {6,0}} tStart=0.355273081 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+debugShowSort [3] {{2,1}, {1,4}} tStart=0.311393586 tEnd=0.4 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,3}, {1,2}, {4,1}, {6,0}} tStart=0.355273081 tEnd=0.397354824 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+markWinding id=1 (0,3 1,2 4,1 6,0) t=0 [0] (0,3) tEnd=0.355273081 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (6,0 0,3) t=0.733333333 [2] (1.60000002,2.20000005) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+markDoneBinary id=4 (2,1 1,4) t=0.311393586 [1] (1.68860638,1.93418074) tEnd=0.4 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=4 (2,1 1,4) t=0 [0] (2,1) tEnd=0.311393586 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+findNextOp from:[4] to:[1] start=1 end=0
+bridgeOp current id=4 from=(2,1) to=(1.68860638,1.93418074)
+findNextOp simple
+markDoneBinary id=1 (0,3 1,2 4,1 6,0) t=0 [0] (0,3) tEnd=0.355273081 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=1 from=(1.68860638,1.93418074) to=(0,3)
+path.lineTo(1.68860638,1.93418074);
+path.cubicTo(0.962984085,2.28945374, 0.355273068,2.64472699, 0,3);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [2] {{6,0}, {0,3}} tStart=0.733333333 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{2,1}, {1,4}} tStart=0.4 tEnd=0.962962963 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [0] {{6,0}, {0,3}} tStart=0.733333333 tEnd=0.692958689 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{2,1}, {1,4}} tStart=0.4 tEnd=0.311393586 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=4 (2,1 1,4) t=0.4 [2] (1.60000002,2.20000005) tEnd=0.962962963 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (6,0 0,3) t=0.692958689 [1] (1.84224784,2.07887602) tEnd=0.733333333 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=2 (6,0 0,3) t=0.733333333 [2] (1.60000002,2.20000005) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[2] to:[4] start=2 end=3
+bridgeOp current id=2 from=(0,3) to=(1.60000002,2.20000005)
+findNextOp debugShowSort contourWinding=1 oppContourWinding=1 sign=1
+debugShowSort [1] {{2,1}, {1,4}} tStart=0.962962963 tEnd=0.4 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{1,4}, {0,6}, {3,0}, {2,1}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{2,1}, {1,4}} tStart=0.962962963 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{1,4}, {0,6}, {3,0}, {2,1}} tStart=0.333333333 tEnd=0.6185225 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[1] sign=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=3 (1,4 0,6 3,0 2,1) t=0 [0] (1,4) tEnd=0.333333333 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=4 (2,1 1,4) t=0.962962963 [3] (1.03703701,3.88888884) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=3 (1,4 0,6 3,0 2,1) t=0.333333333 [1] (1.03703701,3.88888884) tEnd=0.6185225 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+markDoneBinary id=4 (2,1 1,4) t=0.4 [2] (1.60000002,2.20000005) tEnd=0.962962963 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+findNextOp from:[4] to:[3] start=1 end=0
+bridgeOp current id=4 from=(1.60000002,2.20000005) to=(1.03703701,3.88888884)
+path.lineTo(1.60000002,2.20000005);
+findNextOp simple
+markDoneBinary id=3 (1,4 0,6 3,0 2,1) t=0 [0] (1,4) tEnd=0.333333333 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+bridgeOp current id=3 from=(1.03703701,3.88888884) to=(1,4)
+path.lineTo(1.03703701,3.88888884);
+path.cubicTo(0.777777791,4.44444466, 0.666666687,4.66666651, 1,4);
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
+debugShowSort [3] {{2,1}, {1,4}} tStart=0.962962963 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{1,4}, {0,6}, {3,0}, {2,1}} tStart=0.333333333 tEnd=0.6185225 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{2,1}, {1,4}} tStart=0.962962963 tEnd=0.4 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{1,4}, {0,6}, {3,0}, {2,1}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+findNextOp firstIndex=[3] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markDoneBinary id=4 (2,1 1,4) t=0.962962963 [3] (1.03703701,3.88888884) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[4] to:[3] start=1 end=2
+bridgeOp current id=4 from=(1,4) to=(1.03703701,3.88888884)
+findNextOp debugShowSort contourWinding=1 oppContourWinding=1 sign=1
+debugShowSort [3] {{1,4}, {0,6}, {3,0}, {2,1}} tStart=0.6185225 tEnd=0.333333333 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{6,0}, {0,3}} tStart=0.692958689 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=1
+debugShowSort [1] {{1,4}, {0,6}, {3,0}, {2,1}} tStart=0.6185225 tEnd=0.66166507 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{6,0}, {0,3}} tStart=0.692958689 tEnd=0.733333333 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=3 (1,4 0,6 3,0 2,1) t=0.333333333 [1] (1.03703701,3.88888884) tEnd=0.6185225 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+findNextOp from:[3] to:[2] start=1 end=0
+bridgeOp current id=3 from=(1.03703701,3.88888884) to=(1.84224784,2.07887602)
+path.lineTo(1.03703701,3.88888884);
+path.cubicTo(1.25885081,3.41357374, 1.58910847,2.69425988, 1.84224784,2.07887602);
+findNextOp simple
+markDoneBinary id=2 (6,0 0,3) t=0 [0] (6,0) tEnd=0.692958689 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=2 from=(1.84224784,2.07887602) to=(6,0)
+path.lineTo(6,0);
+path.close();
+assemble
+assemble contour start=(6,0) end=(6,0)
+</div>
+
+<div id="cubicOp51da">
+$1 = {{x = 1.9511935265302274, y = 1.8079355291007388}, {x = 3.2262380859340407, y = 1.2052903527338259}, {x = 4.794709647266175, y = 0.60264517636691295}, {x = 6, y = 0}}
+(gdb) p startEdge
+$2 = {{x = 1.9511935265302274, y = 1.8079355291007388}, {x = 2.5538387028971403, y = 3.0829800885045522}}
+(gdb) p endEdge
+$3 = {{x = 6, y = 0}, {x = 5.3973548236330871, y = -1.205290352733825}}
+</div>
+
+<div id="cubicOp52da">
+$3 = {{fX = 2.625, fY = 2.25}, {fX = 2.25, fY = 1.25}, {fX = 2, fY = 0.5}, {fX = 2, fY = 1}}
+</div>
+
+<div id="cubicOp52db">
+$3 = {{x = 1.9511935265302274, y = 1.8079355291007388}, {x = 3.2262380859340407, y = 1.2052903527338259}, {x = 4.794709647266175, y = 0.60264517636691295}, {x = 6, y = 0}}
+(gdb) p startEdge
+$4 = {{x = 1.9511935265302274, y = 1.8079355291007388}, {x = 3.7591290556309662, y = 5.8567420025705115}}
+(gdb) p endEdge
+$5 = {{x = 6, y = 0}, {x = 7.8079355291007388, y = 4.0488064734697726}}
+</div>
+
+<div id="cubicOp53d">
+ SimplifyNew_Test [cubicOp53d]
+{{0,3}, {1,2}, {5,3}, {2,1}},
+{{2,1}, {0,3}},
+op difference
+{{3,5}, {1,2}, {3,0}, {2,1}},
+{{2,1}, {3,5}},
+debugShowCubicIntersection no self intersect {{3,5}, {1,2}, {3,0}, {2,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{3,5}, {1,2}, {3,0}, {2,1}} {{3,5}} wtTs[1]=0.5 {{2.125,1.5}} wtTs[2]=1 {{2,1}} wnTs[0]=1 {{2,1}, {3,5}} wnTs[1]=0.125 wnTs[2]=0
+debugShowCubicIntersection wtTs[0]=0.32953467 {{3,5}, {1,2}, {3,0}, {2,1}} {{2.0754128281547217,2.4315376490509659}} wtTs[1]=0.59235675 {{2.2015477442470841,1.1371488033015213}} wtTs[2]=1 {{2,1}} wnTs[0]=0.414081 {{0,3}, {1,2}, {5,3}, {2,1}} wnTs[1]=0.976311205 wnTs[2]=1
+debugShowCubicLineIntersection wtTs[0]=1 {{3,5}, {1,2}, {3,0}, {2,1}} {{2,1}} wnTs[0]=0 {{2,1}, {0,3}}
+debugShowCubicLineIntersection wtTs[0]=0.467845317 {{0,3}, {1,2}, {5,3}, {2,1}} {{2.3494328385891112,2.3977313543564462}} wtTs[1]=1 {{2,1}} wnTs[0]=0.349433 {{2,1}, {3,5}} wnTs[1]=0
+debugShowLineIntersection wtTs[0]=-0 {{2,1}, {3,5}} {{2,1}} wnTs[0]=0 {{2,1}, {0,3}}
+debugShowCubicIntersection no self intersect {{0,3}, {1,2}, {5,3}, {2,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,3}, {1,2}, {5,3}, {2,1}} {{0,3}} wtTs[1]=1 {{2,1}} wnTs[0]=1 {{2,1}, {0,3}} wnTs[1]=0
+debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0 (3,5) tEnd=0.32953467 other=4 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.32953467 (2.07541275,2.43153763) tEnd=0.5 other=1 otherT=0.414080655 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.5 (2.125,1.5) tEnd=0.59235675 other=4 otherT=0.125 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.59235675 (2.20154786,1.13714886) tEnd=1 other=1 otherT=0.976311205 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=1 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=-0 (2,1) tEnd=0.125 other=2 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0.125 (2.125,1.5) tEnd=0.349432839 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0.349432839 (2.34943295,2.3977313) tEnd=1 other=1 otherT=0.467845317 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0 (0,3) tEnd=0.414080655 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.414080655 (2.07541275,2.43153763) tEnd=0.467845317 other=3 otherT=0.32953467 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.467845317 (2.34943295,2.3977313) tEnd=0.976311205 other=4 otherT=0.349432839 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.976311205 (2.20154786,1.13714886) tEnd=1 other=3 otherT=0.59235675 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,1 0,3) t=0 (2,1) tEnd=1 other=3 otherT=1 otherIndex=6 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,1 0,3) t=0 (2,1) tEnd=1 other=4 otherT=-0 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,1 0,3) t=0 (2,1) tEnd=1 other=1 otherT=1 otherIndex=6 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=1 tEnd=0.59235675 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{2,1}, {0,3}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [2] {{2,1}, {3,5}} tStart=0 tEnd=0.125 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=1 tEnd=0.976311205 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+markWinding id=3 (3,5 1,2 3,0 2,1) t=0.59235675 [3] (2.20154786,1.13714886) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (3,5 1,2 3,0 2,1) t=0.59235675 [3] (2.20154786,1.13714886) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (3,5 1,2 3,0 2,1) t=0.59235675 [3] (2.20154786,1.13714886) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=1 tEnd=0.59235675 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{2,1}, {0,3}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [2] {{2,1}, {3,5}} tStart=0 tEnd=0.125 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=1 tEnd=0.976311205 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=1 tEnd=0.59235675 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{2,1}, {0,3}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [2] {{2,1}, {3,5}} tStart=0 tEnd=0.125 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=1 tEnd=0.976311205 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+markWinding id=2 (2,1 0,3) t=0 [0] (2,1) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=2 (2,1 0,3) t=0 [1] (2,1) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=2 (2,1 0,3) t=0 [2] (2,1) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,3 1,2 5,3 2,1) t=0 [0] (0,3) tEnd=0.414080655 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=4 (2,1 3,5) t=0 [0] (2,1) tEnd=0 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=4 (2,1 3,5) t=0 [1] (2,1) tEnd=-0 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=4 (2,1 3,5) t=-0 [2] (2,1) tEnd=0.125 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,3 1,2 5,3 2,1) t=0.976311205 [3] (2.20154786,1.13714886) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0 (3,5) tEnd=0.32953467 other=4 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.32953467 (2.07541275,2.43153763) tEnd=0.5 other=1 otherT=0.414080655 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.5 (2.125,1.5) tEnd=0.59235675 other=4 otherT=0.125 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=3 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=1 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=-0 (2,1) tEnd=0.125 other=2 otherT=0 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0.125 (2.125,1.5) tEnd=0.349432839 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0.349432839 (2.34943295,2.3977313) tEnd=1 other=1 otherT=0.467845317 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0 (0,3) tEnd=0.414080655 other=2 otherT=1 otherIndex=3 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.414080655 (2.07541275,2.43153763) tEnd=0.467845317 other=3 otherT=0.32953467 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.467845317 (2.34943295,2.3977313) tEnd=0.976311205 other=4 otherT=0.349432839 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.976311205 (2.20154786,1.13714886) tEnd=1 other=3 otherT=0.59235675 otherIndex=3 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,1 0,3) t=0 (2,1) tEnd=1 other=3 otherT=1 otherIndex=6 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,1 0,3) t=0 (2,1) tEnd=1 other=4 otherT=-0 otherIndex=2 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,1 0,3) t=0 (2,1) tEnd=1 other=1 otherT=1 otherIndex=6 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (2,1 0,3) t=0 [0] (2,1) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+markDoneBinary id=2 (2,1 0,3) t=0 [1] (2,1) tEnd=0 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+markDoneBinary id=2 (2,1 0,3) t=0 [2] (2,1) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+markDoneBinary id=1 (0,3 1,2 5,3 2,1) t=0 [0] (0,3) tEnd=0.414080655 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=-1
+debugShowSort [0] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=0.414080655 tEnd=0.467845317 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=0.32953467 tEnd=0.5 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
+debugShowSort [2] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=0.414080655 tEnd=0 sign=1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=0
+debugShowSort [3] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=0.32953467 tEnd=0 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=1 oppContourWinding=-1 sign=1
+debugShowSort [2] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=0.414080655 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [3] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=0.32953467 tEnd=0 sign=1 windValue=1 windSum=? -1->-2 (max=-2) done=0 tiny=0 opp=1
+debugShowSort [0] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=0.414080655 tEnd=0.467845317 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=0.32953467 tEnd=0.5 sign=-1 windValue=1 windSum=? -2->-1 (max=-2) done=0 tiny=0 opp=1
+markWinding id=3 (3,5 1,2 3,0 2,1) t=0 [0] (3,5) tEnd=0.32953467 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (2,1 3,5) t=0.349432839 [4] (2.34943295,2.3977313) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,3 1,2 5,3 2,1) t=0.414080655 [1] (2.07541275,2.43153763) tEnd=0.467845317 newWindSum=1 newOppSum=-2 oppSum=? windSum=? windValue=1
+markWinding id=3 (3,5 1,2 3,0 2,1) t=0.32953467 [1] (2.07541275,2.43153763) tEnd=0.5 newWindSum=-2 newOppSum=1 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0 (3,5) tEnd=0.32953467 other=4 otherT=1 otherIndex=5 windSum=-2 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.32953467 (2.07541275,2.43153763) tEnd=0.5 other=1 otherT=0.414080655 otherIndex=1 windSum=-2 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.5 (2.125,1.5) tEnd=0.59235675 other=4 otherT=0.125 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=3 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=1 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=-0 (2,1) tEnd=0.125 other=2 otherT=0 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0.125 (2.125,1.5) tEnd=0.349432839 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0.349432839 (2.34943295,2.3977313) tEnd=1 other=1 otherT=0.467845317 otherIndex=2 windSum=-2 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.414080655 (2.07541275,2.43153763) tEnd=0.467845317 other=3 otherT=0.32953467 otherIndex=1 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.467845317 (2.34943295,2.3977313) tEnd=0.976311205 other=4 otherT=0.349432839 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.976311205 (2.20154786,1.13714886) tEnd=1 other=3 otherT=0.59235675 otherIndex=3 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=3 (3,5 1,2 3,0 2,1) t=0 [0] (3,5) tEnd=0.32953467 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1
+markDoneBinary id=4 (2,1 3,5) t=0.349432839 [4] (2.34943295,2.3977313) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1
+debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.32953467 (2.07541275,2.43153763) tEnd=0.5 other=1 otherT=0.414080655 otherIndex=1 windSum=-2 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.5 (2.125,1.5) tEnd=0.59235675 other=4 otherT=0.125 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=3 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=1 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=-0 (2,1) tEnd=0.125 other=2 otherT=0 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0.125 (2.125,1.5) tEnd=0.349432839 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.414080655 (2.07541275,2.43153763) tEnd=0.467845317 other=3 otherT=0.32953467 otherIndex=1 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.467845317 (2.34943295,2.3977313) tEnd=0.976311205 other=4 otherT=0.349432839 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.976311205 (2.20154786,1.13714886) tEnd=1 other=3 otherT=0.59235675 otherIndex=3 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,3 1,2 5,3 2,1) t=0.414080655 [1] (2.07541275,2.43153763) tEnd=0.467845317 newWindSum=1 newOppSum=-2 oppSum=-2 windSum=1 windValue=1
+debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.32953467 (2.07541275,2.43153763) tEnd=0.5 other=1 otherT=0.414080655 otherIndex=1 windSum=-2 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.5 (2.125,1.5) tEnd=0.59235675 other=4 otherT=0.125 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=3 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=1 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=-0 (2,1) tEnd=0.125 other=2 otherT=0 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0.125 (2.125,1.5) tEnd=0.349432839 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.467845317 (2.34943295,2.3977313) tEnd=0.976311205 other=4 otherT=0.349432839 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.976311205 (2.20154786,1.13714886) tEnd=1 other=3 otherT=0.59235675 otherIndex=3 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=3 (3,5 1,2 3,0 2,1) t=0.32953467 [1] (2.07541275,2.43153763) tEnd=0.5 newWindSum=-2 newOppSum=1 oppSum=1 windSum=-2 windValue=1
+debugShowActiveSpans id=3 (3,5 1,2 3,0 2,1) t=0.5 (2.125,1.5) tEnd=0.59235675 other=4 otherT=0.125 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=3 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0 (2,1) tEnd=0.125 other=1 otherT=1 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=-0 (2,1) tEnd=0.125 other=2 otherT=0 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (2,1 3,5) t=0.125 (2.125,1.5) tEnd=0.349432839 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.467845317 (2.34943295,2.3977313) tEnd=0.976311205 other=4 otherT=0.349432839 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,3 1,2 5,3 2,1) t=0.976311205 (2.20154786,1.13714886) tEnd=1 other=3 otherT=0.59235675 otherIndex=3 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
+debugShowSort [2] {{2,1}, {3,5}} tStart=-0 tEnd=0.125 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=1 tEnd=0.976311205 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=1
+debugShowSort [0] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=1 tEnd=0.59235675 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{2,1}, {0,3}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=-1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=4 (2,1 3,5) t=0 [1] (2,1) tEnd=-0 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+markDoneBinary id=4 (2,1 3,5) t=0 [0] (2,1) tEnd=0 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+markDoneBinary id=4 (2,1 3,5) t=-0 [2] (2,1) tEnd=0.125 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[4] to:[1] start=5 end=3
+bridgeOp current id=4 from=(2.125,1.5) to=(2,1)
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [1] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=0.976311205 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=0.59235675 tEnd=0.5 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [3] {{0,3}, {1,2}, {5,3}, {2,1}} tStart=0.976311205 tEnd=0.467845317 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=0.59235675 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=3 (3,5 1,2 3,0 2,1) t=0.5 [2] (2.125,1.5) tEnd=0.59235675 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,3 1,2 5,3 2,1) t=0.467845317 [2] (2.34943295,2.3977313) tEnd=0.976311205 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=1 (0,3 1,2 5,3 2,1) t=0.976311205 [3] (2.20154786,1.13714886) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[1] to:[3] start=3 end=2
+bridgeOp current id=1 from=(2,1) to=(2.20154786,1.13714886)
+path.moveTo(2.125,1.5);
+path.lineTo(2,1);
+path.cubicTo(2.07106638,1.04737759, 2.13820457,1.0930717, 2.20154786,1.13714886);
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
+debugShowSort [0] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=0.5 tEnd=0.59235675 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{2,1}, {3,5}} tStart=0.125 tEnd=-0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{3,5}, {1,2}, {3,0}, {2,1}} tStart=0.5 tEnd=0.32953467 sign=1 windValue=1 windSum=-2 -1->-2 (max=-2) done=1 tiny=0 opp=0
+debugShowSort [3] {{2,1}, {3,5}} tStart=0.125 tEnd=0.349432839 sign=-1 windValue=1 windSum=? -2->-1 (max=-2) done=0 tiny=0 opp=0
+findNextOp firstIndex=[0] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=4 (2,1 3,5) t=0.125 [3] (2.125,1.5) tEnd=0.349432839 newWindSum=-2 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+markDoneBinary id=3 (3,5 1,2 3,0 2,1) t=0.5 [2] (2.125,1.5) tEnd=0.59235675 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[3] to:[4] start=3 end=2
+bridgeOp current id=3 from=(2.20154786,1.13714886) to=(2.125,1.5)
+path.cubicTo(2.17544317,1.23998928, 2.14808917,1.36146486, 2.125,1.5);
+path.close();
+assemble
+assemble contour start=(2.125,1.5) end=(2.125,1.5)
+</div>
+
+<div id="cubicOp53da">
+$1 = {{fX = 2.20154786, fY = 1.13714886}, {fX = 2.31676745, fY = 0.683232486}, {fX = 2.40764332, fY = 0.592356741}, {fX = 2, fY = 1}}
+</div>
+
+<div id="cubicOp53db">
+$5 = {{x = 2.2015477442470841, y = 1.1371488033015216}, {x = 2.3167674423028313, y = 0.68323255769716895}, {x = 2.4076432497431508, y = 0.59235675025684875}, {x = 2, y = 1}}
+(gdb) p startEdge
+$2 = {{x = 2.2015477442470841, y = 1.1371488033015216}, {x = 2.6554639898514365, y = 1.2523685013572687}}
+(gdb) p endEdge
+$3 = {{x = 2, y = 1}, {x = 2.4076432497431512, y = 1.4076432497431508}}
+</div>
+
+<div id="cubicOp54d">
+ SimplifyNew_Test [cubicOp54d]
+{{0,4}, {1,3}, {5,4}, {4,2}},
+{{4,2}, {0,4}},
+op difference
+{{4,5}, {2,4}, {4,0}, {3,1}},
+{{3,1}, {4,5}},
+debugShowCubicIntersection no self intersect {{4,5}, {2,4}, {4,0}, {3,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{4,5}, {2,4}, {4,0}, {3,1}} {{4,5}} wtTs[1]=0.583333333 {{3.1938657407407405,1.7754629629629624}} wtTs[2]=1 {{3,1}} wnTs[0]=1 {{3,1}, {4,5}} wnTs[1]=0.193865741 wnTs[2]=0
+debugShowCubicIntersection no intersect {{4,5}, {2,4}, {4,0}, {3,1}} {{0,4}, {1,3}, {5,4}, {4,2}}
+debugShowCubicLineIntersection wtTs[0]=0.467349523 {{4,5}, {2,4}, {4,0}, {3,1}} {{3.1023548730676489,2.4488225634661758}} wnTs[0]=0.224411 {{4,2}, {0,4}}
+debugShowCubicLineIntersection wtTs[0]=0.649488354 {{0,4}, {1,3}, {5,4}, {4,2}} {{3.5531651685912107,3.2126606743648427}} wnTs[0]=0.553165 {{3,1}, {4,5}}
+debugShowLineIntersection wtTs[0]=0.333333333 {{3,1}, {4,5}} {{3.333333333333333,2.333333333333333}} wnTs[0]=0.166667 {{4,2}, {0,4}}
+debugShowCubicIntersection no self intersect {{0,4}, {1,3}, {5,4}, {4,2}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,4}, {1,3}, {5,4}, {4,2}} {{0,4}} wtTs[1]=0.166666667 {{0.7129629629629628,3.6435185185185186}} wtTs[2]=1 {{4,2}} wnTs[0]=1 {{4,2}, {0,4}} wnTs[1]=0.821759259 wnTs[2]=0
+debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0 (4,5) tEnd=0.467349523 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0.467349523 (3.10235476,2.4488225) tEnd=0.583333333 other=2 otherT=0.224411282 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0.583333333 (3.19386578,1.77546299) tEnd=1 other=4 otherT=0.193865741 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0 (3,1) tEnd=0.193865741 other=3 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0.193865741 (3.19386578,1.77546299) tEnd=0.333333333 other=3 otherT=0.583333333 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0.333333333 (3.33333325,2.33333325) tEnd=0.553165169 other=2 otherT=0.166666667 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0.553165169 (3.5531652,3.21266079) tEnd=1 other=1 otherT=0.649488354 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0 (0,4) tEnd=0.166666667 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0.166666667 (0.712962985,3.64351845) tEnd=0.649488354 other=2 otherT=0.821759259 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0.649488354 (3.5531652,3.21266079) tEnd=1 other=4 otherT=0.553165169 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,4) t=0 (4,2) tEnd=0.166666667 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,4) t=0.166666667 (3.33333325,2.33333325) tEnd=0.224411282 other=4 otherT=0.333333333 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,4) t=0.224411282 (3.10235476,2.4488225) tEnd=0.821759259 other=3 otherT=0.467349523 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,4) t=0.821759259 (0.712962985,3.64351845) tEnd=1 other=1 otherT=0.166666667 otherIndex=1 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=1 tEnd=0.583333333 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,1}, {4,5}} tStart=0 tEnd=0.193865741 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+findTop swap serpentine=0
+markWinding id=3 (4,5 2,4 4,0 3,1) t=0.583333333 [2] (3.19386578,1.77546299) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (4,5 2,4 4,0 3,1) t=0.583333333 [2] (3.19386578,1.77546299) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markWinding id=4 (3,1 4,5) t=0 [0] (3,1) tEnd=0.193865741 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (4,5 2,4 4,0 3,1) t=0.583333333 [2] (3.19386578,1.77546299) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0 (4,5) tEnd=0.467349523 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0.467349523 (3.10235476,2.4488225) tEnd=0.583333333 other=2 otherT=0.224411282 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0 (3,1) tEnd=0.193865741 other=3 otherT=1 otherIndex=3 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0.193865741 (3.19386578,1.77546299) tEnd=0.333333333 other=3 otherT=0.583333333 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0.333333333 (3.33333325,2.33333325) tEnd=0.553165169 other=2 otherT=0.166666667 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0.553165169 (3.5531652,3.21266079) tEnd=1 other=1 otherT=0.649488354 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0 (0,4) tEnd=0.166666667 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0.166666667 (0.712962985,3.64351845) tEnd=0.649488354 other=2 otherT=0.821759259 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0.649488354 (3.5531652,3.21266079) tEnd=1 other=4 otherT=0.553165169 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,4) t=0 (4,2) tEnd=0.166666667 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,4) t=0.166666667 (3.33333325,2.33333325) tEnd=0.224411282 other=4 otherT=0.333333333 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,4) t=0.224411282 (3.10235476,2.4488225) tEnd=0.821759259 other=3 otherT=0.467349523 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,4) t=0.821759259 (0.712962985,3.64351845) tEnd=1 other=1 otherT=0.166666667 otherIndex=1 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=4 (3,1 4,5) t=0 [0] (3,1) tEnd=0.193865741 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.583333333 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [1] {{3,1}, {4,5}} tStart=0.193865741 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.583333333 tEnd=0.467349523 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{3,1}, {4,5}} tStart=0.193865741 tEnd=0.333333333 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.583333333 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [1] {{3,1}, {4,5}} tStart=0.193865741 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.583333333 tEnd=0.467349523 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{3,1}, {4,5}} tStart=0.193865741 tEnd=0.333333333 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+markWinding id=3 (4,5 2,4 4,0 3,1) t=0.467349523 [1] (3.10235476,2.4488225) tEnd=0.583333333 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (3,1 4,5) t=0.193865741 [1] (3.19386578,1.77546299) tEnd=0.333333333 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0 (4,5) tEnd=0.467349523 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0.467349523 (3.10235476,2.4488225) tEnd=0.583333333 other=2 otherT=0.224411282 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0.193865741 (3.19386578,1.77546299) tEnd=0.333333333 other=3 otherT=0.583333333 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0.333333333 (3.33333325,2.33333325) tEnd=0.553165169 other=2 otherT=0.166666667 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0.553165169 (3.5531652,3.21266079) tEnd=1 other=1 otherT=0.649488354 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0 (0,4) tEnd=0.166666667 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0.166666667 (0.712962985,3.64351845) tEnd=0.649488354 other=2 otherT=0.821759259 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0.649488354 (3.5531652,3.21266079) tEnd=1 other=4 otherT=0.553165169 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,4) t=0 (4,2) tEnd=0.166666667 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,4) t=0.166666667 (3.33333325,2.33333325) tEnd=0.224411282 other=4 otherT=0.333333333 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,4) t=0.224411282 (3.10235476,2.4488225) tEnd=0.821759259 other=3 otherT=0.467349523 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,4) t=0.821759259 (0.712962985,3.64351845) tEnd=1 other=1 otherT=0.166666667 otherIndex=1 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+markDoneBinary id=3 (4,5 2,4 4,0 3,1) t=0.467349523 [1] (3.10235476,2.4488225) tEnd=0.583333333 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
+debugShowSort [0] {{4,2}, {0,4}} tStart=0.224411282 tEnd=0.166666667 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [1] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.467349523 tEnd=0.583333333 sign=-1 windValue=1 windSum=-1 ?->? (max=?) done=1 tiny=0 opp=1
+debugShowSort [2] {{4,2}, {0,4}} tStart=0.224411282 tEnd=0.821759259 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [3] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.467349523 tEnd=0 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [1] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.467349523 tEnd=0.583333333 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{4,2}, {0,4}} tStart=0.224411282 tEnd=0.821759259 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [3] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.467349523 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{4,2}, {0,4}} tStart=0.224411282 tEnd=0.166666667 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+markWinding id=2 (4,2 0,4) t=0.224411282 [2] (3.10235476,2.4488225) tEnd=0.821759259 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (4,5 2,4 4,0 3,1) t=0 [0] (4,5) tEnd=0.467349523 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=4 (3,1 4,5) t=0.553165169 [3] (3.5531652,3.21266079) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=2 (4,2 0,4) t=0.166666667 [1] (3.33333325,2.33333325) tEnd=0.224411282 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0 (4,5) tEnd=0.467349523 other=4 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0.193865741 (3.19386578,1.77546299) tEnd=0.333333333 other=3 otherT=0.583333333 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0.333333333 (3.33333325,2.33333325) tEnd=0.553165169 other=2 otherT=0.166666667 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0.553165169 (3.5531652,3.21266079) tEnd=1 other=1 otherT=0.649488354 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0 (0,4) tEnd=0.166666667 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0.166666667 (0.712962985,3.64351845) tEnd=0.649488354 other=2 otherT=0.821759259 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,4 1,3 5,4 4,2) t=0.649488354 (3.5531652,3.21266079) tEnd=1 other=4 otherT=0.553165169 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,4) t=0 (4,2) tEnd=0.166666667 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,4) t=0.166666667 (3.33333325,2.33333325) tEnd=0.224411282 other=4 otherT=0.333333333 otherIndex=2 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,4) t=0.224411282 (3.10235476,2.4488225) tEnd=0.821759259 other=3 otherT=0.467349523 otherIndex=1 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (4,2 0,4) t=0.821759259 (0.712962985,3.64351845) tEnd=1 other=1 otherT=0.166666667 otherIndex=1 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
+debugShowSort [1] {{4,2}, {0,4}} tStart=0.821759259 tEnd=0.224411282 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,4}, {1,3}, {5,4}, {4,2}} tStart=0.166666667 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{4,2}, {0,4}} tStart=0.821759259 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,4}, {1,3}, {5,4}, {4,2}} tStart=0.166666667 tEnd=0.649488354 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[1] sign=1
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markWinding id=1 (0,4 1,3 5,4 4,2) t=0 [0] (0,4) tEnd=0.166666667 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (4,2 0,4) t=0.821759259 [3] (0.712962985,3.64351845) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markWinding id=1 (0,4 1,3 5,4 4,2) t=0.166666667 [1] (0.712962985,3.64351845) tEnd=0.649488354 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+markDoneBinary id=2 (4,2 0,4) t=0.224411282 [2] (3.10235476,2.4488225) tEnd=0.821759259 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[2] to:[1] start=1 end=0
+bridgeOp current id=2 from=(3.10235476,2.4488225) to=(0.712962985,3.64351845)
+findNextOp simple
+markDoneBinary id=1 (0,4 1,3 5,4 4,2) t=0 [0] (0,4) tEnd=0.166666667 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+bridgeOp current id=1 from=(0.712962985,3.64351845) to=(0,4)
+path.moveTo(3.10235476,2.4488225);
+path.lineTo(0.712962985,3.64351845);
+path.cubicTo(0.416666657,3.72222233, 0.166666672,3.83333325, 0,4);
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [3] {{4,2}, {0,4}} tStart=0.821759259 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,4}, {1,3}, {5,4}, {4,2}} tStart=0.166666667 tEnd=0.649488354 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{4,2}, {0,4}} tStart=0.821759259 tEnd=0.224411282 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{0,4}, {1,3}, {5,4}, {4,2}} tStart=0.166666667 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+findNextOp firstIndex=[3] sign=-1
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=2 (4,2 0,4) t=0.821759259 [3] (0.712962985,3.64351845) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[2] to:[1] start=1 end=2
+bridgeOp current id=2 from=(0,4) to=(0.712962985,3.64351845)
+findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
+debugShowSort [2] {{0,4}, {1,3}, {5,4}, {4,2}} tStart=0.649488354 tEnd=0.166666667 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{3,1}, {4,5}} tStart=0.553165169 tEnd=1 sign=-1 windValue=1 windSum=-1 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [0] {{0,4}, {1,3}, {5,4}, {4,2}} tStart=0.649488354 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,1}, {4,5}} tStart=0.553165169 tEnd=0.333333333 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,4 1,3 5,4 4,2) t=0.649488354 [2] (3.5531652,3.21266079) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+markDoneBinary id=2 (4,2 0,4) t=0 [0] (4,2) tEnd=0.166666667 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markWinding id=4 (3,1 4,5) t=0.333333333 [2] (3.33333325,2.33333325) tEnd=0.553165169 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+markDoneBinary id=1 (0,4 1,3 5,4 4,2) t=0.166666667 [1] (0.712962985,3.64351845) tEnd=0.649488354 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[1] to:[4] start=3 end=2
+bridgeOp current id=1 from=(0.712962985,3.64351845) to=(3.5531652,3.21266079)
+path.lineTo(0.712962985,3.64351845);
+path.cubicTo(1.57131267,3.41551948, 2.81819034,3.45948982, 3.5531652,3.21266079);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=-1
+debugShowSort [3] {{3,1}, {4,5}} tStart=0.333333333 tEnd=0.553165169 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{4,2}, {0,4}} tStart=0.166666667 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+debugShowSort [1] {{3,1}, {4,5}} tStart=0.333333333 tEnd=0.193865741 sign=1 windValue=1 windSum=-1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{4,2}, {0,4}} tStart=0.166666667 tEnd=0.224411282 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=-1
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=4 (3,1 4,5) t=0.333333333 [2] (3.33333325,2.33333325) tEnd=0.553165169 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+findNextOp from:[4] to:[2] start=1 end=2
+bridgeOp current id=4 from=(3.5531652,3.21266079) to=(3.33333325,2.33333325)
+findNextOp debugShowSort contourWinding=1 oppContourWinding=-1 sign=1
+debugShowSort [0] {{4,2}, {0,4}} tStart=0.224411282 tEnd=0.166666667 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.467349523 tEnd=0.583333333 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+debugShowSort [2] {{4,2}, {0,4}} tStart=0.224411282 tEnd=0.821759259 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [3] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.467349523 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[0] sign=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markDoneBinary id=2 (4,2 0,4) t=0.166666667 [1] (3.33333325,2.33333325) tEnd=0.224411282 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+findNextOp from:[2] to:[2] start=2 end=3
+sharedlibrary apply-load-rules all
+bridgeOp current id=2 from=(3.33333325,2.33333325) to=(3.10235476,2.4488225)
+path.lineTo(3.33333325,2.33333325);
+path.lineTo(3.10235476,2.4488225);
+path.close();
+debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0 (4,5) tEnd=0.467349523 other=4 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0.193865741 (3.19386578,1.77546299) tEnd=0.333333333 other=3 otherT=0.583333333 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0.553165169 (3.5531652,3.21266079) tEnd=1 other=1 otherT=0.649488354 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+markDoneBinary id=4 (3,1 4,5) t=0.193865741 [1] (3.19386578,1.77546299) tEnd=0.333333333 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+debugShowActiveSpans id=3 (4,5 2,4 4,0 3,1) t=0 (4,5) tEnd=0.467349523 other=4 otherT=1 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 4,5) t=0.553165169 (3.5531652,3.21266079) tEnd=1 other=1 otherT=0.649488354 otherIndex=2 windSum=-1 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+findNextOp simple
+markDoneBinary id=4 (3,1 4,5) t=0.553165169 [3] (3.5531652,3.21266079) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+bridgeOp current id=4 from=(3.5531652,3.21266079) to=(4,5)
+findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
+debugShowSort [3] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.467349523 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{4,2}, {0,4}} tStart=0.224411282 tEnd=0.166666667 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+debugShowSort [1] {{4,5}, {2,4}, {4,0}, {3,1}} tStart=0.467349523 tEnd=0.583333333 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{4,2}, {0,4}} tStart=0.224411282 tEnd=0.821759259 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=3 (4,5 2,4 4,0 3,1) t=0 [0] (4,5) tEnd=0.467349523 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[3] to:[2] start=2 end=3
+bridgeOp current id=3 from=(4,5) to=(3.10235476,2.4488225)
+path.moveTo(3.5531652,3.21266079);
+path.lineTo(4,5);
+path.cubicTo(3.06530094,4.53265047, 3.00426435,3.41005421, 3.10235476,2.4488225);
+</div>
+
+<div id="cubicOp54da">
+computed quadratics given
+ {{0,4}, {1,3}, {5,4}, {4,2}},
+ {{4,5}, {2,4}, {4,0}, {3,1}},
+computed quadratics set 1
+ {{0,4}, {0.313151522,3.71221453}, {0.886767898,3.60197476}},
+ {{0.886767898,3.60197476}, {1.46038427,3.491735}, {2.10714698,3.44196686}},
+ {{2.10714698,3.44196686}, {3.12180288,3.38575704}, {3.75968569,3.1281838}},
+ {{3.75968569,3.1281838}, {4.3975685,2.87061055}, {4,2}},
+computed quadratics set 2
+ {{4,5}, {3.59856947,4.79217123}, {3.39068129,4.44939202}},
+ {{3.39068129,4.44939202}, {3.03659239,3.81843234}, {3.06844529,3.02100922}},
+ {{3.06844529,3.02100922}, {3.09985637,2.22825976}, {3.22177695,1.60368348}},
+ {{3.22177695,1.60368348}, {3.35239933,0.944897345}, {3.25461667,0.846601983}},
+ {{3.25461667,0.846601983}, {3.19302952,0.807536747}, {3,1}},
+</div>
+
+<div id="cubicOp54db">
+ {{3.39068129,4.44939202}, {3.03659239,3.81843234}, {3.06844529,3.02100922}},
+ {{2.10714698,3.44196686}, {3.12180288,3.38575704}, {3.75968569,3.1281838}},
+</div>
+
+<div id="cubicOp54dc">
+(gdb) p cSub1
+$2 = {{x = 3.0774019473063863, y = 3.35198509346713}, {x = 3.0763003260366699, y = 3.3355427495692078}, {x = 3.0753041923884408, y = 3.3190757607779853}, {x = 3.0744102085015879, y = 3.3025879417907196}}
+(gdb) p cSub2
+$3 = {{x = 3.053913680774329, y = 3.3310471586283938}, {x = 3.0685526504546785, y = 3.3285797268698434}, {x = 3.0831050944309708, y = 3.3260658459407866}, {x = 3.0975671980059394, y = 3.3235031316554351}}
+(gdb) p s1
+$4 = {{x = 3.0774019473063863, y = 3.35198509346713}, {x = 3.0757503498668397, y = 3.327320623945933}, {x = 3.0744102085015879, y = 3.3025879417907196}}
+(gdb) p s2
+$5 = {{x = 3.053913680774329, y = 3.3310471586283938}, {x = 3.0758730889691694, y = 3.3273466070370152}, {x = 3.0975671980059394, y = 3.3235031316554351}}
+</div>
+
+<div id="cubicOp54dd">
+{{x = 3.053913680774329, y = 3.3310471586283938}, {x = 3.0758730889691694, y = 3.3273466070370152}, {x = 3.0975671980059394, y = 3.3235031316554351}}
+{{x = 3.0744102085015879, y = 3.3025879417907196}, {x = 3.0774019473063863, y = 3.35198509346713}}
+</div>
+
+<div id="cubicOp55d">
+ SimplifyNew_Test [cubicOp55d]
+{{0,5}, {1,3}, {3,2}, {5,0}},
+{{5,0}, {0,5}},
+op difference
+{{2,3}, {0,5}, {5,0}, {3,1}},
+{{3,1}, {2,3}},
+debugShowCubicIntersection no self intersect {{0,5}, {1,3}, {3,2}, {5,0}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,5}, {1,3}, {3,2}, {5,0}} {{0,5}} wtTs[1]=1 {{5,0}} wnTs[0]=1 {{5,0}, {0,5}} wnTs[1]=0
+debugShowCubicIntersection wtTs[0]=0.658239823 {{0,5}, {1,3}, {3,2}, {5,0}} {{2.9893565350663849,1.7799961946192431}} wnTs[0]=0.613267 {{2,3}, {0,5}, {5,0}, {3,1}}
+debugShowCubicLineIntersection wtTs[0]=0.540876747 {{0,5}, {1,3}, {3,2}, {5,0}} {{2.3420409812806477,2.3159180374387045}} wnTs[0]=0.657959 {{3,1}, {2,3}}
+debugShowCubicLineIntersection wtTs[0]=0 {{2,3}, {0,5}, {5,0}, {3,1}} {{2,3}} wnTs[0]=0.6 {{5,0}, {0,5}}
+debugShowLineIntersection wtTs[0]=0.6 {{5,0}, {0,5}} {{2,3}} wnTs[0]=1 {{3,1}, {2,3}}
+debugShowCubicIntersection no self intersect {{2,3}, {0,5}, {5,0}, {3,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{2,3}, {0,5}, {5,0}, {3,1}} {{2,3}} wtTs[1]=0.4 {{2.0640000000000005,2.871999999999999}} wtTs[2]=1 {{3,1}} wnTs[0]=1 {{3,1}, {2,3}} wnTs[1]=0.936 wnTs[2]=0
+debugShowActiveSpans id=1 (0,5 1,3 3,2 5,0) t=0 (0,5) tEnd=0.540876747 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 1,3 3,2 5,0) t=0.540876747 (2.34204102,2.31591797) tEnd=0.658239823 other=4 otherT=0.657959019 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 1,3 3,2 5,0) t=0.658239823 (2.98935652,1.77999616) tEnd=1 other=3 otherT=0.613266786 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,0 0,5) t=0 (5,0) tEnd=0.6 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,0 0,5) t=0.6 (2,3) tEnd=1 other=3 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,0 0,5) t=0.6 (2,3) tEnd=1 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 0,5 5,0 3,1) t=0 (2,3) tEnd=0.4 other=2 otherT=0.6 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 0,5 5,0 3,1) t=0 (2,3) tEnd=0.4 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 0,5 5,0 3,1) t=0.4 (2.06399989,2.87199998) tEnd=0.613266786 other=4 otherT=0.936 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 0,5 5,0 3,1) t=0.613266786 (2.98935652,1.77999616) tEnd=1 other=1 otherT=0.658239823 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 2,3) t=0 (3,1) tEnd=0.657959019 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 2,3) t=0.657959019 (2.34204102,2.31591797) tEnd=0.936 other=1 otherT=0.540876747 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (3,1 2,3) t=0.936 (2.06399989,2.87199998) tEnd=1 other=3 otherT=0.4 otherIndex=2 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{0,5}, {1,3}, {3,2}, {5,0}} tStart=1 tEnd=0.658239823 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{5,0}, {0,5}} tStart=0 tEnd=0.6 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+findTop swap serpentine=0
+markWinding id=1 (0,5 1,3 3,2 5,0) t=0.658239823 [2] (2.98935652,1.77999616) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,5 1,3 3,2 5,0) t=0.658239823 [2] (2.98935652,1.77999616) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markWinding id=2 (5,0 0,5) t=0 [0] (5,0) tEnd=0.6 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,5}, {1,3}, {3,2}, {5,0}} tStart=0.658239823 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{2,3}, {0,5}, {5,0}, {3,1}} tStart=0.613266786 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [2] {{0,5}, {1,3}, {3,2}, {5,0}} tStart=0.658239823 tEnd=0.540876747 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{2,3}, {0,5}, {5,0}, {3,1}} tStart=0.613266786 tEnd=0.4 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[0] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=3 (2,3 0,5 5,0 3,1) t=0.613266786 [3] (2.98935652,1.77999616) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=4 (3,1 2,3) t=0 [0] (3,1) tEnd=0.657959019 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,5 1,3 3,2 5,0) t=0.540876747 [1] (2.34204102,2.31591797) tEnd=0.658239823 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (2,3 0,5 5,0 3,1) t=0.4 [2] (2.06399989,2.87199998) tEnd=0.613266786 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+markDoneBinary id=1 (0,5 1,3 3,2 5,0) t=0.658239823 [2] (2.98935652,1.77999616) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[1] to:[3] start=3 end=4
+bridgeOp current id=1 from=(5,0) to=(2.98935652,1.77999616)
+path.moveTo(5,0);
+path.cubicTo(4.31647968,0.683520317, 3.63295937,1.25024068, 2.98935652,1.77999616);
+findNextOp simple
+markDoneBinary id=3 (2,3 0,5 5,0 3,1) t=0.613266786 [3] (2.98935652,1.77999616) tEnd=1 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+bridgeOp current id=3 from=(2.98935652,1.77999616) to=(3,1)
+path.cubicTo(3.49999475,1.123909, 3.77346635,0.613266766, 3,1);
+findNextOp debugShowSort contourWinding=1 oppContourWinding=1 sign=1
+debugShowSort [1] {{3,1}, {2,3}} tStart=0.657959019 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,5}, {1,3}, {3,2}, {5,0}} tStart=0.540876747 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+debugShowSort [3] {{3,1}, {2,3}} tStart=0.657959019 tEnd=0.936 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,5}, {1,3}, {3,2}, {5,0}} tStart=0.540876747 tEnd=0.658239823 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+markWinding id=1 (0,5 1,3 3,2 5,0) t=0 [0] (0,5) tEnd=0.540876747 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (5,0 0,5) t=0.6 [1] (2,3) tEnd=0.6 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (5,0 0,5) t=0.6 [2] (2,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+markDoneBinary id=4 (3,1 2,3) t=0.657959019 [1] (2.34204102,2.31591797) tEnd=0.936 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=4 (3,1 2,3) t=0 [0] (3,1) tEnd=0.657959019 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1
+findNextOp from:[4] to:[1] start=1 end=0
+bridgeOp current id=4 from=(3,1) to=(2.34204102,2.31591797)
+findNextOp simple
+markDoneBinary id=1 (0,5 1,3 3,2 5,0) t=0 [0] (0,5) tEnd=0.540876747 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=1 from=(2.34204102,2.31591797) to=(0,5)
+path.lineTo(2.34204102,2.31591797);
+path.cubicTo(1.37430108,3.12904072, 0.540876746,3.91824651, 0,5);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [3] {{5,0}, {0,5}} tStart=0.6 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{5,0}, {0,5}} tStart=0.6 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,1}, {2,3}} tStart=1 tEnd=0.936 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [2] {{2,3}, {0,5}, {5,0}, {3,1}} tStart=0 tEnd=0.4 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=-1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+markDoneBinary id=4 (3,1 2,3) t=0.936 [2] (2.06399989,2.87199998) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (2,3 0,5 5,0 3,1) t=0 [0] (2,3) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markDoneBinary id=3 (2,3 0,5 5,0 3,1) t=0 [1] (2,3) tEnd=0.4 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+markDoneBinary id=2 (5,0 0,5) t=0.6 [1] (2,3) tEnd=0.6 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markDoneBinary id=2 (5,0 0,5) t=0.6 [2] (2,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[2] to:[2] start=2 end=0
+bridgeOp current id=2 from=(0,5) to=(2,3)
+findNextOp simple
+markDoneBinary id=2 (5,0 0,5) t=0 [0] (5,0) tEnd=0.6 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=2 from=(2,3) to=(5,0)
+path.lineTo(5,0);
+path.close();
+assemble
+assemble contour start=(5,0) end=(5,0)
+</div>
+
+<div id="cubicOp55da">
+$1 = {{x = 2.9893565350663844, y = 1.7799961946192431}, {x = 3.6329592934456443, y = 1.250240688218315}, {x = 4.3164796467228257, y = 0.68352035327717708}, {x = 5, y = 0}}
+</div>
+
+<div id="cubicOp56da">
+$3 = {{x = 3.2077595567431376, y = 1.2121007383531144}, {x = 3.0712003892698903, y = 0.91360430885366861}, {x = 2.6980028578011237, y = 0.76733238073295829}, {x = 2, y = 1}}
+</div>
+
+<div id="cubicOp57da">
+computed quadratics given
+ {{0,5}, {0,5}, {5,4}, {6,4}},
+ {{4,5}, {4,6}, {5,0}, {5,0}},
+computed quadratics set 1
+ {{0,5}, {0.0833333333,4.98148148}, {1.33333333,4.74074074}},
+ {{1.33333333,4.74074074}, {2.58333333,4.5}, {4,4.25925926}},
+ {{4,4.25925926}, {5.41666667,4.01851852}, {6,4}},
+computed quadratics set 2
+ {{4,5}, {4.0078125,5.32421875}, {4.15625,4.640625}},
+ {{4.15625,4.640625}, {4.3046875,3.95703125}, {4.5,2.875}},
+ {{4.5,2.875}, {4.6953125,1.79296875}, {4.84375,0.921875}},
+ {{4.84375,0.921875}, {4.9921875,0.05078125}, {5,0}},
+</div>
+
+<div id="cubicOp58d">
+ SimplifyNew_Test [cubicOp58d]
+{{0,5}, {3,4}, {6,5}, {5,3}},
+{{5,3}, {0,5}},
+op difference
+{{5,6}, {3,5}, {5,0}, {4,3}},
+{{4,3}, {5,6}},
+debugShowCubicIntersection no self intersect {{5,6}, {3,5}, {5,0}, {4,3}}
+debugShowCubicLineIntersection wtTs[0]=0 {{5,6}, {3,5}, {5,0}, {4,3}} {{5,6}} wtTs[1]=0.454545455 {{4.0946656649135988,3.2839969947407956}} wtTs[2]=1 {{4,3}} wnTs[0]=1 {{4,3}, {5,6}} wnTs[1]=0.0946656649 wnTs[2]=0
+debugShowCubicIntersection wtTs[0]=0.297296392 {{5,6}, {3,5}, {5,0}, {4,3}} {{4.0929072920341625,4.362808103638363}} wnTs[0]=0.515735 {{0,5}, {3,4}, {6,5}, {5,3}}
+debugShowCubicLineIntersection wtTs[0]=0.442158094 {{5,6}, {3,5}, {5,0}, {4,3}} {{4.0879917456946373,3.3648033017221453}} wnTs[0]=0.182402 {{5,3}, {0,5}}
+debugShowCubicLineIntersection wtTs[0]=0.579011103 {{0,5}, {3,4}, {6,5}, {5,3}} {{4.4346371023199076,4.3039113069597246}} wnTs[0]=0.434637 {{4,3}, {5,6}}
+debugShowLineIntersection wtTs[0]=0.117647059 {{4,3}, {5,6}} {{4.117647058823529,3.3529411764705879}} wnTs[0]=0.176471 {{5,3}, {0,5}}
+debugShowCubicIntersection no self intersect {{0,5}, {3,4}, {6,5}, {5,3}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,5}, {3,4}, {6,5}, {5,3}} {{0,5}} wtTs[1]=1 {{5,3}} wnTs[0]=1 {{5,3}, {0,5}} wnTs[1]=0
+debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0 (5,6) tEnd=0.297296392 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0.297296392 (4.09290743,4.36280823) tEnd=0.442158094 other=1 otherT=0.515734731 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0.442158094 (4.08799171,3.36480331) tEnd=0.454545455 other=2 otherT=0.182401651 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0.454545455 (4.09466553,3.28399706) tEnd=1 other=4 otherT=0.0946656649 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0 (4,3) tEnd=0.0946656649 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.0946656649 (4.09466553,3.28399706) tEnd=0.117647059 other=3 otherT=0.454545455 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 other=1 otherT=0.579011103 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0 (0,5) tEnd=0.515734731 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.515734731 (4.09290743,4.36280823) tEnd=0.579011103 other=3 otherT=0.297296392 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0.176470588 (4.11764717,3.35294127) tEnd=0.182401651 other=4 otherT=0.117647059 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0.182401651 (4.08799171,3.36480331) tEnd=1 other=3 otherT=0.442158094 otherIndex=2 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=1 tEnd=0.454545455 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{4,3}, {5,6}} tStart=0 tEnd=0.0946656649 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+markWinding id=3 (5,6 3,5 5,0 4,3) t=0.454545455 [3] (4.09466553,3.28399706) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (4,3 5,6) t=0 [0] (4,3) tEnd=0.0946656649 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (5,6 3,5 5,0 4,3) t=0.454545455 [3] (4.09466553,3.28399706) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (5,6 3,5 5,0 4,3) t=0.454545455 [3] (4.09466553,3.28399706) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+markDoneBinary id=4 (4,3 5,6) t=0 [0] (4,3) tEnd=0.0946656649 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [0] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.454545455 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{4,3}, {5,6}} tStart=0.0946656649 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.454545455 tEnd=0.442158094 sign=1 windValue=1 windSum=? -1->-2 (max=-2) done=0 tiny=0 opp=0
+debugShowSort [3] {{4,3}, {5,6}} tStart=0.0946656649 tEnd=0.117647059 sign=-1 windValue=1 windSum=? -2->-1 (max=-2) done=0 tiny=0 opp=0
+findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [0] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.454545455 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{4,3}, {5,6}} tStart=0.0946656649 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.454545455 tEnd=0.442158094 sign=1 windValue=1 windSum=? -1->-2 (max=-2) done=0 tiny=0 opp=0
+debugShowSort [3] {{4,3}, {5,6}} tStart=0.0946656649 tEnd=0.117647059 sign=-1 windValue=1 windSum=? -2->-1 (max=-2) done=0 tiny=0 opp=0
+markWinding id=3 (5,6 3,5 5,0 4,3) t=0.442158094 [2] (4.08799171,3.36480331) tEnd=0.454545455 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (4,3 5,6) t=0.0946656649 [1] (4.09466553,3.28399706) tEnd=0.117647059 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0 (5,6) tEnd=0.297296392 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0.297296392 (4.09290743,4.36280823) tEnd=0.442158094 other=1 otherT=0.515734731 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0.442158094 (4.08799171,3.36480331) tEnd=0.454545455 other=2 otherT=0.182401651 otherIndex=2 windSum=-2 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.0946656649 (4.09466553,3.28399706) tEnd=0.117647059 other=3 otherT=0.454545455 otherIndex=3 windSum=-2 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 other=1 otherT=0.579011103 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0 (0,5) tEnd=0.515734731 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.515734731 (4.09290743,4.36280823) tEnd=0.579011103 other=3 otherT=0.297296392 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0.176470588 (4.11764717,3.35294127) tEnd=0.182401651 other=4 otherT=0.117647059 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0.182401651 (4.08799171,3.36480331) tEnd=1 other=3 otherT=0.442158094 otherIndex=2 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=3 (5,6 3,5 5,0 4,3) t=0.442158094 [2] (4.08799171,3.36480331) tEnd=0.454545455 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1
+findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
+debugShowSort [0] {{5,3}, {0,5}} tStart=0.182401651 tEnd=0.176470588 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [1] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.442158094 tEnd=0.454545455 sign=-1 windValue=1 windSum=-2 ?->? (max=?) done=1 tiny=0 opp=1
+debugShowSort [2] {{5,3}, {0,5}} tStart=0.182401651 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [3] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.442158094 tEnd=0.297296392 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=-2 oppContourWinding=0 sign=-1
+debugShowSort [1] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.442158094 tEnd=0.454545455 sign=-1 windValue=1 windSum=-2 -2->-1 (max=-2) done=1 tiny=0 opp=0
+debugShowSort [2] {{5,3}, {0,5}} tStart=0.182401651 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [3] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.442158094 tEnd=0.297296392 sign=1 windValue=1 windSum=? -1->-2 (max=-2) done=0 tiny=0 opp=0
+debugShowSort [0] {{5,3}, {0,5}} tStart=0.182401651 tEnd=0.176470588 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+markWinding id=2 (5,3 0,5) t=0.182401651 [2] (4.08799171,3.36480331) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,5 3,4 6,5 5,3) t=0 [0] (0,5) tEnd=0.515734731 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=3 (5,6 3,5 5,0 4,3) t=0.297296392 [1] (4.09290743,4.36280823) tEnd=0.442158094 newWindSum=-2 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=2 (5,3 0,5) t=0.176470588 [1] (4.11764717,3.35294127) tEnd=0.182401651 newWindSum=1 newOppSum=-2 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0 (5,6) tEnd=0.297296392 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0.297296392 (4.09290743,4.36280823) tEnd=0.442158094 other=1 otherT=0.515734731 otherIndex=1 windSum=-2 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.0946656649 (4.09466553,3.28399706) tEnd=0.117647059 other=3 otherT=0.454545455 otherIndex=3 windSum=-2 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 other=1 otherT=0.579011103 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0 (0,5) tEnd=0.515734731 other=2 otherT=1 otherIndex=3 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.515734731 (4.09290743,4.36280823) tEnd=0.579011103 other=3 otherT=0.297296392 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0.176470588 (4.11764717,3.35294127) tEnd=0.182401651 other=4 otherT=0.117647059 otherIndex=2 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0.182401651 (4.08799171,3.36480331) tEnd=1 other=3 otherT=0.442158094 otherIndex=2 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (5,3 0,5) t=0.182401651 [2] (4.08799171,3.36480331) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+markDoneBinary id=1 (0,5 3,4 6,5 5,3) t=0 [0] (0,5) tEnd=0.515734731 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0 (5,6) tEnd=0.297296392 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0.297296392 (4.09290743,4.36280823) tEnd=0.442158094 other=1 otherT=0.515734731 otherIndex=1 windSum=-2 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.0946656649 (4.09466553,3.28399706) tEnd=0.117647059 other=3 otherT=0.454545455 otherIndex=3 windSum=-2 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 other=1 otherT=0.579011103 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.515734731 (4.09290743,4.36280823) tEnd=0.579011103 other=3 otherT=0.297296392 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0.176470588 (4.11764717,3.35294127) tEnd=0.182401651 other=4 otherT=0.117647059 otherIndex=2 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=3 (5,6 3,5 5,0 4,3) t=0.297296392 [1] (4.09290743,4.36280823) tEnd=0.442158094 newWindSum=-2 newOppSum=1 oppSum=1 windSum=-2 windValue=1
+debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0 (5,6) tEnd=0.297296392 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.0946656649 (4.09466553,3.28399706) tEnd=0.117647059 other=3 otherT=0.454545455 otherIndex=3 windSum=-2 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 other=1 otherT=0.579011103 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.515734731 (4.09290743,4.36280823) tEnd=0.579011103 other=3 otherT=0.297296392 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0.176470588 (4.11764717,3.35294127) tEnd=0.182401651 other=4 otherT=0.117647059 otherIndex=2 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (5,3 0,5) t=0.176470588 [1] (4.11764717,3.35294127) tEnd=0.182401651 newWindSum=1 newOppSum=-2 oppSum=-2 windSum=1 windValue=1
+debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0 (5,6) tEnd=0.297296392 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.0946656649 (4.09466553,3.28399706) tEnd=0.117647059 other=3 otherT=0.454545455 otherIndex=3 windSum=-2 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 other=1 otherT=0.579011103 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.515734731 (4.09290743,4.36280823) tEnd=0.579011103 other=3 otherT=0.297296392 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=4 (4,3 5,6) t=0.0946656649 [1] (4.09466553,3.28399706) tEnd=0.117647059 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1
+findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=-1
+debugShowSort [0] {{0,5}, {3,4}, {6,5}, {5,3}} tStart=0.515734731 tEnd=0.579011103 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [1] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.297296392 tEnd=0.442158094 sign=-1 windValue=1 windSum=-2 ?->? (max=?) done=1 tiny=0 opp=1
+debugShowSort [2] {{0,5}, {3,4}, {6,5}, {5,3}} tStart=0.515734731 tEnd=0 sign=1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=0
+debugShowSort [3] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.297296392 tEnd=0 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=-2 oppContourWinding=1 sign=-1
+debugShowSort [1] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.297296392 tEnd=0.442158094 sign=-1 windValue=1 windSum=-2 -2->-1 (max=-2) done=1 tiny=0 opp=0
+debugShowSort [2] {{0,5}, {3,4}, {6,5}, {5,3}} tStart=0.515734731 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+debugShowSort [3] {{5,6}, {3,5}, {5,0}, {4,3}} tStart=0.297296392 tEnd=0 sign=1 windValue=1 windSum=? -1->-2 (max=-2) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,5}, {3,4}, {6,5}, {5,3}} tStart=0.515734731 tEnd=0.579011103 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+markWinding id=3 (5,6 3,5 5,0 4,3) t=0 [0] (5,6) tEnd=0.297296392 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (4,3 5,6) t=0.434637102 [3] (4.43463707,4.30391121) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,5 3,4 6,5 5,3) t=0.515734731 [1] (4.09290743,4.36280823) tEnd=0.579011103 newWindSum=1 newOppSum=-2 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (5,6 3,5 5,0 4,3) t=0 (5,6) tEnd=0.297296392 other=4 otherT=1 otherIndex=4 windSum=-2 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 other=1 otherT=0.579011103 otherIndex=2 windSum=-2 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.515734731 (4.09290743,4.36280823) tEnd=0.579011103 other=3 otherT=0.297296392 otherIndex=1 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=3 (5,6 3,5 5,0 4,3) t=0 [0] (5,6) tEnd=0.297296392 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1
+markDoneBinary id=4 (4,3 5,6) t=0.434637102 [3] (4.43463707,4.30391121) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1
+debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.515734731 (4.09290743,4.36280823) tEnd=0.579011103 other=3 otherT=0.297296392 otherIndex=1 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,5 3,4 6,5 5,3) t=0.515734731 [1] (4.09290743,4.36280823) tEnd=0.579011103 newWindSum=1 newOppSum=-2 oppSum=-2 windSum=1 windValue=1
+findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
+debugShowSort [0] {{5,3}, {0,5}} tStart=0.176470588 tEnd=0 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [1] {{4,3}, {5,6}} tStart=0.117647059 tEnd=0.0946656649 sign=1 windValue=1 windSum=-2 ?->? (max=?) done=1 tiny=0 opp=1
+debugShowSort [2] {{5,3}, {0,5}} tStart=0.176470588 tEnd=0.182401651 sign=-1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=0
+debugShowSort [3] {{4,3}, {5,6}} tStart=0.117647059 tEnd=0.434637102 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=1
+debugShowSort [1] {{4,3}, {5,6}} tStart=0.117647059 tEnd=0.0946656649 sign=1 windValue=1 windSum=-2 -1->-2 (max=-2) done=1 tiny=0 opp=0
+debugShowSort [2] {{5,3}, {0,5}} tStart=0.176470588 tEnd=0.182401651 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+debugShowSort [3] {{4,3}, {5,6}} tStart=0.117647059 tEnd=0.434637102 sign=-1 windValue=1 windSum=? -2->-1 (max=-2) done=0 tiny=0 opp=0
+debugShowSort [0] {{5,3}, {0,5}} tStart=0.176470588 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+markWinding id=4 (4,3 5,6) t=0.117647059 [2] (4.11764717,3.35294127) tEnd=0.434637102 newWindSum=-2 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=2 (5,3 0,5) t=0 [0] (5,3) tEnd=0.176470588 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,5 3,4 6,5 5,3) t=0.579011103 [2] (4.43463707,4.30391121) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=4 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 other=2 otherT=0.176470588 otherIndex=1 windSum=-2 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=4 (4,3 5,6) t=0.117647059 [2] (4.11764717,3.35294127) tEnd=0.434637102 newWindSum=-2 newOppSum=1 oppSum=1 windSum=-2 windValue=1
+debugShowActiveSpans id=1 (0,5 3,4 6,5 5,3) t=0.579011103 (4.43463707,4.30391121) tEnd=1 other=4 otherT=0.434637102 otherIndex=3 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 other=1 otherT=1 otherIndex=3 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,5 3,4 6,5 5,3) t=0.579011103 [2] (4.43463707,4.30391121) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+markDoneBinary id=2 (5,3 0,5) t=0 [0] (5,3) tEnd=0.176470588 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+assemble
+</div>
+
+<div id="cubicOp58da">
+$1 = {{fX = 4.09466553, fY = 3.28399706}, {fX = 4.19834709, fY = 2.10743785}, {fX = 4.5454545, fY = 1.36363637}, {fX = 4, fY = 3}}
+</div>
+
+<div id="cubicOp61d">
+ SimplifyNew_Test [cubicOp61d]
+{{1,2}, {0,5}, {3,2}, {6,1}},
+{{6,1}, {1,2}},
+op difference
+{{2,3}, {1,6}, {2,1}, {5,0}},
+{{5,0}, {2,3}},
+debugShowCubicIntersection wtTs[0]=0 {{2,3}, {1,6}, {2,1}, {5,0}} {{2,3}} wtTs[1]=0.5
+debugShowCubicLineIntersection wtTs[0]=0 {{2,3}, {1,6}, {2,1}, {5,0}} {{2,3}} wtTs[1]=0.5 {{2,3}} wtTs[2]=1 {{5,0}} wnTs[0]=1 {{5,0}, {2,3}} wnTs[1]=1 wnTs[2]=0
+debugShowCubicIntersection wtTs[0]=0 {{2,3}, {1,6}, {2,1}, {5,0}} {{2,3}} wtTs[1]=0.5 {{2.0000000000728706,2.9999999998542584}} wnTs[0]=0.5 {{1,2}, {0,5}, {3,2}, {6,1}} wnTs[1]=0.500000029
+debugShowCubicLineIntersection wtTs[0]=0.704088595 {{2,3}, {1,6}, {2,1}, {5,0}} {{2.8621787139852466,1.6275642572029505}} wnTs[0]=0.627564 {{6,1}, {1,2}}
+debugShowCubicLineIntersection wtTs[0]=0.5 {{1,2}, {0,5}, {3,2}, {6,1}} {{2,3}} wnTs[0]=1 {{5,0}, {2,3}}
+debugShowLineIntersection wtTs[0]=0.5 {{5,0}, {2,3}} {{3.5,1.5}} wnTs[0]=0.5 {{6,1}, {1,2}}
+debugShowCubicIntersection no self intersect {{1,2}, {0,5}, {3,2}, {6,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{1,2}, {0,5}, {3,2}, {6,1}} {{1,2}} wtTs[1]=1 {{6,1}} wnTs[0]=1 {{6,1}, {1,2}} wnTs[1]=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=3 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0.5 (2,3) tEnd=0.704088595 other=1 otherT=0.500000029 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0.704088595 (2.8621788,1.62756431) tEnd=1 other=2 otherT=0.627564257 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,0 2,3) t=0 (5,0) tEnd=0.5 other=3 otherT=1 otherIndex=7 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,0 2,3) t=0.5 (3.5,1.5) tEnd=1 other=2 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0 (1,2) tEnd=0.5 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0.500000029 (2,3) tEnd=1 other=3 otherT=0.5 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,1 1,2) t=0 (6,1) tEnd=0.5 other=1 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,1 1,2) t=0.5 (3.5,1.5) tEnd=0.627564257 other=4 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,1 1,2) t=0.627564257 (2.8621788,1.62756431) tEnd=1 other=3 otherT=0.704088595 otherIndex=6 windSum=? windValue=1 oppValue=0
+(gdb) continue
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{2,3}, {1,6}, {2,1}, {5,0}} tStart=1 tEnd=0.704088595 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{5,0}, {2,3}} tStart=0 tEnd=0.5 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+markWinding id=3 (2,3 1,6 2,1 5,0) t=0.704088595 [6] (2.8621788,1.62756431) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (5,0 2,3) t=0 [0] (5,0) tEnd=0.5 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (2,3 1,6 2,1 5,0) t=0.704088595 [6] (2.8621788,1.62756431) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (2,3 1,6 2,1 5,0) t=0.704088595 [6] (2.8621788,1.62756431) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+markDoneBinary id=4 (5,0 2,3) t=0 [0] (5,0) tEnd=0.5 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
+debugShowSort [0] {{6,1}, {1,2}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [1] {{5,0}, {2,3}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=-1 ?->? (max=?) done=1 tiny=0 opp=1
+debugShowSort [2] {{6,1}, {1,2}} tStart=0.5 tEnd=0.627564257 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [3] {{5,0}, {2,3}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [1] {{5,0}, {2,3}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [2] {{6,1}, {1,2}} tStart=0.5 tEnd=0.627564257 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [3] {{5,0}, {2,3}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{6,1}, {1,2}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+markWinding id=2 (6,1 1,2) t=0.5 [1] (3.5,1.5) tEnd=0.627564257 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=4 (5,0 2,3) t=0.5 [1] (3.5,1.5) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=2 (6,1 1,2) t=0 [0] (6,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (1,2 0,5 3,2 6,1) t=0.500000029 [3] (2,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=3 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0.5 (2,3) tEnd=0.704088595 other=1 otherT=0.500000029 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,0 2,3) t=0.5 (3.5,1.5) tEnd=1 other=2 otherT=0.5 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0 (1,2) tEnd=0.5 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0.500000029 (2,3) tEnd=1 other=3 otherT=0.5 otherIndex=5 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,1 1,2) t=0 (6,1) tEnd=0.5 other=1 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,1 1,2) t=0.5 (3.5,1.5) tEnd=0.627564257 other=4 otherT=0.5 otherIndex=1 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,1 1,2) t=0.627564257 (2.8621788,1.62756431) tEnd=1 other=3 otherT=0.704088595 otherIndex=6 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (6,1 1,2) t=0.5 [1] (3.5,1.5) tEnd=0.627564257 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+findChaseOp debugShowSort contourWinding=1 oppContourWinding=-1 sign=1
+debugShowSort [0] {{6,1}, {1,2}} tStart=0.627564257 tEnd=0.5 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [1] {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.704088595 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+debugShowSort [2] {{6,1}, {1,2}} tStart=0.627564257 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.704088595 tEnd=0.5 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=1 oppContourWinding=-1 sign=1
+debugShowSort [0] {{6,1}, {1,2}} tStart=0.627564257 tEnd=0.5 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [1] {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.704088595 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+debugShowSort [2] {{6,1}, {1,2}} tStart=0.627564257 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.704088595 tEnd=0.5 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+markWinding id=2 (6,1 1,2) t=0.627564257 [2] (2.8621788,1.62756431) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (1,2 0,5 3,2 6,1) t=0 [0] (1,2) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (2,3 1,6 2,1 5,0) t=0.5 [5] (2,3) tEnd=0.704088595 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=3 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0.5 (2,3) tEnd=0.704088595 other=1 otherT=0.500000029 otherIndex=3 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,0 2,3) t=0.5 (3.5,1.5) tEnd=1 other=2 otherT=0.5 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0 (1,2) tEnd=0.5 other=2 otherT=1 otherIndex=3 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0.500000029 (2,3) tEnd=1 other=3 otherT=0.5 otherIndex=5 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,1 1,2) t=0 (6,1) tEnd=0.5 other=1 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,1 1,2) t=0.627564257 (2.8621788,1.62756431) tEnd=1 other=3 otherT=0.704088595 otherIndex=6 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+findNextOp simple
+markDoneBinary id=2 (6,1 1,2) t=0.627564257 [2] (2.8621788,1.62756431) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=2 from=(2.8621788,1.62756431) to=(1,2)
+setSpans all tiny unsortable [1] (2,3) [0] (1,2)
+setSpans all tiny unsortable [1] (2,3) [3] (2.00000024,3)
+markUnsortable id=1 (1,2 0,5 3,2 6,1) t=0 [0] (1,2) tEnd=0.5 newWindSum=0 windSum=1 windValue=1
+markUnsortable id=1 (1,2 0,5 3,2 6,1) t=0.5 [1] (2,3) tEnd=0.5 newWindSum=0 windSum=? windValue=1
+markUnsortable id=3 (2,3 1,6 2,1 5,0) t=0 [2] (2,3) tEnd=0.5 newWindSum=0 windSum=? windValue=1
+markUnsortable id=4 (5,0 2,3) t=1 [3] (2,3) tEnd=1 newWindSum=0 windSum=? windValue=1
+findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
+debugShowSort [0] *** UNSORTABLE *** {{1,2}, {0,5}, {3,2}, {6,1}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] *** UNSORTABLE *** {{1,2}, {0,5}, {3,2}, {6,1}} tStart=0.5 tEnd=0.500000029 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=1 tiny=1 opp=0
+debugShowSort [2] {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0 tEnd=0.5 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [3] {{5,0}, {2,3}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=-1 1->0 (max=1) done=0 tiny=0 opp=1
+path.moveTo(2.8621788,1.62756431);
+path.lineTo(1,2);
+path.cubicTo(0.5,3.5, 1,3.5, 2,3);
+markDoneBinary id=1 (1,2 0,5 3,2 6,1) t=0 [0] (1,2) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=3 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0.5 (2,3) tEnd=0.704088595 other=1 otherT=0.500000029 otherIndex=3 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,0 2,3) t=0.5 (3.5,1.5) tEnd=1 other=2 otherT=0.5 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0.500000029 (2,3) tEnd=1 other=3 otherT=0.5 otherIndex=5 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,1 1,2) t=0 (6,1) tEnd=0.5 other=1 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+setSpans unsortable [2] (2,3) [3] (2,3)
+setSpans all tiny unsortable [4] (2,3) [2] (2,3)
+setSpans all tiny unsortable [2] (2,3) [3] (2.00000024,3)
+setSpans all tiny unsortable [2] (2,3) [0] (1,2)
+markUnsortable id=4 (5,0 2,3) t=0.5 [1] (3.5,1.5) tEnd=1 newWindSum=0 windSum=-1 windValue=1
+markUnsortable id=3 (2,3 1,6 2,1 5,0) t=0 [1] (2,3) tEnd=0 newWindSum=0 windSum=? windValue=1
+markUnsortable id=3 (2,3 1,6 2,1 5,0) t=0.5 [4] (2,3) tEnd=0.5 newWindSum=0 windSum=? windValue=1
+markUnsortable id=3 (2,3 1,6 2,1 5,0) t=0.5 [3] (2,3) tEnd=0.5 newWindSum=0 windSum=? windValue=1
+markUnsortable id=1 (1,2 0,5 3,2 6,1) t=0.5 [2] (2,3) tEnd=0.500000029 newWindSum=0 windSum=? windValue=1
+markUnsortable id=1 (1,2 0,5 3,2 6,1) t=0.5 [1] (2,3) tEnd=0.5 newWindSum=0 windSum=? windValue=1
+findNextOp debugShowSort contourWinding=0 oppContourWinding=1 sign=1
+debugShowSort [0] {{5,0}, {2,3}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] *** UNSORTABLE *** {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0 tEnd=0.5 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] *** UNSORTABLE *** {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.5 tEnd=0.5 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=1 tiny=1 opp=0
+debugShowSort [3] *** UNSORTABLE *** {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [4] *** UNSORTABLE *** {{1,2}, {0,5}, {3,2}, {6,1}} tStart=0.5 tEnd=0.500000029 sign=-1 windValue=1 windSum=? 1->2 (max=2) done=1 tiny=1 opp=1
+debugShowSort [5] *** UNSORTABLE *** {{1,2}, {0,5}, {3,2}, {6,1}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 2->1 (max=2) done=1 tiny=0 opp=1
+markDoneBinary id=4 (5,0 2,3) t=0.5 [1] (3.5,1.5) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+path.moveTo(3.5,1.5);
+path.lineTo(2,3);
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=3 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0.5 (2,3) tEnd=0.704088595 other=1 otherT=0.500000029 otherIndex=3 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0.500000029 (2,3) tEnd=1 other=3 otherT=0.5 otherIndex=5 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,1 1,2) t=0 (6,1) tEnd=0.5 other=1 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markUnsortable id=3 (2,3 1,6 2,1 5,0) t=0.5 [5] (2,3) tEnd=0.704088595 newWindSum=0 windSum=-1 windValue=1
+markUnsortable id=3 (2,3 1,6 2,1 5,0) t=0.5 [4] (2,3) tEnd=0.5 newWindSum=0 windSum=? windValue=1
+markUnsortable id=1 (1,2 0,5 3,2 6,1) t=0.500000029 [3] (2,3) tEnd=1 newWindSum=0 windSum=1 windValue=1
+markUnsortable id=1 (1,2 0,5 3,2 6,1) t=0.5 [2] (2,3) tEnd=0.500000029 newWindSum=0 windSum=? windValue=1
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
+debugShowSort [0] {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.5 tEnd=0.704088595 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] *** UNSORTABLE *** {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.5 tEnd=0.5 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=1 tiny=1 opp=0
+debugShowSort [2] {{1,2}, {0,5}, {3,2}, {6,1}} tStart=0.500000029 tEnd=1 sign=-1 windValue=1 windSum=1 1->2 (max=2) done=0 tiny=0 opp=1
+debugShowSort [3] {{1,2}, {0,5}, {3,2}, {6,1}} tStart=0.500000029 tEnd=0.5 sign=1 windValue=1 windSum=? 2->1 (max=2) done=1 tiny=1 opp=1
+path.moveTo(2.8621788,1.62756431);
+path.cubicTo(2.49148154,2.10034132, 2.20408869,2.59182286, 2,3);
+markDoneBinary id=3 (2,3 1,6 2,1 5,0) t=0.5 [5] (2,3) tEnd=0.704088595 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=3 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,2 0,5 3,2 6,1) t=0.500000029 (2,3) tEnd=1 other=3 otherT=0.5 otherIndex=5 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (6,1 1,2) t=0 (6,1) tEnd=0.5 other=1 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+findNextOp simple
+markDoneBinary id=2 (6,1 1,2) t=0 [0] (6,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=2 from=(3.5,1.5) to=(6,1)
+setSpans unsortable [3] (2.00000024,3) [4] (6,1)
+setSpans unsortable [3] (2.00000024,3) [2] (2,3)
+setSpans unsortable [5] (2,3) [6] (2.8621788,1.62756431)
+markUnsortable id=1 (1,2 0,5 3,2 6,1) t=0.500000029 [3] (2,3) tEnd=1 newWindSum=0 windSum=1 windValue=1
+markUnsortable id=1 (1,2 0,5 3,2 6,1) t=0.5 [2] (2,3) tEnd=0.500000029 newWindSum=0 windSum=? windValue=1
+markUnsortable id=3 (2,3 1,6 2,1 5,0) t=0.5 [5] (2,3) tEnd=0.704088595 newWindSum=0 windSum=-1 windValue=1
+markUnsortable id=3 (2,3 1,6 2,1 5,0) t=0.5 [4] (2,3) tEnd=0.5 newWindSum=0 windSum=? windValue=1
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] *** UNSORTABLE *** {{1,2}, {0,5}, {3,2}, {6,1}} tStart=0.500000029 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] *** UNSORTABLE *** {{1,2}, {0,5}, {3,2}, {6,1}} tStart=0.500000029 tEnd=0.5 sign=1 windValue=1 windSum=? 1->0 (max=1) done=1 tiny=1 opp=0
+debugShowSort [2] *** UNSORTABLE *** {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.5 tEnd=0.704088595 sign=-1 windValue=1 windSum=-1 0->1 (max=1) done=1 tiny=0 opp=1
+debugShowSort [3] *** UNSORTABLE *** {{2,3}, {1,6}, {2,1}, {5,0}} tStart=0.5 tEnd=0.5 sign=1 windValue=1 windSum=? 1->0 (max=1) done=1 tiny=1 opp=1
+path.moveTo(3.5,1.5);
+path.lineTo(6,1);
+path.cubicTo(4.5,1.5, 3.00000024,2.49999976, 2,3);
+markDoneBinary id=1 (1,2 0,5 3,2 6,1) t=0.500000029 [3] (2,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=3 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=4 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (2,3 1,6 2,1 5,0) t=0 (2,3) tEnd=0.5 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+</div>
+
+<div id="cubicOp62d">
+ SimplifyNew_Test [cubicOp62d]
+{{1,3}, {5,6}, {5,3}, {5,4}},
+{{5,4}, {1,3}},
+op difference
+{{3,5}, {4,5}, {3,1}, {6,5}},
+{{6,5}, {3,5}},
+debugShowCubicIntersection no self intersect {{1,3}, {5,6}, {5,3}, {5,4}}
+debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {5,6}, {5,3}, {5,4}} {{1,3}} wtTs[1]=0.666666667 {{4.8518518518518512,3.9629629629629628}} wtTs[2]=1 {{5,4}} wnTs[0]=1 {{5,4}, {1,3}} wnTs[1]=0.037037037 wnTs[2]=0
+debugShowCubicIntersection wtTs[0]=0.278899971 {{1,3}, {5,6}, {5,3}, {5,4}} {{3.5001544800676263,4.3269091333431628}} wtTs[1]=0.855895664 {{4.9880300830066844,3.7869549154423883}} wtTs[2]=0.865207906 {{4.9902038991416013,3.7891603690182212}} wtTs[3]=0.865213351 {{4.9902050861407137,3.789162057358868}} wnTs[0]=0.2789 {{3,5}, {4,5}, {3,1}, {6,5}} wnTs[1]=0.864850875 wnTs[2]=0.865207887 wnTs[3]=0.865208087
+debugShowCubicLineIntersection wtTs[0]=0.448187637 {{3,5}, {4,5}, {3,1}, {6,5}} {{3.6795004703683416,3.6698751175920856}} wnTs[0]=0.330125 {{5,4}, {1,3}}
+debugShowCubicIntersection no self intersect {{3,5}, {4,5}, {3,1}, {6,5}}
+debugShowCubicLineIntersection wtTs[0]=0 {{3,5}, {4,5}, {3,1}, {6,5}} {{3,5}} wtTs[1]=1 {{6,5}} wnTs[0]=1 {{6,5}, {3,5}} wnTs[1]=0
+debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0 (1,3) tEnd=0.278899971 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.278899971 (3.5001545,4.32690907) tEnd=0.666666667 other=3 otherT=0.278899971 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.666666667 (4.85185194,3.96296287) tEnd=0.855895664 other=2 otherT=0.037037037 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.855895664 (4.98802996,3.78695488) tEnd=0.865207906 other=3 otherT=0.864850875 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.865207906 (4.99020386,3.78916025) tEnd=0.865213351 other=3 otherT=0.865207887 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.865213351 (4.99020529,3.78916216) tEnd=1 other=3 otherT=0.865208087 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,4 1,3) t=0 (5,4) tEnd=0.037037037 other=1 otherT=1 otherIndex=6 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,4 1,3) t=0.037037037 (4.85185194,3.96296287) tEnd=0.330124882 other=1 otherT=0.666666667 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,4 1,3) t=0.330124882 (3.67950058,3.66987514) tEnd=1 other=3 otherT=0.448187637 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0 (3,5) tEnd=0.278899971 other=4 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.278899971 (3.5001545,4.32690907) tEnd=0.448187637 other=1 otherT=0.278899971 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.448187637 (3.67950058,3.66987514) tEnd=0.864850875 other=2 otherT=0.330124882 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.864850875 (4.98802996,3.78695488) tEnd=0.865207887 other=1 otherT=0.855895664 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.865207887 (4.99020386,3.78916025) tEnd=0.865208087 other=1 otherT=0.865207906 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.865208087 (4.99020529,3.78916216) tEnd=1 other=1 otherT=0.865213351 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (6,5 3,5) t=0 (6,5) tEnd=1 other=3 otherT=1 otherIndex=6 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0 tEnd=0.278899971 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{5,4}, {1,3}} tStart=1 tEnd=0.330124882 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+markWinding id=1 (1,3 5,6 5,3 5,4) t=0 [0] (1,3) tEnd=0.278899971 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (5,4 1,3) t=0.330124882 [2] (3.67950058,3.66987514) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (1,3 5,6 5,3 5,4) t=0 [0] (1,3) tEnd=0.278899971 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+findNextOp simple
+markDoneBinary id=1 (1,3 5,6 5,3 5,4) t=0 [0] (1,3) tEnd=0.278899971 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=1 from=(3.5001545,4.32690907) to=(1,3)
+path.moveTo(3.5001545,4.32690907);
+path.cubicTo(2.92005897,4.20668888, 2.11559987,3.83669996, 1,3);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [1] {{5,4}, {1,3}} tStart=0.330124882 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.448187637 tEnd=0.278899971 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [3] {{5,4}, {1,3}} tStart=0.330124882 tEnd=0.037037037 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.448187637 tEnd=0.864850875 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+markWinding id=3 (3,5 4,5 3,1 6,5) t=0.278899971 [1] (3.5001545,4.32690907) tEnd=0.448187637 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (5,4 1,3) t=0.037037037 [1] (4.85185194,3.96296287) tEnd=0.330124882 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (3,5 4,5 3,1 6,5) t=0.448187637 [2] (3.67950058,3.66987514) tEnd=0.864850875 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+markDoneBinary id=2 (5,4 1,3) t=0.330124882 [2] (3.67950058,3.66987514) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[2] to:[3] start=2 end=1
+bridgeOp current id=2 from=(1,3) to=(3.67950058,3.66987514)
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
+debugShowSort [0] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.278899971 tEnd=0.448187637 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.278899971 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+debugShowSort [2] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.278899971 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.278899971 tEnd=0.666666667 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[0] sign=-1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+markDoneBinary id=3 (3,5 4,5 3,1 6,5) t=0 [0] (3,5) tEnd=0.278899971 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markDoneBinary id=4 (6,5 3,5) t=0 [0] (6,5) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markDoneBinary id=3 (3,5 4,5 3,1 6,5) t=0.865208087 [5] (4.99020529,3.78916216) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (1,3 5,6 5,3 5,4) t=0.278899971 [1] (3.5001545,4.32690907) tEnd=0.666666667 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+markDoneBinary id=3 (3,5 4,5 3,1 6,5) t=0.278899971 [1] (3.5001545,4.32690907) tEnd=0.448187637 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findNextOp from:[3] to:[1] start=1 end=0
+bridgeOp current id=3 from=(3.67950058,3.66987514) to=(3.5001545,4.32690907)
+path.lineTo(3.67950058,3.66987514);
+path.cubicTo(3.60967231,3.86879396, 3.5595932,4.10721159, 3.5001545,4.32690907);
+path.close();
+findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=-1
+debugShowSort [0] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.666666667 tEnd=0.855895664 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [1] {{5,4}, {1,3}} tStart=0.037037037 tEnd=0.330124882 sign=-1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=0
+debugShowSort [2] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.666666667 tEnd=0.278899971 sign=1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=0
+debugShowSort [3] {{5,4}, {1,3}} tStart=0.037037037 tEnd=0 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=-1 sign=-1
+debugShowSort [1] {{5,4}, {1,3}} tStart=0.037037037 tEnd=0.330124882 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.666666667 tEnd=0.278899971 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [3] {{5,4}, {1,3}} tStart=0.037037037 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.666666667 tEnd=0.855895664 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+markWinding id=2 (5,4 1,3) t=0 [0] (5,4) tEnd=0.037037037 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=1 (1,3 5,6 5,3 5,4) t=0.865213351 [5] (4.99020529,3.78916216) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=1 (1,3 5,6 5,3 5,4) t=0.666666667 [2] (4.85185194,3.96296287) tEnd=0.855895664 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.666666667 (4.85185194,3.96296287) tEnd=0.855895664 other=2 otherT=0.037037037 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.855895664 (4.98802996,3.78695488) tEnd=0.865207906 other=3 otherT=0.864850875 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.865207906 (4.99020386,3.78916025) tEnd=0.865213351 other=3 otherT=0.865207887 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.865213351 (4.99020529,3.78916216) tEnd=1 other=3 otherT=0.865208087 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,4 1,3) t=0 (5,4) tEnd=0.037037037 other=1 otherT=1 otherIndex=6 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.864850875 (4.98802996,3.78695488) tEnd=0.865207887 other=1 otherT=0.855895664 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.865207887 (4.99020386,3.78916025) tEnd=0.865208087 other=1 otherT=0.865207906 otherIndex=4 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (5,4 1,3) t=0 [0] (5,4) tEnd=0.037037037 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
+markDoneBinary id=1 (1,3 5,6 5,3 5,4) t=0.865213351 [5] (4.99020529,3.78916216) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
+findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
+debugShowSort [0] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.865213351 tEnd=0.865207906 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.865208087 tEnd=0.865207887 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
+debugShowSort [2] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.865213351 tEnd=1 sign=-1 windValue=1 windSum=-1 ?->? (max=?) done=1 tiny=0 opp=0
+debugShowSort [3] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.865208087 tEnd=1 sign=-1 windValue=1 windSum=-1 ?->? (max=?) done=1 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=-1 oppContourWinding=-1 sign=-1
+debugShowSort [2] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.865213351 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [3] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.865208087 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+debugShowSort [0] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.865213351 tEnd=0.865207906 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.865208087 tEnd=0.865207887 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+markWinding id=1 (1,3 5,6 5,3 5,4) t=0.865207906 [4] (4.99020386,3.78916025) tEnd=0.865213351 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (3,5 4,5 3,1 6,5) t=0.865207887 [4] (4.99020386,3.78916025) tEnd=0.865208087 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.666666667 (4.85185194,3.96296287) tEnd=0.855895664 other=2 otherT=0.037037037 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.855895664 (4.98802996,3.78695488) tEnd=0.865207906 other=3 otherT=0.864850875 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 5,6 5,3 5,4) t=0.865207906 (4.99020386,3.78916025) tEnd=0.865213351 other=3 otherT=0.865207887 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.864850875 (4.98802996,3.78695488) tEnd=0.865207887 other=1 otherT=0.855895664 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,5 4,5 3,1 6,5) t=0.865207887 (4.99020386,3.78916025) tEnd=0.865208087 other=1 otherT=0.865207906 otherIndex=4 windSum=-1 windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [2] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.865207906 tEnd=0.865213351 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.865207887 tEnd=0.865208087 sign=-1 windValue=1 windSum=-1 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [0] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.865207906 tEnd=0.855895664 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.865207887 tEnd=0.864850875 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=-1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (1,3 5,6 5,3 5,4) t=0.855895664 [3] (4.98802996,3.78695488) tEnd=0.865207906 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markWinding id=3 (3,5 4,5 3,1 6,5) t=0.864850875 [3] (4.98802996,3.78695488) tEnd=0.865207887 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+markDoneBinary id=1 (1,3 5,6 5,3 5,4) t=0.865207906 [4] (4.99020386,3.78916025) tEnd=0.865213351 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[1] to:[3] start=4 end=3
+bridgeOp current id=1 from=(4.99020529,3.78916216) to=(4.99020386,3.78916025)
+path.moveTo(4.99020529,3.78916216);
+path.cubicTo(4.99020433,3.78916144, 4.99020433,3.78916097, 4.99020386,3.78916025);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=-1 sign=-1
+debugShowSort [2] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.864850875 tEnd=0.865207887 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.855895664 tEnd=0.865207906 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+debugShowSort [0] {{3,5}, {4,5}, {3,1}, {6,5}} tStart=0.864850875 tEnd=0.448187637 sign=1 windValue=1 windSum=-1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [1] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.855895664 tEnd=0.666666667 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[2] sign=-1
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=3 (3,5 4,5 3,1 6,5) t=0.864850875 [3] (4.98802996,3.78695488) tEnd=0.865207887 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+findNextOp from:[3] to:[1] start=3 end=2
+bridgeOp current id=3 from=(4.99020386,3.78916025) to=(4.98802996,3.78695488)
+path.cubicTo(4.98947859,3.78842425, 4.98875427,3.78768921, 4.98802996,3.78695488);
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=-1 sign=-1
+debugShowSort [0] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.666666667 tEnd=0.855895664 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{5,4}, {1,3}} tStart=0.037037037 tEnd=0.330124882 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{1,3}, {5,6}, {5,3}, {5,4}} tStart=0.666666667 tEnd=0.278899971 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [3] {{5,4}, {1,3}} tStart=0.037037037 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+findNextOp firstIndex=[0] sign=-1
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (1,3 5,6 5,3 5,4) t=0.666666667 [2] (4.85185194,3.96296287) tEnd=0.855895664 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
+path.cubicTo(4.97231197,3.77658033, 4.93595362,3.85783577, 4.85185194,3.96296287);
+</div>
+
+<div id="testQuad1">
+ RunTestSet [testQuad1]
+{{0,0}, {0,0}, {0,1}},
+{{0,1}, {1,1}},
+{{1,1}, {0,0}},
+{{0,0}, {1,1}, {0,2}},
+{{0,2}, {0,0}},
+debugShowLineIntersection wtTs[0]=0 {{0,0}, {0,1}} {{0,1}} wnTs[0]=1 {{0,1}, {1,1}}
+debugShowLineIntersection wtTs[0]=1 {{0,0}, {0,1}} {{0,0}} wnTs[0]=0 {{1,1}, {0,0}}
+debugShowLineIntersection wtTs[0]=-0 {{0,1}, {1,1}} {{1,1}} wnTs[0]=1 {{1,1}, {0,0}}
+debugShowQuadLineIntersection wtTs[0]=0 {{0,0}, {1,1}, {0,2}} {{0,0}} wnTs[0]=0 {{0,0}, {0,1}}
+debugShowLineIntersection wtTs[0]=1 {{0,0}, {0,1}} {{0,0}} wtTs[1]=0.5 {{0,1}} wnTs[0]=-0 {{0,2}, {0,0}} wnTs[1]=1
+debugShowQuadLineIntersection wtTs[0]=0.5 {{0,0}, {1,1}, {0,2}} {{0.5,1}} wnTs[0]=0.5 {{0,1}, {1,1}}
+debugShowLineIntersection wtTs[0]=0.5 {{0,1}, {1,1}} {{0,1}} wnTs[0]=0 {{0,2}, {0,0}}
+debugShowQuadLineIntersection wtTs[0]=0 {{0,0}, {1,1}, {0,2}} {{0,0}} wnTs[0]=1 {{1,1}, {0,0}}
+debugShowLineIntersection wtTs[0]=1 {{1,1}, {0,0}} {{0,0}} wnTs[0]=1 {{0,2}, {0,0}}
+debugShowQuadLineIntersection wtTs[0]=0 {{0,0}, {1,1}, {0,2}} {{0,0}} wtTs[1]=1 {{0,2}} wnTs[0]=1 {{0,2}, {0,0}} wnTs[1]=0
+debugShowTs id=1 [o=3,4 t=0 0,0 w=1 o=0] [o=2 t=1 0,1 w=1 o=0]
+debugShowTs id=5 [o=4 t=0 0,2 w=1 o=0] [o=2 t=0.5 0,1 w=1 o=0] [o=3,4 t=1 0,0 w=1 o=0]
+addTPair addTPair this=5 0.5 other=1 1
+debugShowTs id=1 [o=3,4 t=0 0,0 w=1 o=0] [o=2,5 t=1 0,1 w=1 o=0]
+debugShowTs id=5 [o=4 t=0 0,2 w=1 o=0] [o=2,1 t=0.5 0,1 w=1 o=0] [o=3,4 t=1 0,0 w=1 o=0]
+debugShowTs id=1 [o=3,4 t=0 0,0 w=0 o=0] [o=2,5 t=1 0,1 w=1 o=0] done
+debugShowTs id=5 [o=4 t=0 0,2 w=1 o=0] [o=2,1 t=0.5 0,1 w=0 o=0] [o=3,4 t=1 0,0 w=1 o=0]
+debugShowActiveSpans id=2 (0,1 1,1) t=0 (0,1) tEnd=0.5 other=1 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (0,1 1,1) t=0 (0,1) tEnd=0.5 other=5 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (0,1 1,1) t=0.5 (0.5,1) tEnd=1 other=4 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,1 0,0) t=-0 (1,1) tEnd=1 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (0,0 1,1 0,2) t=0 (0,0) tEnd=0.5 other=1 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (0,0 1,1 0,2) t=0 (0,0) tEnd=0.5 other=3 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (0,0 1,1 0,2) t=0 (0,0) tEnd=0.5 other=5 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (0,0 1,1 0,2) t=0.5 (0.5,1) tEnd=1 other=2 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=5 (0,2 0,0) t=0 (0,2) tEnd=0.5 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,0}, {1,1}, {0,2}} tStart=0 tEnd=0.5 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{1,1}, {0,0}} tStart=1 tEnd=-0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+findTop swap=1 serpentine=0 controls_contained_by_ends=0
+markWinding id=4 (0,0 1,1 0,2) t=0 [0] (0,0) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (0,0 1,1 0,2) t=0 [1] (0,0) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (0,0 1,1 0,2) t=0 [2] (0,0) tEnd=0.5 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (0,0 1,1 0,2) t=0 [0] (0,0) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+markWinding id=4 (0,0 1,1 0,2) t=0 [1] (0,0) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+markWinding id=4 (0,0 1,1 0,2) t=0 [2] (0,0) tEnd=0.5 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextWinding debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [0] {{0,0}, {1,1}, {0,2}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,1}, {1,1}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=? -1->-2 (max=-2) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,0}, {1,1}, {0,2}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=? -2->-1 (max=-2) done=0 tiny=0 opp=0
+debugShowSort [3] {{0,1}, {1,1}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+findNextWinding firstIndex=[0] sign=1
+markDone id=2 (0,1 1,1) t=0 [0] (0,1) tEnd=0 newWindSum=-2 windSum=? windValue=1
+markDone id=2 (0,1 1,1) t=0 [1] (0,1) tEnd=0.5 newWindSum=-2 windSum=? windValue=1
+findNextWinding chase.append id=2
+markDone id=4 (0,0 1,1 0,2) t=0.5 [3] (0.5,1) tEnd=1 newWindSum=-2 windSum=? windValue=1
+markDone id=5 (0,2 0,0) t=0 [0] (0,2) tEnd=0.5 newWindSum=-2 windSum=? windValue=1
+findNextWinding chase.append id=5
+markWinding id=2 (0,1 1,1) t=0.5 [2] (0.5,1) tEnd=1 newWindSum=-1 windSum=? windValue=1
+markWinding id=3 (1,1 0,0) t=-0 [0] (1,1) tEnd=1 newWindSum=-1 windSum=? windValue=1
+findNextWinding chase.append id=3
+markDoneUnary id=4 (0,0 1,1 0,2) t=0 [0] (0,0) tEnd=0 newWindSum=-1 windSum=-1 windValue=1
+markDoneUnary id=4 (0,0 1,1 0,2) t=0 [1] (0,0) tEnd=0 newWindSum=-1 windSum=-1 windValue=1
+markDoneUnary id=4 (0,0 1,1 0,2) t=0 [2] (0,0) tEnd=0.5 newWindSum=-1 windSum=-1 windValue=1
+findNextWinding from:[4] to:[2] start=2 end=3
+bridgeWinding current id=4 from=(0,0) to=(0.5,1)
+path.moveTo(0,0);
+path.quadTo(0.5,0.5, 0.5,1);
+findNextWinding simple
+markDoneUnary id=2 (0,1 1,1) t=0.5 [2] (0.5,1) tEnd=1 newWindSum=-1 windSum=-1 windValue=1
+bridgeWinding current id=2 from=(0.5,1) to=(1,1)
+findNextWinding debugShowSort contourWinding=0 oppContourWinding=? sign=1
+debugShowSort [1] {{1,1}, {0,0}} tStart=1 tEnd=-0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,0}, {1,1}, {0,2}} tStart=0 tEnd=0.5 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+findNextWinding firstIndex=[1] sign=1
+markDoneUnary id=3 (1,1 0,0) t=-0 [0] (1,1) tEnd=1 newWindSum=-1 windSum=-1 windValue=1
+findNextWinding from:[3] to:[4] start=1 end=3
+bridgeWinding current id=3 from=(1,1) to=(0,0)
+path.lineTo(1,1);
+path.lineTo(0,0);
+path.close();
+</div>
+
+<div id="cubicOp67u">
+ RunTestSet [cubicOp67u]
+{{3,5}, {1,6}, {5,0}, {3,1}},
+{{3,1}, {3,5}},
+op union
+{{0,5}, {1,3}, {5,3}, {6,1}},
+{{6,1}, {0,5}},
+debugShowCubicIntersection no self intersect {{3,5}, {1,6}, {5,0}, {3,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{3,5}, {1,6}, {5,0}, {3,1}} {{3,5}} wtTs[1]=0.5 {{3,3}} wtTs[2]=1 {{3,1}} wnTs[0]=1 {{3,1}, {3,5}} wnTs[1]=0.5 wnTs[2]=0
+debugShowCubicIntersection no intersect {{3,5}, {1,6}, {5,0}, {3,1}} {{0,5}, {1,3}, {5,3}, {6,1}}
+debugShowCubicLineIntersection wtTs[0]=0.5 {{3,5}, {1,6}, {5,0}, {3,1}} {{2.9999999999999991,3.0000000000000004}} wnTs[0]=0.5 {{6,1}, {0,5}}
+debugShowCubicLineIntersection wtTs[0]=0.5 {{0,5}, {1,3}, {5,3}, {6,1}} {{2.9999999999999991,2.9999999999999991}} wnTs[0]=0.5 {{3,1}, {3,5}}
+debugShowLineIntersection wtTs[0]=0.5 {{3,1}, {3,5}} {{3,3}} wnTs[0]=0.5 {{6,1}, {0,5}}
+debugShowCubicIntersection no self intersect {{0,5}, {1,3}, {5,3}, {6,1}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,5}, {1,3}, {5,3}, {6,1}} {{0,5}} wtTs[1]=0.5 {{3,3}} wtTs[2]=1 {{6,1}} wnTs[0]=1 {{6,1}, {0,5}} wnTs[1]=0.5 wnTs[2]=0
+SkOpSegment::debugShowActiveSpans id=1 (3,5 1,6 5,0 3,1) t=0 (3,5) tEnd=0.5 other=2 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=1 (3,5 1,6 5,0 3,1) t=0.5 (3,3) tEnd=1 other=4 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=1 (3,5 1,6 5,0 3,1) t=0.5 (3,3) tEnd=1 other=2 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=2 (3,1 3,5) t=0 (3,1) tEnd=0.5 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=2 (3,1 3,5) t=0.5 (3,3) tEnd=1 other=3 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=2 (3,1 3,5) t=0.5 (3,3) tEnd=1 other=1 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=2 (3,1 3,5) t=0.5 (3,3) tEnd=1 other=4 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 5,3 6,1) t=0 (0,5) tEnd=0.5 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 5,3 6,1) t=0.5 (3,3) tEnd=1 other=2 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 5,3 6,1) t=0.5 (3,3) tEnd=1 other=4 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0 (6,1) tEnd=0.5 other=3 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=2 otherT=0.5 otherIndex=3 windSum=? windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=? windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=1 otherT=0.5 otherIndex=1 windSum=? windValue=1 oppValue=0
+SkOpSegment::findTop SkOpSegment::debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+SkOpSegment::debugShowSort [0] {{3,5}, {1,6}, {5,0}, {3,1}} tStart=1 tEnd=0.5 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+SkOpSegment::debugShowSort [1] {{3,1}, {3,5}} tStart=0 tEnd=0.5 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+SkOpSegment::findTop swap=1 serpentine=0 containedByEnds=0 monotonic=0
+SkOpSegment::markWinding id=1 (3,5 1,6 5,0 3,1) t=0.5 [1] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+SkOpSegment::markWinding id=1 (3,5 1,6 5,0 3,1) t=0.5 [2] (3,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+SkOpSegment::markWinding id=1 (3,5 1,6 5,0 3,1) t=0.5 [1] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+SkOpSegment::markWinding id=1 (3,5 1,6 5,0 3,1) t=0.5 [2] (3,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+SkOpSegment::markWinding id=2 (3,1 3,5) t=0 [0] (3,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+SkOpSegment::activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+SkOpSegment::findNextOp SkOpSegment::debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+SkOpSegment::debugShowSort [1] {{3,5}, {1,6}, {5,0}, {3,1}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+SkOpSegment::debugShowSort [2] {{3,1}, {3,5}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+SkOpSegment::debugShowSort [3] {{6,1}, {0,5}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+SkOpSegment::debugShowSort [4] {{3,5}, {1,6}, {5,0}, {3,1}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+SkOpSegment::debugShowSort [5] {{3,1}, {3,5}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+SkOpSegment::debugShowSort [0] {{6,1}, {0,5}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+SkOpSegment::findNextOp firstIndex=[1] sign=-1
+SkOpSegment::activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=0 suTo=1 result=1
+SkOpSegment::markWinding id=4 (6,1 0,5) t=0.5 [2] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+SkOpSegment::markWinding id=4 (6,1 0,5) t=0.5 [1] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+SkOpSegment::markWinding id=4 (6,1 0,5) t=0.5 [3] (3,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+SkOpSegment::markWinding id=3 (0,5 1,3 5,3 6,1) t=0 [0] (0,5) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+SkOpSegment::findNextOp chase.append id=3
+SkOpSegment::activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+SkOpSegment::markDoneBinary id=1 (3,5 1,6 5,0 3,1) t=0 [0] (3,5) tEnd=0.5 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+SkOpSegment::markDoneBinary id=2 (3,1 3,5) t=0.5 [2] (3,3) tEnd=0.5 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+SkOpSegment::markDoneBinary id=2 (3,1 3,5) t=0.5 [1] (3,3) tEnd=0.5 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+SkOpSegment::markDoneBinary id=2 (3,1 3,5) t=0.5 [3] (3,3) tEnd=1 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+SkOpSegment::findNextOp chase.append id=2
+SkOpSegment::activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
+SkOpSegment::markWinding id=4 (6,1 0,5) t=0 [0] (6,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+SkOpSegment::markWinding id=3 (0,5 1,3 5,3 6,1) t=0.5 [1] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+SkOpSegment::markWinding id=3 (0,5 1,3 5,3 6,1) t=0.5 [2] (3,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+SkOpSegment::findNextOp chase.append id=3
+SkOpSegment::markDoneBinary id=1 (3,5 1,6 5,0 3,1) t=0.5 [1] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+SkOpSegment::markDoneBinary id=1 (3,5 1,6 5,0 3,1) t=0.5 [2] (3,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+SkOpSegment::findNextOp from:[1] to:[2] start=2 end=0
+bridgeOp current id=1 from=(3,1) to=(3,3)
+path.moveTo(3,1);
+path.cubicTo(4,0.5, 3.5,1.75, 3,3);
+SkOpSegment::findNextOp simple
+SkOpSegment::markDoneBinary id=2 (3,1 3,5) t=0 [0] (3,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=2 from=(3,3) to=(3,1)
+path.lineTo(3,1);
+path.close();
+SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 5,3 6,1) t=0 (0,5) tEnd=0.5 other=4 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 5,3 6,1) t=0.5 (3,3) tEnd=1 other=2 otherT=0.5 otherIndex=1 windSum=1 windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 5,3 6,1) t=0.5 (3,3) tEnd=1 other=4 otherT=0.5 otherIndex=2 windSum=1 windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0 (6,1) tEnd=0.5 other=3 otherT=1 otherIndex=3 windSum=1 windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=2 otherT=0.5 otherIndex=3 windSum=1 windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=1 windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=1 otherT=0.5 otherIndex=1 windSum=1 windValue=1 oppValue=0
+SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=0 suTo=1 result=1
+SkOpSegment::findNextOp simple
+SkOpSegment::markDoneBinary id=3 (0,5 1,3 5,3 6,1) t=0.5 [1] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+SkOpSegment::markDoneBinary id=3 (0,5 1,3 5,3 6,1) t=0.5 [2] (3,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=3 from=(3,3) to=(6,1)
+path.moveTo(3,3);
+path.cubicTo(4.25,2.5, 5.5,2, 6,1);
+SkOpSegment::findNextOp SkOpSegment::debugShowSort contourWinding=1 oppContourWinding=0 sign=1
+SkOpSegment::debugShowSort [1] {{6,1}, {0,5}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+SkOpSegment::debugShowSort [2] {{3,5}, {1,6}, {5,0}, {3,1}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+SkOpSegment::debugShowSort [3] {{3,1}, {3,5}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+SkOpSegment::debugShowSort [4] {{0,5}, {1,3}, {5,3}, {6,1}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 0->-1 (max=-1) done=0 tiny=0 opp=0
+SkOpSegment::debugShowSort [5] {{6,1}, {0,5}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 -1->0 (max=-1) done=0 tiny=0 opp=0
+SkOpSegment::debugShowSort [6] {{3,5}, {1,6}, {5,0}, {3,1}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+SkOpSegment::debugShowSort [7] {{3,1}, {3,5}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+SkOpSegment::debugShowSort [0] {{0,5}, {1,3}, {5,3}, {6,1}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+SkOpSegment::findNextOp firstIndex=[1] sign=1
+SkOpSegment::activeOp op=union miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+SkOpSegment::activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=0 suTo=1 result=1
+SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
+SkOpSegment::activeOp op=union miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+SkOpSegment::activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=0 suTo=1 result=1
+SkOpSegment::markDoneBinary id=4 (6,1 0,5) t=0 [0] (6,1) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+SkOpSegment::findNextOp from:[4] to:[3] start=2 end=0
+bridgeOp current id=4 from=(6,1) to=(3,3)
+path.lineTo(3,3);
+path.close();
+SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 5,3 6,1) t=0 (0,5) tEnd=0.5 other=4 otherT=1 otherIndex=4 windSum=1 windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=2 otherT=0.5 otherIndex=3 windSum=1 windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=3 otherT=0.5 otherIndex=2 windSum=1 windValue=1 oppValue=0
+SkOpSegment::debugShowActiveSpans id=4 (6,1 0,5) t=0.5 (3,3) tEnd=1 other=1 otherT=0.5 otherIndex=1 windSum=1 windValue=1 oppValue=0
+SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
+SkOpSegment::findNextOp simple
+SkOpSegment::markDoneBinary id=3 (0,5 1,3 5,3 6,1) t=0 [0] (0,5) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=3 from=(3,3) to=(0,5)
+path.moveTo(3,3);
+path.cubicTo(1.75,3.5, 0.5,4, 0,5);
+SkOpSegment::findNextOp SkOpSegment::debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+SkOpSegment::debugShowSort [5] {{6,1}, {0,5}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+SkOpSegment::debugShowSort [6] {{3,5}, {1,6}, {5,0}, {3,1}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+SkOpSegment::debugShowSort [7] {{3,1}, {3,5}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+SkOpSegment::debugShowSort [0] {{0,5}, {1,3}, {5,3}, {6,1}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 1->2 (max=2) done=1 tiny=0 opp=0
+SkOpSegment::debugShowSort [1] {{6,1}, {0,5}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 2->1 (max=2) done=1 tiny=0 opp=0
+SkOpSegment::debugShowSort [2] {{3,5}, {1,6}, {5,0}, {3,1}} tStart=0.5 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+SkOpSegment::debugShowSort [3] {{3,1}, {3,5}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+SkOpSegment::debugShowSort [4] {{0,5}, {1,3}, {5,3}, {6,1}} tStart=0.5 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+SkOpSegment::findNextOp firstIndex=[5] sign=-1
+SkOpSegment::activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+SkOpSegment::activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=1 result=0
+SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=1 result=0
+SkOpSegment::activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+SkOpSegment::activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+SkOpSegment::activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
+SkOpSegment::markDoneBinary id=4 (6,1 0,5) t=0.5 [2] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+SkOpSegment::markDoneBinary id=4 (6,1 0,5) t=0.5 [1] (3,3) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+SkOpSegment::markDoneBinary id=4 (6,1 0,5) t=0.5 [3] (3,3) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+SkOpSegment::findNextOp from:[4] to:[3] start=2 end=0
+bridgeOp current id=4 from=(0,5) to=(3,3)
+path.lineTo(3,3);
+path.close();
+</div>
+
+<div id="cubicOp68u">
+ RunTestSet [cubicOp68u]
+{{0,5}, {4,5}, {4,1}, {5,0}},
+{{5,0}, {0,5}},
+op union
+{{1,4}, {0,5}, {5,0}, {5,4}},
+{{5,4}, {1,4}},
+debugShowCubicIntersection no self intersect {{0,5}, {4,5}, {4,1}, {5,0}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,5}, {4,5}, {4,1}, {5,0}} {{0,5}} wtTs[1]=1 {{5,0}} wnTs[0]=1 {{5,0}, {0,5}} wnTs[1]=0
+debugShowCubicIntersection wtTs[0]=0.565184359 {{0,5}, {4,5}, {4,1}, {5,0}} {{3.8517056846571536,2.4305708556260548}} wnTs[0]=0.684396 {{1,4}, {0,5}, {5,0}, {5,4}}
+debugShowCubicLineIntersection wtTs[0]=0.320104156 {{0,5}, {4,5}, {4,1}, {5,0}} {{2.7756498612431599,4.0000000000000018}} wnTs[0]=0.556088 {{5,4}, {1,4}}
+debugShowCubicLineIntersection wtTs[0]=0 {{1,4}, {0,5}, {5,0}, {5,4}} {{0.99999999999999978,4}} wnTs[0]=0.8 {{5,0}, {0,5}}
+debugShowLineIntersection no intersect {{5,0}, {0,5}} {{5,4}, {1,4}}
+debugShowCubicIntersection no self intersect {{1,4}, {0,5}, {5,0}, {5,4}}
+debugShowCubicLineIntersection wtTs[0]=0 {{1,4}, {0,5}, {5,0}, {5,4}} {{1,4}} wtTs[1]=0.2 {{1.0320000000000003,4.0000000000000009}} wtTs[2]=1 {{5,4}} wnTs[0]=1 {{5,4}, {1,4}} wnTs[1]=0.992 wnTs[2]=0
+debugShowActiveSpans id=1 (0,5 4,5 4,1 5,0) t=0 (0,5) tEnd=0.320104156 other=2 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 4,5 4,1 5,0) t=0.320104156 (2.77564979,4) tEnd=0.565184359 other=4 otherT=0.556087535 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 4,5 4,1 5,0) t=0.565184359 (3.85170579,2.43057084) tEnd=1 other=3 otherT=0.684395636 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,0 0,5) t=0 (5,0) tEnd=0.8 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,0 0,5) t=0.8 (1,4) tEnd=1 other=3 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,4 0,5 5,0 5,4) t=0 (1,4) tEnd=0.2 other=2 otherT=0.8 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,4 0,5 5,0 5,4) t=0 (1,4) tEnd=0.2 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,4 0,5 5,0 5,4) t=0.2 (1.03199995,4) tEnd=0.684395636 other=4 otherT=0.992 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,4 0,5 5,0 5,4) t=0.684395636 (3.85170579,2.43057084) tEnd=1 other=1 otherT=0.565184359 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,4 1,4) t=0 (5,4) tEnd=0.556087535 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,4 1,4) t=0.556087535 (2.77564979,4) tEnd=0.992 other=1 otherT=0.320104156 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,4 1,4) t=0.992 (1.03199995,4) tEnd=1 other=3 otherT=0.2 otherIndex=2 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{5,0}, {0,5}} tStart=0 tEnd=0.8 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=1 tEnd=0.565184359 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+markWinding id=2 (5,0 0,5) t=0 [0] (5,0) tEnd=0.8 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,5 4,5 4,1 5,0) t=0.565184359 [2] (3.85170579,2.43057084) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (5,0 0,5) t=0 [0] (5,0) tEnd=0.8 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+findNextOp simple
+markDoneBinary id=2 (5,0 0,5) t=0 [0] (5,0) tEnd=0.8 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=2 from=(1,4) to=(5,0)
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [1] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=0.565184359 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{1,4}, {0,5}, {5,0}, {5,4}} tStart=0.684395636 tEnd=0.2 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [3] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=0.565184359 tEnd=0.320104156 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{1,4}, {0,5}, {5,0}, {5,4}} tStart=0.684395636 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=-1
+activeOp op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0
+markDoneBinary id=3 (1,4 0,5 5,0 5,4) t=0.2 [2] (1.03199995,4) tEnd=0.684395636 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,5 4,5 4,1 5,0) t=0.320104156 [1] (2.77564979,4) tEnd=0.565184359 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
+markWinding id=3 (1,4 0,5 5,0 5,4) t=0.684395636 [3] (3.85170579,2.43057084) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (5,4 1,4) t=0 [0] (5,4) tEnd=0.556087535 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+markDoneBinary id=1 (0,5 4,5 4,1 5,0) t=0.565184359 [2] (3.85170579,2.43057084) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[1] to:[3] start=3 end=4
+bridgeOp current id=1 from=(5,0) to=(3.85170579,2.43057084)
+path.moveTo(1,4);
+path.lineTo(5,0);
+path.cubicTo(4.56518459,0.434815645, 4.31943321,1.43682528, 3.85170579,2.43057084);
+findNextOp simple
+markDoneBinary id=3 (1,4 0,5 5,0 5,4) t=0.684395636 [3] (3.85170579,2.43057084) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+bridgeOp current id=3 from=(3.85170579,2.43057084) to=(5,4)
+path.cubicTo(4.50196934,2.37162018, 5,2.73758245, 5,4);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [3] {{5,4}, {1,4}} tStart=0.556087535 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=0.320104156 tEnd=0.565184359 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+debugShowSort [1] {{5,4}, {1,4}} tStart=0.556087535 tEnd=0.992 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=0.320104156 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=1
+activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+activeOp op=union miFrom=1 miTo=1 suFrom=1 suTo=0 result=0
+markDoneBinary id=4 (5,4 1,4) t=0.556087535 [1] (2.77564979,4) tEnd=0.992 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+markWinding id=1 (0,5 4,5 4,1 5,0) t=0 [0] (0,5) tEnd=0.320104156 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (5,0 0,5) t=0.8 [1] (1,4) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+markDoneBinary id=4 (5,4 1,4) t=0 [0] (5,4) tEnd=0.556087535 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[4] to:[1] start=1 end=0
+bridgeOp current id=4 from=(5,4) to=(2.77564979,4)
+findNextOp simple
+markDoneBinary id=1 (0,5 4,5 4,1 5,0) t=0 [0] (0,5) tEnd=0.320104156 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=1 from=(2.77564979,4) to=(0,5)
+path.lineTo(2.77564979,4);
+path.cubicTo(2.15096664,4.59013319, 1.28041661,5, 0,5);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [1] {{5,0}, {0,5}} tStart=0.8 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{1,4}, {0,5}, {5,0}, {5,4}} tStart=0 tEnd=0.2 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [0] {{5,0}, {0,5}} tStart=0.8 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+findNextOp firstIndex=[1] sign=-1
+activeOp op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0
+markDoneBinary id=3 (1,4 0,5 5,0 5,4) t=0 [0] (1,4) tEnd=0 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+markDoneBinary id=3 (1,4 0,5 5,0 5,4) t=0 [1] (1,4) tEnd=0.2 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=2 (5,0 0,5) t=0.8 [1] (1,4) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+../../src/pathops/SkPathOpsOp.cpp:183: failed assertion "unsortable"
+</div>
+
+<div id="cubicOp68ua">
+ RunTestSet [cubicOp68u]
+{{0,5}, {4,5}, {4,1}, {5,0}},
+{{5,0}, {0,5}},
+op union
+{{1,4}, {0,5}, {5,0}, {5,4}},
+{{5,4}, {1,4}},
+debugShowCubicIntersection no self intersect {{0,5}, {4,5}, {4,1}, {5,0}}
+debugShowCubicLineIntersection wtTs[0]=0 {{0,5}, {4,5}, {4,1}, {5,0}} {{0,5}} wtTs[1]=1 {{5,0}} wnTs[0]=1 {{5,0}, {0,5}} wnTs[1]=0
+debugShowCubicIntersection wtTs[0]=0.565184359 {{0,5}, {4,5}, {4,1}, {5,0}} {{3.851705684657154,2.4305708556260521}} wnTs[0]=0.684396 {{1,4}, {0,5}, {5,0}, {5,4}}
+debugShowCubicLineIntersection wtTs[0]=0.320104156 {{0,5}, {4,5}, {4,1}, {5,0}} {{2.7756498612431599,4.0000000000000018}} wnTs[0]=0.556088 {{5,4}, {1,4}}
+debugShowCubicLineIntersection wtTs[0]=0 {{1,4}, {0,5}, {5,0}, {5,4}} {{0.99999999999999978,4}} wnTs[0]=0.8 {{5,0}, {0,5}}
+debugShowLineIntersection wtTs[0]=0.8 {{5,0}, {0,5}} {{0.99999999999999978,4}} wnTs[0]=1 {{5,4}, {1,4}}
+debugShowCubicIntersection no self intersect {{1,4}, {0,5}, {5,0}, {5,4}}
+debugShowCubicLineIntersection wtTs[0]=0 {{1,4}, {0,5}, {5,0}, {5,4}} {{1,4}} wtTs[1]=0.2 {{1.0320000000000003,4.0000000000000009}} wtTs[2]=1 {{5,4}} wnTs[0]=1 {{5,4}, {1,4}} wnTs[1]=0.992 wnTs[2]=0
+debugShowActiveSpans id=1 (0,5 4,5 4,1 5,0) t=0 (0,5) tEnd=0.320104156 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 4,5 4,1 5,0) t=0.320104156 (2.77564979,4) tEnd=0.565184359 other=4 otherT=0.556087535 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,5 4,5 4,1 5,0) t=0.565184359 (3.85170579,2.43057084) tEnd=1 other=3 otherT=0.684395636 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,0 0,5) t=0 (5,0) tEnd=0.8 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,0 0,5) t=0.8 (1,4) tEnd=1 other=3 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (5,0 0,5) t=0.8 (1,4) tEnd=1 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,4 0,5 5,0 5,4) t=0 (1,4) tEnd=0.2 other=2 otherT=0.8 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,4 0,5 5,0 5,4) t=0 (1,4) tEnd=0.2 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,4 0,5 5,0 5,4) t=0.2 (1.03199995,4) tEnd=0.684395636 other=4 otherT=0.992 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,4 0,5 5,0 5,4) t=0.684395636 (3.85170579,2.43057084) tEnd=1 other=1 otherT=0.565184359 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,4 1,4) t=0 (5,4) tEnd=0.556087535 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,4 1,4) t=0.556087535 (2.77564979,4) tEnd=0.992 other=1 otherT=0.320104156 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (5,4 1,4) t=0.992 (1.03199995,4) tEnd=1 other=3 otherT=0.2 otherIndex=2 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{5,0}, {0,5}} tStart=0 tEnd=0.8 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=1 tEnd=0.565184359 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+markWinding id=2 (5,0 0,5) t=0 [0] (5,0) tEnd=0.8 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (0,5 4,5 4,1 5,0) t=0.565184359 [2] (3.85170579,2.43057084) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (5,0 0,5) t=0 [0] (5,0) tEnd=0.8 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+findNextOp simple
+markDoneBinary id=2 (5,0 0,5) t=0 [0] (5,0) tEnd=0.8 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=2 from=(1,4) to=(5,0)
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [1] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=0.565184359 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{1,4}, {0,5}, {5,0}, {5,4}} tStart=0.684395636 tEnd=0.2 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [3] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=0.565184359 tEnd=0.320104156 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{1,4}, {0,5}, {5,0}, {5,4}} tStart=0.684395636 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=-1
+activeOp op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0
+markDoneBinary id=3 (1,4 0,5 5,0 5,4) t=0.2 [2] (1.03199995,4) tEnd=0.684395636 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=union miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (0,5 4,5 4,1 5,0) t=0.320104156 [1] (2.77564979,4) tEnd=0.565184359 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=union miFrom=0 miTo=0 suFrom=1 suTo=0 result=1
+markWinding id=3 (1,4 0,5 5,0 5,4) t=0.684395636 [3] (3.85170579,2.43057084) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (5,4 1,4) t=0 [0] (5,4) tEnd=0.556087535 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+markDoneBinary id=1 (0,5 4,5 4,1 5,0) t=0.565184359 [2] (3.85170579,2.43057084) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[1] to:[3] start=3 end=4
+bridgeOp current id=1 from=(5,0) to=(3.85170579,2.43057084)
+path.moveTo(1,4);
+path.lineTo(5,0);
+path.cubicTo(4.56518459,0.434815645, 4.31943321,1.43682528, 3.85170579,2.43057084);
+findNextOp simple
+markDoneBinary id=3 (1,4 0,5 5,0 5,4) t=0.684395636 [3] (3.85170579,2.43057084) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+bridgeOp current id=3 from=(3.85170579,2.43057084) to=(5,4)
+path.cubicTo(4.50196934,2.37162018, 5,2.73758245, 5,4);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=1
+debugShowSort [3] {{5,4}, {1,4}} tStart=0.556087535 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=0.320104156 tEnd=0.565184359 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+debugShowSort [1] {{5,4}, {1,4}} tStart=0.556087535 tEnd=0.992 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,5}, {4,5}, {4,1}, {5,0}} tStart=0.320104156 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=1
+activeOp op=union miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+activeOp op=union miFrom=1 miTo=1 suFrom=1 suTo=0 result=0
+markDoneBinary id=4 (5,4 1,4) t=0.556087535 [1] (2.77564979,4) tEnd=0.992 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+markWinding id=1 (0,5 4,5 4,1 5,0) t=0 [0] (0,5) tEnd=0.320104156 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (5,0 0,5) t=0.8 [1] (1,4) tEnd=0.8 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (5,0 0,5) t=0.8 [2] (1,4) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+markDoneBinary id=4 (5,4 1,4) t=0 [0] (5,4) tEnd=0.556087535 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[4] to:[1] start=1 end=0
+bridgeOp current id=4 from=(5,4) to=(2.77564979,4)
+findNextOp simple
+markDoneBinary id=1 (0,5 4,5 4,1 5,0) t=0 [0] (0,5) tEnd=0.320104156 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=1 from=(2.77564979,4) to=(0,5)
+path.lineTo(2.77564979,4);
+path.cubicTo(2.15096664,4.59013319, 1.28041661,5, 0,5);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [1] {{5,0}, {0,5}} tStart=0.8 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{1,4}, {0,5}, {5,0}, {5,4}} tStart=0 tEnd=0.2 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [3] {{5,4}, {1,4}} tStart=1 tEnd=0.992 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+debugShowSort [0] {{5,0}, {0,5}} tStart=0.8 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+findNextOp firstIndex=[1] sign=-1
+activeOp op=union miFrom=1 miTo=1 suFrom=0 suTo=1 result=0
+markDoneBinary id=3 (1,4 0,5 5,0 5,4) t=0 [0] (1,4) tEnd=0 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+markDoneBinary id=3 (1,4 0,5 5,0 5,4) t=0 [1] (1,4) tEnd=0.2 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=union miFrom=1 miTo=1 suFrom=1 suTo=0 result=0
+markDoneBinary id=4 (5,4 1,4) t=0.992 [2] (1.03199995,4) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=union miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+markDoneBinary id=2 (5,0 0,5) t=0.8 [1] (1,4) tEnd=0.8 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markDoneBinary id=2 (5,0 0,5) t=0.8 [2] (1,4) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[2] to:[2] start=2 end=0
+bridgeOp current id=2 from=(0,5) to=(1,4)
+path.lineTo(1,4);
+path.close();
+</div>
+
+<div id="cubicOp69d">
+ RunTestSet [cubicOp69d]
+{{1,3}, {0,1}, {3,1}, {2,0}},
+{{2,0}, {1,3}},
+op difference
+{{1,3}, {0,2}, {3,1}, {1,0}},
+{{1,0}, {1,3}},
+debugShowCubicIntersection no self intersect {{1,3}, {0,2}, {3,1}, {1,0}}
+debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {0,2}, {3,1}, {1,0}} {{1,3}} wtTs[1]=0.333333333 {{1.0000000000000002,2.0000000000000004}} wtTs[2]=1 {{1,0}} wnTs[0]=1 {{1,0}, {1,3}} wnTs[1]=0.666666667 wnTs[2]=0
+debugShowCubicIntersection wtTs[0]=0 {{1,3}, {0,2}, {3,1}, {1,0}} {{1,3}} wtTs[1]=0.195806707 {{0.80509754536484868,2.412579877819526}} wtTs[2]=0.665291365 {{1.6652800396786596,1.0041259050152926}} wnTs[0]=0 {{1,3}, {0,1}, {3,1}, {2,0}} wnTs[1]=0.109171117 wnTs[2]=0.555550487
+debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {0,2}, {3,1}, {1,0}} {{1,3}} wtTs[1]=0.666666667 {{1.6666666666666665,1.0000000000000002}} wnTs[0]=1 {{2,0}, {1,3}} wnTs[1]=0.333333333
+debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {0,1}, {3,1}, {2,0}} {{1,3}} wtTs[1]=0.316987298 {{1,1.6054083424670758}} wnTs[0]=1 {{1,0}, {1,3}} wnTs[1]=0.535136114
+debugShowLineIntersection wtTs[0]=1 {{1,0}, {1,3}} {{1,3}} wnTs[0]=1 {{2,0}, {1,3}}
+debugShowCubicIntersection no self intersect {{1,3}, {0,1}, {3,1}, {2,0}}
+debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {0,1}, {3,1}, {2,0}} {{1,3}} wtTs[1]=0.555555556 {{1.6652949245541837,1.0041152263374487}} wtTs[2]=1 {{2,0}} wnTs[0]=1 {{2,0}, {1,3}} wnTs[1]=0.334705075 wnTs[2]=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=1 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.195806707 (0.80509752,2.41257977) tEnd=0.333333333 other=1 otherT=0.109171117 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.333333333 (1,2) tEnd=0.665291365 other=4 otherT=0.666666667 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.665291365 (1.66527998,1.00412595) tEnd=0.666666667 other=1 otherT=0.555550487 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.666666667 (1.66666663,1) tEnd=1 other=2 otherT=0.333333333 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (1,0 1,3) t=0 (1,0) tEnd=0.535136114 other=3 otherT=1 otherIndex=7 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (1,0 1,3) t=0.535136114 (1,1.60540831) tEnd=0.666666667 other=1 otherT=0.316987298 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (1,0 1,3) t=0.666666667 (1,2) tEnd=1 other=3 otherT=0.333333333 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=3 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=2 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.109171117 (0.80509752,2.41257977) tEnd=0.316987298 other=3 otherT=0.195806707 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.316987298 (1,1.60540831) tEnd=0.555550487 other=4 otherT=0.535136114 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555550487 (1.66527998,1.00412595) tEnd=0.555555556 other=3 otherT=0.665291365 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555555556 (1.66529489,1.00411522) tEnd=1 other=2 otherT=0.334705075 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,0 1,3) t=0 (2,0) tEnd=0.333333333 other=1 otherT=1 otherIndex=7 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,0 1,3) t=0.333333333 (1.66666663,1) tEnd=0.334705075 other=3 otherT=0.666666667 otherIndex=6 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,0 1,3) t=0.334705075 (1.66529489,1.00411522) tEnd=1 other=1 otherT=0.555555556 otherIndex=6 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{1,0}, {1,3}} tStart=0 tEnd=0.535136114 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=1 tEnd=0.666666667 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+markWinding id=4 (1,0 1,3) t=0 [0] (1,0) tEnd=0.535136114 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (1,3 0,2 3,1 1,0) t=0.666666667 [6] (1.66666663,1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (1,0 1,3) t=0 [0] (1,0) tEnd=0.535136114 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=4 (1,0 1,3) t=0 [0] (1,0) tEnd=0.535136114 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markDoneBinary id=3 (1,3 0,2 3,1 1,0) t=0.666666667 [6] (1.66666663,1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+</div>
+
+<div id="cubicOp69da">
+ RunTestSet [cubicOp69da]
+{{1,3}, {0,1}, {3,1}, {2,0}},
+{{2,0}, {1,3}},
+op difference
+{{1,3}, {0,2}, {3,1}, {1,0}},
+{{1,0}, {1,3}},
+debugShowCubicIntersection no self intersect {{1,3}, {0,2}, {3,1}, {1,0}}
+debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {0,2}, {3,1}, {1,0}} {{1,3}} wtTs[1]=0.333333333 {{1,2.0000000000000004}} wtTs[2]=1 {{1,0}} wnTs[0]=1 {{1,0}, {1,3}} wnTs[1]=0.666666667 wnTs[2]=0
+debugShowCubicIntersection wtTs[0]=0 {{1,3}, {0,2}, {3,1}, {1,0}} {{1,3}} wtTs[1]=0.195806707 {{0.80509754536484845,2.4125798778195251}} wtTs[2]=0.665291365 {{1.6652800396786593,1.0041259050152929}} wnTs[0]=0 {{1,3}, {0,1}, {3,1}, {2,0}} wnTs[1]=0.109171117 wnTs[2]=0.555550487
+debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {0,2}, {3,1}, {1,0}} {{1,3}} wtTs[1]=0.666666667 {{1.6666666666666667,1}} wnTs[0]=1 {{2,0}, {1,3}} wnTs[1]=0.333333333
+debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {0,1}, {3,1}, {2,0}} {{1,3}} wtTs[1]=0.316987298 {{1,1.6054083424670758}} wnTs[0]=1 {{1,0}, {1,3}} wnTs[1]=0.535136114
+debugShowLineIntersection wtTs[0]=1 {{1,0}, {1,3}} {{1,3}} wnTs[0]=1 {{2,0}, {1,3}}
+debugShowCubicIntersection no self intersect {{1,3}, {0,1}, {3,1}, {2,0}}
+debugShowCubicLineIntersection wtTs[0]=0 {{1,3}, {0,1}, {3,1}, {2,0}} {{1,3}} wtTs[1]=0.555555556 {{1.6652949245541839,1.0041152263374484}} wtTs[2]=1 {{2,0}} wnTs[0]=1 {{2,0}, {1,3}} wnTs[1]=0.334705075 wnTs[2]=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=1 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.195806707 (0.80509752,2.41257977) tEnd=0.333333333 other=1 otherT=0.109171117 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.333333333 (1,2) tEnd=0.665291365 other=4 otherT=0.666666667 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.665291365 (1.66527998,1.00412595) tEnd=0.666666667 other=1 otherT=0.555550487 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.666666667 (1.66666663,1) tEnd=1 other=2 otherT=0.333333333 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (1,0 1,3) t=0 (1,0) tEnd=0.535136114 other=3 otherT=1 otherIndex=7 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (1,0 1,3) t=0.535136114 (1,1.60540831) tEnd=0.666666667 other=1 otherT=0.316987298 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (1,0 1,3) t=0.666666667 (1,2) tEnd=1 other=3 otherT=0.333333333 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=3 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=2 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.109171117 (0.80509752,2.41257977) tEnd=0.316987298 other=3 otherT=0.195806707 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.316987298 (1,1.60540831) tEnd=0.555550487 other=4 otherT=0.535136114 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555550487 (1.66527998,1.00412595) tEnd=0.555555556 other=3 otherT=0.665291365 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555555556 (1.66529489,1.00411522) tEnd=1 other=2 otherT=0.334705075 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,0 1,3) t=0 (2,0) tEnd=0.333333333 other=1 otherT=1 otherIndex=7 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,0 1,3) t=0.333333333 (1.66666663,1) tEnd=0.334705075 other=3 otherT=0.666666667 otherIndex=6 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,0 1,3) t=0.334705075 (1.66529489,1.00411522) tEnd=1 other=1 otherT=0.555555556 otherIndex=6 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{1,0}, {1,3}} tStart=0 tEnd=0.535136114 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=1 tEnd=0.666666667 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+markWinding id=4 (1,0 1,3) t=0 [0] (1,0) tEnd=0.535136114 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=3 (1,3 0,2 3,1 1,0) t=0.666666667 [6] (1.66666663,1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (1,0 1,3) t=0 [0] (1,0) tEnd=0.535136114 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=4 (1,0 1,3) t=0 [0] (1,0) tEnd=0.535136114 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markDoneBinary id=3 (1,3 0,2 3,1 1,0) t=0.666666667 [6] (1.66666663,1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=1
+debugShowSort [0] {{2,0}, {1,3}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [1] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.666666667 tEnd=1 sign=-1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=1
+debugShowSort [2] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.666666667 tEnd=0.665291365 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
+debugShowSort [3] {{2,0}, {1,3}} tStart=0.333333333 tEnd=0.334705075 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [1] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.666666667 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.666666667 tEnd=0.665291365 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [3] {{2,0}, {1,3}} tStart=0.333333333 tEnd=0.334705075 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+debugShowSort [0] {{2,0}, {1,3}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=1
+markWinding id=3 (1,3 0,2 3,1 1,0) t=0.665291365 [5] (1.66527998,1.00412595) tEnd=0.666666667 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (2,0 1,3) t=0.333333333 [1] (1.66666663,1) tEnd=0.334705075 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=2 (2,0 1,3) t=0 [0] (2,0) tEnd=0.333333333 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=1 (1,3 0,1 3,1 2,0) t=0.555555556 [6] (1.66529489,1.00411522) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=1 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.195806707 (0.80509752,2.41257977) tEnd=0.333333333 other=1 otherT=0.109171117 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.333333333 (1,2) tEnd=0.665291365 other=4 otherT=0.666666667 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.665291365 (1.66527998,1.00412595) tEnd=0.666666667 other=1 otherT=0.555550487 otherIndex=5 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (1,0 1,3) t=0.535136114 (1,1.60540831) tEnd=0.666666667 other=1 otherT=0.316987298 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (1,0 1,3) t=0.666666667 (1,2) tEnd=1 other=3 otherT=0.333333333 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=3 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=2 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.109171117 (0.80509752,2.41257977) tEnd=0.316987298 other=3 otherT=0.195806707 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.316987298 (1,1.60540831) tEnd=0.555550487 other=4 otherT=0.535136114 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555550487 (1.66527998,1.00412595) tEnd=0.555555556 other=3 otherT=0.665291365 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555555556 (1.66529489,1.00411522) tEnd=1 other=2 otherT=0.334705075 otherIndex=2 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,0 1,3) t=0 (2,0) tEnd=0.333333333 other=1 otherT=1 otherIndex=7 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,0 1,3) t=0.333333333 (1.66666663,1) tEnd=0.334705075 other=3 otherT=0.666666667 otherIndex=6 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,0 1,3) t=0.334705075 (1.66529489,1.00411522) tEnd=1 other=1 otherT=0.555555556 otherIndex=6 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+markDoneBinary id=3 (1,3 0,2 3,1 1,0) t=0.665291365 [5] (1.66527998,1.00412595) tEnd=0.666666667 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findChaseOp debugShowSort contourWinding=? oppContourWinding=? sign=-1
+debugShowSort [0] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555550487 tEnd=0.555555556 sign=-1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [1] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.665291365 tEnd=0.666666667 sign=-1 windValue=1 windSum=1 ?->? (max=?) done=1 tiny=0 opp=1
+debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555550487 tEnd=0.316987298 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=0
+debugShowSort [3] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.665291365 tEnd=0.333333333 sign=1 windValue=1 windSum=? ?->? (max=?) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [1] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.665291365 tEnd=0.666666667 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555550487 tEnd=0.316987298 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [3] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.665291365 tEnd=0.333333333 sign=1 windValue=1 windSum=? 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555550487 tEnd=0.555555556 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+markWinding id=1 (1,3 0,1 3,1 2,0) t=0.316987298 [4] (1,1.60540831) tEnd=0.555550487 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1
+markWinding id=3 (1,3 0,2 3,1 1,0) t=0.333333333 [4] (1,2) tEnd=0.665291365 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markWinding id=1 (1,3 0,1 3,1 2,0) t=0.555550487 [5] (1.66527998,1.00412595) tEnd=0.555555556 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=1 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.195806707 (0.80509752,2.41257977) tEnd=0.333333333 other=1 otherT=0.109171117 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.333333333 (1,2) tEnd=0.665291365 other=4 otherT=0.666666667 otherIndex=2 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (1,0 1,3) t=0.535136114 (1,1.60540831) tEnd=0.666666667 other=1 otherT=0.316987298 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (1,0 1,3) t=0.666666667 (1,2) tEnd=1 other=3 otherT=0.333333333 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=3 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=2 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.109171117 (0.80509752,2.41257977) tEnd=0.316987298 other=3 otherT=0.195806707 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.316987298 (1,1.60540831) tEnd=0.555550487 other=4 otherT=0.535136114 otherIndex=1 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555550487 (1.66527998,1.00412595) tEnd=0.555555556 other=3 otherT=0.665291365 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555555556 (1.66529489,1.00411522) tEnd=1 other=2 otherT=0.334705075 otherIndex=2 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,0 1,3) t=0 (2,0) tEnd=0.333333333 other=1 otherT=1 otherIndex=7 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,0 1,3) t=0.333333333 (1.66666663,1) tEnd=0.334705075 other=3 otherT=0.666666667 otherIndex=6 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,0 1,3) t=0.334705075 (1.66529489,1.00411522) tEnd=1 other=1 otherT=0.555555556 otherIndex=6 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (1,3 0,1 3,1 2,0) t=0.316987298 [4] (1,1.60540831) tEnd=0.555550487 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1
+findChaseOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
+debugShowSort [0] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.316987298 tEnd=0.555550487 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{1,0}, {1,3}} tStart=0.535136114 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.316987298 tEnd=0.109171117 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{1,0}, {1,3}} tStart=0.535136114 tEnd=0.666666667 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+findChaseOp debugShowSort contourWinding=-1 oppContourWinding=1 sign=-1
+debugShowSort [0] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.316987298 tEnd=0.555550487 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [1] {{1,0}, {1,3}} tStart=0.535136114 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.316987298 tEnd=0.109171117 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{1,0}, {1,3}} tStart=0.535136114 tEnd=0.666666667 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=1
+markWinding id=1 (1,3 0,1 3,1 2,0) t=0.109171117 [3] (0.80509752,2.41257977) tEnd=0.316987298 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (1,0 1,3) t=0.535136114 [1] (1,1.60540831) tEnd=0.666666667 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=1 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0 (1,3) tEnd=0.195806707 other=2 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.195806707 (0.80509752,2.41257977) tEnd=0.333333333 other=1 otherT=0.109171117 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (1,3 0,2 3,1 1,0) t=0.333333333 (1,2) tEnd=0.665291365 other=4 otherT=0.666666667 otherIndex=2 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (1,0 1,3) t=0.535136114 (1,1.60540831) tEnd=0.666666667 other=1 otherT=0.316987298 otherIndex=4 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=4 (1,0 1,3) t=0.666666667 (1,2) tEnd=1 other=3 otherT=0.333333333 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=3 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=4 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0 (1,3) tEnd=0.109171117 other=2 otherT=1 otherIndex=5 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.109171117 (0.80509752,2.41257977) tEnd=0.316987298 other=3 otherT=0.195806707 otherIndex=3 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555550487 (1.66527998,1.00412595) tEnd=0.555555556 other=3 otherT=0.665291365 otherIndex=5 windSum=-1 windValue=1 oppValue=0
+debugShowActiveSpans id=1 (1,3 0,1 3,1 2,0) t=0.555555556 (1.66529489,1.00411522) tEnd=1 other=2 otherT=0.334705075 otherIndex=2 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,0 1,3) t=0 (2,0) tEnd=0.333333333 other=1 otherT=1 otherIndex=7 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,0 1,3) t=0.333333333 (1.66666663,1) tEnd=0.334705075 other=3 otherT=0.666666667 otherIndex=6 windSum=1 windValue=1 oppValue=0
+debugShowActiveSpans id=2 (2,0 1,3) t=0.334705075 (1.66529489,1.00411522) tEnd=1 other=1 otherT=0.555555556 otherIndex=6 windSum=? windValue=1 oppValue=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [1] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.109171117 tEnd=0.316987298 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.195806707 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+debugShowSort [3] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.109171117 tEnd=0 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.195806707 tEnd=0.333333333 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=-1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+markDoneBinary id=3 (1,3 0,2 3,1 1,0) t=0 [1] (1,3) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markDoneBinary id=3 (1,3 0,2 3,1 1,0) t=0 [0] (1,3) tEnd=0 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+markDoneBinary id=3 (1,3 0,2 3,1 1,0) t=0 [2] (1,3) tEnd=0.195806707 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+markDoneBinary id=1 (1,3 0,1 3,1 2,0) t=0 [1] (1,3) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markDoneBinary id=1 (1,3 0,1 3,1 2,0) t=0 [0] (1,3) tEnd=0 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+markDoneBinary id=1 (1,3 0,1 3,1 2,0) t=0 [2] (1,3) tEnd=0.109171117 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markWinding id=3 (1,3 0,2 3,1 1,0) t=0.195806707 [3] (0.80509752,2.41257977) tEnd=0.333333333 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=3
+markDoneBinary id=1 (1,3 0,1 3,1 2,0) t=0.109171117 [3] (0.80509752,2.41257977) tEnd=0.316987298 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[1] to:[3] start=3 end=4
+bridgeOp current id=1 from=(1,1.60540831) to=(0.80509752,2.41257977)
+path.moveTo(1,1.60540831);
+path.cubicTo(0.847867966,1.82018507, 0.758966982,2.08026719, 0.80509752,2.41257977);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=-1 sign=1
+debugShowSort [2] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.333333333 tEnd=0.195806707 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{1,0}, {1,3}} tStart=0.666666667 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.333333333 tEnd=0.665291365 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{1,0}, {1,3}} tStart=0.666666667 tEnd=0.535136114 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[2] sign=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markWinding id=4 (1,0 1,3) t=0.666666667 [2] (1,2) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=4
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markDoneBinary id=3 (1,3 0,2 3,1 1,0) t=0.195806707 [3] (0.80509752,2.41257977) tEnd=0.333333333 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
+findNextOp from:[3] to:[4] start=2 end=3
+bridgeOp current id=3 from=(0.80509752,2.41257977) to=(1,2)
+path.cubicTo(0.835544765,2.27505326, 0.908315599,2.13752651, 1,2);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=-1 sign=1
+debugShowSort [1] {{1,0}, {1,3}} tStart=1 tEnd=0.666666667 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0 tEnd=0.109171117 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+debugShowSort [3] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0 tEnd=0.195806707 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [0] {{2,0}, {1,3}} tStart=1 tEnd=0.334705075 sign=1 windValue=1 windSum=? 0->-1 (max=-1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[1] sign=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markWinding id=2 (2,0 1,3) t=0.334705075 [2] (1.66529489,1.00411522) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextOp chase.append id=2
+markDoneBinary id=4 (1,0 1,3) t=0.666666667 [2] (1,2) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1
+findNextOp from:[4] to:[2] start=4 end=2
+bridgeOp current id=4 from=(1,2) to=(1,3)
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [3] {{2,0}, {1,3}} tStart=0.334705075 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555555556 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{2,0}, {1,3}} tStart=0.334705075 tEnd=0.333333333 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555555556 tEnd=0.555550487 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[3] sign=-1
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=2 (2,0 1,3) t=0.334705075 [2] (1.66529489,1.00411522) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[2] to:[1] start=6 end=7
+bridgeOp current id=2 from=(1,3) to=(1.66529489,1.00411522)
+path.lineTo(1,3);
+findNextOp simple
+markDoneBinary id=1 (1,3 0,1 3,1 2,0) t=0.555555556 [6] (1.66529489,1.00411522) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+bridgeOp current id=1 from=(1.66529489,1.00411522) to=(2,0)
+path.lineTo(1.66529489,1.00411522);
+path.cubicTo(2.09876537,0.69135803, 2.44444442,0.444444448, 2,0);
+findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
+debugShowSort [0] {{2,0}, {1,3}} tStart=0.333333333 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.666666667 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+debugShowSort [2] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.666666667 tEnd=0.665291365 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=1
+debugShowSort [3] {{2,0}, {1,3}} tStart=0.333333333 tEnd=0.334705075 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+findNextOp firstIndex=[0] sign=1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=2 (2,0 1,3) t=0 [0] (2,0) tEnd=0.333333333 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[2] to:[2] start=1 end=2
+bridgeOp current id=2 from=(2,0) to=(1.66666663,1)
+findNextOp debugShowSort contourWinding=1 oppContourWinding=0 sign=1
+debugShowSort [1] {{2,0}, {1,3}} tStart=0.334705075 tEnd=0.333333333 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555555556 tEnd=0.555550487 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [3] {{2,0}, {1,3}} tStart=0.334705075 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [0] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555555556 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=0
+findNextOp firstIndex=[1] sign=1
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=2 (2,0 1,3) t=0.333333333 [1] (1.66666663,1) tEnd=0.334705075 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+findNextOp from:[2] to:[1] start=6 end=5
+bridgeOp current id=2 from=(1.66666663,1) to=(1.66529489,1.00411522)
+path.lineTo(1.66666663,1);
+findNextOp debugShowSort contourWinding=-1 oppContourWinding=0 sign=-1
+debugShowSort [0] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555550487 tEnd=0.555555556 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [1] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.665291365 tEnd=0.666666667 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=1 tiny=0 opp=1
+debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.555550487 tEnd=0.316987298 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [3] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.665291365 tEnd=0.333333333 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=1
+findNextOp firstIndex=[0] sign=-1
+activeOp op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markDoneBinary id=1 (1,3 0,1 3,1 2,0) t=0.555550487 [5] (1.66527998,1.00412595) tEnd=0.555555556 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1
+findNextOp from:[1] to:[3] start=5 end=4
+bridgeOp current id=1 from=(1.66529489,1.00411522) to=(1.66527998,1.00412595)
+path.lineTo(1.66529489,1.00411522);
+path.cubicTo(1.66529,1.0041188, 1.66528511,1.00412238, 1.66527998,1.00412595);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=-1 sign=-1
+debugShowSort [0] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.333333333 tEnd=0.665291365 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{1,0}, {1,3}} tStart=0.666666667 tEnd=0.535136114 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{1,3}, {0,2}, {3,1}, {1,0}} tStart=0.333333333 tEnd=0.195806707 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=0
+debugShowSort [3] {{1,0}, {1,3}} tStart=0.666666667 tEnd=1 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=0
+findNextOp firstIndex=[0] sign=-1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
+activeOp op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
+markDoneBinary id=3 (1,3 0,2 3,1 1,0) t=0.333333333 [4] (1,2) tEnd=0.665291365 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+findNextOp from:[3] to:[4] start=2 end=1
+bridgeOp current id=3 from=(1.66527998,1.00412595) to=(1,2)
+path.cubicTo(1.55280685,1.33608389, 1.22130537,1.66804194, 1,2);
+findNextOp debugShowSort contourWinding=0 oppContourWinding=-1 sign=-1
+debugShowSort [3] {{1,0}, {1,3}} tStart=0.535136114 tEnd=0.666666667 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [0] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.316987298 tEnd=0.555550487 sign=-1 windValue=1 windSum=-1 -1->0 (max=-1) done=1 tiny=0 opp=1
+debugShowSort [1] {{1,0}, {1,3}} tStart=0.535136114 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=1 tiny=0 opp=0
+debugShowSort [2] {{1,3}, {0,1}, {3,1}, {2,0}} tStart=0.316987298 tEnd=0.109171117 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=1 tiny=0 opp=1
+findNextOp firstIndex=[3] sign=-1
+activeOp op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
+activeOp op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
+activeOp op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
+markDoneBinary id=4 (1,0 1,3) t=0.535136114 [1] (1,1.60540831) tEnd=0.666666667 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1
+findNextOp from:[4] to:[1] start=4 end=3
+bridgeOp current id=4 from=(1,2) to=(1,1.60540831)
+path.lineTo(1,1.60540831);
+path.close();
+</div>
+
+<div id="testTriangles1">
+ RunTestSet [testTriangles1]
+{{0,0}, {1,0}},
+{{1,0}, {3,3}},
+{{3,3}, {0,0}},
+{{0,0}, {1,2}},
+{{1,2}, {1,1}},
+{{1,1}, {0,0}},
+debugShowLineIntersection wtTs[0]=0 {{0,0}, {1,0}} {{1,0}} wnTs[0]=1 {{1,0}, {3,3}}
+debugShowLineIntersection wtTs[0]=1 {{0,0}, {1,0}} {{0,0}} wnTs[0]=0 {{3,3}, {0,0}}
+debugShowLineIntersection wtTs[0]=1 {{1,0}, {3,3}} {{3,3}} wnTs[0]=0 {{3,3}, {0,0}}
+debugShowLineIntersection wtTs[0]=0 {{0,0}, {1,0}} {{0,0}} wnTs[0]=0 {{0,0}, {1,2}}
+debugShowLineIntersection wtTs[0]=1 {{0,0}, {1,0}} {{0,0}} wnTs[0]=0 {{1,1}, {0,0}}
+debugShowLineIntersection no intersect {{1,0}, {3,3}} {{0,0}, {1,2}}
+debugShowLineIntersection no intersect {{1,0}, {3,3}} {{1,2}, {1,1}}
+debugShowLineIntersection no intersect {{1,0}, {3,3}} {{1,1}, {0,0}}
+debugShowLineIntersection wtTs[0]=1 {{3,3}, {0,0}} {{0,0}} wnTs[0]=-0 {{0,0}, {1,2}}
+debugShowLineIntersection wtTs[0]=0.666666667 {{3,3}, {0,0}} {{1,1}} wnTs[0]=1 {{1,2}, {1,1}}
+debugShowLineIntersection wtTs[0]=0.666666667 {{3,3}, {0,0}} {{1,1}} wtTs[1]=1 {{0,0}} wnTs[0]=0 {{1,1}, {0,0}} wnTs[1]=1
+debugShowLineIntersection wtTs[0]=1 {{0,0}, {1,2}} {{1,2}} wnTs[0]=0 {{1,2}, {1,1}}
+debugShowLineIntersection wtTs[0]=0 {{0,0}, {1,2}} {{0,0}} wnTs[0]=1 {{1,1}, {0,0}}
+debugShowLineIntersection wtTs[0]=-0 {{1,2}, {1,1}} {{1,1}} wnTs[0]=1 {{1,1}, {0,0}}
+debugShowTs id=3 [o=2 t=0 3,3 w=1 o=0] [o=5 t=0.667 1,1 w=1 o=0] [o=1,4 t=1 0,0 w=1 o=0]
+debugShowTs id=6 [o=5 t=-0 1,1 w=1 o=0] [o=1,4 t=1 0,0 w=1 o=0]
+addTPair addTPair this=3 0.666666667 other=6 0
+debugShowTs id=3 [o=2 t=0 3,3 w=1 o=0] [o=5,6 t=0.667 1,1 w=1 o=0] [o=1,4 t=1 0,0 w=1 o=0]
+debugShowTs id=6 [o=5,3 t=-0 1,1 w=1 o=0] [o=1,4 t=1 0,0 w=1 o=0]
+debugShowTs id=3 [o=2 t=0 3,3 w=1 o=0] [o=5,6 t=0.667 1,1 w=2 o=0] [o=1,4 t=1 0,0 w=1 o=0]
+debugShowTs id=6 [o=5,3 t=-0 1,1 w=0 o=0] [o=1,4 t=1 0,0 w=1 o=0] done
+debugShowActiveSpans id=1 (0,0 1,0) t=0 (0,0) tEnd=1 other=3 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,0 1,0) t=0 (0,0) tEnd=1 other=4 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,0 1,0) t=0 (0,0) tEnd=1 other=6 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (1,0 3,3) t=0 (1,0) tEnd=1 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,3 0,0) t=0 (3,3) tEnd=0.666666667 other=2 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,3 0,0) t=0.666666667 (1,1) tEnd=1 other=5 otherT=1 otherIndex=1 windSum=? windValue=2 oppValue=0
+debugShowActiveSpans id=3 (3,3 0,0) t=0.666666667 (1,1) tEnd=1 other=6 otherT=0 otherIndex=1 windSum=? windValue=2 oppValue=0
+debugShowActiveSpans id=4 (0,0 1,2) t=0 (0,0) tEnd=1 other=1 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (0,0 1,2) t=-0 (0,0) tEnd=1 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (0,0 1,2) t=0 (0,0) tEnd=1 other=6 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=5 (1,2 1,1) t=0 (1,2) tEnd=1 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=5 (1,2 1,1) t=1 (1,1) tEnd=1 other=3 otherT=0.666666667 otherIndex=1 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,0}, {1,2}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,3}, {0,0}} tStart=1 tEnd=0.666666667 sign=1 windValue=2 windSum=? 1->-1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,0}, {1,0}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+markWinding id=4 (0,0 1,2) t=0 [0] (0,0) tEnd=-0 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (0,0 1,2) t=-0 [1] (0,0) tEnd=0 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (0,0 1,2) t=0 [2] (0,0) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (0,0 1,2) t=0 [0] (0,0) tEnd=-0 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markWinding id=4 (0,0 1,2) t=-0 [1] (0,0) tEnd=0 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markWinding id=4 (0,0 1,2) t=0 [2] (0,0) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markWinding id=5 (1,2 1,1) t=0 [0] (1,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextWinding debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,0}, {1,2}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=1 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,3}, {0,0}} tStart=1 tEnd=0.666666667 sign=1 windValue=2 windSum=? 1->-1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,0}, {1,0}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum=? -1->0 (max=-1) done=0 tiny=0 opp=0
+findNextWinding firstIndex=[0] sign=-1
+markDone id=3 (3,3 0,0) t=0.666666667 [1] (1,1) tEnd=0.666666667 newWindSum=1 windSum=? windValue=2
+markDone id=3 (3,3 0,0) t=0.666666667 [2] (1,1) tEnd=1 newWindSum=1 windSum=? windValue=2
+findNextWinding chase.append id=3
+markWinding id=1 (0,0 1,0) t=0 [0] (0,0) tEnd=0 newWindSum=-1 windSum=? windValue=1
+markWinding id=1 (0,0 1,0) t=0 [1] (0,0) tEnd=0 newWindSum=-1 windSum=? windValue=1
+markWinding id=1 (0,0 1,0) t=0 [2] (0,0) tEnd=1 newWindSum=-1 windSum=? windValue=1
+markWinding id=2 (1,0 3,3) t=0 [0] (1,0) tEnd=1 newWindSum=-1 windSum=? windValue=1
+markWinding id=3 (3,3 0,0) t=0 [0] (3,3) tEnd=0.666666667 newWindSum=-1 windSum=? windValue=1
+findNextWinding chase.append id=3
+markDoneUnary id=4 (0,0 1,2) t=0 [0] (0,0) tEnd=-0 newWindSum=1 windSum=1 windValue=1
+markDoneUnary id=4 (0,0 1,2) t=-0 [1] (0,0) tEnd=0 newWindSum=1 windSum=1 windValue=1
+markDoneUnary id=4 (0,0 1,2) t=0 [2] (0,0) tEnd=1 newWindSum=1 windSum=1 windValue=1
+findNextWinding from:[4] to:[1] start=1 end=3
+bridgeWinding current id=4 from=(1,2) to=(0,0)
+findNextWinding simple
+markDoneUnary id=1 (0,0 1,0) t=0 [0] (0,0) tEnd=0 newWindSum=-1 windSum=-1 windValue=1
+markDoneUnary id=1 (0,0 1,0) t=0 [1] (0,0) tEnd=0 newWindSum=-1 windSum=-1 windValue=1
+markDoneUnary id=1 (0,0 1,0) t=0 [2] (0,0) tEnd=1 newWindSum=-1 windSum=-1 windValue=1
+bridgeWinding current id=1 from=(0,0) to=(1,0)
+path.moveTo(1,2);
+path.lineTo(0,0);
+findNextWinding simple
+markDoneUnary id=2 (1,0 3,3) t=0 [0] (1,0) tEnd=1 newWindSum=-1 windSum=-1 windValue=1
+bridgeWinding current id=2 from=(1,0) to=(3,3)
+path.lineTo(1,0);
+findNextWinding debugShowSort contourWinding=0 oppContourWinding=? sign=1
+debugShowSort [2] {{3,3}, {0,0}} tStart=0.666666667 tEnd=0 sign=1 windValue=1 windSum=-1 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{3,3}, {0,0}} tStart=0.666666667 tEnd=1 sign=-1 windValue=2 windSum=1 -1->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [1] {{1,2}, {1,1}} tStart=1 tEnd=0 sign=1 windValue=1 windSum=1 1->0 (max=1) done=0 tiny=0 opp=0
+findNextWinding firstIndex=[2] sign=1
+markDoneUnary id=3 (3,3 0,0) t=0 [0] (3,3) tEnd=0.666666667 newWindSum=-1 windSum=-1 windValue=1
+findNextWinding from:[3] to:[5] start=1 end=0
+bridgeWinding current id=3 from=(3,3) to=(1,1)
+path.lineTo(3,3);
+findNextWinding simple
+markDoneUnary id=5 (1,2 1,1) t=0 [0] (1,2) tEnd=1 newWindSum=1 windSum=1 windValue=1
+bridgeWinding current id=5 from=(1,1) to=(1,2)
+path.lineTo(1,1);
+path.lineTo(1,2);
+path.close();
+debugShowActiveSpans id=5 (1,2 1,1) t=1 (1,1) tEnd=1 other=3 otherT=0.666666667 otherIndex=1 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-2
+debugShowSort [0] {{3,3}, {0,0}} tStart=0.666666667 tEnd=1 sign=-1 windValue=2 windSum=1 0->2 (max=2) done=1 tiny=0 opp=0
+debugShowSort [1] {{1,2}, {1,1}} tStart=1 tEnd=0 sign=1 windValue=1 windSum=1 2->1 (max=2) done=1 tiny=0 opp=0
+debugShowSort [2] {{3,3}, {0,0}} tStart=0.666666667 tEnd=0 sign=1 windValue=1 windSum=-1 1->0 (max=1) done=1 tiny=0 opp=0
+</div>
+
+<div id="testTriangles1a">
+ RunTestSet [testTriangles1a]
+debugShowLineIntersection wtTs[0]=0 {{0,0}, {1,0}} {{1,0}} wnTs[0]=1 {{1,0}, {3,3}}
+debugShowLineIntersection wtTs[0]=1 {{0,0}, {1,0}} {{0,0}} wnTs[0]=0 {{3,3}, {0,0}}
+debugShowLineIntersection wtTs[0]=1 {{1,0}, {3,3}} {{3,3}} wnTs[0]=0 {{3,3}, {0,0}}
+debugShowLineIntersection wtTs[0]=0 {{0,0}, {1,0}} {{0,0}} wnTs[0]=0 {{0,0}, {1,2}}
+debugShowLineIntersection wtTs[0]=1 {{0,0}, {1,0}} {{0,0}} wnTs[0]=0 {{1,1}, {0,0}}
+debugShowLineIntersection no intersect {{1,0}, {3,3}} {{0,0}, {1,2}}
+debugShowLineIntersection no intersect {{1,0}, {3,3}} {{1,2}, {1,1}}
+debugShowLineIntersection no intersect {{1,0}, {3,3}} {{1,1}, {0,0}}
+debugShowLineIntersection wtTs[0]=1 {{3,3}, {0,0}} {{0,0}} wnTs[0]=-0 {{0,0}, {1,2}}
+debugShowLineIntersection wtTs[0]=0.666666667 {{3,3}, {0,0}} {{1,1}} wnTs[0]=1 {{1,2}, {1,1}}
+debugShowLineIntersection wtTs[0]=0.666666667 {{3,3}, {0,0}} {{1,1}} wtTs[1]=1 {{0,0}} wnTs[0]=0 {{1,1}, {0,0}} wnTs[1]=1
+debugShowLineIntersection wtTs[0]=1 {{0,0}, {1,2}} {{1,2}} wnTs[0]=0 {{1,2}, {1,1}}
+debugShowLineIntersection wtTs[0]=0 {{0,0}, {1,2}} {{0,0}} wnTs[0]=1 {{1,1}, {0,0}}
+debugShowLineIntersection wtTs[0]=-0 {{1,2}, {1,1}} {{1,1}} wnTs[0]=1 {{1,1}, {0,0}}
+debugShowTs id=3 [o=2 t=0 3,3 w=1 o=0] [o=5 t=0.667 1,1 w=1 o=0] [o=1,4 t=1 0,0 w=1 o=0]
+debugShowTs id=6 [o=5 t=-0 1,1 w=1 o=0] [o=1,4 t=1 0,0 w=1 o=0]
+addTPair addTPair this=3 0.666666667 other=6 0
+debugShowTs id=3 [o=2 t=0 3,3 w=1 o=0] [o=5,6 t=0.667 1,1 w=1 o=0] [o=1,4 t=1 0,0 w=1 o=0]
+debugShowTs id=6 [o=5,3 t=-0 1,1 w=1 o=0] [o=1,4 t=1 0,0 w=1 o=0]
+debugShowTs id=3 [o=2 t=0 3,3 w=1 o=0] [o=5,6 t=0.667 1,1 w=2 o=0] [o=1,4 t=1 0,0 w=1 o=0]
+debugShowTs id=6 [o=5,3 t=-0 1,1 w=0 o=0] [o=1,4 t=1 0,0 w=1 o=0] done
+debugShowActiveSpans id=1 (0,0 1,0) t=0 (0,0) tEnd=1 other=3 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,0 1,0) t=0 (0,0) tEnd=1 other=4 otherT=0 otherIndex=0 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=1 (0,0 1,0) t=0 (0,0) tEnd=1 other=6 otherT=1 otherIndex=2 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=2 (1,0 3,3) t=0 (1,0) tEnd=1 other=1 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,3 0,0) t=0 (3,3) tEnd=0.666666667 other=2 otherT=1 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=3 (3,3 0,0) t=0.666666667 (1,1) tEnd=1 other=5 otherT=1 otherIndex=1 windSum=? windValue=2 oppValue=0
+debugShowActiveSpans id=3 (3,3 0,0) t=0.666666667 (1,1) tEnd=1 other=6 otherT=0 otherIndex=1 windSum=? windValue=2 oppValue=0
+debugShowActiveSpans id=4 (0,0 1,2) t=0 (0,0) tEnd=1 other=1 otherT=0 otherIndex=1 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (0,0 1,2) t=-0 (0,0) tEnd=1 other=3 otherT=1 otherIndex=4 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=4 (0,0 1,2) t=0 (0,0) tEnd=1 other=6 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+debugShowActiveSpans id=5 (1,2 1,1) t=0 (1,2) tEnd=1 other=4 otherT=1 otherIndex=3 windSum=? windValue=1 oppValue=0
+findTop debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,0}, {1,2}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum= 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,3}, {0,0}} tStart=1 tEnd=0.666666667 sign=1 windValue=2 windSum= 1->-1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,0}, {1,0}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum= -1->0 (max=-1) done=0 tiny=0 opp=0
+markWinding id=4 (0,0 1,2) t=0 [0] (0,0) tEnd=-0 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (0,0 1,2) t=-0 [1] (0,0) tEnd=0 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (0,0 1,2) t=0 [2] (0,0) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+markWinding id=4 (0,0 1,2) t=0 [0] (0,0) tEnd=-0 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markWinding id=4 (0,0 1,2) t=-0 [1] (0,0) tEnd=0 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markWinding id=4 (0,0 1,2) t=0 [2] (0,0) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1
+markWinding id=5 (1,2 1,1) t=0 [0] (1,2) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1
+findNextWinding debugShowSort contourWinding=0 oppContourWinding=0 sign=-1
+debugShowSort [0] {{0,0}, {1,2}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum= 0->1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [1] {{3,3}, {0,0}} tStart=1 tEnd=0.666666667 sign=1 windValue=2 windSum= 1->-1 (max=1) done=0 tiny=0 opp=0
+debugShowSort [2] {{0,0}, {1,0}} tStart=0 tEnd=1 sign=-1 windValue=1 windSum= -1->0 (max=-1) done=0 tiny=0 opp=0
+findNextWinding firstIndex=[0] sign=-1
+markDone id=3 (3,3 0,0) t=0.666666667 [1] (1,1) tEnd=0.666666667 newWindSum=1 windSum=? windValue=2
+markDone id=3 (3,3 0,0) t=0.666666667 [2] (1,1) tEnd=1 newWindSum=1 windSum=? windValue=2
+findNextWinding chase.append id=3
+markWinding id=1 (0,0 1,0) t=0 [0] (0,0) tEnd=0 newWindSum=-1 windSum=? windValue=1
+markWinding id=1 (0,0 1,0) t=0 [1] (0,0) tEnd=0 newWindSum=-1 windSum=? windValue=1
+markWinding id=1 (0,0 1,0) t=0 [2] (0,0) tEnd=1 newWindSum=-1 windSum=? windValue=1
+markWinding id=2 (1,0 3,3) t=0 [0] (1,0) tEnd=1 newWindSum=-1 windSum=? windValue=1
+markWinding id=3 (3,3 0,0) t=0 [0] (3,3) tEnd=0.666666667 newWindSum=-1 windSum=? windValue=1
+findNextWinding chase.append id=3
+markDoneUnary id=4 (0,0 1,2) t=0 [0] (0,0) tEnd=-0 newWindSum=1 windSum=1 windValue=1
+markDoneUnary id=4 (0,0 1,2) t=-0 [1] (0,0) tEnd=0 newWindSum=1 windSum=1 windValue=1
+markDoneUnary id=4 (0,0 1,2) t=0 [2] (0,0) tEnd=1 newWindSum=1 windSum=1 windValue=1
+findNextWinding from:[4] to:[1] start=1 end=3
+bridgeWinding current id=4 from=(1,2) to=(0,0)
+findNextWinding simple
+markDoneUnary id=1 (0,0 1,0) t=0 [0] (0,0) tEnd=0 newWindSum=-1 windSum=-1 windValue=1
+markDoneUnary id=1 (0,0 1,0) t=0 [1] (0,0) tEnd=0 newWindSum=-1 windSum=-1 windValue=1
+markDoneUnary id=1 (0,0 1,0) t=0 [2] (0,0) tEnd=1 newWindSum=-1 windSum=-1 windValue=1
+bridgeWinding current id=1 from=(0,0) to=(1,0)
+path.moveTo(1,2);
+path.lineTo(0,0);
+findNextWinding simple
+markDoneUnary id=2 (1,0 3,3) t=0 [0] (1,0) tEnd=1 newWindSum=-1 windSum=-1 windValue=1
+bridgeWinding current id=2 from=(1,0) to=(3,3)
+path.lineTo(1,0);
+findNextWinding debugShowSort contourWinding=0 oppContourWinding=? sign=1
+debugShowSort [2] {{3,3}, {0,0}} tStart=0.666666667 tEnd=0 sign=1 windValue=1 windSum= 0->-1 (max=-1) done=0 tiny=0 opp=0
+debugShowSort [0] {{3,3}, {0,0}} tStart=0.666666667 tEnd=1 sign=-1 windValue=2 windSum= -1->1 (max=1) done=1 tiny=0 opp=0
+debugShowSort [1] {{1,2}, {1,1}} tStart=1 tEnd=0 sign=1 windValue=1 windSum= 1->0 (max=1) done=0 tiny=0 opp=0
+findNextWinding firstIndex=[2] sign=1
+markDoneUnary id=3 (3,3 0,0) t=0 [0] (3,3) tEnd=0.666666667 newWindSum=-1 windSum=-1 windValue=1
+findNextWinding from:[3] to:[5] start=1 end=0
+bridgeWinding current id=3 from=(3,3) to=(1,1)
+path.lineTo(3,3);
+findNextWinding simple
+markDoneUnary id=5 (1,2 1,1) t=0 [0] (1,2) tEnd=1 newWindSum=1 windSum=1 windValue=1
+bridgeWinding current id=5 from=(1,1) to=(1,2)
+path.lineTo(1,1);
+path.lineTo(1,2);
+path.close();
+</div>
+
+</div>
+
+<script type="text/javascript">
+
+var testDivs = [
+ testTriangles1a,
+ testTriangles1,
+ cubicOp69da,
+ cubicOp69d,
+ cubicOp68ua,
+ cubicOp68u,
+ cubicOp67u,
+ testQuad1,
+ cubicOp62d,
+ cubicOp61d,
+ cubicOp58da,
+ cubicOp58d,
+ cubicOp57da,
+ cubicOp56da,
+ cubicOp55da,
+ cubicOp55d,
+ cubicOp54dd,
+ cubicOp54dc,
+ cubicOp54db,
+ cubicOp54da,
+ cubicOp54d,
+ cubicOp53db,
+ cubicOp53da,
+ cubicOp53d,
+ cubicOp52db,
+ cubicOp52da,
+ cubicOp51da,
+ cubicOp51d,
+ cubicOp50d,
+ cubicOp49d,
+ cubicOp48dc,
+ cubicOp48db,
+ cubicOp48da,
+ cubicOp48d,
+ cubicOp47db,
+ cubicOp47da,
+ cubicOp47d,
+ cubicOp46db,
+ cubicOp46da,
+ cubicOp46d,
+ cubicOp45d,
+ cubicOp44d,
+ cubicOp43d,
+ cubicOp42d,
+ cubicOp42da,
+ cubicOp42db,
+ cubicOp41i,
+ cubicOp40d,
+ cubicOp39da,
+ cubicOp39d,
+ cubicOp38d,
+ cubicOp38da,
+ cubicOp36u,
+ cubicOp35da,
+ cubicOp32d,
+];
+
+var decimal_places = 3; // make this 3 to show more precision
+
+var tests = [];
+var testLines = [];
+var testTitles = [];
+var testIndex = 0;
+var ctx;
+
+var xmin, xmax;
+var ymin, ymax;
+var scale;
+var mouseX, mouseY;
+var srcLeft, srcTop;
+var screenWidth, screenHeight;
+var drawnPts, drawnLines, drawnQuads, drawnCubics;
+var curveT = 0;
+
+var pt_labels = 2;
+var control_lines = 0;
+var curve_t = false;
+var debug_xy = false;
+var step_limit = 0;
+var draw_active = false;
+var draw_add = false;
+var draw_deriviatives = 0;
+var draw_hints = false;
+var draw_hodo = 0;
+var draw_intersection = 0;
+var draw_intersectT = false;
+var draw_legend = true;
+var draw_log = false;
+var draw_mark = false;
+var draw_midpoint = false;
+var draw_sequence = false;
+var draw_sort = false;
+var draw_path = 3;
+var draw_computed = 0;
+
+var activeCount = 0;
+var addCount = 0;
+var sectCount = 0;
+var sortCount = 0;
+var markCount = 0;
+var activeMax = 0;
+var addMax = 0;
+var sectMax = 0;
+var sectMax2 = 0;
+var sortMax = 0;
+var markMax = 0;
+var stepMax = 0;
+var lastIndex = 0;
+var hasPath = false;
+var hasComputedPath = false;
+
+var SPAN_ID = 0;
+var SPAN_X1 = SPAN_ID + 1;
+var SPAN_Y1 = SPAN_X1 + 1;
+var SPAN_X2 = SPAN_Y1 + 1;
+var SPAN_Y2 = SPAN_X2 + 1;
+var SPAN_L_T = SPAN_Y2 + 1;
+var SPAN_L_TX = SPAN_L_T + 1;
+var SPAN_L_TY = SPAN_L_TX + 1;
+var SPAN_L_TEND = SPAN_L_TY + 1;
+var SPAN_L_OTHER = SPAN_L_TEND + 1;
+var SPAN_L_OTHERT = SPAN_L_OTHER + 1;
+var SPAN_L_OTHERI = SPAN_L_OTHERT + 1;
+var SPAN_L_SUM = SPAN_L_OTHERI + 1;
+var SPAN_L_VAL = SPAN_L_SUM + 1;
+var SPAN_L_OPP = SPAN_L_VAL + 1;
+
+var SPAN_X3 = SPAN_Y2 + 1;
+var SPAN_Y3 = SPAN_X3 + 1;
+var SPAN_Q_T = SPAN_Y3 + 1;
+var SPAN_Q_TX = SPAN_Q_T + 1;
+var SPAN_Q_TY = SPAN_Q_TX + 1;
+var SPAN_Q_TEND = SPAN_Q_TY + 1;
+var SPAN_Q_OTHER = SPAN_Q_TEND + 1;
+var SPAN_Q_OTHERT = SPAN_Q_OTHER + 1;
+var SPAN_Q_OTHERI = SPAN_Q_OTHERT + 1;
+var SPAN_Q_SUM = SPAN_Q_OTHERI + 1;
+var SPAN_Q_VAL = SPAN_Q_SUM + 1;
+var SPAN_Q_OPP = SPAN_Q_VAL + 1;
+
+var SPAN_X4 = SPAN_Y3 + 1;
+var SPAN_Y4 = SPAN_X4 + 1;
+var SPAN_C_T = SPAN_Y4 + 1;
+var SPAN_C_TX = SPAN_C_T + 1;
+var SPAN_C_TY = SPAN_C_TX + 1;
+var SPAN_C_TEND = SPAN_C_TY + 1;
+var SPAN_C_OTHER = SPAN_C_TEND + 1;
+var SPAN_C_OTHERT = SPAN_C_OTHER + 1;
+var SPAN_C_OTHERI = SPAN_C_OTHERT + 1;
+var SPAN_C_SUM = SPAN_C_OTHERI + 1;
+var SPAN_C_VAL = SPAN_C_SUM + 1;
+var SPAN_C_OPP = SPAN_C_VAL + 1;
+
+var ACTIVE_LINE_SPAN = 1;
+var ACTIVE_QUAD_SPAN = ACTIVE_LINE_SPAN + 1;
+var ACTIVE_CUBIC_SPAN = ACTIVE_QUAD_SPAN + 1;
+
+var ADD_MOVETO = ACTIVE_CUBIC_SPAN + 1;
+var ADD_LINETO = ADD_MOVETO + 1;
+var ADD_QUADTO = ADD_LINETO + 1;
+var ADD_CUBICTO = ADD_QUADTO + 1;
+var ADD_CLOSE = ADD_CUBICTO + 1;
+
+var PATH_LINE = ADD_CLOSE + 1;
+var PATH_QUAD = PATH_LINE + 1;
+var PATH_CUBIC = PATH_QUAD + 1;
+
+var INTERSECT_LINE = PATH_CUBIC + 1;
+var INTERSECT_LINE_2 = INTERSECT_LINE + 1;
+var INTERSECT_LINE_NO = INTERSECT_LINE_2 + 1;
+var INTERSECT_QUAD_LINE = INTERSECT_LINE_NO + 1;
+var INTERSECT_QUAD_LINE_2 = INTERSECT_QUAD_LINE + 1;
+var INTERSECT_QUAD_LINE_NO = INTERSECT_QUAD_LINE_2 + 1;
+var INTERSECT_QUAD = INTERSECT_QUAD_LINE_NO + 1;
+var INTERSECT_QUAD_2 = INTERSECT_QUAD + 1;
+var INTERSECT_QUAD_NO = INTERSECT_QUAD_2 + 1;
+var INTERSECT_SELF_CUBIC = INTERSECT_QUAD_NO + 1;
+var INTERSECT_SELF_CUBIC_NO = INTERSECT_SELF_CUBIC + 1;
+var INTERSECT_CUBIC_LINE = INTERSECT_SELF_CUBIC_NO + 1;
+var INTERSECT_CUBIC_LINE_2 = INTERSECT_CUBIC_LINE + 1;
+var INTERSECT_CUBIC_LINE_3 = INTERSECT_CUBIC_LINE_2 + 1;
+var INTERSECT_CUBIC_LINE_NO = INTERSECT_CUBIC_LINE_3 + 1;
+// FIXME: add cubic/quad
+var INTERSECT_CUBIC = INTERSECT_CUBIC_LINE_NO + 1;
+var INTERSECT_CUBIC_2 = INTERSECT_CUBIC + 1;
+var INTERSECT_CUBIC_3 = INTERSECT_CUBIC_2 + 1;
+var INTERSECT_CUBIC_4 = INTERSECT_CUBIC_3 + 1;
+// FIXME: add cubic 5- 9
+var INTERSECT_CUBIC_NO = INTERSECT_CUBIC_4 + 1;
+
+var SORT_LINE = INTERSECT_CUBIC_NO + 1;
+var SORT_QUAD = SORT_LINE + 1;
+var SORT_CUBIC = SORT_QUAD + 1;
+
+var SORT_LINE_UNSORTABLE = SORT_CUBIC + 1;
+var SORT_QUAD_UNSORTABLE = SORT_LINE_UNSORTABLE + 1;
+var SORT_CUBIC_UNSORTABLE = SORT_QUAD_UNSORTABLE + 1;
+
+var SORT_LINE_COMPACT = SORT_CUBIC_UNSORTABLE + 1;
+var SORT_QUAD_COMPACT = SORT_LINE_COMPACT + 1;
+var SORT_CUBIC_COMPACT = SORT_QUAD_COMPACT + 1;
+
+var OP_DIFFERENCE = SORT_CUBIC_COMPACT + 1;
+var OP_INTERSECT = OP_DIFFERENCE + 1;
+var OP_UNION = OP_INTERSECT + 1;
+var OP_XOR = OP_UNION + 1;
+
+var MARK_LINE = OP_XOR + 1;
+var MARK_QUAD = MARK_LINE + 1;
+var MARK_CUBIC = MARK_QUAD + 1;
+var MARK_DONE_LINE = MARK_CUBIC + 1;
+var MARK_DONE_QUAD = MARK_DONE_LINE + 1;
+var MARK_DONE_CUBIC = MARK_DONE_QUAD + 1;
+var MARK_UNSORTABLE_LINE = MARK_DONE_CUBIC + 1;
+var MARK_UNSORTABLE_QUAD = MARK_UNSORTABLE_LINE + 1;
+var MARK_UNSORTABLE_CUBIC = MARK_UNSORTABLE_QUAD + 1;
+var MARK_SIMPLE_LINE = MARK_UNSORTABLE_CUBIC + 1;
+var MARK_SIMPLE_QUAD = MARK_SIMPLE_LINE + 1;
+var MARK_SIMPLE_CUBIC = MARK_SIMPLE_QUAD + 1;
+var MARK_SIMPLE_DONE_LINE = MARK_SIMPLE_CUBIC + 1;
+var MARK_SIMPLE_DONE_QUAD = MARK_SIMPLE_DONE_LINE + 1;
+var MARK_SIMPLE_DONE_CUBIC = MARK_SIMPLE_DONE_QUAD + 1;
+var MARK_DONE_UNARY_LINE = MARK_SIMPLE_DONE_CUBIC + 1;
+var MARK_DONE_UNARY_QUAD = MARK_DONE_UNARY_LINE + 1;
+var MARK_DONE_UNARY_CUBIC = MARK_DONE_UNARY_QUAD + 1;
+
+var COMPUTED_SET_1 = MARK_DONE_UNARY_CUBIC + 1;
+var COMPUTED_SET_2 = COMPUTED_SET_1 + 1;
+var FRAG_TYPE_LAST = COMPUTED_SET_2;
+
+var REC_TYPE_UNKNOWN = -1;
+var REC_TYPE_PATH = 0;
+var REC_TYPE_SECT = 1;
+var REC_TYPE_ACTIVE = 2;
+var REC_TYPE_ADD = 3;
+var REC_TYPE_SORT = 4;
+var REC_TYPE_OP = 5;
+var REC_TYPE_MARK = 6;
+var REC_TYPE_COMPUTED = 7;
+var REC_TYPE_COIN = 8;
+var REC_TYPE_LAST = REC_TYPE_COIN;
+
+function strs_to_nums(strs) {
+ var result = [];
+ for (var idx = 1; idx < strs.length; ++idx) {
+ var str = strs[idx];
+ var num = parseFloat(str);
+ if (isNaN(num)) {
+ result.push(str);
+ } else {
+ result.push(num);
+ }
+ }
+ return result;
+}
+
+function filter_str_by(id, str, regex, array) {
+ if (regex.test(str)) {
+ var strs = regex.exec(str);
+ var result = strs_to_nums(strs);
+ array.push(id);
+ array.push(result);
+ return true;
+ }
+ return false;
+}
+
+function construct_regexp2(pattern) {
+ var escape = pattern.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
+ escape = escape.replace(/UNSORTABLE/g, "\\*\\*\\* UNSORTABLE \\*\\*\\*");
+ escape = escape.replace(/CUBIC_VAL/g, "\\(P_VAL P_VAL P_VAL P_VAL\\)");
+ escape = escape.replace(/QUAD_VAL/g, "\\(P_VAL P_VAL P_VAL\\)");
+ escape = escape.replace(/LINE_VAL/g, "\\(P_VAL P_VAL\\)");
+ escape = escape.replace(/PT_VAL/g, "\\(P_VAL\\)");
+ escape = escape.replace(/P_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?),(-?\\d+\\.?\\d*(?:e-?\\d+)?)");
+ escape = escape.replace(/T_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)");
+ escape = escape.replace(/IDX/g, "(\\d+)");
+ escape = escape.replace(/NUM/g, "(-?\\d+)");
+ escape = escape.replace(/OPT/g, "(\\?|-?\\d+)");
+ return new RegExp(escape, 'i');
+}
+
+function construct_regexp2c(pattern) {
+ var escape = pattern.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
+ escape = escape.replace(/UNSORTABLE/g, "\\*\\*\\* UNSORTABLE \\*\\*\\*");
+ escape = escape.replace(/CUBIC_VAL/g, "(?:\\$\\d = )?\\{\\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}\\}");
+ escape = escape.replace(/QUAD_VAL/g, "(?:\\$\\d = )?\\{\\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}\\}");
+ escape = escape.replace(/LINE_VAL/g, "(?:\\$\\d = )?\\{\\{P_VAL\\}, \\{P_VAL\\}\\}");
+ escape = escape.replace(/PT_VAL/g, "\\{\\{P_VAL\\}\\}");
+ escape = escape.replace(/P_VAL/g, "(?:f?[xX] = )?(-?\\d+\\.?\\d*(?:e-?\\d+)?),(?: f?[yY] = )?(-?\\d+\\.?\\d*(?:e-?\\d+)?)");
+ escape = escape.replace(/T_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)");
+ escape = escape.replace(/IDX/g, "(\\d+)");
+ escape = escape.replace(/NUM/g, "(-?\\d+)");
+ escape = escape.replace(/OPT/g, "(\\?|-?\\d+)");
+ return new RegExp(escape, 'i');
+}
+
+function match_regexp(str, lineNo, array, id, pattern) {
+ var regex = construct_regexp2(pattern);
+ if (filter_str_by(id, str, regex, array)) {
+ return true;
+ }
+ regex = construct_regexp2c(pattern);
+ return filter_str_by(id, str, regex, array);
+}
+
+function parse_all(test) {
+ var lines = test.match(/[^\r\n]+/g);
+ var records = []; // a rec can be the original paths, a set of intersections, a set of active spans, a sort, or a path add
+ var record = [];
+ var recType = REC_TYPE_UNKNOWN;
+ var lastLineNo;
+ var moveX, moveY;
+ for (var lineNo = 0; lineNo < lines.length; ++lineNo) {
+ var line = lines[lineNo];
+ if (line.length == 0) {
+ continue;
+ }
+ var opStart = "SkOpSegment::";
+ if (line.lastIndexOf(opStart, 0) === 0) {
+ line = line.substr(opStart.length);
+ }
+ var type = line.lastIndexOf("debugShowSort", 0) === 0 ? REC_TYPE_SORT
+ : line.lastIndexOf("debugShowActiveSpans", 0) === 0 ? REC_TYPE_ACTIVE
+ : line.lastIndexOf("debugShowTs", 0) === 0 ? REC_TYPE_COIN
+ : line.lastIndexOf("debugShow", 0) === 0 ? REC_TYPE_SECT
+ : line.lastIndexOf("computed", 0) === 0 ? REC_TYPE_COMPUTED
+ : line.lastIndexOf("path.", 0) === 0 ? REC_TYPE_ADD
+ : line.lastIndexOf("mark", 0) === 0 ? REC_TYPE_MARK
+ : line.lastIndexOf(" {{", 0) === 0 ? REC_TYPE_COMPUTED
+ : line.lastIndexOf("{{", 0) === 0 ? REC_TYPE_PATH
+ : line.lastIndexOf("op", 0) === 0 ? REC_TYPE_OP
+ : line.lastIndexOf("$", 0) === 0 ? REC_TYPE_PATH
+ : REC_TYPE_UNKNOWN;
+ if (recType != type || recType == REC_TYPE_ADD || recType == REC_TYPE_SECT) {
+ if (recType != REC_TYPE_UNKNOWN) {
+ records.push(recType);
+ records.push(lastLineNo);
+ records.push(record);
+ }
+ record = [];
+ recType = type;
+ lastLineNo = lineNo;
+ }
+ var found = false;
+ switch (recType) {
+ case REC_TYPE_ACTIVE:
+ found = match_regexp(line, lineNo, record, ACTIVE_LINE_SPAN, "debugShowActiveSpans" +
+" id=IDX LINE_VAL t=T_VAL PT_VAL tEnd=T_VAL other=IDX otherT=T_VAL otherIndex=IDX windSum=OPT windValue=IDX oppValue=IDX"
+ ) || match_regexp(line, lineNo, record, ACTIVE_QUAD_SPAN, "debugShowActiveSpans" +
+" id=IDX QUAD_VAL t=T_VAL PT_VAL tEnd=T_VAL other=IDX otherT=T_VAL otherIndex=IDX windSum=OPT windValue=IDX oppValue=IDX"
+ ) || match_regexp(line, lineNo, record, ACTIVE_CUBIC_SPAN, "debugShowActiveSpans" +
+" id=IDX CUBIC_VAL t=T_VAL PT_VAL tEnd=T_VAL other=IDX otherT=T_VAL otherIndex=IDX windSum=OPT windValue=IDX oppValue=IDX"
+ );
+ break;
+ case REC_TYPE_ADD:
+ if (match_regexp(line, lineNo, record, ADD_MOVETO, "path.moveTo(P_VAL);")) {
+ moveX = record[1][0];
+ moveY = record[1][1];
+ found = true;
+ } else if (match_regexp(line, lineNo, record, ADD_LINETO, "path.lineTo(P_VAL);")) {
+ record[1].unshift(moveY);
+ record[1].unshift(moveX);
+ moveX = record[1][2];
+ moveY = record[1][3];
+ found = true;
+ } else if (match_regexp(line, lineNo, record, ADD_QUADTO, "path.quadTo(P_VAL, P_VAL);")) {
+ record[1].unshift(moveY);
+ record[1].unshift(moveX);
+ moveX = record[1][4];
+ moveY = record[1][5];
+ found = true;
+ } else if (match_regexp(line, lineNo, record, ADD_CUBICTO, "path.cubicTo(P_VAL, P_VAL, P_VAL);")) {
+ record[1].unshift(moveY);
+ record[1].unshift(moveX);
+ moveX = record[1][6];
+ moveY = record[1][7];
+ found = true;
+ } else {
+ found = match_regexp(line, lineNo, record, ADD_CLOSE, "path.close();");
+ }
+ break;
+ case REC_TYPE_COIN:
+ found = true;
+ break;
+ case REC_TYPE_COMPUTED:
+ found = line == "computed quadratics given"
+ || match_regexp(line, lineNo, record, COMPUTED_SET_1, "computed quadratics set 1"
+ ) || match_regexp(line, lineNo, record, COMPUTED_SET_2, "computed quadratics set 2"
+ ) || match_regexp(line, lineNo, record, PATH_QUAD, " QUAD_VAL,"
+ ) || match_regexp(line, lineNo, record, PATH_CUBIC, " CUBIC_VAL,"
+ );
+ break;
+ case REC_TYPE_PATH:
+ found = match_regexp(line, lineNo, record, PATH_LINE, "LINE_VAL"
+ ) || match_regexp(line, lineNo, record, PATH_QUAD, "QUAD_VAL"
+ ) || match_regexp(line, lineNo, record, PATH_CUBIC, "CUBIC_VAL"
+ );
+ break;
+ case REC_TYPE_SECT:
+ found = match_regexp(line, lineNo, record, INTERSECT_LINE, "debugShowLineIntersection" +
+" wtTs[0]=T_VAL LINE_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_LINE_2, "debugShowLineIntersection" +
+" wtTs[0]=T_VAL LINE_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_LINE_NO, "debugShowLineIntersection" +
+" no intersect LINE_VAL LINE_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE, "debugShowQuadLineIntersection" +
+" wtTs[0]=T_VAL QUAD_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE_2, "debugShowQuadLineIntersection" +
+" wtTs[0]=T_VAL QUAD_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE_NO, "debugShowQuadLineIntersection" +
+" no intersect QUAD_VAL LINE_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_QUAD, "debugShowQuadIntersection" +
+" wtTs[0]=T_VAL QUAD_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_2, "debugShowQuadIntersection" +
+" wtTs[0]=T_VAL QUAD_VAL PT_VAL wtTs[1]=T_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_NO, "debugShowQuadIntersection" +
+" no intersect QUAD_VAL QUAD_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE, "debugShowCubicLineIntersection" +
+" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_2, "debugShowCubicLineIntersection" +
+" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_3, "debugShowCubicLineIntersection" +
+" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_NO, "debugShowCubicLineIntersection" +
+" no intersect CUBIC_VAL LINE_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC, "debugShowCubicIntersection" +
+" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_2, "debugShowCubicIntersection" +
+" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL wnTs[1]=T_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_3, "debugShowCubicIntersection" +
+" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_4, "debugShowCubicIntersection" +
+" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wtTs[3]=T_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL wnTs[3]=T_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_NO, "debugShowCubicIntersection" +
+" no intersect CUBIC_VAL CUBIC_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_SELF_CUBIC, "debugShowCubicIntersection" +
+" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL"
+ ) || match_regexp(line, lineNo, record, INTERSECT_SELF_CUBIC_NO, "debugShowCubicIntersection" +
+" no self intersect CUBIC_VAL"
+ );
+ break;
+ case REC_TYPE_SORT:
+ found = match_regexp(line, lineNo, record, SORT_LINE, "debugShowSort" +
+" [IDX] LINE_VAL tStart=T_VAL tEnd=T_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
+ ) || match_regexp(line, lineNo, record, SORT_QUAD, "debugShowSort" +
+" [IDX] QUAD_VAL tStart=T_VAL tEnd=T_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
+ ) || match_regexp(line, lineNo, record, SORT_CUBIC, "debugShowSort" +
+" [IDX] CUBIC_VAL tStart=T_VAL tEnd=T_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
+ ) || match_regexp(line, lineNo, record, SORT_LINE_UNSORTABLE, "debugShowSort" +
+" [IDX] UNSORTABLE LINE_VAL tStart=T_VAL tEnd=T_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
+ ) || match_regexp(line, lineNo, record, SORT_QUAD_UNSORTABLE, "debugShowSort" +
+" [IDX] UNSORTABLE QUAD_VAL tStart=T_VAL tEnd=T_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
+ ) || match_regexp(line, lineNo, record, SORT_CUBIC_UNSORTABLE, "debugShowSort" +
+" [IDX] UNSORTABLE CUBIC_VAL tStart=T_VAL tEnd=T_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
+ ) || match_regexp(line, lineNo, record, SORT_LINE_COMPACT, "debugShowSort" +
+" [IDX] id=IDX line start=IDX PT_VAL end=IDX PT_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
+ ) || match_regexp(line, lineNo, record, SORT_QUAD_COMPACT, "debugShowSort" +
+" [IDX] id=IDX quad start=IDX PT_VAL end=IDX PT_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
+ ) || match_regexp(line, lineNo, record, SORT_CUBIC_COMPACT, "debugShowSort" +
+" [IDX] id=IDX cubic start=IDX PT_VAL end=IDX PT_VAL sign=NUM windValue=IDX windSum=OPT OPT->OPT (max=OPT) done=IDX tiny=IDX opp=IDX"
+ );
+ break;
+ case REC_TYPE_MARK:
+ found = match_regexp(line, lineNo, record, MARK_LINE, "markWinding" +
+" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_QUAD, "markWinding" +
+" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_CUBIC, "markWinding" +
+" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_DONE_LINE, "markDoneBinary" +
+" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_DONE_QUAD, "markDoneBinary" +
+" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_DONE_CUBIC, "markDoneBinary" +
+" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=NUM oppSum=OPT windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_UNSORTABLE_LINE, "markUnsortable" +
+" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_UNSORTABLE_QUAD, "markUnsortable" +
+" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_UNSORTABLE_CUBIC, "markUnsortable" +
+" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_SIMPLE_LINE, "markWinding" +
+" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_SIMPLE_QUAD, "markWinding" +
+" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_SIMPLE_CUBIC, "markWinding" +
+" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_SIMPLE_DONE_LINE, "markDone" +
+" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_SIMPLE_DONE_QUAD, "markDone" +
+" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_SIMPLE_DONE_CUBIC, "markDone" +
+" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_DONE_UNARY_LINE, "markDoneUnary" +
+" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_DONE_UNARY_QUAD, "markDoneUnary" +
+" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
+ ) || match_regexp(line, lineNo, record, MARK_DONE_UNARY_CUBIC, "markDoneUnary" +
+" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
+ );
+ break;
+ case REC_TYPE_OP:
+ found = match_regexp(line, lineNo, record, OP_DIFFERENCE, "op difference"
+ ) || match_regexp(line, lineNo, record, OP_INTERSECT, "op intersect"
+ ) || match_regexp(line, lineNo, record, OP_UNION, "op union"
+ ) || match_regexp(line, lineNo, record, OP_XOR, "op xor"
+ );
+ break;
+ case REC_TYPE_UNKNOWN:
+ found = true;
+ break;
+ }
+ if (!found) {
+ console.log(line + " [" + lineNo + "] of type " + type + " not found");
+ }
+ }
+ if (recType != REC_TYPE_UNKNOWN) {
+ records.push(recType);
+ records.push(lastLineNo);
+ records.push(record);
+ }
+ if (records.length >= 1) {
+ tests[testIndex] = records;
+ testLines[testIndex] = lines;
+ }
+}
+
+function init(test) {
+ var canvas = document.getElementById('canvas');
+ if (!canvas.getContext) return;
+ screenWidth = canvas.width = window.innerWidth - 20;
+ screenHeight = canvas.height = window.innerHeight - 20;
+ ctx = canvas.getContext('2d');
+ xmin = Infinity;
+ xmax = -Infinity;
+ ymin = Infinity;
+ ymax = -Infinity;
+ hasPath = hasComputedPath = false;
+ for (var testIndex = 0; testIndex < test.length; testIndex += 3) {
+ var recType = test[testIndex];
+ if (!typeof recType == 'number' || recType < REC_TYPE_UNKNOWN || recType > REC_TYPE_LAST) {
+ console.log("unknown rec type: " + recType);
+ throw "stop execution";
+ }
+ var records = test[testIndex + 2];
+ for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
+ var fragType = records[recordIndex];
+ if (!typeof fragType == 'number' || fragType < 1 || fragType > FRAG_TYPE_LAST) {
+ console.log("unknown in range frag type: " + fragType);
+ throw "stop execution";
+ }
+ var frags = records[recordIndex + 1];
+ var first = 0;
+ var last = -1;
+ var first2 = 0;
+ var last2 = 0;
+ switch (recType) {
+ case REC_TYPE_COMPUTED:
+ if (fragType == COMPUTED_SET_1 || fragType == COMPUTED_SET_2) {
+ break;
+ }
+ hasComputedPath = true;
+ case REC_TYPE_PATH:
+ switch (fragType) {
+ case PATH_LINE:
+ last = 4;
+ break;
+ case PATH_QUAD:
+ last = 6;
+ break;
+ case PATH_CUBIC:
+ last = 8;
+ break;
+ default:
+ console.log("unknown " + (recType == REC_TYPE_PATH ? "REC_TYPE_PATH"
+ : "REC_TYPE_COMPUTED") + " frag type:" + fragType);
+ throw "stop execution";
+ }
+ if (recType == REC_TYPE_PATH) {
+ hasPath = true;
+ }
+ break;
+ case REC_TYPE_ACTIVE:
+ first = 1;
+ switch (fragType) {
+ case ACTIVE_LINE_SPAN:
+ last = 5;
+ break;
+ case ACTIVE_QUAD_SPAN:
+ last = 7;
+ break;
+ case ACTIVE_CUBIC_SPAN:
+ last = 9;
+ break;
+ default:
+ console.log("unknown REC_TYPE_ACTIVE frag type: " + fragType);
+ throw "stop execution";
+ }
+ break;
+ case REC_TYPE_ADD:
+ switch (fragType) {
+ case ADD_MOVETO:
+ break;
+ case ADD_LINETO:
+ last = 4;
+ break;
+ case ADD_QUADTO:
+ last = 6;
+ break;
+ case ADD_CUBICTO:
+ last = 8;
+ break;
+ case ADD_CLOSE:
+ break;
+ default:
+ console.log("unknown REC_TYPE_ADD frag type: " + fragType);
+ throw "stop execution";
+ }
+ break;
+ case REC_TYPE_SECT:
+ switch (fragType) {
+ case INTERSECT_LINE:
+ first = 1; last = 5; first2 = 8; last2 = 12;
+ break;
+ case INTERSECT_LINE_2:
+ first = 1; last = 5; first2 = 11; last2 = 15;
+ break;
+ case INTERSECT_LINE_NO:
+ first = 0; last = 4; first2 = 4; last2 = 8;
+ break;
+ case INTERSECT_QUAD_LINE:
+ first = 1; last = 7; first2 = 10; last2 = 14;
+ break;
+ case INTERSECT_QUAD_LINE_2:
+ first = 1; last = 7; first2 = 13; last2 = 17;
+ break;
+ case INTERSECT_QUAD_LINE_NO:
+ first = 0; last = 6; first2 = 6; last2 = 10;
+ break;
+ case INTERSECT_QUAD:
+ first = 1; last = 7; first2 = 10; last2 = 16;
+ break;
+ case INTERSECT_QUAD_2:
+ first = 1; last = 7; first2 = 13; last2 = 19;
+ break;
+ case INTERSECT_QUAD_NO:
+ first = 0; last = 6; first2 = 6; last2 = 12;
+ break;
+ case INTERSECT_SELF_CUBIC:
+ first = 1; last = 9;
+ break;
+ case INTERSECT_SELF_CUBIC_NO:
+ first = 0; last = 8;
+ break;
+ case INTERSECT_CUBIC_LINE:
+ first = 1; last = 9; first2 = 12; last2 = 16;
+ break;
+ case INTERSECT_CUBIC_LINE_2:
+ first = 1; last = 9; first2 = 15; last2 = 19;
+ break;
+ case INTERSECT_CUBIC_LINE_3:
+ first = 1; last = 9; first2 = 18; last2 = 22;
+ break;
+ case INTERSECT_CUBIC_LINE_NO:
+ first = 0; last = 8; first2 = 8; last2 = 12;
+ break;
+ case INTERSECT_CUBIC:
+ first = 1; last = 9; first2 = 12; last2 = 20;
+ break;
+ case INTERSECT_CUBIC_2:
+ first = 1; last = 9; first2 = 15; last2 = 23;
+ break;
+ case INTERSECT_CUBIC_3:
+ first = 1; last = 9; first2 = 18; last2 = 26;
+ break;
+ case INTERSECT_CUBIC_4:
+ first = 1; last = 9; first2 = 21; last2 = 29;
+ break;
+ case INTERSECT_CUBIC_NO:
+ first = 0; last = 8; first2 = 8; last2 = 16;
+ break;
+ default:
+ console.log("unknown REC_TYPE_SECT frag type: " + fragType);
+ throw "stop execution";
+ }
+ break;
+ default:
+ continue;
+ }
+ for (var idx = first; idx < last; idx += 2) {
+ xmin = Math.min(xmin, frags[idx]);
+ xmax = Math.max(xmax, frags[idx]);
+ ymin = Math.min(ymin, frags[idx + 1]);
+ ymax = Math.max(ymax, frags[idx + 1]);
+ }
+ for (var idx = first2; idx < last2; idx += 2) {
+ xmin = Math.min(xmin, frags[idx]);
+ xmax = Math.max(xmax, frags[idx]);
+ ymin = Math.min(ymin, frags[idx + 1]);
+ ymax = Math.max(ymax, frags[idx + 1]);
+ }
+ }
+ }
+ setScale();
+ if (hasPath == false && hasComputedPath == true && !draw_computed) {
+ draw_computed = 3; // show both quadratics and cubics
+ }
+ if (hasPath == true && hasComputedPath == false && draw_computed) {
+ draw_computed = 0;
+ }
+}
+
+function setScale() {
+ var srcWidth = xmax - xmin;
+ var srcHeight = ymax - ymin;
+ var hscale = ctx.canvas.width / srcWidth;
+ var vscale = ctx.canvas.height / srcHeight;
+ scale = Math.min(hscale, vscale);
+ var invScale = 1 / scale;
+ var sxmin = xmin - invScale * 5;
+ var symin = ymin - invScale * 10;
+ var sxmax = xmax + invScale * (6 * decimal_places + 10);
+ var symax = ymax + invScale * 10;
+ srcWidth = sxmax - sxmin;
+ srcHeight = symax - symin;
+ hscale = ctx.canvas.width / srcWidth;
+ vscale = ctx.canvas.height / srcHeight;
+ scale = Math.min(hscale, vscale);
+ srcLeft = sxmin;
+ srcTop = symin;
+}
+
+function drawPoint(px, py, end) {
+ for (var pts = 0; pts < drawnPts.length; pts += 2) {
+ var x = drawnPts[pts];
+ var y = drawnPts[pts + 1];
+ if (px == x && py == y) {
+ return;
+ }
+ }
+ drawnPts.push(px);
+ drawnPts.push(py);
+ var label = px.toFixed(decimal_places) + ", " + py.toFixed(decimal_places);
+ var _px = (px - srcLeft) * scale;
+ var _py = (py - srcTop) * scale;
+ ctx.beginPath();
+ ctx.arc(_px, _py, 3, 0, Math.PI*2, true);
+ ctx.closePath();
+ if (end) {
+ ctx.fill();
+ } else {
+ ctx.stroke();
+ }
+ ctx.textAlign = "left";
+ ctx.fillText(label, _px + 5, _py);
+}
+
+function drawPoints(ptArray, curveType, drawControls) {
+ var count = (curveType - PATH_LINE + 2) * 2;
+ for (var idx = 0; idx < count; idx += 2) {
+ if (!drawControls && idx != 0 && idx != count - 2) {
+ continue;
+ }
+ drawPoint(ptArray[idx], ptArray[idx + 1], idx == 0 || idx == count - 2);
+ }
+}
+
+function drawControlLines(curve, curveType, drawEnd) {
+ if (curveType == PATH_LINE) {
+ return;
+ }
+ ctx.strokeStyle = "rgba(0,0,0, 0.3)";
+ drawLine(curve[0], curve[1], curve[2], curve[3]);
+ drawLine(curve[2], curve[3], curve[4], curve[5]);
+ if (curveType == PATH_CUBIC) {
+ drawLine(curve[4], curve[5], curve[6], curve[7]);
+ if (drawEnd > 1) {
+ drawLine(curve[6], curve[7], curve[0], curve[1]);
+ if (drawEnd > 2) {
+ drawLine(curve[0], curve[1], curve[4], curve[5]);
+ drawLine(curve[6], curve[7], curve[2], curve[3]);
+ }
+ }
+ } else if (drawEnd > 1) {
+ drawLine(curve[4], curve[5], curve[0], curve[1]);
+ }
+}
+
+function pointAtT(curve, curveType, t) {
+ var xy = {};
+ switch (curveType) {
+ case PATH_LINE:
+ var a = 1 - t;
+ var b = t;
+ xy.x = a * curve[0] + b * curve[2];
+ xy.y = a * curve[1] + b * curve[3];
+ break;
+ case PATH_QUAD:
+ var one_t = 1 - t;
+ var a = one_t * one_t;
+ var b = 2 * one_t * t;
+ var c = t * t;
+ xy.x = a * curve[0] + b * curve[2] + c * curve[4];
+ xy.y = a * curve[1] + b * curve[3] + c * curve[5];
+ break;
+ case PATH_CUBIC:
+ var one_t = 1 - t;
+ var one_t2 = one_t * one_t;
+ var a = one_t2 * one_t;
+ var b = 3 * one_t2 * t;
+ var t2 = t * t;
+ var c = 3 * one_t * t2;
+ var d = t2 * t;
+ xy.x = a * curve[0] + b * curve[2] + c * curve[4] + d * curve[6];
+ xy.y = a * curve[1] + b * curve[3] + c * curve[5] + d * curve[7];
+ break;
+ }
+ return xy;
+}
+
+function drawPointAtT(curve, curveType) {
+ var x, y;
+ var xy = pointAtT(curve, curveType, curveT);
+ drawPoint(xy.x, xy.y, true);
+ if (!draw_intersectT) {
+ return;
+ }
+ ctx.fillStyle = "red";
+ drawTAtPointUp(xy.x, xy.y, curveT);
+}
+
+function drawTAtPointUp(px, py, t) {
+ var label = t.toFixed(decimal_places);
+ var _px = (px - srcLeft)* scale;
+ var _py = (py - srcTop) * scale;
+ ctx.fillText(label, _px + 5, _py - 10);
+}
+
+function drawTAtPointDown(px, py, t) {
+ var label = t.toFixed(decimal_places);
+ var _px = (px - srcLeft)* scale;
+ var _py = (py - srcTop) * scale;
+ ctx.fillText(label, _px + 5, _py + 10);
+}
+
+function alreadyDrawnLine(x1, y1, x2, y2) {
+ for (var pts = 0; pts < drawnLines.length; pts += 4) {
+ if (x1 == drawnLines[pts] && y1 == drawnLines[pts + 1]
+ && x2 == drawnLines[pts + 2] && y2 == drawnLines[pts + 3]) {
+ return true;
+ }
+ }
+ drawnLines.push(x1);
+ drawnLines.push(y1);
+ drawnLines.push(x2);
+ drawnLines.push(y2);
+ return false;
+}
+
+function drawLine(x1, y1, x2, y2) {
+ if (alreadyDrawnLine(x1, y1, x2, y2)) {
+ return;
+ }
+ ctx.beginPath();
+ ctx.moveTo((x1 - srcLeft) * scale,
+ (y1 - srcTop) * scale);
+ ctx.lineTo((x2 - srcLeft) * scale,
+ (y2 - srcTop) * scale);
+ ctx.stroke();
+}
+
+function linePartial(x1, y1, x2, y2, t1, t2) {
+ var dx = x1 - x2;
+ var dy = y1 - y2;
+ var array = [
+ x1 - t1 * dx,
+ y1 - t1 * dy,
+ x1 - t2 * dx,
+ y1 - t2 * dy
+ ];
+ return array;
+}
+
+function drawLinePartial(x1, y1, x2, y2, t1, t2) {
+ var a = linePartial(x1, y1, x2, y2, t1, t2);
+ var ax = a[0];
+ var ay = a[1];
+ var bx = a[2];
+ var by = a[3];
+ if (alreadyDrawnLine(ax, ay, bx, by)) {
+ return;
+ }
+ ctx.beginPath();
+ ctx.moveTo((ax - srcLeft) * scale,
+ (ay - srcTop) * scale);
+ ctx.lineTo((bx - srcLeft) * scale,
+ (by - srcTop) * scale);
+ ctx.stroke();
+}
+
+function alreadyDrawnQuad(x1, y1, x2, y2, x3, y3) {
+ for (var pts = 0; pts < drawnQuads.length; pts += 6) {
+ if (x1 == drawnQuads[pts] && y1 == drawnQuads[pts + 1]
+ && x2 == drawnQuads[pts + 2] && y2 == drawnQuads[pts + 3]
+ && x3 == drawnQuads[pts + 4] && x3 == drawnQuads[pts + 5]) {
+ return true;
+ }
+ }
+ drawnQuads.push(x1);
+ drawnQuads.push(y1);
+ drawnQuads.push(x2);
+ drawnQuads.push(y2);
+ drawnQuads.push(x3);
+ drawnQuads.push(y3);
+ return false;
+}
+
+function drawQuad(x1, y1, x2, y2, x3, y3) {
+ if (alreadyDrawnQuad(x1, y1, x2, y2, x3, y3)) {
+ return;
+ }
+ ctx.beginPath();
+ ctx.moveTo((x1 - srcLeft) * scale,
+ (y1 - srcTop) * scale);
+ ctx.quadraticCurveTo((x2 - srcLeft) * scale,
+ (y2 - srcTop) * scale,
+ (x3 - srcLeft) * scale,
+ (y3 - srcTop) * scale);
+ ctx.stroke();
+}
+
+function interp(A, B, t) {
+ return A + (B - A) * t;
+}
+
+function interp_quad_coords(x1, x2, x3, t)
+{
+ var ab = interp(x1, x2, t);
+ var bc = interp(x2, x3, t);
+ var abc = interp(ab, bc, t);
+ return abc;
+}
+
+function quadPartial(x1, y1, x2, y2, x3, y3, t1, t2) {
+ var ax = interp_quad_coords(x1, x2, x3, t1);
+ var ay = interp_quad_coords(y1, y2, y3, t1);
+ var dx = interp_quad_coords(x1, x2, x3, (t1 + t2) / 2);
+ var dy = interp_quad_coords(y1, y2, y3, (t1 + t2) / 2);
+ var cx = interp_quad_coords(x1, x2, x3, t2);
+ var cy = interp_quad_coords(y1, y2, y3, t2);
+ var bx = 2*dx - (ax + cx)/2;
+ var by = 2*dy - (ay + cy)/2;
+ var array = [
+ ax, ay, bx, by, cx, cy
+ ];
+ return array;
+}
+
+function drawQuadPartial(x1, y1, x2, y2, x3, y3, t1, t2) {
+ var a = quadPartial(x1, y1, x2, y2, x3, y3, t1, t2);
+ var ax = a[0];
+ var ay = a[1];
+ var bx = a[2];
+ var by = a[3];
+ var cx = a[4];
+ var cy = a[5];
+ if (alreadyDrawnQuad(ax, ay, bx, by, cx, cy)) {
+ return;
+ }
+ ctx.beginPath();
+ ctx.moveTo((ax - srcLeft) * scale,
+ (ay - srcTop) * scale);
+ ctx.quadraticCurveTo((bx - srcLeft) * scale,
+ (by - srcTop) * scale,
+ (cx - srcLeft) * scale,
+ (cy - srcTop) * scale);
+ ctx.stroke();
+}
+
+function alreadyDrawnCubic(x1, y1, x2, y2, x3, y3, x4, y4) {
+ for (var pts = 0; pts < drawnCubics.length; pts += 8) {
+ if (x1 == drawnCubics[pts] && y1 == drawnCubics[pts + 1]
+ && x2 == drawnCubics[pts + 2] && y2 == drawnCubics[pts + 3]
+ && x3 == drawnCubics[pts + 4] && y3 == drawnCubics[pts + 5]
+ && x4 == drawnCubics[pts + 6] && y4 == drawnCubics[pts + 7]) {
+ return true;
+ }
+ }
+ drawnCubics.push(x1);
+ drawnCubics.push(y1);
+ drawnCubics.push(x2);
+ drawnCubics.push(y2);
+ drawnCubics.push(x3);
+ drawnCubics.push(y3);
+ drawnCubics.push(x4);
+ drawnCubics.push(y4);
+ return false;
+}
+
+function drawCubic(x1, y1, x2, y2, x3, y3, x4, y4) {
+ if (alreadyDrawnCubic(x1, y1, x2, y2, x3, y3, x4, y4)) {
+ return;
+ }
+ ctx.beginPath();
+ ctx.moveTo((x1 - srcLeft) * scale,
+ (y1 - srcTop) * scale);
+ ctx.bezierCurveTo((x2 - srcLeft) * scale,
+ (y2 - srcTop) * scale,
+ (x3 - srcLeft) * scale,
+ (y3 - srcTop) * scale,
+ (x4 - srcLeft) * scale,
+ (y4 - srcTop) * scale);
+ ctx.stroke();
+}
+
+function interp_cubic_coords(x1, x2, x3, x4, t)
+{
+ var ab = interp(x1, x2, t);
+ var bc = interp(x2, x3, t);
+ var cd = interp(x3, x4, t);
+ var abc = interp(ab, bc, t);
+ var bcd = interp(bc, cd, t);
+ var abcd = interp(abc, bcd, t);
+ return abcd;
+}
+
+function cubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2) {
+ var ax = interp_cubic_coords(x1, x2, x3, x4, t1);
+ var ay = interp_cubic_coords(y1, y2, y3, y4, t1);
+ var ex = interp_cubic_coords(x1, x2, x3, x4, (t1*2+t2)/3);
+ var ey = interp_cubic_coords(y1, y2, y3, y4, (t1*2+t2)/3);
+ var fx = interp_cubic_coords(x1, x2, x3, x4, (t1+t2*2)/3);
+ var fy = interp_cubic_coords(y1, y2, y3, y4, (t1+t2*2)/3);
+ var dx = interp_cubic_coords(x1, x2, x3, x4, t2);
+ var dy = interp_cubic_coords(y1, y2, y3, y4, t2);
+ var mx = ex * 27 - ax * 8 - dx;
+ var my = ey * 27 - ay * 8 - dy;
+ var nx = fx * 27 - ax - dx * 8;
+ var ny = fy * 27 - ay - dy * 8;
+ var bx = (mx * 2 - nx) / 18;
+ var by = (my * 2 - ny) / 18;
+ var cx = (nx * 2 - mx) / 18;
+ var cy = (ny * 2 - my) / 18;
+ var array = [
+ ax, ay, bx, by, cx, cy, dx, dy
+ ];
+ return array;
+}
+
+function drawCubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2) {
+ var a = cubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2);
+ var ax = a[0];
+ var ay = a[1];
+ var bx = a[2];
+ var by = a[3];
+ var cx = a[4];
+ var cy = a[5];
+ var dx = a[6];
+ var dy = a[7];
+ if (alreadyDrawnCubic(ax, ay, bx, by, cx, cy, dx, dy)) {
+ return;
+ }
+ ctx.beginPath();
+ ctx.moveTo((ax - srcLeft) * scale,
+ (ay - srcTop) * scale);
+ ctx.bezierCurveTo((bx - srcLeft) * scale,
+ (by - srcTop) * scale,
+ (cx - srcLeft) * scale,
+ (cy - srcTop) * scale,
+ (dx - srcLeft) * scale,
+ (dy - srcTop) * scale);
+ ctx.stroke();
+}
+
+function boundsWidth(pts) {
+ var min = pts[0];
+ var max = pts[0];
+ for (var idx = 2; idx < pts.length; idx += 2) {
+ min = Math.min(min, pts[idx]);
+ max = Math.max(max, pts[idx]);
+ }
+ return max - min;
+}
+
+function boundsHeight(pts) {
+ var min = pts[1];
+ var max = pts[1];
+ for (var idx = 3; idx < pts.length; idx += 2) {
+ min = Math.min(min, pts[idx]);
+ max = Math.max(max, pts[idx]);
+ }
+ return max - min;
+}
+
+function tangent(pts) {
+ var dx = pts[2] - pts[0];
+ var dy = pts[3] - pts[1];
+ if (dx == 0 && dy == 0 && pts.length > 4) {
+ dx = pts[4] - pts[0];
+ dy = pts[5] - pts[1];
+ if (dx == 0 && dy == 0 && pts.length > 6) {
+ dx = pts[6] - pts[0];
+ dy = pts[7] - pts[1];
+ }
+ }
+ return Math.atan2(-dy, dx);
+}
+
+function hodograph(cubic) {
+ var hodo = [];
+ hodo[0] = 3 * (cubic[2] - cubic[0]);
+ hodo[1] = 3 * (cubic[3] - cubic[1]);
+ hodo[2] = 3 * (cubic[4] - cubic[2]);
+ hodo[3] = 3 * (cubic[5] - cubic[3]);
+ hodo[4] = 3 * (cubic[6] - cubic[4]);
+ hodo[5] = 3 * (cubic[7] - cubic[5]);
+ return hodo;
+}
+
+function hodograph2(cubic) {
+ var quad = hodograph(cubic);
+ var hodo = [];
+ hodo[0] = 2 * (quad[2] - quad[0]);
+ hodo[1] = 2 * (quad[3] - quad[1]);
+ hodo[2] = 2 * (quad[4] - quad[2]);
+ hodo[3] = 2 * (quad[5] - quad[3]);
+ return hodo;
+}
+
+function quadraticRootsReal(A, B, C, s) {
+ if (A == 0) {
+ if (B == 0) {
+ s[0] = 0;
+ return C == 0;
+ }
+ s[0] = -C / B;
+ return 1;
+ }
+ /* normal form: x^2 + px + q = 0 */
+ var p = B / (2 * A);
+ var q = C / A;
+ var p2 = p * p;
+ if (p2 < q) {
+ return 0;
+ }
+ var sqrt_D = 0;
+ if (p2 > q) {
+ sqrt_D = sqrt(p2 - q);
+ }
+ s[0] = sqrt_D - p;
+ s[1] = -sqrt_D - p;
+ return 1 + s[0] != s[1];
+}
+
+function add_valid_ts(s, realRoots, t) {
+ var foundRoots = 0;
+ for (var index = 0; index < realRoots; ++index) {
+ var tValue = s[index];
+ if (tValue >= 0 && tValue <= 1) {
+ for (var idx2 = 0; idx2 < foundRoots; ++idx2) {
+ if (t[idx2] != tValue) {
+ t[foundRoots++] = tValue;
+ }
+ }
+ }
+ }
+ return foundRoots;
+}
+
+function quadraticRootsValidT(a, b, c, t) {
+ var s = [];
+ var realRoots = quadraticRootsReal(A, B, C, s);
+ var foundRoots = add_valid_ts(s, realRoots, t);
+ return foundRoots != 0;
+}
+
+function find_cubic_inflections(cubic, tValues) {
+ var Ax = src[2] - src[0];
+ var Ay = src[3] - src[1];
+ var Bx = src[4] - 2 * src[2] + src[0];
+ var By = src[5] - 2 * src[3] + src[1];
+ var Cx = src[6] + 3 * (src[2] - src[4]) - src[0];
+ var Cy = src[7] + 3 * (src[3] - src[5]) - src[1];
+ return quadraticRootsValidT(Bx * Cy - By * Cx, (Ax * Cy - Ay * Cx),
+ Ax * By - Ay * Bx, tValues);
+}
+
+function dxy_at_t(curve, type, t) {
+ var dxy = {};
+ if (type == PATH_QUAD) {
+ var a = t - 1;
+ var b = 1 - 2 * t;
+ var c = t;
+ dxy.x = a * curve[0] + b * curve[2] + c * curve[4];
+ dxy.y = a * curve[1] + b * curve[3] + c * curve[5];
+ } else if (type == PATH_CUBIC) {
+ var one_t = 1 - t;
+ var a = curve[0];
+ var b = curve[2];
+ var c = curve[4];
+ var d = curve[6];
+ dxy.x = 3 * ((b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t);
+ a = curve[1];
+ b = curve[3];
+ c = curve[5];
+ d = curve[7];
+ dxy.y = 3 * ((b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t);
+ }
+ return dxy;
+}
+
+function drawLabel(num, px, py) {
+ ctx.beginPath();
+ ctx.arc(px, py, 8, 0, Math.PI*2, true);
+ ctx.closePath();
+ ctx.strokeStyle = "rgba(0,0,0, 0.4)";
+ ctx.lineWidth = num == 0 || num == 3 ? 2 : 1;
+ ctx.stroke();
+ ctx.fillStyle = "black";
+ ctx.font = "normal 10px Arial";
+ // ctx.rotate(0.001);
+ ctx.fillText(num, px - 2, py + 3);
+ // ctx.rotate(-0.001);
+}
+
+function drawLabelX(ymin, num, loc) {
+ var px = (loc - srcLeft) * scale;
+ var py = (ymin - srcTop) * scale - 20;
+ drawLabel(num, px, py);
+}
+
+function drawLabelY(xmin, num, loc) {
+ var px = (xmin - srcLeft) * scale - 20;
+ var py = (loc - srcTop) * scale;
+ drawLabel(num, px, py);
+}
+
+function drawHodoOrigin(hx, hy, hMinX, hMinY, hMaxX, hMaxY) {
+ ctx.beginPath();
+ ctx.moveTo(hx, hy - 100);
+ ctx.lineTo(hx, hy);
+ ctx.strokeStyle = hMinY < 0 ? "green" : "blue";
+ ctx.stroke();
+ ctx.beginPath();
+ ctx.moveTo(hx, hy);
+ ctx.lineTo(hx, hy + 100);
+ ctx.strokeStyle = hMaxY > 0 ? "green" : "blue";
+ ctx.stroke();
+ ctx.beginPath();
+ ctx.moveTo(hx - 100, hy);
+ ctx.lineTo(hx, hy);
+ ctx.strokeStyle = hMinX < 0 ? "green" : "blue";
+ ctx.stroke();
+ ctx.beginPath();
+ ctx.moveTo(hx, hy);
+ ctx.lineTo(hx + 100, hy);
+ ctx.strokeStyle = hMaxX > 0 ? "green" : "blue";
+ ctx.stroke();
+}
+
+function scalexy(x, y, mag) {
+ var length = Math.sqrt(x * x + y * y);
+ return mag / length;
+}
+
+function drawArrow(x, y, dx, dy) {
+ var dscale = scalexy(dx, dy, 1 / scale * 100);
+ dx *= dscale;
+ dy *= dscale;
+ ctx.beginPath();
+ ctx.moveTo((x - srcLeft) * scale, (y - srcTop) * scale);
+ x += dx;
+ y += dy;
+ ctx.lineTo((x - srcLeft) * scale, (y - srcTop) * scale);
+ dx /= 10;
+ dy /= 10;
+ ctx.lineTo((x - dy - srcLeft) * scale, (y + dx - srcTop) * scale);
+ ctx.lineTo((x + dx * 2 - srcLeft) * scale, (y + dy * 2 - srcTop) * scale);
+ ctx.lineTo((x + dy - srcLeft) * scale, (y - dx - srcTop) * scale);
+ ctx.lineTo((x - srcLeft) * scale, (y - srcTop) * scale);
+ ctx.strokeStyle = "rgba(0,75,0, 0.4)";
+ ctx.stroke();
+}
+
+function drawCurveSpecials(curve, type) {
+ if (pt_labels) {
+ drawPoints(curve, type, pt_labels == 2);
+ }
+ if (control_lines != 0) {
+ drawControlLines(curve, type, control_lines);
+ }
+ if (curve_t) {
+ drawPointAtT(curve, type);
+ }
+ if (draw_midpoint) {
+ var mid = pointAtT(curve, type, 0.5);
+ drawPoint(mid.x, mid.y, true);
+ }
+ if (type == PATH_LINE) {
+ return;
+ }
+ if (draw_deriviatives > 0) {
+ var d = dxy_at_t(curve, type, 0);
+ drawArrow(curve[0], curve[1], d.x, d.y);
+ if (draw_deriviatives == 2) {
+ d = dxy_at_t(curve, type, 1);
+ if (type == PATH_CUBIC) {
+ drawArrow(curve[6], curve[7], d.x, d.y);
+ } else {
+ drawArrow(curve[4], curve[5], d.x, d.y);
+ }
+ }
+ if (draw_midpoint) {
+ var mid = pointAtT(curve, 0.5);
+ d = dxy_at_t(curve, type, 0.5);
+ drawArrow(mid.x, mid.y, d.x, d.y);
+ }
+ }
+ if (type != PATH_CUBIC) {
+ return;
+ }
+ if (draw_hodo == 1 || draw_hodo == 2) {
+ var hodo = hodograph(curve);
+ var hMinX = Math.min(0, hodo[0], hodo[2], hodo[4]);
+ var hMinY = Math.min(0, hodo[1], hodo[3], hodo[5]);
+ var hMaxX = Math.max(0, hodo[0], hodo[2], hodo[4]);
+ var hMaxY = Math.max(0, hodo[1], hodo[3], hodo[5]);
+ var hScaleX = hMaxX - hMinX > 0 ? ctx.canvas.width / (hMaxX - hMinX) : 1;
+ var hScaleY = hMaxY - hMinY > 0 ? ctx.canvas.height / (hMaxY - hMinY) : 1;
+ var hUnit = Math.min(hScaleX, hScaleY);
+ hUnit /= 2;
+ var hx = xoffset - hMinX * hUnit;
+ var hy = yoffset - hMinY * hUnit;
+ ctx.moveTo(hx + hodo[0] * hUnit, hy + hodo[1] * hUnit);
+ ctx.quadraticCurveTo(
+ hx + hodo[2] * hUnit, hy + hodo[3] * hUnit,
+ hx + hodo[4] * hUnit, hy + hodo[5] * hUnit);
+ ctx.strokeStyle = "red";
+ ctx.stroke();
+ if (draw_hodo == 1) {
+ drawHodoOrigin(hx, hy, hMinX, hMinY, hMaxX, hMaxY);
+ }
+ }
+ if (draw_hodo == 3) {
+ var hodo = hodograph2(curve);
+ var hMinX = Math.min(0, hodo[0], hodo[2]);
+ var hMinY = Math.min(0, hodo[1], hodo[3]);
+ var hMaxX = Math.max(0, hodo[0], hodo[2]);
+ var hMaxY = Math.max(0, hodo[1], hodo[3]);
+ var hScaleX = hMaxX - hMinX > 0 ? ctx.canvas.width / (hMaxX - hMinX) : 1;
+ var hScaleY = hMaxY - hMinY > 0 ? ctx.canvas.height / (hMaxY - hMinY) : 1;
+ var hUnit = Math.min(hScaleX, hScaleY);
+ hUnit /= 2;
+ var hx = xoffset - hMinX * hUnit;
+ var hy = yoffset - hMinY * hUnit;
+ ctx.moveTo(hx + hodo[0] * hUnit, hy + hodo[1] * hUnit);
+ ctx.lineTo(hx + hodo[2] * hUnit, hy + hodo[3] * hUnit);
+ ctx.strokeStyle = "red";
+ ctx.stroke();
+ drawHodoOrigin(hx, hy, hMinX, hMinY, hMaxX, hMaxY);
+ }
+ if (draw_sequence) {
+ var ymin = Math.min(curve[1], curve[3], curve[5], curve[7]);
+ for (var i = 0; i < 8; i+= 2) {
+ drawLabelX(ymin, i >> 1, curve[i]);
+ }
+ var xmin = Math.min(curve[0], curve[2], curve[4], curve[6]);
+ for (var i = 1; i < 8; i+= 2) {
+ drawLabelY(xmin, i >> 1, curve[i]);
+ }
+ }
+}
+
+function logCurves(test) {
+ for (curves in test) {
+ var curve = test[curves];
+ if (curve.length != 8) {
+ continue;
+ }
+ var str = "{{";
+ for (i = 0; i < 8; i += 2) {
+ str += curve[i].toFixed(decimal_places) + "," + curve[i + 1].toFixed(decimal_places);
+ if (i < 6) {
+ str += "}, {";
+ }
+ }
+ str += "}}";
+ console.log(str);
+ }
+}
+
+function draw(test, lines, title) {
+ ctx.fillStyle = "rgba(0,0,0, 0.1)";
+ ctx.font = "normal 50px Arial";
+ ctx.textAlign = "left";
+ ctx.fillText(title, 50, 50);
+ ctx.font = "normal 10px Arial";
+ ctx.lineWidth = "1.001"; "0.999";
+ var secondPath = test.length;
+ var closeCount = 0;
+ var logStart = -1;
+ var logRange = 0;
+ // find last active rec type at this step
+ var curType = test[0];
+ var curStep = 0;
+ var hasOp = false;
+ var lastActive = 0;
+ var lastAdd = 0;
+ var lastSect = 0;
+ var lastSort = 0;
+ var lastMark = 0;
+ activeCount = 0;
+ addCount = 0;
+ sectCount = 0;
+ sortCount = 0;
+ markCount = 0;
+ activeMax = 0;
+ addMax = 0;
+ sectMax = 0;
+ sectMax2 = 0;
+ sortMax = 0;
+ markMax = 0;
+ lastIndex = test.length - 3;
+ for (var testIndex = 0; testIndex < test.length; testIndex += 3) {
+ var recType = test[testIndex];
+ if (!typeof recType == 'number' || recType < REC_TYPE_UNKNOWN || recType > REC_TYPE_LAST) {
+ console.log("unknown rec type: " + recType);
+ throw "stop execution";
+ }
+ // if (curType == recType && curType != REC_TYPE_ADD) {
+ // continue;
+ // }
+ var inStepRange = step_limit == 0 || curStep < step_limit;
+ curType = recType;
+ if (recType == REC_TYPE_OP) {
+ hasOp = true;
+ continue;
+ }
+ if (recType == REC_TYPE_UNKNOWN) {
+ // these types do not advance step
+ continue;
+ }
+ var bumpStep = false;
+ var records = test[testIndex + 2];
+ var fragType = records[0];
+ if (recType == REC_TYPE_ADD) {
+ if (records.length != 2) {
+ console.log("expect only two elements: " + records.length);
+ throw "stop execution";
+ }
+ if (fragType == ADD_MOVETO || fragType == ADD_CLOSE) {
+ continue;
+ }
+ ++addMax;
+ if (!draw_add || !inStepRange) {
+ continue;
+ }
+ lastAdd = testIndex;
+ ++addCount;
+ bumpStep = true;
+ }
+ if (recType == REC_TYPE_PATH && hasOp) {
+ secondPath = testIndex;
+ }
+ if (recType == REC_TYPE_ACTIVE) {
+ ++activeMax;
+ if (!draw_active || !inStepRange) {
+ continue;
+ }
+ lastActive = testIndex;
+ ++activeCount;
+ bumpStep = true;
+ }
+ if (recType == REC_TYPE_SECT) {
+ if (records.length != 2) {
+ console.log("expect only two elements: " + records.length);
+ throw "stop execution";
+ }
+ ++sectMax;
+ var sectBump = 1;
+ switch (fragType) {
+ case INTERSECT_LINE:
+ case INTERSECT_QUAD_LINE:
+ case INTERSECT_QUAD:
+ case INTERSECT_SELF_CUBIC:
+ case INTERSECT_CUBIC_LINE:
+ case INTERSECT_CUBIC:
+ sectBump = 1;
+ break;
+ case INTERSECT_LINE_2:
+ case INTERSECT_QUAD_LINE_2:
+ case INTERSECT_QUAD_2:
+ case INTERSECT_CUBIC_LINE_2:
+ case INTERSECT_CUBIC_2:
+ sectBump = 2;
+ break;
+ case INTERSECT_LINE_NO:
+ case INTERSECT_QUAD_LINE_NO:
+ case INTERSECT_QUAD_NO:
+ case INTERSECT_SELF_CUBIC_NO:
+ case INTERSECT_CUBIC_LINE_NO:
+ case INTERSECT_CUBIC_NO:
+ sectBump = 0;
+ break;
+ case INTERSECT_CUBIC_LINE_3:
+ case INTERSECT_CUBIC_3:
+ sectBump = 3;
+ break;
+ case INTERSECT_CUBIC_4:
+ sectBump = 4;
+ break;
+ default:
+ console.log("missing case " + records.length);
+ throw "stop execution";
+ }
+ sectMax2 += sectBump;
+ if (draw_intersection <= 1 || !inStepRange) {
+ continue;
+ }
+ lastSect = testIndex;
+ sectCount += sectBump;
+ bumpStep = true;
+ }
+ if (recType == REC_TYPE_SORT) {
+ ++sortMax;
+ if (!draw_sort || !inStepRange) {
+ continue;
+ }
+ lastSort = testIndex;
+ ++sortCount;
+ bumpStep = true;
+ }
+ if (recType == REC_TYPE_MARK) {
+ ++markMax;
+ if (!draw_mark || !inStepRange) {
+ continue;
+ }
+ lastMark = testIndex;
+ ++markCount;
+ bumpStep = true;
+ }
+ if (bumpStep) {
+ lastIndex = testIndex;
+ logStart = test[testIndex + 1];
+ logRange = records.length / 2;
+ ++curStep;
+ }
+ }
+ stepMax = (draw_add ? addMax : 0) + (draw_active ? activeMax : 0)
+ + (draw_sort ? sortMax : 0) + (draw_mark ? markMax : 0)
+ + (draw_intersection == 2 ? sectMax : draw_intersection == 3 ? sectMax2 : 0);
+ if (stepMax == 0) {
+ stepMax = addMax + activeMax + sortMax + markMax;
+ }
+ drawnPts = [];
+ drawnLines = [];
+ drawnQuads = [];
+ drawnCubics = [];
+ var pathIndex = 0;
+ var opLetter = 'S';
+ for (var testIndex = lastIndex; testIndex >= 0; testIndex -= 3) {
+ var recType = test[testIndex];
+ var records = test[testIndex + 2];
+ for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
+ var fragType = records[recordIndex];
+ if (!typeof fragType == 'number' || fragType < 1 || fragType > FRAG_TYPE_LAST) {
+ console.log("unknown in range frag type: " + fragType);
+ throw "stop execution";
+ }
+ var frags = records[recordIndex + 1];
+ switch (recType) {
+ case REC_TYPE_COMPUTED:
+ if (draw_computed == 0) {
+ continue;
+ }
+ ctx.lineWidth = 1;
+ ctx.strokeStyle = pathIndex == 0 ? "black" : "red";
+ ctx.fillStyle = "blue";
+ var drawThis = false;
+ switch (fragType) {
+ case PATH_QUAD:
+ if ((draw_computed & 5) == 1 || ((draw_computed & 4) != 0
+ && (draw_computed & 1) == pathIndex)) {
+ drawQuad(frags[0], frags[1], frags[2], frags[3],
+ frags[4], frags[5]);
+ drawThis = true;
+ }
+ break;
+ case PATH_CUBIC:
+ if ((draw_computed & 6) == 2 || ((draw_computed & 4) != 0
+ && (draw_computed & 1) != pathIndex)) {
+ drawCubic(frags[0], frags[1], frags[2], frags[3],
+ frags[4], frags[5], frags[6], frags[7]);
+ drawThis = true;
+ }
+ ++pathIndex;
+ break;
+ case COMPUTED_SET_1:
+ pathIndex = 0;
+ break;
+ case COMPUTED_SET_2:
+ pathIndex = 1;
+ break;
+ default:
+ console.log("unknown REC_TYPE_COMPUTED frag type: " + fragType);
+ throw "stop execution";
+ }
+ if (!drawThis) {
+ break;
+ }
+ drawCurveSpecials(frags, fragType);
+ break;
+ case REC_TYPE_PATH:
+ if (!draw_path) {
+ continue;
+ }
+ var firstPath = testIndex < secondPath;
+ if ((draw_path & (firstPath ? 1 : 2)) == 0) {
+ continue;
+ }
+ ctx.lineWidth = 1;
+ ctx.strokeStyle = firstPath ? "black" : "red";
+ ctx.fillStyle = "blue";
+ switch (fragType) {
+ case PATH_LINE:
+ drawLine(frags[0], frags[1], frags[2], frags[3]);
+ break;
+ case PATH_QUAD:
+ drawQuad(frags[0], frags[1], frags[2], frags[3],
+ frags[4], frags[5]);
+ break;
+ case PATH_CUBIC:
+ drawCubic(frags[0], frags[1], frags[2], frags[3],
+ frags[4], frags[5], frags[6], frags[7]);
+ break;
+ default:
+ console.log("unknown REC_TYPE_PATH frag type: " + fragType);
+ throw "stop execution";
+ }
+ drawCurveSpecials(frags, fragType);
+ break;
+ case REC_TYPE_OP:
+ switch (fragType) {
+ case OP_INTERSECT: opLetter = 'I'; break;
+ case OP_DIFFERENCE: opLetter = 'D'; break;
+ case OP_UNION: opLetter = 'U'; break;
+ case OP_XOR: opLetter = 'X'; break;
+ default:
+ console.log("unknown REC_TYPE_OP frag type: " + fragType);
+ throw "stop execution";
+ }
+ break;
+ case REC_TYPE_ACTIVE:
+ if (!draw_active || (step_limit > 0 && testIndex < lastActive)) {
+ continue;
+ }
+ var x1 = frags[SPAN_X1];
+ var y1 = frags[SPAN_Y1];
+ var x2 = frags[SPAN_X2];
+ var y2 = frags[SPAN_Y2];
+ var x3, y3, x3, y4, t1, t2;
+ ctx.lineWidth = 3;
+ ctx.strokeStyle = "rgba(0,0,255, 0.3)";
+ switch (fragType) {
+ case ACTIVE_LINE_SPAN:
+ t1 = frags[SPAN_L_T];
+ t2 = frags[SPAN_L_TEND];
+ drawLinePartial(x1, y1, x2, y2, t1, t2);
+ break;
+ case ACTIVE_QUAD_SPAN:
+ x3 = frags[SPAN_X3];
+ y3 = frags[SPAN_Y3];
+ t1 = frags[SPAN_Q_T];
+ t2 = frags[SPAN_Q_TEND];
+ drawQuadPartial(x1, y1, x2, y2, x3, y3, t1, t2);
+ break;
+ case ACTIVE_CUBIC_SPAN:
+ x3 = frags[SPAN_X3];
+ y3 = frags[SPAN_Y3];
+ x4 = frags[SPAN_X4];
+ y4 = frags[SPAN_Y4];
+ t1 = frags[SPAN_C_T];
+ t2 = frags[SPAN_C_TEND];
+ drawCubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2);
+ break;
+ default:
+ console.log("unknown REC_TYPE_ACTIVE frag type: " + fragType);
+ throw "stop execution";
+ }
+ break;
+ case REC_TYPE_ADD:
+ if (!draw_add) {
+ continue;
+ }
+ ctx.lineWidth = 3;
+ ctx.strokeStyle = closeCount == 0 ? "rgba(0,0,255, 0.3)"
+ : closeCount == 1 ? "rgba(0,127,0, 0.3)"
+ : closeCount == 2 ? "rgba(0,127,127, 0.3)"
+ : closeCount == 3 ? "rgba(127,127,0, 0.3)"
+ : "rgba(127,0,127, 0.3)";
+ switch (fragType) {
+ case ADD_MOVETO:
+ break;
+ case ADD_LINETO:
+ if (step_limit == 0 || testIndex >= lastAdd) {
+ drawLine(frags[0], frags[1], frags[2], frags[3]);
+ }
+ break;
+ case ADD_QUADTO:
+ if (step_limit == 0 || testIndex >= lastAdd) {
+ drawQuad(frags[0], frags[1], frags[2], frags[3], frags[4], frags[5]);
+ }
+ break;
+ case ADD_CUBICTO:
+ if (step_limit == 0 || testIndex >= lastAdd) {
+ drawCubic(frags[0], frags[1], frags[2], frags[3],
+ frags[4], frags[5], frags[6], frags[7]);
+ }
+ break;
+ case ADD_CLOSE:
+ ++closeCount;
+ break;
+ default:
+ console.log("unknown REC_TYPE_ADD frag type: " + fragType);
+ throw "stop execution";
+ }
+ break;
+ case REC_TYPE_SECT:
+ if (!draw_intersection) {
+ continue;
+ }
+ if (draw_intersection != 1 && (step_limit > 0 && testIndex < lastSect)) {
+ continue;
+ }
+ // draw_intersection == 1 : show all
+ // draw_intersection == 2 : step == 0 ? show all : show intersection line #step
+ // draw_intersection == 3 : step == 0 ? show all : show intersection #step
+ ctx.lineWidth = 1;
+ ctx.strokeStyle = "rgba(0,0,255, 0.3)";
+ ctx.fillStyle = "blue";
+ var f = [];
+ var c1s;
+ var c1l;
+ var c2s;
+ var c2l;
+ switch (fragType) {
+ case INTERSECT_LINE:
+ f.push(5, 6, 0, 7);
+ c1s = 1; c1l = 4; c2s = 8; c2l = 4;
+ break;
+ case INTERSECT_LINE_2:
+ f.push(5, 6, 0, 10);
+ f.push(8, 9, 7, 15);
+ c1s = 1; c1l = 4; c2s = 11; c2l = 4;
+ break;
+ case INTERSECT_LINE_NO:
+ c1s = 0; c1l = 4; c2s = 4; c2l = 4;
+ break;
+ case INTERSECT_QUAD_LINE:
+ f.push(7, 8, 0, 9);
+ c1s = 1; c1l = 6; c2s = 10; c2l = 4;
+ break;
+ case INTERSECT_QUAD_LINE_2:
+ f.push(7, 8, 0, 12);
+ f.push(10, 11, 9, 17);
+ c1s = 1; c1l = 6; c2s = 13; c2l = 4;
+ break;
+ case INTERSECT_QUAD_LINE_NO:
+ c1s = 0; c1l = 6; c2s = 6; c2l = 4;
+ break;
+ case INTERSECT_QUAD:
+ f.push(7, 8, 0, 9);
+ c1s = 1; c1l = 6; c2s = 10; c2l = 6;
+ break;
+ case INTERSECT_QUAD_2:
+ f.push(7, 8, 0, 12);
+ f.push(10, 11, 9, 19);
+ c1s = 1; c1l = 6; c2s = 13; c2l = 6;
+ break;
+ case INTERSECT_QUAD_NO:
+ c1s = 0; c1l = 6; c2s = 6; c2l = 6;
+ break;
+ case INTERSECT_SELF_CUBIC:
+ f.push(9, 10, 0, 11);
+ c1s = 1; c1l = 8; c2s = 0; c2l = 0;
+ break;
+ case INTERSECT_SELF_CUBIC_NO:
+ c1s = 0; c1l = 8; c2s = 0; c2l = 0;
+ break;
+ case INTERSECT_CUBIC_LINE:
+ f.push(9, 10, 0, 11);
+ c1s = 1; c1l = 8; c2s = 12; c2l = 4;
+ break;
+ case INTERSECT_CUBIC_LINE_2:
+ f.push(9, 10, 0, 14);
+ f.push(12, 13, 11, 19);
+ c1s = 1; c1l = 8; c2s = 15; c2l = 4;
+ break;
+ case INTERSECT_CUBIC_LINE_3:
+ f.push(9, 10, 0, 17);
+ f.push(12, 13, 11, 22);
+ f.push(15, 16, 14, 23);
+ c1s = 1; c1l = 8; c2s = 18; c2l = 4;
+ break;
+ case INTERSECT_CUBIC_LINE_NO:
+ c1s = 0; c1l = 8; c2s = 8; c2l = 4;
+ break;
+ case INTERSECT_CUBIC:
+ f.push(9, 10, 0, 11);
+ c1s = 1; c1l = 8; c2s = 12; c2l = 8;
+ break;
+ case INTERSECT_CUBIC_2:
+ f.push(9, 10, 0, 14);
+ f.push(12, 13, 11, 23);
+ c1s = 1; c1l = 8; c2s = 15; c2l = 8;
+ break;
+ case INTERSECT_CUBIC_3:
+ f.push(9, 10, 0, 17);
+ f.push(12, 13, 11, 26);
+ f.push(15, 16, 14, 27);
+ c1s = 1; c1l = 8; c2s = 18; c2l = 8;
+ break;
+ case INTERSECT_CUBIC_4:
+ f.push(9, 10, 0, 20);
+ f.push(12, 13, 11, 29);
+ f.push(15, 16, 14, 30);
+ f.push(18, 19, 17, 31);
+ c1s = 1; c1l = 8; c2s = 21; c2l = 8;
+ break;
+ case INTERSECT_CUBIC_NO:
+ c1s = 0; c1l = 8; c2s = 8; c2l = 8;
+ break;
+ default:
+ console.log("unknown REC_TYPE_SECT frag type: " + fragType);
+ throw "stop execution";
+ }
+ if (draw_intersection != 1) {
+ switch (c1l) {
+ case 4:
+ drawLine(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3]);
+ break;
+ case 6:
+ drawQuad(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
+ frags[c1s + 4], frags[c1s + 5]);
+ break;
+ case 8:
+ drawCubic(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
+ frags[c1s + 4], frags[c1s + 5], frags[c1s + 6], frags[c1s + 7]);
+ break;
+ }
+ switch (c2l) {
+ case 0:
+ break;
+ case 4:
+ drawLine(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3]);
+ break;
+ case 6:
+ drawQuad(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
+ frags[c2s + 4], frags[c2s + 5]);
+ break;
+ case 8:
+ drawCubic(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
+ frags[c2s + 4], frags[c2s + 5], frags[c2s + 6], frags[c2s + 7]);
+ break;
+ }
+ }
+ for (var idx = 0; idx < f.length; idx += 4) {
+ if (draw_intersection != 3 || idx == lastSect - testIndex) {
+ drawPoint(frags[f[idx]], frags[f[idx + 1]], true);
+ }
+ }
+ if (!draw_intersectT) {
+ break;
+ }
+ ctx.fillStyle = "red";
+ for (var idx = 0; idx < f.length; idx += 4) {
+ if (draw_intersection != 3 || idx == lastSect - testIndex) {
+ drawTAtPointUp(frags[f[idx]], frags[f[idx + 1]], frags[f[idx + 2]]);
+ drawTAtPointDown(frags[f[idx]], frags[f[idx + 1]], frags[f[idx + 3]]);
+ }
+ }
+ break;
+ case REC_TYPE_SORT:
+ if (!draw_sort || (step_limit > 0 && testIndex < lastSort)) {
+ continue;
+ }
+ ctx.lineWidth = 3;
+ ctx.strokeStyle = "rgba(127,127,0, 0.5)";
+ switch (fragType) {
+ case SORT_LINE:
+ case SORT_LINE_UNSORTABLE:
+ drawLinePartial(frags[1], frags[2], frags[3], frags[4],
+ frags[5], frags[6]);
+ break;
+ case SORT_QUAD:
+ case SORT_QUAD_UNSORTABLE:
+ drawQuadPartial(frags[1], frags[2], frags[3], frags[4],
+ frags[5], frags[6], frags[7], frags[8]);
+ break;
+ case SORT_CUBIC:
+ case SORT_CUBIC_UNSORTABLE:
+ drawCubicPartial(frags[1], frags[2], frags[3], frags[4],
+ frags[5], frags[6], frags[7], frags[8], frags[9], frags[10]);
+ break;
+ case SORT_LINE_COMPACT:
+ case SORT_QUAD_COMPACT:
+ case SORT_CUBIC_COMPACT:
+ // unsupported
+ break;
+ default:
+ console.log("unknown REC_TYPE_SORT frag type: " + fragType);
+ throw "stop execution";
+ }
+ break;
+ case REC_TYPE_MARK:
+ if (!draw_mark || (step_limit > 0 && testIndex < lastMark)) {
+ continue;
+ }
+ ctx.lineWidth = 3;
+ ctx.strokeStyle = fragType >= MARK_DONE_LINE ?
+ "rgba(127,0,127, 0.5)" : "rgba(127,127,0, 0.5)";
+ switch (fragType) {
+ case MARK_LINE:
+ case MARK_DONE_LINE:
+ case MARK_UNSORTABLE_LINE:
+ case MARK_SIMPLE_LINE:
+ case MARK_SIMPLE_DONE_LINE:
+ case MARK_DONE_UNARY_LINE:
+ drawLinePartial(frags[1], frags[2], frags[3], frags[4],
+ frags[5], frags[9]);
+ break;
+ case MARK_QUAD:
+ case MARK_DONE_QUAD:
+ case MARK_UNSORTABLE_QUAD:
+ case MARK_SIMPLE_QUAD:
+ case MARK_SIMPLE_DONE_QUAD:
+ case MARK_DONE_UNARY_QUAD:
+ drawQuadPartial(frags[1], frags[2], frags[3], frags[4],
+ frags[5], frags[6], frags[7], frags[11]);
+ break;
+ case MARK_CUBIC:
+ case MARK_DONE_CUBIC:
+ case MARK_UNSORTABLE_CUBIC:
+ case MARK_SIMPLE_CUBIC:
+ case MARK_SIMPLE_DONE_CUBIC:
+ case MARK_DONE_UNARY_CUBIC:
+ drawCubicPartial(frags[1], frags[2], frags[3], frags[4],
+ frags[5], frags[6], frags[7], frags[8], frags[9], frags[13]);
+ break;
+ default:
+ console.log("unknown REC_TYPE_MARK frag type: " + fragType);
+ throw "stop execution";
+ }
+ break;
+ default:
+ continue;
+ }
+ }
+ switch (recType) {
+ case REC_TYPE_SORT:
+ if (!draw_sort || (step_limit > 0 && testIndex < lastSort)) {
+ break;
+ }
+ var angles = []; // use tangent lines to describe arcs
+ var windFrom = [];
+ var windTo = [];
+ var opp = [];
+ var minXY = Number.MAX_VALUE;
+ var partial;
+ for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
+ var fragType = records[recordIndex];
+ var frags = records[recordIndex + 1];
+ var idx = 10;
+ switch (fragType) {
+ case SORT_LINE:
+ case SORT_LINE_UNSORTABLE:
+ partial = linePartial(frags[1], frags[2], frags[3], frags[4],
+ frags[5], frags[6]);
+ break;
+ case SORT_QUAD:
+ case SORT_QUAD_UNSORTABLE:
+ partial = quadPartial(frags[1], frags[2], frags[3], frags[4],
+ frags[5], frags[6], frags[7], frags[8]);
+ idx += 2;
+ break;
+ case SORT_CUBIC:
+ case SORT_CUBIC_UNSORTABLE:
+ partial = cubicPartial(frags[1], frags[2], frags[3], frags[4],
+ frags[5], frags[6], frags[7], frags[8], frags[9], frags[10]);
+ idx += 4;
+ break;
+ case SORT_LINE_COMPACT:
+ case SORT_QUAD_COMPACT:
+ case SORT_CUBIC_COMPACT:
+ // unsupported
+ continue;
+ default:
+ console.log("unknown REC_TYPE_SORT frag type: " + fragType);
+ throw "stop execution";
+ }
+ var dx = boundsWidth(partial);
+ var dy = boundsHeight(partial);
+ minXY = Math.min(minXY, dx * dx + dy * dy);
+ angles.push(tangent(partial));
+ windFrom.push(frags[idx]);
+ windTo.push(frags[idx + 1]);
+ opp.push(frags[idx + 5]);
+ }
+ var radius = Math.sqrt(minXY) / 2 * scale;
+ radius = Math.min(50, radius);
+ var centerX = (partial[0] - srcLeft) * scale;
+ var centerY = (partial[1] - srcTop) * scale;
+ ctx.lineWidth = 1;
+ ctx.strokeStyle = "rgba(127,0,171, 0.5)";
+ ctx.fillStyle = "rgba(0,0,0, 0.5)";
+ ctx.font = "normal 10px Arial";
+ ctx.textAlign = "center";
+ for (var angleIndex = 0; angleIndex < angles.length; ++angleIndex) {
+ var angleParts = [
+ angles[(angleIndex + angles.length - 1) % angles.length],
+ angles[angleIndex],
+ angles[(angleIndex + 1) % angles.length]
+ ];
+ var angleStart = (angleParts[0] + angleParts[1]) / 2;
+ if (angleParts[0] > angleParts[1]) {
+ angleStart -= Math.PI;
+ }
+ var angleEnd = (angleParts[1] + angleParts[2]) / 2;
+ if (angleParts[1] > angleParts[2]) {
+ angleEnd -= Math.PI;
+ }
+ ctx.beginPath();
+ ctx.arc(centerX, centerY, radius + (opp[angleIndex] ? 10 : 0),
+ Math.PI * 2 - angleStart - Math.PI / 18, Math.PI * 2 - angleEnd + Math.PI / 18, true);
+ ctx.stroke();
+ var tx = centerX + Math.cos(angleStart) * (radius + (opp[angleIndex] ? 10 : 0));
+ var ty = centerY - Math.sin(angleStart) * (radius + (opp[angleIndex] ? 10 : 0));
+ ctx.fillText(windFrom[angleIndex], tx, ty + 5);
+ tx = centerX + Math.cos(angleEnd) * (radius + (opp[angleIndex] ? 10 : 0));
+ ty = centerY - Math.sin(angleEnd) * (radius + (opp[angleIndex] ? 10 : 0));
+ ctx.fillText(windTo[angleIndex], tx, ty + 5);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ if (draw_log && logStart >= 0) {
+ ctx.font = "normal 10px Arial";
+ ctx.textAlign = "left";
+ ctx.beginPath();
+ var top = ctx.canvas.height - 20 - (logRange + 2) * 10;
+ ctx.rect(50, top, ctx.canvas.width-100, (logRange + 2) * 10);
+ ctx.fillStyle = "white";
+ ctx.fill();
+ ctx.fillStyle = "rgba(0,0,0, 0.5)";
+ if (logStart > 0) {
+ ctx.fillText(lines[logStart - 1], 50, top + 8);
+ }
+ ctx.fillStyle = "black";
+ for (var idx = 0; idx < logRange; ++idx) {
+ ctx.fillText(lines[logStart + idx], 50, top + 18 + 10 * idx);
+ }
+ ctx.fillStyle = "rgba(0,0,0, 0.5)";
+ if (logStart + logRange < lines.length) {
+ ctx.fillText(lines[logStart + logRange], 50, top + 18 + 10 * logRange);
+ }
+ }
+ if (draw_legend) {
+ var pos = 0;
+ var drawSomething = draw_add | draw_active | draw_sort | draw_mark;
+ // drawBox(pos++, "yellow", "black", opLetter, true, '');
+ drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_intersection > 1 ? sectCount : sectMax2, draw_intersection, intersectionKey);
+ drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_add ? addCount : addMax, draw_add, addKey);
+ drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_active ? activeCount : activeMax, draw_active, activeKey);
+ drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_sort ? sortCount : sortMax, draw_sort, sortKey);
+ drawBox(pos++, "rgba(127,0,127, 0.3)", "black", draw_mark ? markCount : markMax, draw_mark, markKey);
+ drawBox(pos++, "black", "white",
+ (new Array('P', 'P1', 'P2', 'P'))[draw_path], draw_path != 0, pathKey);
+ drawBox(pos++, "rgba(0,63,0, 0.7)", "white",
+ (new Array('Q', 'Q', 'C', 'QC', 'Qc', 'Cq'))[draw_computed],
+ draw_computed != 0, computedKey);
+ drawBox(pos++, "green", "black", step_limit, drawSomething, '');
+ drawBox(pos++, "green", "black", stepMax, drawSomething, '');
+ drawBox(pos++, "red", "black", lastIndex, drawSomething & draw_log, '');
+ drawBox(pos++, "red", "black", test.length - 1, drawSomething & draw_log, '');
+ if (curve_t) {
+ drawCurveTControl();
+ }
+ ctx.font = "normal 20px Arial";
+ ctx.fillStyle = "rgba(0,0,0, 0.3)";
+ ctx.textAlign = "right";
+ ctx.fillText(scale.toFixed(decimal_places) + 'x' , ctx.canvas.width - 10, ctx.canvas.height - 5);
+ }
+ if (draw_hints) {
+ ctx.font = "normal 10px Arial";
+ ctx.fillStyle = "rgba(0,0,0, 0.5)";
+ ctx.textAlign = "right";
+ var y = 4;
+ ctx.fillText("control lines : " + controlLinesKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
+ ctx.fillText("curve t : " + curveTKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
+ ctx.fillText("deriviatives : " + deriviativesKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
+ ctx.fillText("intersect t : " + intersectTKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
+ ctx.fillText("hodo : " + hodoKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
+ ctx.fillText("log : " + logKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
+ ctx.fillText("log curve : " + logCurvesKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
+ ctx.fillText("mid point : " + midpointKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
+ ctx.fillText("points : " + ptsKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
+ ctx.fillText("sequence : " + sequenceKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
+ ctx.fillText("xy : " + xyKey, ctx.canvas.width - 10, pos * 50 + y++ * 10);
+ }
+}
+
+function drawBox(y, backC, foreC, str, enable, label) {
+ ctx.beginPath();
+ ctx.fillStyle = backC;
+ ctx.rect(ctx.canvas.width - 40, y * 50 + 10, 40, 30);
+ ctx.fill();
+ ctx.font = "normal 16px Arial";
+ ctx.fillStyle = foreC;
+ ctx.textAlign = "center";
+ ctx.fillText(str, ctx.canvas.width - 20, y * 50 + 32);
+ if (!enable) {
+ ctx.fillStyle = "rgba(255,255,255, 0.5)";
+ ctx.fill();
+ }
+ if (label != '') {
+ ctx.font = "normal 9px Arial";
+ ctx.fillStyle = "black";
+ ctx.fillText(label, ctx.canvas.width - 47, y * 50 + 40);
+ }
+}
+
+function drawCurveTControl() {
+ ctx.lineWidth = 2;
+ ctx.strokeStyle = "rgba(0,0,0, 0.3)";
+ ctx.beginPath();
+ ctx.rect(ctx.canvas.width - 80, 40, 28, ctx.canvas.height - 80);
+ ctx.stroke();
+ var ty = 40 + curveT * (ctx.canvas.height - 80);
+ ctx.beginPath();
+ ctx.moveTo(ctx.canvas.width - 80, ty);
+ ctx.lineTo(ctx.canvas.width - 85, ty - 5);
+ ctx.lineTo(ctx.canvas.width - 85, ty + 5);
+ ctx.lineTo(ctx.canvas.width - 80, ty);
+ ctx.fillStyle = "rgba(0,0,0, 0.6)";
+ ctx.fill();
+ var num = curveT.toFixed(decimal_places);
+ ctx.font = "normal 10px Arial";
+ ctx.textAlign = "left";
+ ctx.fillText(num, ctx.canvas.width - 78, ty);
+}
+
+function ptInTControl() {
+ var e = window.event;
+ var tgt = e.target || e.srcElement;
+ var left = tgt.offsetLeft;
+ var top = tgt.offsetTop;
+ var x = (e.clientX - left);
+ var y = (e.clientY - top);
+ if (x < ctx.canvas.width - 80 || x > ctx.canvas.width - 50) {
+ return false;
+ }
+ if (y < 40 || y > ctx.canvas.height - 80) {
+ return false;
+ }
+ curveT = (y - 40) / (ctx.canvas.height - 120);
+ if (curveT < 0 || curveT > 1) {
+ throw "stop execution";
+ }
+ return true;
+}
+
+function drawTop() {
+ if (tests[testIndex] == null) {
+ var str = testDivs[testIndex].firstChild.data;
+ parse_all(str);
+ var title = testDivs[testIndex].id.toString();
+ testTitles[testIndex] = title;
+ }
+ init(tests[testIndex]);
+ redraw();
+}
+
+function redraw() {
+ ctx.beginPath();
+ ctx.fillStyle = "white";
+ ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);
+ ctx.fill();
+ draw(tests[testIndex], testLines[testIndex], testTitles[testIndex]);
+}
+
+var activeKey = 'a';
+var addKey = 'd';
+var centerKey = 'c';
+var computedKey = 'q';
+var computedBackKey = 'Q';
+var controlLinesBackKey = 'V';
+var controlLinesKey = 'v';
+var curveTKey = 'u';
+var deriviativesKey = 'f';
+var hodoKey = 'h';
+var intersectTKey = 't';
+var intersectionBackKey = 'I';
+var intersectionKey = 'i';
+var logKey = 'l';
+var logCurvesKey = 'z';
+var markKey = 'm';
+var midpointKey = 'k';
+var pathKey = 'b';
+var pathBackKey = 'B';
+var ptsKey = 'x';
+var sequenceKey = 'j';
+var sortKey = 'o';
+var stepBackKey = 'S';
+var stepKey = 's';
+var xyKey = 'y';
+
+function doKeyPress(evt) {
+ var char = String.fromCharCode(evt.charCode);
+ switch (char) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ decimal_places = char - '0';
+ redraw();
+ break;
+ case activeKey:
+ draw_active ^= true;
+ redraw();
+ break;
+ case addKey:
+ draw_add ^= true;
+ redraw();
+ break;
+ case centerKey:
+ setScale();
+ redraw();
+ break;
+ case controlLinesBackKey:
+ control_lines = (control_lines + 3) % 4;
+ redraw();
+ break;
+ case controlLinesKey:
+ control_lines = (control_lines + 1) % 4;
+ redraw();
+ break;
+ case computedBackKey:
+ draw_computed = (draw_computed + 5) % 6;
+ redraw();
+ break;
+ case computedKey:
+ draw_computed = (draw_computed + 1) % 6;
+ redraw();
+ break;
+ case curveTKey:
+ curve_t ^= true;
+ if (curve_t) {
+ draw_legend = true;
+ }
+ redraw();
+ break;
+ case deriviativesKey:
+ draw_deriviatives = (draw_deriviatives + 1) % 3;
+ redraw();
+ break;
+ case hodoKey:
+ draw_hodo = (draw_hodo + 1) % 4;
+ redraw();
+ break;
+ case intersectionBackKey:
+ draw_intersection = (draw_intersection + 3) % 4;
+ redraw();
+ break;
+ case intersectionKey:
+ draw_intersection = (draw_intersection + 1) % 4;
+ redraw();
+ break;
+ case intersectTKey:
+ draw_intersectT ^= true;
+ redraw();
+ break;
+ case logCurvesKey:
+ logCurves(tests[testIndex]);
+ break;
+ case logKey:
+ draw_log ^= true;
+ redraw();
+ break;
+ case markKey:
+ draw_mark ^= true;
+ redraw();
+ break;
+ case midpointKey:
+ draw_midpoint ^= true;
+ redraw();
+ break;
+ case pathKey:
+ draw_path = (draw_path + 1) % 4;
+ redraw();
+ break;
+ case pathBackKey:
+ draw_path = (draw_path + 3) % 4;
+ redraw();
+ break;
+ case ptsKey:
+ pt_labels = (pt_labels + 1) % 3;
+ redraw();
+ break;
+ case sequenceKey:
+ draw_sequence ^= true;
+ redraw();
+ break;
+ case sortKey:
+ draw_sort ^= true;
+ redraw();
+ break;
+ case stepKey:
+ step_limit++;
+ if (step_limit > stepMax) {
+ step_limit = stepMax;
+ }
+ redraw();
+ break;
+ case stepBackKey:
+ step_limit--;
+ if (step_limit < 0) {
+ step_limit = 0;
+ }
+ redraw();
+ break;
+ case xyKey:
+ debug_xy ^= true;
+ redraw();
+ break;
+ case '-':
+ scale /= 2;
+ calcLeftTop();
+ redraw();
+ break;
+ case '=':
+ case '+':
+ scale *= 2;
+ calcLeftTop();
+ redraw();
+ break;
+ case '?':
+ draw_hints ^= true;
+ if (draw_hints && !draw_legend) {
+ draw_legend = true;
+ }
+ redraw();
+ break;
+ case '/':
+ draw_legend ^= true;
+ redraw();
+ break;
+ }
+}
+
+function doKeyDown(evt) {
+ var char = evt.keyCode;
+ switch (char) {
+ case 37: // left arrow
+ if (evt.shiftKey) {
+ testIndex -= 9;
+ }
+ if (--testIndex < 0)
+ testIndex = tests.length - 1;
+ drawTop();
+ break;
+ case 39: // right arrow
+ if (evt.shiftKey) {
+ testIndex += 9;
+ }
+ if (++testIndex >= tests.length)
+ testIndex = 0;
+ drawTop();
+ break;
+ }
+}
+
+function calcXY() {
+ var e = window.event;
+ var tgt = e.target || e.srcElement;
+ var left = tgt.offsetLeft;
+ var top = tgt.offsetTop;
+ mouseX = (e.clientX - left) / scale + srcLeft;
+ mouseY = (e.clientY - top) / scale + srcTop;
+}
+
+function calcLeftTop() {
+ srcLeft = mouseX - screenWidth / 2 / scale;
+ srcTop = mouseY - screenHeight / 2 / scale;
+}
+
+function handleMouseClick() {
+ if (!curve_t || !ptInTControl()) {
+ calcXY();
+ calcLeftTop();
+ }
+ redraw();
+}
+
+function handleMouseOver() {
+ calcXY();
+ if (!debug_xy) {
+ return;
+ }
+ var num = mouseX.toFixed(decimal_places) + ", " + mouseY.toFixed(decimal_places);
+ ctx.beginPath();
+ ctx.rect(300,100,num.length * 6,10);
+ ctx.fillStyle="white";
+ ctx.fill();
+ ctx.font = "normal 10px Arial";
+ ctx.fillStyle="black";
+ ctx.textAlign = "left";
+ ctx.fillText(num, 300, 108);
+}
+
+function start() {
+ for (var i = 0; i < testDivs.length; ++i) {
+ tests[i] = null;
+ }
+ testIndex = 0;
+ drawTop();
+ window.addEventListener('keypress', doKeyPress, true);
+ window.addEventListener('keydown', doKeyDown, true);
+ window.onresize = function() {
+ drawTop();
+ }
+}
+
+</script>
+</head>
+
+<body onLoad="start();">
+<canvas id="canvas" width="750" height="500"
+ onmousemove="handleMouseOver()"
+ onclick="handleMouseClick()"
+ ></canvas >
+</body>
+</html>
diff --git a/chromium/third_party/skia/experimental/Intersection/bc.htm b/chromium/third_party/skia/experimental/Intersection/bc.htm
new file mode 100644
index 00000000000..fc9191a694d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/bc.htm
@@ -0,0 +1,455 @@
+<!-- bezier clip visualizer -->
+<html>
+<head>
+<div style="height:0">
+
+<div id="clip1">
+(gdb) p smaller
+$2 = {{
+ x = 0.91292418204644155,
+ y = 0.41931201426549197
+ }, {
+ x = 0.70491388044579517,
+ y = 0.64754305977710236
+ }, {
+ x = 0,
+ y = 1
+ }}
+(gdb) p larger
+$3 = {{
+ x = 0.21875,
+ y = 0.765625
+ }, {
+ x = 0.125,
+ y = 0.875
+ }, {
+ x = 0,
+ y = 1
+ }}
+(gdb) p distance2y
+$1 = {{
+ x = 0,
+ y = 0.080355482722450078
+ }, {
+ x = 0.5,
+ y = 0.038383741101172597
+ }, {
+ x = 1,
+ y = 0
+ }}
+</div>
+
+<div id="quad21a">
+bezier_clip q1=(0,0 1,0 0,2) q2=(0.5,0.25 0.5,0.5 0,1) minT=0 maxT=1
+</div>
+<div id="quad21b">
+bezier_clip q1=(0.5,0.25 0.5,0.375 0.375,0.5625) q2=(0,0 1,0 0,2) minT=0.3 maxT=0.78125
+</div>
+<div id="quad21c">
+bezier_clip q1=(0.42,0.18 0.6125,0.46875 0.341796875,1.22070312) q2=(0.5,0.25 0.5,0.375 0.375,0.5625) minT=0 maxT=0.926710098
+</div>
+<div id="quad21d">
+bezier_clip q1=(0.5,0.25 0.5,0.307919381 0.473162762,0.379257381) q2=(0.42,0.18 0.6125,0.46875 0.341796875,1.22070312) minT=0.187231244 maxT=0.729263299
+</div>
+<div id="quad21e">
+bezier_clip q1=(0.475846194,0.304363878 0.53317904,0.507883959 0.454423387,0.847492538) q2=(0.5,0.25 0.5,0.307919381 0.473162762,0.379257381) minT=0 maxT=1
+</div>
+<div id="quad21f">
+bezier_clip q1=(0.493290691,0.311274036 0.486581381,0.343588381 0.473162762,0.379257381) q2=(0.475846194,0.304363878 0.53317904,0.507883959 0.454423387,0.847492538) minT=0.0828748517 maxT=0.150086861
+</div>
+
+<div id="quad21g">
+(gdb) p smaller
+$1 = {{
+ x = 0.48441440743366754,
+ y = 0.33903196011243797
+ }, {
+ x = 0.48750982503868118,
+ y = 0.35346899178071778
+ }, {
+ x = 0.48999046908865357,
+ y = 0.368520797004039
+ }}
+(gdb) p larger
+$2 = {{
+ x = 0.49329069058425024,
+ y = 0.31127403581536672
+ }, {
+ x = 0.48658138116850047,
+ y = 0.34358838107698753
+ }, {
+ x = 0.47316276233700094,
+ y = 0.37925738104648321
+ }}
+</div>
+
+<div id="quad36">
+(gdb) p fQ
+$2 = {{
+ x = 1.8883839294261275,
+ y = 2.1108590606904345
+ }, {
+ x = 1.888463903363252,
+ y = 2.1111576060205435
+ }, {
+ x = 1.8885438199983176,
+ y = 2.1114561800016824
+ }}
+(gdb) p rh.fQ
+$3 = {{
+ x = 1.8883839294260976,
+ y = 2.1108590606903377
+ }, {
+ x = 1.8886366953645748,
+ y = 2.1109850143489544
+ }, {
+ x = 1.8888888888888888,
+ y = 2.1111111111111112
+ }}
+(gdb)
+</div>
+
+<div id="quad37">
+ {{x = 360.048828125, y = 229.2578125}, {x = 360.048828125, y = 224.4140625}, {x = 362.607421875, y = 221.3671875}}
+ {{x = 362.607421875, y = 221.3671875}, {x = 365.166015625, y = 218.3203125}, {x = 369.228515625, y = 218.3203125}}
+</div>
+
+<div id="quad38">
+$2 = {{fX = 369.969421, fY = 137.94809}, {fX = 383.982849, fY = 121.260353}, {fX = 406.233154, fY = 121.260353}}
+$4 = {{fX = 406.232788, fY = 121.260353}, {fX = 409.441956, fY = 121.260353}, {fX = 412.972046, fY = 121.795212}}
+</div>
+
+<div id="quad39">
+{{x = 406.233154296875, y = 121.26035308837891}, {x = 406.23153587045397, y = 121.26035308837891}, {x = 406.22991748761177, y = 121.26035317666889}},
+{{x = 406.23295158013377, y = 121.26035308872596}, {x = 406.2328698329315, y = 121.26035308837889}, {x = 406.2327880859375, y = 121.26035308837891}},
+</div>
+
+</div>
+
+<script type="text/javascript">
+
+var testDivs = [
+ quad56,
+ quad39,
+ quad38,
+ quad37,
+ quad36,
+ quad21g,
+ quad21a,
+ quad21b,
+ quad21c,
+ quad21d,
+ quad21e,
+ quad21f,
+ clip1,
+];
+
+var scale, columns, rows, xStart, yStart;
+
+var ticks = 10;
+var at_x = 13 + 0.5;
+var at_y = 13 + 0.5;
+var init_decimal_places = 1; // make this 3 to show more precision
+var decimal_places;
+var tests = [];
+var testTitles = [];
+var testIndex = 0;
+var ctx;
+var fat1 = true;
+var fat2 = false;
+var ctl1 = true;
+var ctl2 = false;
+var ctlPts1 = true;
+var ctlPts2 = false;
+var minScale = 1;
+var subscale = 1;
+
+function parse(test, title) {
+ var curveStrs = test.split("{{");
+ if (curveStrs.length == 1)
+ curveStrs = test.split("=(");
+ var pattern = /[a-z$=]?-?\d+\.*\d*/g;
+ var curves = [];
+ for (var c in curveStrs) {
+ var curveStr = curveStrs[c];
+ var points = curveStr.match(pattern);
+ var pts = [];
+ for (var wd in points) {
+ var num = parseFloat(points[wd]);
+ if (isNaN(num)) continue;
+ pts.push(num);
+ }
+ if (pts.length > 0)
+ curves.push(pts);
+ }
+ if (curves.length >= 2) {
+ tests.push(curves);
+ testTitles.push(title);
+ }
+}
+
+function init(test) {
+ var canvas = document.getElementById('canvas');
+ if (!canvas.getContext) return;
+ canvas.width = window.innerWidth - at_x;
+ canvas.height = window.innerHeight - at_y;
+ ctx = canvas.getContext('2d');
+ var xmin = Infinity;
+ var xmax = -Infinity;
+ var ymin = Infinity;
+ var ymax = -Infinity;
+ for (var curves in test) {
+ var curve = test[curves];
+ var last = curve.length;
+ for (var idx = 0; idx < last; idx += 2) {
+ xmin = Math.min(xmin, curve[idx]);
+ xmax = Math.max(xmax, curve[idx]);
+ ymin = Math.min(ymin, curve[idx + 1]);
+ ymax = Math.max(ymax, curve[idx + 1]);
+ }
+ }
+ subscale = 1;
+ decimal_places = init_decimal_places;
+ if (xmax != xmin && ymax != ymin) {
+ while ((xmax - xmin) * subscale < 0.1 && (ymax - ymin) * subscale < 0.1) {
+ subscale *= 10;
+ decimal_places += 1;
+ // if (subscale > 100000) {
+ // break;
+ // }
+ }
+ }
+ columns = Math.ceil(xmax * subscale) - Math.floor(xmin * subscale) + 1;
+ rows = Math.ceil(ymax * subscale) - Math.floor(ymin * subscale) + 1;
+
+ xStart = Math.floor(xmin * subscale) / subscale;
+ yStart = Math.floor(ymin * subscale) / subscale;
+ var hscale = ctx.canvas.width / columns / ticks;
+ var vscale = ctx.canvas.height / rows / ticks;
+ minScale = Math.floor(Math.min(hscale, vscale));
+ scale = minScale * subscale;
+ // while (columns < 1000 && rows < 1000) {
+ // columns *= 2;
+ // rows *= 2;
+ // }
+}
+
+function drawPoint(px, py, xoffset, yoffset, unit) {
+ var label = px.toFixed(decimal_places) + ", " + py.toFixed(decimal_places);
+ var _px = px * unit + xoffset;
+ var _py = py * unit + yoffset;
+ ctx.beginPath();
+ ctx.arc(_px, _py, 3, 0, Math.PI*2, true);
+ ctx.closePath();
+ ctx.fill();
+ ctx.fillText(label, _px + 5, _py);
+}
+
+function draw(test, title, _at_x, _at_y, scale) {
+ ctx.fillStyle = "rgba(0,0,0, 0.1)";
+ ctx.font = "normal 50px Arial";
+ ctx.fillText(title, 50, 50);
+ ctx.font = "normal 10px Arial";
+
+ var unit = scale * ticks;
+ ctx.lineWidth = 1;
+ var i;
+ for (i = 0; i <= rows * ticks; ++i) {
+ ctx.strokeStyle = (i % ticks) != 0 ? "rgb(160,160,160)" : "black";
+ ctx.beginPath();
+ ctx.moveTo(_at_x + 0, _at_y + i * minScale);
+ ctx.lineTo(_at_x + unit * columns, _at_y + i * minScale);
+ ctx.stroke();
+ }
+ for (i = 0; i <= columns * ticks; ++i) {
+ ctx.strokeStyle = (i % ticks) != 0 ? "rgb(160,160,160)" : "black";
+ ctx.beginPath();
+ ctx.moveTo(_at_x + i * minScale, _at_y + 0);
+ ctx.lineTo(_at_x + i * minScale, _at_y + unit * rows);
+ ctx.stroke();
+ }
+
+ var xoffset = xStart * -unit + _at_x;
+ var yoffset = yStart * -unit + _at_y;
+
+ ctx.fillStyle = "rgb(40,80,60)"
+ for (i = 0; i <= columns; i += (1 / ticks))
+ {
+ num = xStart + i / subscale;
+ ctx.fillText(num.toFixed(decimal_places), xoffset + num * unit - 5, 10);
+ }
+ for (i = 0; i <= rows; i += (1 / ticks))
+ {
+ num = yStart + i / subscale;
+ ctx.fillText(num.toFixed(decimal_places), 0, yoffset + num * unit + 0);
+ }
+
+ // draw curve 1 and 2
+ var curves, pts;
+ for (curves in test) {
+ var curve = test[curves];
+ ctx.beginPath();
+ ctx.moveTo(xoffset + curve[0] * unit, yoffset + curve[1] * unit);
+ switch (curve.length) {
+ case 6:
+ ctx.quadraticCurveTo(
+ xoffset + curve[2] * unit, yoffset + curve[3] * unit,
+ xoffset + curve[4] * unit, yoffset + curve[5] * unit);
+ break;
+ case 8:
+ ctx.bezierCurveTo(
+ xoffset + curve[2] * unit, yoffset + curve[3] * unit,
+ xoffset + curve[4] * unit, yoffset + curve[5] * unit,
+ xoffset + curve[6] * unit, yoffset + curve[7] * unit);
+ break;
+ }
+ if (curves == 2) ctx.strokeStyle = curves ? "red" : "blue";
+ ctx.stroke();
+ ctx.strokeStyle = "rgba(0,0,0, 0.3)";
+ ctx.beginPath();
+ ctx.moveTo(xoffset + curve[0] * unit, yoffset + curve[1] * unit);
+ ctx.lineTo(xoffset + curve[2] * unit, yoffset + curve[3] * unit);
+ ctx.lineTo(xoffset + curve[4] * unit, yoffset + curve[5] * unit);
+ if (curve.length == 8)
+ ctx.lineTo(xoffset + curve[6] * unit, yoffset + curve[7] * unit);
+ ctx.stroke();
+ }
+ // optionally draw fat lines for curve
+ if (fat1)
+ drawFat(test[0], xoffset, yoffset, unit);
+ if (fat2)
+ drawFat(test[1], xoffset, yoffset, unit);
+ if (ctl1)
+ drawCtl(test[0], xoffset, yoffset, unit);
+ if (ctl2)
+ drawCtl(test[1], xoffset, yoffset, unit);
+ if (ctlPts1)
+ drawCtlPts(test[0], xoffset, yoffset, unit);
+ if (ctlPts2)
+ drawCtlPts(test[1], xoffset, yoffset, unit);
+}
+
+function drawCtl(curve, xoffset, yoffset, unit) {
+ var last = curve.length - 2;
+ ctx.strokeStyle = "rgba(0,0,0, 0.5)";
+ ctx.beginPath();
+ ctx.moveTo(xoffset + curve[0] * unit, yoffset + curve[1] * unit);
+ ctx.lineTo(xoffset + curve[2] * unit, yoffset + curve[3] * unit);
+ ctx.lineTo(xoffset + curve[4] * unit, yoffset + curve[5] * unit);
+ ctx.stroke();
+}
+
+function drawCtlPts(curve, xoffset, yoffset, unit) {
+ drawPoint(curve[0], curve[1], xoffset, yoffset, unit);
+ drawPoint(curve[2], curve[3], xoffset, yoffset, unit);
+ drawPoint(curve[4], curve[5], xoffset, yoffset, unit);
+}
+
+function drawFat(curve, xoffset, yoffset, unit) {
+ var last = curve.length - 2;
+ ctx.strokeStyle = "rgba(0,0,0, 0.5)";
+ ctx.beginPath();
+ ctx.moveTo(xoffset + curve[0] * unit, yoffset + curve[1] * unit);
+ ctx.lineTo(xoffset + curve[last] * unit, yoffset + curve[last + 1] * unit);
+ ctx.stroke();
+ // draw line parallel to end points through control points
+ var dx = curve[last] - curve[0];
+ var dy = curve[last + 1] - curve[1];
+ drawParallelLine(curve[2], curve[3], dx, dy, xoffset, yoffset, unit);
+ if (curve.length == 8)
+ drawParallelLine(curve[4], curve[5], dx, dy, xoffset, yoffset, unit);
+}
+
+function drawParallelLine(x, y, dx, dy, xoffset, yoffset, unit) {
+ var x1 = x - dx;
+ var y1 = y - dy;
+ var x2 = x + dx;
+ var y2 = y + dy;
+ ctx.beginPath();
+ ctx.moveTo(xoffset + x1 * unit, yoffset + y1 * unit);
+ ctx.lineTo(xoffset + x2 * unit, yoffset + y2 * unit);
+ ctx.stroke();
+}
+
+function drawTop() {
+ init(tests[testIndex]);
+ redraw();
+}
+
+function redraw() {
+ ctx.beginPath();
+ ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);
+ ctx.fillStyle="white";
+ ctx.fill();
+ draw(tests[testIndex], testTitles[testIndex], at_x, at_y, scale);
+}
+
+function doKeyPress(evt) {
+ var char = String.fromCharCode(evt.charCode);
+ switch (char) {
+ case 'c':
+ ctl2 ^= true;
+ if (ctl2 == false)
+ ctl1 ^= true;
+ drawTop();
+ break;
+ case 'd':
+ ctlPts2 ^= true;
+ if (ctlPts2 == false)
+ ctlPts1 ^= true;
+ drawTop();
+ break;
+ case 'f':
+ fat2 ^= true;
+ if (fat2 == false)
+ fat1 ^= true;
+ drawTop();
+ break;
+ case 'N':
+ testIndex += 9;
+ case 'n':
+ if (++testIndex >= tests.length)
+ testIndex = 0;
+ mouseX = Infinity;
+ drawTop();
+ break;
+ case 'P':
+ testIndex -= 9;
+ case 'p':
+ if (--testIndex < 0)
+ testIndex = tests.length - 1;
+ mouseX = Infinity;
+ drawTop();
+ break;
+ }
+}
+
+function handleMouseClick() {
+}
+
+function handleMouseOver() {
+}
+
+function start() {
+ for (i = 0; i < testDivs.length; ++i) {
+ var title = testDivs[i].id.toString();
+ var str = testDivs[i].firstChild.data;
+ parse(str, title);
+ }
+ drawTop();
+ window.addEventListener('keypress', doKeyPress, true);
+ window.onresize = function() {
+ drawTop();
+ }
+}
+
+</script>
+</head>
+
+<body onLoad="start();">
+<canvas id="canvas" width="750" height="500"
+ onmousemove="handleMouseOver()"
+ onclick="handleMouseClick()"
+ ></canvas >
+</body>
+</html>
diff --git a/chromium/third_party/skia/experimental/Intersection/cd.htm b/chromium/third_party/skia/experimental/Intersection/cd.htm
new file mode 100644
index 00000000000..2e43022d7eb
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/cd.htm
@@ -0,0 +1,517 @@
+<html>
+<head>
+<div style="height:0">
+
+<div id="test1">
+computeDelta c1=(0,1 1,6 1,0 2,0) t1=0.0166500365 scale1=1 c2=(0,1 0,2 1,0 6,1) t2=0.126935168 scale2=1
+cubicTangent t=0.0166500365 tangent=(-2.85263545,-12.6745554 2.95089079,15.1559166) pt=(0.0491276698 1.24068063) dxy=(2.90176312 13.915236)
+cubicTangent t=0.126935168 tangent=(-0.852150487,0.242871519 0.961097194,2.2532568) pt=(0.0544733534 1.24806416) dxy=(0.90662384 1.00519264)
+cubicDelta tangent=(-0.00039510851,-0.00189471984 0.0495227783,1.24257535) intersectLen=0.00193547772 tangentLen=14.2145708 scale=0.00390625 result=0.00404241153
+cubicDelta tangent=(0.00495057512,0.00548880522 0.0495227783,1.24257535) intersectLen=0.00739156118 tangentLen=1.35365395 scale=0.00390625 result=0.00936670107
+</div>
+
+<div id="test2">
+computeDelta c1=(0,1 0,2 1,0 6,1) t1=0.121215914 scale1=0.0187334021 c2=(0,1 1,6 1,0 2,0) t2=0.0167515231 scale2=0.00808482306
+cubicTangent t=0.121215914 tangent=(-0.810112087,0.159501524 0.908958243,2.32468734) pt=(0.0494230781 1.24209443) dxy=(0.859535165 1.08259291)
+cubicTangent t=0.0167515231 tangent=(-2.85175241,-12.6666182 2.95059667,15.1508033) pt=(0.0494221303 1.24209251) dxy=(2.90117454 13.9087108)
+cubicDelta tangent=(7.4284882e-07,9.35625319e-07 0.0494223352,1.2420935) intersectLen=1.19466276e-06 tangentLen=1.38231983 scale=7.31773521e-05 result=7.40415969e-05
+cubicDelta tangent=(-2.04951629e-07,-9.82572016e-07 0.0494223352,1.2420935) intersectLen=1.00371955e-06 tangentLen=14.2080628 scale=3.15813401e-05 result=3.16519844e-05
+</div>
+
+<div id="test3">
+computeDelta c1=(0,1 1,6 1,0 2,0) t1=0.0167458976 scale1=6.33039689e-05 c2=(0,1 0,2 1,0 6,1) t2=0.121141872 scale2=0.000148083194
+cubicTangent t=0.0167458976 tangent=(-2.85180136,-12.6670582 2.95061297,15.1510867) pt=(0.0494058095 1.24201427) dxy=(2.90120716 13.9090724)
+cubicTangent t=0.121141872 tangent=(-0.809569955,0.158411583 0.908288874,2.32561689) pt=(0.0493594591 1.24201424) dxy=(0.858929414 1.08360265)
+cubicDelta tangent=(-1.65436799e-05,-7.93143093e-05 0.0494223532,1.24209358) intersectLen=8.1021312e-05 tangentLen=14.2084235 scale=2.47281129e-07 result=5.94962466e-06
+cubicDelta tangent=(-6.28940702e-05,-7.93454971e-05 0.0494223532,1.24209358) intersectLen=0.000101249059 tangentLen=1.38273441 scale=5.78449976e-07 result=7.38022436e-05
+</div>
+
+</div>
+
+<script type="text/javascript">
+
+var testDivs = [
+ test3,
+ test2,
+ test1,
+];
+
+var scale, columns, rows, xStart, yStart;
+
+var ticks = 10;
+var at_x = 13 + 0.5;
+var at_y = 23 + 0.5;
+var decimal_places = 3;
+var tests = [];
+var testTitles = [];
+var testIndex = 0;
+var ctx;
+var minScale = 1;
+var subscale = 1;
+var curveT = -1;
+var drawCubics = true;
+var drawQuads = true;
+var drawControlLines = true;
+var drawT = true;
+
+var xmin, xmax, ymin, ymax;
+
+function strs_to_nums(strs) {
+ var result = [];
+ for (var idx in strs) {
+ var str = strs[idx];
+ var num = parseFloat(str);
+ if (isNaN(num)) {
+ result.push(str);
+ } else {
+ result.push(num);
+ }
+ }
+ return result;
+}
+
+function construct_regexp(pattern) {
+ var escape = pattern.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
+ escape = escape.replace(/PT_VAL/g, "(-?\\d+\\.?\\d*e?-?\\d*),(-?\\d+\\.?\\d*e?-?\\d*)");
+ escape = escape.replace(/T_VAL/g, "(-?\\d+\\.?\\d*e?-?\\d*)");
+ escape = escape.replace(/IDX/g, "(\\d+)");
+ escape = escape.replace(/OPT/g, "(\\?|-?\\d+)");
+ return new RegExp(escape, 'i');
+}
+
+var COMPUTE_DELTA = 1;
+var CUBIC_TANGENT = 2;
+var CUBIC_DATA = 3;
+
+var DELTA_C1_X1 = 1;
+var DELTA_C1_Y1 = 2;
+var DELTA_C1_X2 = 3;
+var DELTA_C1_Y2 = 4;
+var DELTA_C1_X3 = 5;
+var DELTA_C1_Y3 = 6;
+var DELTA_C1_X4 = 7;
+var DELTA_C1_Y4 = 8;
+var DELTA_T1 = 9;
+var DELTA_SCALE1 = 10;
+var DELTA_C2_X1 = 11;
+var DELTA_C2_Y1 = 12;
+var DELTA_C2_X2 = 13;
+var DELTA_C2_Y2 = 14;
+var DELTA_C2_X3 = 15;
+var DELTA_C2_Y3 = 16;
+var DELTA_C2_X4 = 17;
+var DELTA_C2_Y4 = 18;
+var DELTA_T2 = 19;
+var DELTA_SCALE2 = 20;
+
+var TANGENT_T = 1;
+var TANGENT_TANGENT_X1 = 2;
+var TANGENT_TANGENT_Y1 = 3;
+var TANGENT_TANGENT_X2 = 4;
+var TANGENT_TANGENT_Y2 = 5;
+var TANGENT_PT_X = 6;
+var TANGENT_PT_Y = 7;
+var TANGENT_DXY_X = 8;
+var TANGENT_DXY_Y = 9;
+
+var CUBIC_TANGENT_X1 = 1;
+var CUBIC_TANGENT_Y1 = 2;
+var CUBIC_TANGENT_X2 = 3;
+var CUBIC_TANGENT_Y2 = 4;
+var CUBIC_INTERSECTION_LEN = 5;
+var CUBIC_TANGENT_LEN = 6;
+var CUBIC_SCALE = 7;
+var CUBIC_RESULT = 8;
+
+function parse(test, title) {
+ var compute_delta = construct_regexp(" c1=(PT_VAL PT_VAL PT_VAL PT_VAL)"
+ + " t1=T_VAL scale1=T_VAL c2=(PT_VAL PT_VAL PT_VAL PT_VAL) t2=T_VAL scale2=T_VAL");
+ var cubic_tangent = construct_regexp(" t=T_VAL tangent=(PT_VAL PT_VAL)"
+ + " pt=(T_VAL T_VAL) dxy=(T_VAL T_VAL)");
+ var cubic_data = construct_regexp(" tangent=(PT_VAL PT_VAL)"
+ + " intersectLen=T_VAL tangentLen=T_VAL scale=T_VAL result=T_VAL");
+
+ var cStrs = test.split("computeDelta");
+ var data = [];
+ for (var cs in cStrs) {
+ var str = cStrs[cs];
+ if (str == "\n") {
+ continue;
+ }
+ var tStrs = str.split("cubicTangent");
+ for (var ts in tStrs) {
+ str = tStrs[ts];
+ if (str == "\n") {
+ continue;
+ }
+ var dStrs = str.split("cubicDelta");
+ var dataStrs;
+ for (var ds in dStrs) {
+ str = dStrs[ds];
+ if (str == "\n") {
+ continue;
+ }
+ var lineMatch, lineStrs;
+ if (compute_delta.test(str)) {
+ lineMatch = COMPUTE_DELTA;
+ lineStrs = compute_delta.exec(str);
+ } else if (cubic_tangent.test(str)) {
+ lineMatch = CUBIC_TANGENT;
+ lineStrs = cubic_tangent.exec(str);
+ } else if (cubic_data.test(str)) {
+ lineMatch = CUBIC_DATA;
+ lineStrs = cubic_data.exec(str);
+ } else {
+ continue;
+ }
+ var line = strs_to_nums(lineStrs);
+ data.push(lineMatch);
+ data.push(line);
+ }
+ }
+ }
+ if (data.length >= 1) {
+ tests.push(data);
+ testTitles.push(title);
+ }
+}
+
+function init(test) {
+ var canvas = document.getElementById('canvas');
+ if (!canvas.getContext) return;
+ canvas.width = window.innerWidth - at_x;
+ canvas.height = window.innerHeight - at_y;
+ ctx = canvas.getContext('2d');
+ xmin = Infinity;
+ xmax = -Infinity;
+ ymin = Infinity;
+ ymax = -Infinity;
+ var scanType = -1;
+ for (var scansStr in test) {
+ var scans = parseInt(scansStr);
+ var scan = test[scans];
+ if (scanType == -1) {
+ scanType = scan;
+ continue;
+ }
+ if (scanType == CUBIC_TANGENT) {
+ for (var idx = TANGENT_TANGENT_X1; idx < TANGENT_PT_X; idx += 2) {
+ xmin = Math.min(xmin, scan[idx]);
+ xmax = Math.max(xmax, scan[idx]);
+ ymin = Math.min(ymin, scan[idx + 1]);
+ ymax = Math.max(ymax, scan[idx + 1]);
+ }
+ }
+ scanType = -1;
+ }
+ var testW = xmax - xmin;
+ var testH = ymax - ymin;
+ subscale = 1;
+ if (testW > 1e10 || testH > 1e10) {
+ return;
+ }
+ while (testW * subscale < 0.1 && testH * subscale < 0.1) {
+ subscale *= 10;
+ }
+ while (testW * subscale > 10 && testH * subscale > 10) {
+ subscale /= 10;
+ }
+ calcFromScale();
+}
+
+function calcFromScale() {
+ xStart = Math.floor(xmin * subscale) / subscale;
+ yStart = Math.floor(ymin * subscale) / subscale;
+ var xEnd = Math.ceil(xmin * subscale) / subscale;
+ var yEnd = Math.ceil(ymin * subscale) / subscale;
+ var cCelsW = Math.floor(ctx.canvas.width / 10);
+ var cCelsH = Math.floor(ctx.canvas.height / 10);
+ var testW = xEnd - xStart;
+ var testH = yEnd - yStart;
+ var scaleWH = 1;
+ while (cCelsW > testW * scaleWH * 10 && cCelsH > testH * scaleWH * 10) {
+ scaleWH *= 10;
+ }
+ while (cCelsW * 10 < testW * scaleWH && cCelsH * 10 < testH * scaleWH) {
+ scaleWH /= 10;
+ }
+
+ columns = Math.ceil(xmax * subscale) - Math.floor(xmin * subscale) + 1;
+ rows = Math.ceil(ymax * subscale) - Math.floor(ymin * subscale) + 1;
+
+ var hscale = ctx.canvas.width / columns / ticks;
+ var vscale = ctx.canvas.height / rows / ticks;
+ minScale = Math.floor(Math.min(hscale, vscale));
+ scale = minScale * subscale;
+}
+
+function drawPoint(px, py, xoffset, yoffset, unit) {
+ var label = px.toFixed(decimal_places) + ", " + py.toFixed(decimal_places);
+ var _px = px * unit + xoffset;
+ var _py = py * unit + yoffset;
+ ctx.beginPath();
+ ctx.arc(_px, _py, 3, 0, Math.PI*2, true);
+ ctx.closePath();
+ ctx.fill();
+ ctx.fillText(label, _px + 5, _py);
+}
+
+function drawTPt(scan, cIdx, tIdx, xoffset, yoffset, unit) {
+ var t = scan[tIdx];
+ var one_t = 1 - t;
+ var one_t2 = one_t * one_t;
+ var a = one_t2 * one_t;
+ var b = 3 * one_t2 * t;
+ var t2 = t * t;
+ var c = 3 * one_t * t2;
+ var d = t2 * t;
+ var x = a * scan[cIdx + 0] + b * scan[cIdx + 2] + c * scan[cIdx + 4] + d * scan[cIdx + 6];
+ var y = a * scan[cIdx + 1] + b * scan[cIdx + 3] + c * scan[cIdx + 5] + d * scan[cIdx + 7];
+ drawPoint(x, y, xoffset, yoffset, unit);
+}
+
+function draw(test, title, scale) {
+ ctx.fillStyle = "rgba(0,0,0, 0.1)";
+ ctx.font = "normal 50px Arial";
+ ctx.fillText(title, 50, 50);
+ ctx.font = "normal 10px Arial";
+
+ var unit = scale * ticks;
+ ctx.lineWidth = 1;
+ var i;
+ for (i = 0; i <= rows * ticks; ++i) {
+ ctx.strokeStyle = (i % ticks) != 0 ? "rgb(200,200,200)" : "black";
+ ctx.beginPath();
+ ctx.moveTo(at_x + 0, at_y + i * minScale);
+ ctx.lineTo(at_x + ticks * columns * minScale, at_y + i * minScale);
+ ctx.stroke();
+ }
+ for (i = 0; i <= columns * ticks; ++i) {
+ ctx.strokeStyle = (i % ticks) != 0 ? "rgb(200,200,200)" : "black";
+ ctx.beginPath();
+ ctx.moveTo(at_x + i * minScale, at_y + 0);
+ ctx.lineTo(at_x + i * minScale, at_y + ticks * rows * minScale);
+ ctx.stroke();
+ }
+
+ var xoffset = xStart * -unit + at_x;
+ var yoffset = yStart * -unit + at_y;
+
+ ctx.fillStyle = "rgb(40,80,60)"
+ for (i = 0; i <= columns; i += 1)
+ {
+ num = xStart + i / subscale;
+ ctx.fillText(num.toFixed(decimal_places), xoffset + num * unit - 5, 10);
+ }
+ for (i = 0; i <= rows; i += 1)
+ {
+ num = yStart + i / subscale;
+ ctx.fillText(num.toFixed(decimal_places), 0, yoffset + num * unit + 0);
+ }
+ var scanType = -1;
+ var partIndex = 0;
+ for (var scans in test) {
+ var scan = test[scans];
+ if (scanType == -1) {
+ scanType = scan;
+ continue;
+ }
+ partIndex++;
+ if (scanType == COMPUTE_DELTA) {
+ ctx.beginPath();
+ ctx.moveTo(xoffset + scan[DELTA_C1_X1] * unit, yoffset + scan[DELTA_C1_Y1] * unit);
+ ctx.bezierCurveTo(
+ xoffset + scan[DELTA_C1_X2] * unit, yoffset + scan[DELTA_C1_Y2] * unit,
+ xoffset + scan[DELTA_C1_X3] * unit, yoffset + scan[DELTA_C1_Y3] * unit,
+ xoffset + scan[DELTA_C1_X4] * unit, yoffset + scan[DELTA_C1_Y4] * unit);
+ ctx.strokeStyle = "red"; // "rgba(0,0,0, 1.0)";
+ ctx.stroke();
+ ctx.beginPath();
+ ctx.moveTo(xoffset + scan[DELTA_C2_X1] * unit, yoffset + scan[DELTA_C2_Y1] * unit);
+ ctx.bezierCurveTo(
+ xoffset + scan[DELTA_C2_X2] * unit, yoffset + scan[DELTA_C2_Y2] * unit,
+ xoffset + scan[DELTA_C2_X3] * unit, yoffset + scan[DELTA_C2_Y3] * unit,
+ xoffset + scan[DELTA_C2_X4] * unit, yoffset + scan[DELTA_C2_Y4] * unit);
+ ctx.strokeStyle = "blue"; // "rgba(0,0,0, 1.0)";
+ ctx.stroke();
+ }
+ if (scanType == COMPUTE_DELTA && drawControlLines) {
+ ctx.beginPath();
+ ctx.moveTo(xoffset + scan[DELTA_C1_X1] * unit, yoffset + scan[DELTA_C1_Y1] * unit);
+ ctx.lineTo(xoffset + scan[DELTA_C1_X2] * unit, yoffset + scan[DELTA_C1_Y2] * unit);
+ ctx.lineTo(xoffset + scan[DELTA_C1_X3] * unit, yoffset + scan[DELTA_C1_Y3] * unit);
+ ctx.lineTo(xoffset + scan[DELTA_C1_X4] * unit, yoffset + scan[DELTA_C1_Y4] * unit);
+ ctx.strokeStyle = "rgba(0,0,0, 0.3)";
+ ctx.stroke();
+ ctx.beginPath();
+ ctx.moveTo(xoffset + scan[DELTA_C2_X1] * unit, yoffset + scan[DELTA_C2_Y1] * unit);
+ ctx.lineTo(xoffset + scan[DELTA_C2_X2] * unit, yoffset + scan[DELTA_C2_Y2] * unit);
+ ctx.lineTo(xoffset + scan[DELTA_C2_X3] * unit, yoffset + scan[DELTA_C2_Y3] * unit);
+ ctx.lineTo(xoffset + scan[DELTA_C2_X4] * unit, yoffset + scan[DELTA_C2_Y4] * unit);
+ ctx.strokeStyle = "rgba(0,0,0, 0.3)";
+ ctx.stroke();
+ }
+ if (scanType == COMPUTE_DELTA && drawT) {
+ drawTPt(scan, DELTA_C1_X1, DELTA_T1, xoffset, yoffset, unit);
+ drawTPt(scan, DELTA_C2_X1, DELTA_T2, xoffset, yoffset, unit);
+ var num = "c1=" + scan[DELTA_T1].toFixed(decimal_places)
+ + " c2=" + scan[DELTA_T2].toFixed(decimal_places);
+ ctx.beginPath();
+ ctx.rect(200,10,200,10);
+ ctx.fillStyle="white";
+ ctx.fill();
+ ctx.fillStyle="black";
+ ctx.fillText(num, 230, 18);
+ }
+ if (scanType == CUBIC_TANGENT) {
+ ctx.beginPath();
+ ctx.moveTo(xoffset + scan[TANGENT_TANGENT_X1] * unit, yoffset + scan[TANGENT_TANGENT_Y1] * unit);
+ ctx.lineTo(xoffset + scan[TANGENT_TANGENT_X2] * unit, yoffset + scan[TANGENT_TANGENT_Y2] * unit);
+ ctx.strokeStyle = partIndex > 2 ? "rgba(0,0,255, 0.7)" : "rgba(255,0,0, 0.7)";
+ ctx.stroke();
+ }
+ scanType = -1;
+ }
+}
+
+function drawTop() {
+ init(tests[testIndex]);
+ redraw();
+}
+
+function redraw() {
+ ctx.beginPath();
+ ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);
+ ctx.fillStyle="white";
+ ctx.fill();
+ draw(tests[testIndex], testTitles[testIndex], scale);
+}
+
+function doKeyPress(evt) {
+ var char = String.fromCharCode(evt.charCode);
+ switch (char) {
+ case 'c':
+ drawCubics ^= true;
+ redraw();
+ break;
+ case 'd':
+ decimal_places++;
+ redraw();
+ break;
+ case 'D':
+ decimal_places--;
+ if (decimal_places < 1) {
+ decimal_places = 1;
+ }
+ redraw();
+ break;
+ case 'l':
+ drawControlLines ^= true;
+ redraw();
+ break;
+ case 'N':
+ testIndex += 9;
+ case 'n':
+ if (++testIndex >= tests.length)
+ testIndex = 0;
+ mouseX = Infinity;
+ drawTop();
+ break;
+ case 'P':
+ testIndex -= 9;
+ case 'p':
+ if (--testIndex < 0)
+ testIndex = tests.length - 1;
+ mouseX = Infinity;
+ drawTop();
+ break;
+ case 'q':
+ drawQuads ^= true;
+ redraw();
+ break;
+ case 't':
+ drawT ^= true;
+ redraw();
+ break;
+ case 'x':
+ drawCubics ^= true;
+ drawQuads ^= true;
+ redraw();
+ break;
+ case '-':
+ case '_':
+ subscale /= 2;
+ calcFromScale();
+ redraw();
+ break;
+ case '+':
+ case '=':
+ subscale *= 2;
+ calcFromScale();
+ redraw();
+ break;
+ }
+}
+
+/*
+ var e = window.event;
+ var tgt = e.target || e.srcElement;
+ var min = tgt.offsetTop + Math.ceil(at_y);
+ var max = min + ticks * rows * minScale;
+ curveT = (e.clientY - min) / (max - min);
+ redraw();
+}
+*/
+
+function calcXY() {
+ var e = window.event;
+ var tgt = e.target || e.srcElement;
+ var left = tgt.offsetLeft;
+ var top = tgt.offsetTop;
+ var unit = scale * ticks;
+ mouseX = (e.clientX - left - Math.ceil(at_x) + 1) / unit + xStart;
+ mouseY = (e.clientY - top - Math.ceil(at_y)) / unit + yStart;
+}
+
+function handleMouseOver() {
+ /* calcXY();
+ var num = mouseX.toFixed(decimal_places) + ", " + mouseY.toFixed(decimal_places);
+ ctx.beginPath();
+ ctx.rect(30,10,200,10);
+ ctx.fillStyle="white";
+ ctx.fill();
+ ctx.fillStyle="black";
+ ctx.fillText(num, 30, 18);
+*/
+}
+
+function start() {
+ for (i = 0; i < testDivs.length; ++i) {
+ var title = testDivs[i].id.toString();
+ var str = testDivs[i].firstChild.data;
+ parse(str, title);
+ }
+ drawTop();
+ window.addEventListener('keypress', doKeyPress, true);
+ window.onresize = function() {
+ drawTop();
+ }
+}
+
+function handleMouseClick() {
+ start();
+}
+
+function startx() {
+}
+
+</script>
+</head>
+
+<body onLoad="startx();">
+<canvas id="canvas" width="750" height="500"
+ onmousemove="handleMouseOver()"
+ onclick="handleMouseClick()"
+ ></canvas >
+</body>
+</html>
diff --git a/chromium/third_party/skia/experimental/Intersection/edge_Prefix.pch b/chromium/third_party/skia/experimental/Intersection/edge_Prefix.pch
new file mode 100644
index 00000000000..dd26d56794d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/edge_Prefix.pch
@@ -0,0 +1,5 @@
+//
+// Prefix header for all source files of the 'edge' target in the 'edge' project
+//
+
+#include <Carbon/Carbon.h>
diff --git a/chromium/third_party/skia/experimental/Intersection/hg.htm b/chromium/third_party/skia/experimental/Intersection/hg.htm
new file mode 100644
index 00000000000..32f49a74469
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/hg.htm
@@ -0,0 +1,649 @@
+<html>
+<head>
+<div style="height:0">
+
+<div id="cubic1">
+{{3.13,2.74}, {1.08,4.62}, {3.71,0.94}, {2.01,3.81}}
+{{6.71,3.14}, {7.99,2.75}, {8.27,1.96}, {6.35,3.57}}
+{{9.45,10.67}, {10.05,5.78}, {13.95,7.46}, {14.72,5.29}}
+{{3.34,8.98}, {1.95,10.27}, {3.76,7.65}, {4.96,10.64}}
+</div>
+
+</div>
+
+<script type="text/javascript">
+
+var testDivs = [
+ cubic1,
+];
+
+var scale, columns, rows, xStart, yStart;
+
+var ticks = 10;
+var at_x = 13 + 0.5;
+var at_y = 23 + 0.5;
+var decimal_places = 3;
+var tests = [];
+var testTitles = [];
+var testIndex = 0;
+var ctx;
+var minScale = 1;
+var subscale = 1;
+var curveT = -1;
+var xmin, xmax, ymin, ymax;
+
+var mouseX, mouseY;
+var mouseDown = false;
+
+var draw_deriviatives = false;
+var draw_endpoints = true;
+var draw_hodo = false;
+var draw_hodo2 = false;
+var draw_hodo_origin = true;
+var draw_midpoint = false;
+var draw_tangents = true;
+var draw_sequence = true;
+
+function parse(test, title) {
+ var curveStrs = test.split("{{");
+ if (curveStrs.length == 1)
+ curveStrs = test.split("=(");
+ var pattern = /[a-z$=]?-?\d+\.*\d*e?-?\d*/g;
+ var curves = [];
+ for (var c in curveStrs) {
+ var curveStr = curveStrs[c];
+ var points = curveStr.match(pattern);
+ var pts = [];
+ for (var wd in points) {
+ var num = parseFloat(points[wd]);
+ if (isNaN(num)) continue;
+ pts.push(num);
+ }
+ if (pts.length > 2)
+ curves.push(pts);
+ }
+ if (curves.length >= 1) {
+ tests.push(curves);
+ testTitles.push(title);
+ }
+}
+
+function init(test) {
+ var canvas = document.getElementById('canvas');
+ if (!canvas.getContext) return;
+ canvas.width = window.innerWidth - 20;
+ canvas.height = window.innerHeight - 20;
+ ctx = canvas.getContext('2d');
+ xmin = Infinity;
+ xmax = -Infinity;
+ ymin = Infinity;
+ ymax = -Infinity;
+ for (var curves in test) {
+ var curve = test[curves];
+ var last = curve.length;
+ for (var idx = 0; idx < last; idx += 2) {
+ xmin = Math.min(xmin, curve[idx]);
+ xmax = Math.max(xmax, curve[idx]);
+ ymin = Math.min(ymin, curve[idx + 1]);
+ ymax = Math.max(ymax, curve[idx + 1]);
+ }
+ }
+ xmin -= 1;
+ var testW = xmax - xmin;
+ var testH = ymax - ymin;
+ subscale = 1;
+ while (testW * subscale < 0.1 && testH * subscale < 0.1) {
+ subscale *= 10;
+ }
+ while (testW * subscale > 10 && testH * subscale > 10) {
+ subscale /= 10;
+ }
+ calcFromScale();
+}
+
+function hodograph(cubic) {
+ var hodo = [];
+ hodo[0] = 3 * (cubic[2] - cubic[0]);
+ hodo[1] = 3 * (cubic[3] - cubic[1]);
+ hodo[2] = 3 * (cubic[4] - cubic[2]);
+ hodo[3] = 3 * (cubic[5] - cubic[3]);
+ hodo[4] = 3 * (cubic[6] - cubic[4]);
+ hodo[5] = 3 * (cubic[7] - cubic[5]);
+ return hodo;
+}
+
+function hodograph2(cubic) {
+ var quad = hodograph(cubic);
+ var hodo = [];
+ hodo[0] = 2 * (quad[2] - quad[0]);
+ hodo[1] = 2 * (quad[3] - quad[1]);
+ hodo[2] = 2 * (quad[4] - quad[2]);
+ hodo[3] = 2 * (quad[5] - quad[3]);
+ return hodo;
+}
+
+function quadraticRootsReal(A, B, C, s) {
+ if (A == 0) {
+ if (B == 0) {
+ s[0] = 0;
+ return C == 0;
+ }
+ s[0] = -C / B;
+ return 1;
+ }
+ /* normal form: x^2 + px + q = 0 */
+ var p = B / (2 * A);
+ var q = C / A;
+ var p2 = p * p;
+ if (p2 < q) {
+ return 0;
+ }
+ var sqrt_D = 0;
+ if (p2 > q) {
+ sqrt_D = sqrt(p2 - q);
+ }
+ s[0] = sqrt_D - p;
+ s[1] = -sqrt_D - p;
+ return 1 + s[0] != s[1];
+}
+
+function add_valid_ts(s, realRoots, t) {
+ var foundRoots = 0;
+ for (var index = 0; index < realRoots; ++index) {
+ var tValue = s[index];
+ if (tValue >= 0 && tValue <= 1) {
+ for (var idx2 = 0; idx2 < foundRoots; ++idx2) {
+ if (t[idx2] != tValue) {
+ t[foundRoots++] = tValue;
+ }
+ }
+ }
+ }
+ return foundRoots;
+}
+
+function quadraticRootsValidT(a, b, c, t) {
+ var s = [];
+ var realRoots = quadraticRootsReal(A, B, C, s);
+ var foundRoots = add_valid_ts(s, realRoots, t);
+ return foundRoots != 0;
+}
+
+function find_cubic_inflections(cubic, tValues)
+{
+ var Ax = src[2] - src[0];
+ var Ay = src[3] - src[1];
+ var Bx = src[4] - 2 * src[2] + src[0];
+ var By = src[5] - 2 * src[3] + src[1];
+ var Cx = src[6] + 3 * (src[2] - src[4]) - src[0];
+ var Cy = src[7] + 3 * (src[3] - src[5]) - src[1];
+ return quadraticRootsValidT(Bx * Cy - By * Cx, (Ax * Cy - Ay * Cx),
+ Ax * By - Ay * Bx, tValues);
+}
+
+function dx_at_t(cubic, t) {
+ var one_t = 1 - t;
+ var a = cubic[0];
+ var b = cubic[2];
+ var c = cubic[4];
+ var d = cubic[6];
+ return 3 * ((b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t);
+}
+
+function dy_at_t(cubic, t) {
+ var one_t = 1 - t;
+ var a = cubic[1];
+ var b = cubic[3];
+ var c = cubic[5];
+ var d = cubic[7];
+ return 3 * ((b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t);
+}
+
+function x_at_t(cubic, t) {
+ var one_t = 1 - t;
+ var one_t2 = one_t * one_t;
+ var a = one_t2 * one_t;
+ var b = 3 * one_t2 * t;
+ var t2 = t * t;
+ var c = 3 * one_t * t2;
+ var d = t2 * t;
+ return a * cubic[0] + b * cubic[2] + c * cubic[4] + d * cubic[6];
+}
+
+function y_at_t(cubic, t) {
+ var one_t = 1 - t;
+ var one_t2 = one_t * one_t;
+ var a = one_t2 * one_t;
+ var b = 3 * one_t2 * t;
+ var t2 = t * t;
+ var c = 3 * one_t * t2;
+ var d = t2 * t;
+ return a * cubic[1] + b * cubic[3] + c * cubic[5] + d * cubic[7];
+}
+
+function calcFromScale() {
+ xStart = Math.floor(xmin * subscale) / subscale;
+ yStart = Math.floor(ymin * subscale) / subscale;
+ var xEnd = Math.ceil(xmin * subscale) / subscale;
+ var yEnd = Math.ceil(ymin * subscale) / subscale;
+ var cCelsW = Math.floor(ctx.canvas.width / 10);
+ var cCelsH = Math.floor(ctx.canvas.height / 10);
+ var testW = xEnd - xStart;
+ var testH = yEnd - yStart;
+ var scaleWH = 1;
+ while (cCelsW > testW * scaleWH * 10 && cCelsH > testH * scaleWH * 10) {
+ scaleWH *= 10;
+ }
+ while (cCelsW * 10 < testW * scaleWH && cCelsH * 10 < testH * scaleWH) {
+ scaleWH /= 10;
+ }
+
+ columns = Math.ceil(xmax * subscale) - Math.floor(xmin * subscale) + 1;
+ rows = Math.ceil(ymax * subscale) - Math.floor(ymin * subscale) + 1;
+
+ var hscale = ctx.canvas.width / columns / ticks;
+ var vscale = ctx.canvas.height / rows / ticks;
+ minScale = Math.floor(Math.min(hscale, vscale));
+ scale = minScale * subscale;
+}
+
+function drawLine(x1, y1, x2, y2) {
+ var unit = scale * ticks;
+ var xoffset = xStart * -unit + at_x;
+ var yoffset = yStart * -unit + at_y;
+ ctx.beginPath();
+ ctx.moveTo(xoffset + x1 * unit, yoffset + y1 * unit);
+ ctx.lineTo(xoffset + x2 * unit, yoffset + y2 * unit);
+ ctx.stroke();
+}
+
+function drawPoint(px, py) {
+ var unit = scale * ticks;
+ var xoffset = xStart * -unit + at_x;
+ var yoffset = yStart * -unit + at_y;
+ var _px = px * unit + xoffset;
+ var _py = py * unit + yoffset;
+ ctx.beginPath();
+ ctx.arc(_px, _py, 3, 0, Math.PI*2, true);
+ ctx.closePath();
+ ctx.stroke();
+}
+
+function drawPointSolid(px, py) {
+ drawPoint(px, py);
+ ctx.fillStyle = "rgba(0,0,0, 0.4)";
+ ctx.fill();
+}
+
+function drawLabel(num, px, py) {
+ ctx.beginPath();
+ ctx.arc(px, py, 8, 0, Math.PI*2, true);
+ ctx.closePath();
+ ctx.strokeStyle = "rgba(0,0,0, 0.4)";
+ ctx.lineWidth = num == 0 || num == 3 ? 2 : 1;
+ ctx.stroke();
+ ctx.fillStyle = "black";
+ ctx.font = "normal 10px Arial";
+ // ctx.rotate(0.001);
+ ctx.fillText(num, px - 2, py + 3);
+ // ctx.rotate(-0.001);
+}
+
+function drawLabelX(ymin, num, loc) {
+ var unit = scale * ticks;
+ var xoffset = xStart * -unit + at_x;
+ var yoffset = yStart * -unit + at_y;
+ var px = loc * unit + xoffset;
+ var py = ymin * unit + yoffset - 20;
+ drawLabel(num, px, py);
+}
+
+function drawLabelY(xmin, num, loc) {
+ var unit = scale * ticks;
+ var xoffset = xStart * -unit + at_x;
+ var yoffset = yStart * -unit + at_y;
+ var px = xmin * unit + xoffset - 20;
+ var py = loc * unit + yoffset;
+ drawLabel(num, px, py);
+}
+
+function drawHodoOrigin(hx, hy, hMinX, hMinY, hMaxX, hMaxY) {
+ ctx.beginPath();
+ ctx.moveTo(hx, hy - 100);
+ ctx.lineTo(hx, hy);
+ ctx.strokeStyle = hMinY < 0 ? "green" : "blue";
+ ctx.stroke();
+ ctx.beginPath();
+ ctx.moveTo(hx, hy);
+ ctx.lineTo(hx, hy + 100);
+ ctx.strokeStyle = hMaxY > 0 ? "green" : "blue";
+ ctx.stroke();
+ ctx.beginPath();
+ ctx.moveTo(hx - 100, hy);
+ ctx.lineTo(hx, hy);
+ ctx.strokeStyle = hMinX < 0 ? "green" : "blue";
+ ctx.stroke();
+ ctx.beginPath();
+ ctx.moveTo(hx, hy);
+ ctx.lineTo(hx + 100, hy);
+ ctx.strokeStyle = hMaxX > 0 ? "green" : "blue";
+ ctx.stroke();
+}
+
+function logCurves(test) {
+ for (curves in test) {
+ var curve = test[curves];
+ if (curve.length != 8) {
+ continue;
+ }
+ var str = "{{";
+ for (i = 0; i < 8; i += 2) {
+ str += curve[i].toFixed(2) + "," + curve[i + 1].toFixed(2);
+ if (i < 6) {
+ str += "}, {";
+ }
+ }
+ str += "}}";
+ console.log(str);
+ }
+}
+
+function scalexy(x, y, mag) {
+ var length = Math.sqrt(x * x + y * y);
+ return mag / length;
+}
+
+function drawArrow(x, y, dx, dy) {
+ var unit = scale * ticks;
+ var xoffset = xStart * -unit + at_x;
+ var yoffset = yStart * -unit + at_y;
+ var dscale = scalexy(dx, dy, 1);
+ dx *= dscale;
+ dy *= dscale;
+ ctx.beginPath();
+ ctx.moveTo(xoffset + x * unit, yoffset + y * unit);
+ x += dx;
+ y += dy;
+ ctx.lineTo(xoffset + x * unit, yoffset + y * unit);
+ dx /= 10;
+ dy /= 10;
+ ctx.lineTo(xoffset + (x - dy) * unit, yoffset + (y + dx) * unit);
+ ctx.lineTo(xoffset + (x + dx * 2) * unit, yoffset + (y + dy * 2) * unit);
+ ctx.lineTo(xoffset + (x + dy) * unit, yoffset + (y - dx) * unit);
+ ctx.lineTo(xoffset + x * unit, yoffset + y * unit);
+ ctx.strokeStyle = "rgba(0,75,0, 0.4)";
+ ctx.stroke();
+}
+
+function draw(test, title) {
+ ctx.fillStyle = "rgba(0,0,0, 0.1)";
+ ctx.font = "normal 50px Arial";
+ ctx.fillText(title, 50, 50);
+ ctx.font = "normal 10px Arial";
+ var unit = scale * ticks;
+ // ctx.lineWidth = "1.001"; "0.999";
+ var xoffset = xStart * -unit + at_x;
+ var yoffset = yStart * -unit + at_y;
+
+ for (curves in test) {
+ var curve = test[curves];
+ if (curve.length != 8) {
+ continue;
+ }
+ ctx.lineWidth = 1;
+ if (draw_tangents) {
+ ctx.strokeStyle = "rgba(0,0,255, 0.3)";
+ drawLine(curve[0], curve[1], curve[2], curve[3]);
+ drawLine(curve[2], curve[3], curve[4], curve[5]);
+ drawLine(curve[4], curve[5], curve[6], curve[7]);
+ }
+ if (draw_deriviatives) {
+ var dx = dx_at_t(curve, 0);
+ var dy = dy_at_t(curve, 0);
+ drawArrow(curve[0], curve[1], dx, dy);
+ dx = dx_at_t(curve, 1);
+ dy = dy_at_t(curve, 1);
+ drawArrow(curve[6], curve[7], dx, dy);
+ if (draw_midpoint) {
+ var midX = x_at_t(curve, 0.5);
+ var midY = y_at_t(curve, 0.5);
+ dx = dx_at_t(curve, 0.5);
+ dy = dy_at_t(curve, 0.5);
+ drawArrow(midX, midY, dx, dy);
+ }
+ }
+ ctx.beginPath();
+ ctx.moveTo(xoffset + curve[0] * unit, yoffset + curve[1] * unit);
+ ctx.bezierCurveTo(
+ xoffset + curve[2] * unit, yoffset + curve[3] * unit,
+ xoffset + curve[4] * unit, yoffset + curve[5] * unit,
+ xoffset + curve[6] * unit, yoffset + curve[7] * unit);
+ ctx.strokeStyle = "black";
+ ctx.stroke();
+ if (draw_endpoints) {
+ drawPoint(curve[0], curve[1]);
+ drawPoint(curve[2], curve[3]);
+ drawPoint(curve[4], curve[5]);
+ drawPoint(curve[6], curve[7]);
+ }
+ if (draw_midpoint) {
+ var midX = x_at_t(curve, 0.5);
+ var midY = y_at_t(curve, 0.5);
+ drawPointSolid(midX, midY);
+ }
+ if (draw_hodo) {
+ var hodo = hodograph(curve);
+ var hMinX = Math.min(0, hodo[0], hodo[2], hodo[4]);
+ var hMinY = Math.min(0, hodo[1], hodo[3], hodo[5]);
+ var hMaxX = Math.max(0, hodo[0], hodo[2], hodo[4]);
+ var hMaxY = Math.max(0, hodo[1], hodo[3], hodo[5]);
+ var hScaleX = hMaxX - hMinX > 0 ? ctx.canvas.width / (hMaxX - hMinX) : 1;
+ var hScaleY = hMaxY - hMinY > 0 ? ctx.canvas.height / (hMaxY - hMinY) : 1;
+ var hUnit = Math.min(hScaleX, hScaleY);
+ hUnit /= 2;
+ var hx = xoffset - hMinX * hUnit;
+ var hy = yoffset - hMinY * hUnit;
+ ctx.moveTo(hx + hodo[0] * hUnit, hy + hodo[1] * hUnit);
+ ctx.quadraticCurveTo(
+ hx + hodo[2] * hUnit, hy + hodo[3] * hUnit,
+ hx + hodo[4] * hUnit, hy + hodo[5] * hUnit);
+ ctx.strokeStyle = "red";
+ ctx.stroke();
+ if (draw_hodo_origin) {
+ drawHodoOrigin(hx, hy, hMinX, hMinY, hMaxX, hMaxY);
+ }
+ }
+ if (draw_hodo2) {
+ var hodo = hodograph2(curve);
+ var hMinX = Math.min(0, hodo[0], hodo[2]);
+ var hMinY = Math.min(0, hodo[1], hodo[3]);
+ var hMaxX = Math.max(0, hodo[0], hodo[2]);
+ var hMaxY = Math.max(0, hodo[1], hodo[3]);
+ var hScaleX = hMaxX - hMinX > 0 ? ctx.canvas.width / (hMaxX - hMinX) : 1;
+ var hScaleY = hMaxY - hMinY > 0 ? ctx.canvas.height / (hMaxY - hMinY) : 1;
+ var hUnit = Math.min(hScaleX, hScaleY);
+ hUnit /= 2;
+ var hx = xoffset - hMinX * hUnit;
+ var hy = yoffset - hMinY * hUnit;
+ ctx.moveTo(hx + hodo[0] * hUnit, hy + hodo[1] * hUnit);
+ ctx.lineTo(hx + hodo[2] * hUnit, hy + hodo[3] * hUnit);
+ ctx.strokeStyle = "red";
+ ctx.stroke();
+ drawHodoOrigin(hx, hy, hMinX, hMinY, hMaxX, hMaxY);
+ }
+ if (draw_sequence) {
+ var ymin = Math.min(curve[1], curve[3], curve[5], curve[7]);
+ for (var i = 0; i < 8; i+= 2) {
+ drawLabelX(ymin, i >> 1, curve[i]);
+ }
+ var xmin = Math.min(curve[0], curve[2], curve[4], curve[6]);
+ for (var i = 1; i < 8; i+= 2) {
+ drawLabelY(xmin, i >> 1, curve[i]);
+ }
+ }
+ }
+}
+
+function drawTop() {
+ init(tests[testIndex]);
+ redraw();
+}
+
+function redraw() {
+ ctx.beginPath();
+ ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);
+ ctx.fillStyle="white";
+ ctx.fill();
+ draw(tests[testIndex], testTitles[testIndex]);
+}
+
+function doKeyPress(evt) {
+ var char = String.fromCharCode(evt.charCode);
+ switch (char) {
+ case '2':
+ draw_hodo2 ^= true;
+ redraw();
+ break;
+ case 'd':
+ draw_deriviatives ^= true;
+ redraw();
+ break;
+ case 'e':
+ draw_endpoints ^= true;
+ redraw();
+ break;
+ case 'h':
+ draw_hodo ^= true;
+ redraw();
+ break;
+ case 'N':
+ testIndex += 9;
+ case 'n':
+ if (++testIndex >= tests.length)
+ testIndex = 0;
+ drawTop();
+ break;
+ case 'l':
+ logCurves(tests[testIndex]);
+ break;
+ case 'm':
+ draw_midpoint ^= true;
+ redraw();
+ break;
+ case 'o':
+ draw_hodo_origin ^= true;
+ redraw();
+ break;
+ case 'P':
+ testIndex -= 9;
+ case 'p':
+ if (--testIndex < 0)
+ testIndex = tests.length - 1;
+ drawTop();
+ break;
+ case 's':
+ draw_sequence ^= true;
+ redraw();
+ break;
+ case 't':
+ draw_tangents ^= true;
+ redraw();
+ break;
+ }
+}
+
+function calcXY() {
+ var e = window.event;
+ var tgt = e.target || e.srcElement;
+ var left = tgt.offsetLeft;
+ var top = tgt.offsetTop;
+ var unit = scale * ticks;
+ mouseX = (e.clientX - left - Math.ceil(at_x) + 1) / unit + xStart;
+ mouseY = (e.clientY - top - Math.ceil(at_y)) / unit + yStart;
+}
+
+var lastX, lastY;
+var activeCurve = [];
+var activePt;
+
+function handleMouseClick() {
+ calcXY();
+}
+
+function initDown() {
+ var unit = scale * ticks;
+ var xoffset = xStart * -unit + at_x;
+ var yoffset = yStart * -unit + at_y;
+ var test = tests[testIndex];
+ var bestDistance = 1000000;
+ activePt = -1;
+ for (curves in test) {
+ var testCurve = test[curves];
+ if (testCurve.length != 8) {
+ continue;
+ }
+ for (var i = 0; i < 8; i += 2) {
+ var testX = testCurve[i];
+ var testY = testCurve[i + 1];
+ var dx = testX - mouseX;
+ var dy = testY - mouseY;
+ var dist = dx * dx + dy * dy;
+ if (dist > bestDistance) {
+ continue;
+ }
+ activeCurve = testCurve;
+ activePt = i;
+ bestDistance = dist;
+ }
+ }
+ if (activePt >= 0) {
+ lastX = mouseX;
+ lastY = mouseY;
+ }
+}
+
+function handleMouseOver() {
+ if (!mouseDown) {
+ activePt = -1;
+ return;
+ }
+ calcXY();
+ if (activePt < 0) {
+ initDown();
+ return;
+ }
+ var unit = scale * ticks;
+ var deltaX = (mouseX - lastX) /* / unit */;
+ var deltaY = (mouseY - lastY) /*/ unit */;
+ lastX = mouseX;
+ lastY = mouseY;
+ activeCurve[activePt] += deltaX;
+ activeCurve[activePt + 1] += deltaY;
+ redraw();
+}
+
+function start() {
+ for (i = 0; i < testDivs.length; ++i) {
+ var title = testDivs[i].id.toString();
+ var str = testDivs[i].firstChild.data;
+ parse(str, title);
+ }
+ drawTop();
+ window.addEventListener('keypress', doKeyPress, true);
+ window.onresize = function() {
+ drawTop();
+ }
+}
+
+</script>
+</head>
+
+<body onLoad="start();">
+<canvas id="canvas" width="750" height="500"
+ onmousedown="mouseDown = true"
+ onmouseup="mouseDown = false"
+ onmousemove="handleMouseOver()"
+ onclick="handleMouseClick()"
+ ></canvas >
+</body>
+</html>
diff --git a/chromium/third_party/skia/experimental/Intersection/op.htm b/chromium/third_party/skia/experimental/Intersection/op.htm
new file mode 100644
index 00000000000..2fc5577f838
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/op.htm
@@ -0,0 +1,4806 @@
+<!-- path visualizer -->
+<html>
+<head>
+<div style="height:0">
+
+<div id="testSimplifyQuadratic1">
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.quadTo(0, 0, 0, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+</div>
+
+<div id="testSimplifyQuadratic2">
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(20, 0, 20, 20);
+ path.close();
+ path.moveTo(20, 0);
+ path.quadTo(0, 0, 0, 20);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+</div>
+
+<div id="testSimplifyQuadratic3">
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(20, 0, 20, 20);
+ path.close();
+ path.moveTo(0, 20);
+ path.quadTo(0, 0, 20, 0);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+}
+</div>
+
+<div id="testSimplifyQuadratic4">
+ SkPath path, out;
+ path.moveTo(0, 20);
+ path.quadTo(20, 0, 40, 20);
+ path.close();
+ path.moveTo(40, 10);
+ path.quadTo(20, 30, 0, 10);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+</div>
+
+<div id="testSimplifyQuadratic5">
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(0, 0, 0, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+</div>
+
+<div id="testSimplifyQuadratic6">
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(1, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+</div>
+
+<div id="testSimplifyQuadratic7">
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 2);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+</div>
+
+<div id="testSimplifyQuadratic8">
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 2);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+</div>
+
+<div id="testSimplifyQuadratic9">
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 2, 2);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+</div>
+
+<div id="testSimplifyQuadratic10">
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.quadTo(1, 1, 1, 2);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+</div>
+
+<div id="testSimplifyQuadratic11">
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 1);
+ path.quadTo(2, 2, 3, 3);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+</div>
+
+<div id="testSimplifyQuadratic12">
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.lineTo(0, 2);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(3, 0);
+ path.quadTo(1, 1, 0, 2);
+ path.lineTo(3, 0);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+</div>
+
+<div id="testSimplifyQuadratic13">
+ SkPath path, out;
+path.moveTo(0, 0);
+path.quadTo(0, 0, 1, 0);
+path.lineTo(1, 1);
+path.lineTo(0, 0);
+path.close();
+path.moveTo(0, 0);
+path.quadTo(3, 0, 1, 1);
+path.lineTo(0, 0);
+path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+</div>
+
+<div id="testSimplifyQuadratic14">
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(0, 1, 2, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+</div>
+
+<div id="testSimplifyQuadratic15">
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 3);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(0, 1);
+ path.lineTo(1, 1);
+ path.quadTo(0, 3, 3, 3);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+</div>
+
+<div id="testSimplifyQuadratic16">
+ SkPath path, out;
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+</div>
+
+<div id="testSimplifyQuadratic17">
+ SkPath path, out;
+ path.moveTo(8, 8);
+ path.quadTo(10, 10, 8, -10);
+ path.close();
+ path.moveTo(8, 8);
+ path.quadTo(12, 12, 14, 4);
+ path.close();
+ path.moveTo(8, 8);
+ path.quadTo(9, 9, 10, 8);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+}
+</div>
+
+<div id="testSimplifyQuadratic18">
+ SkPath path, out;
+ path.moveTo(8.0000000000000071, 8.0000000000000071);
+ path.quadTo(8.7289570079366854, 8.7289570079366889, 9.3914917259458743, 9.0593802763083691);
+ path.close();
+ path.moveTo(8.0000000000000142, 8.0000000000000142);
+ path.quadTo(8.1250000000000107, 8.1250000000000071, 8.2500000000000071, 8.2187500000000053);
+ path.close();
+ testSimplify(path, true, out, bitmap);
+ drawAsciiPaths(path, out, true);
+</div>
+
+<div id="testSimplifyQuadratic19">
+ SkPath path, simple;
+ path.moveTo(0,4);
+ path.lineTo(6,4);
+ path.lineTo(3,1);
+ path.close();
+ path.moveTo(2,3);
+ path.lineTo(3,2);
+ path.lineTo(4,3);
+ path.close();
+ testSimplifyx(path);
+</div>
+
+<div id="testSimplifyQuadratic20">
+ SkPath path, simple;
+ path.moveTo(0,4);
+ path.lineTo(6,4);
+ path.lineTo(3,1);
+ path.close();
+ path.moveTo(2,3);
+ path.lineTo(4,3);
+ path.lineTo(3,2);
+ path.close();
+ testSimplifyx(path);
+</div>
+
+<div id="testSimplifyQuadratic21">
+ SkPath path, simple;
+ path.moveTo(0,4);
+ path.lineTo(8,4);
+ path.lineTo(4,0);
+ path.close();
+ path.moveTo(2,2);
+ path.lineTo(3,3);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+</div>
+
+<div id="testLine5">
+ path.moveTo(3,0);
+ path.lineTo(6,2);
+ path.lineTo(0,2);
+ path.close();
+ path.moveTo(3,0);
+ path.lineTo(6,2);
+ path.lineTo(0,2);
+ path.close();
+</div>
+
+<div id="testLine6">
+ SkPath path, simple;
+ path.moveTo(0,0);
+ path.lineTo(4,0);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(2,0);
+ path.lineTo(6,0);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+</div>
+
+<div id="testLine7">
+ SkPath path, simple;
+ path.moveTo(0,0);
+ path.lineTo(4,0);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(6,0);
+ path.lineTo(2,0);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+</div>
+
+<div id="testLine7b">
+ path.moveTo(0,0);
+ path.lineTo(4,0);
+ path.close();
+ path.moveTo(6,0);
+ path.lineTo(2,0);
+ path.lineTo(4,2);
+ path.close();
+</div>
+
+<div id="testLine9">
+ SkPath path, simple;
+ path.moveTo(0,4);
+ path.lineTo(4,4);
+ path.lineTo(2,2);
+ path.close();
+ path.moveTo(6,4);
+ path.lineTo(2,4);
+ path.lineTo(4,2);
+ path.close();
+ testSimplifyx(path);
+</div>
+
+<div id="testLine12">
+ path.moveTo(0,4);
+ path.lineTo(6,4);
+ path.lineTo(3,1);
+ path.close();
+ path.moveTo(2,3);
+ path.lineTo(3,2);
+ path.lineTo(4,3);
+ path.close();
+</div>
+
+<div id="testLine13">
+ path.moveTo(6,4);
+ path.lineTo(0,4);
+ path.lineTo(3,1);
+ path.close();
+ path.moveTo(3,2);
+ path.lineTo(2,3);
+ path.lineTo(4,3);
+ path.close();
+</div>
+
+<div id="testLine16">
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 4, 9, 9, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine17">
+ SkPath path, simple;
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
+ testSimplifyx(path);
+</div>
+
+<div id="testLine19">
+ SkPath path, simple;
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 16, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+</div>
+
+<div id="testLine22">
+ path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine24">
+ path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine28">
+ SkPath path, simple;
+ path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
+ testSimplifyx(path);
+</div>
+
+<div id="testLine29">
+ SkPath path, simple;
+ path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 12, 21, 21, SkPath::kCW_Direction);
+ testSimplifyx(path);
+</div>
+
+<div id="testLine30">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 4, 13, 13, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine31">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 4, 9, 9, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine32">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine33">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine34">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine35">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 0, 18, 18, SkPath::kCW_Direction);
+ path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine36">
+ path.addRect(0, 10, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 12, 18, 18, SkPath::kCW_Direction);
+ path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine37">
+ path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
+ path.addRect(18, 24, 30, 30, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine38">
+ path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(6, 12, 18, 18, SkPath::kCW_Direction);
+ path.addRect(12, 12, 21, 21, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine39">
+ path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(12, 6, 24, 24, SkPath::kCW_Direction);
+ path.addRect(12, 4, 21, 21, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine40">
+ path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(12, 18, 24, 24, SkPath::kCW_Direction);
+ path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine41">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(18, 24, 30, 30, SkPath::kCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine42">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(8, 16, 17, 17, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine43">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 24, 18, 18, SkPath::kCW_Direction);
+ path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine44">
+ path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
+ path.addRect(18, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(18, 32, 27, 36, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine45">
+ path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(18, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 32, 33, 36, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine46">
+ path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 0, 36, 36, SkPath::kCW_Direction);
+ path.addRect(24, 32, 33, 36, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine47">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine48">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine49">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine50">
+ path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 20, 36, 30, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine51">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine52">
+ path.addRect(0, 30, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 20, 18, 30, SkPath::kCW_Direction);
+ path.addRect(32, 0, 36, 41, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine53">
+ path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
+ path.addRect(12, 20, 24, 30, SkPath::kCW_Direction);
+ path.addRect(12, 32, 21, 36, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine54">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 0, 18, 18, SkPath::kCW_Direction);
+ path.addRect(8, 4, 17, 17, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine55">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 6, 18, 18, SkPath::kCW_Direction);
+ path.addRect(4, 4, 13, 13, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine56">
+ path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
+ path.addRect(18, 20, 30, 30, SkPath::kCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine57">
+ path.addRect(20, 0, 40, 40, SkPath::kCW_Direction);
+ path.addRect(20, 0, 30, 40, SkPath::kCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine58">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 0, 12, 12, SkPath::kCCW_Direction);
+ path.addRect(0, 12, 9, 9, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine59">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 6, 18, 18, SkPath::kCCW_Direction);
+ path.addRect(4, 4, 13, 13, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine60">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(6, 12, 18, 18, SkPath::kCCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine61">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(12, 0, 24, 24, SkPath::kCCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine62">
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine63">
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(0, 10, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 6, 12, 12, SkPath::kCCW_Direction);
+ path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine64">
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
+ path.addRect(18, 6, 30, 30, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine65">
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 0, 36, 36, SkPath::kCW_Direction);
+ path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine66">
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(0, 30, 20, 20, SkPath::kCW_Direction);
+ path.addRect(12, 20, 24, 30, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine67">
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 20, 36, 30, SkPath::kCW_Direction);
+ path.addRect(32, 0, 36, 41, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine68a">
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCW_Direction);
+ path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine68b">
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine68c">
+ path.addRect(0, 0, 8, 8, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCW_Direction);
+ path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine68d">
+ path.addRect(0, 0, 8, 8, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine68e">
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine68f">
+ path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
+ path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine69">
+ path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
+ path.addRect(12, 32, 21, 36, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine70">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 24, 12, 12, SkPath::kCW_Direction);
+ path.addRect(12, 32, 21, 36, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine71">
+ path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
+ path.addRect(12, 0, 24, 24, SkPath::kCW_Direction);
+ path.addRect(12, 32, 21, 36, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine72">
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
+ path.addRect(6, 20, 18, 30, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine73">
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(0, 40, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
+ path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine74">
+ path.addRect(20, 30, 40, 40, SkPath::kCW_Direction);
+ path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
+ path.addRect(32, 24, 36, 41, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine75">
+ path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
+ path.addRect(10, 0, 30, 30, SkPath::kCCW_Direction);
+ path.addRect(18, 0, 30, 30, SkPath::kCCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine76">
+ path.addRect(36, 0, 66, 60, SkPath::kCW_Direction);
+ path.addRect(10, 20, 40, 30, SkPath::kCW_Direction);
+ path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
+ path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine77">
+ path.addRect(20, 0, 40, 40, SkPath::kCW_Direction);
+ path.addRect(24, 6, 36, 36, SkPath::kCCW_Direction);
+ path.addRect(24, 32, 33, 36, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine78">
+ path.addRect(0, 0, 30, 60, SkPath::kCW_Direction);
+ path.addRect(10, 20, 30, 30, SkPath::kCCW_Direction);
+ path.addRect(18, 20, 30, 30, SkPath::kCCW_Direction);
+ path.addRect(32, 0, 36, 41, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine79">
+ path.addRect(0, 36, 60, 30, SkPath::kCW_Direction);
+ path.addRect(10, 30, 40, 30, SkPath::kCW_Direction);
+ path.addRect(0, 20, 12, 30, SkPath::kCCW_Direction);
+ path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine81">
+ path.addRect(-1, -1, 3, 3, SkPath::kCW_Direction);
+ path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
+ path.addRect(1, 1, 2, 2, SkPath::kCCW_Direction);
+</div>
+
+<div id="testDegenerate1">
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(2, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(2, 0);
+ path.close();
+</div>
+
+<div id="testDegenerate2">
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(0, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(0, 1);
+ path.close();
+</div>
+
+<div id="testDegenerate3">
+ path.moveTo(0, 0);
+ path.lineTo(2, 0);
+ path.lineTo(1, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(3, 0);
+ path.close();
+</div>
+
+<div id="testDegenerate4">
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 1);
+ path.lineTo(1, 2);
+ path.close();
+</div>
+
+<div id="testNondegenerate1">
+ path.moveTo(0, 0);
+ path.lineTo(3, 0);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(1, 1);
+ path.lineTo(2, 1);
+ path.lineTo(1, 2);
+ path.close();
+</div>
+
+<div id="testNondegenerate2">
+ path.moveTo(1, 0);
+ path.lineTo(0, 1);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(0, 2);
+ path.lineTo(0, 3);
+ path.lineTo(1, 2);
+ path.close();
+</div>
+
+<div id="testNondegenerate3">
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(2, 1);
+ path.close();
+ path.moveTo(0, 1);
+ path.lineTo(1, 1);
+ path.lineTo(0, 2);
+ path.close();
+</div>
+
+<div id="testNondegenerate4">
+ path.moveTo(1, 0);
+ path.lineTo(0, 1);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 2);
+ path.lineTo(0, 3);
+ path.lineTo(1, 3);
+ path.close();
+</div>
+
+<div id="testQuadralateral5">
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 2);
+ path.lineTo(3, 2);
+ path.lineTo(3, 3);
+ path.close();
+</div>
+
+<div id="testQuadralateral6">
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(2, 0);
+ path.lineTo(0, 2);
+ path.lineTo(2, 2);
+ path.close();
+</div>
+
+<div id="testFauxQuadralateral6">
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(2, 0);
+ path.lineTo(1.333, 0.667);
+ path.close();
+ path.moveTo(1.333, 0.667);
+ path.lineTo(0, 2);
+ path.lineTo(2, 2);
+ path.close();
+</div>
+
+<div id="testFauxQuadralateral6a">
+ path.moveTo(0, 0);
+ path.lineTo(3, 0);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(4, 2);
+ path.close();
+ path.moveTo(4, 2);
+ path.lineTo(0, 6);
+ path.lineTo(6, 6);
+ path.close();
+</div>
+
+<div id="testFauxQuadralateral6b">
+ path.moveTo(0, 0);
+ path.lineTo(3, 0);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(4, 2);
+ path.close();
+ path.moveTo(4, 2);
+ path.lineTo(6, 6);
+ path.lineTo(0, 6);
+ path.close();
+</div>
+
+<div id="testFauxQuadralateral6c">
+ path.moveTo(0, 0);
+ path.lineTo(3, 3);
+ path.lineTo(3, 0);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(4, 2);
+ path.close();
+ path.moveTo(4, 2);
+ path.lineTo(0, 6);
+ path.lineTo(6, 6);
+ path.close();
+</div>
+
+<div id="testFauxQuadralateral6d">
+ path.moveTo(0, 0);
+ path.lineTo(3, 3);
+ path.lineTo(3, 0);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(4, 2);
+ path.close();
+ path.moveTo(4, 2);
+ path.lineTo(6, 6);
+ path.lineTo(0, 6);
+</div>
+
+<div id="testQuadralateral6a">
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(3, 0);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(3, 0);
+ path.lineTo(6, 0);
+ path.lineTo(0, 6);
+ path.lineTo(6, 6);
+</div>
+
+<div id="testQuadralateral7">
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(2, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 1);
+ path.lineTo(2, 2);
+ path.lineTo(1, 3);
+ path.close();
+</div>
+
+<div id="testQuadralateral8">
+ path.moveTo(0, 0);
+ path.lineTo(3, 1);
+ path.lineTo(1, 3);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(2, 1);
+ path.lineTo(0, 2);
+ path.lineTo(3, 2);
+ path.lineTo(2, 3);
+ path.close();
+</div>
+
+<div id="testQuadralateral9">
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(1, 2);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(1, 1);
+ path.lineTo(2, 1);
+ path.lineTo(1, 3);
+ path.lineTo(2, 3);
+ path.close();
+</div>
+
+<div id="testLine1x">
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 0, 13, 13, SkPath::kCW_Direction);
+</div>
+
+<div id="testLine2x">
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
+ path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
+ path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine3x">
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
+ path.addRect(18, 20, 30, 30, SkPath::kCCW_Direction);
+ path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine4x">
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
+ path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
+ path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
+</div>
+
+<div id="testQuadratic1">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(1, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.close();
+</div>
+
+<div id="testQuadratic2">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(3, 0);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic3">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic4x">
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic5">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 0, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic6">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(2, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(2, 0, 0, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic7">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(3, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(3, 0, 1, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic8">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 1, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic9">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(3, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(1, 2, 3, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic9a">
+ path.moveTo(1.08000004, 0.720000029);
+ path.lineTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(3, 1);
+ path.lineTo(1.01568651, 0.338562161);
+ path.quadTo(1.03542483, 0.541699469, 1.08000004, 0.720000029);
+ path.close();
+ path.moveTo(1.08000004, 0.720000029);
+ path.lineTo(3, 2);
+ path.quadTo(1.39999998, 2, 1.08000004, 0.720000029);
+ path.close();
+
+</div>
+
+<div id="testQuadratic10a">
+path.moveTo(15.5, 15.5);
+path.lineTo(46.5, 15.5);
+path.quadTo(0, 31, 0, 46.5);
+path.lineTo(15.5, 15.5);
+path.close();
+</div>
+
+<div id="testQuadratic10b">
+path.moveTo(5.16666698, 36.1666641);
+path.lineTo(15.5, 15.5);
+path.lineTo(46.5, 15.5);
+path.quadTo(15.5, 25.8333321, 5.16666698, 36.1666641);
+path.close();
+path.moveTo(5.16666698, 36.1666641);
+path.lineTo(0, 46.5);
+path.quadTo(0, 41.3333359, 5.16666698, 36.1666641);
+path.close();
+</div>
+
+<div id="testQuadratic11a">
+path.moveTo(0, 0);
+path.lineTo(15.5, 31);
+path.lineTo(0, 0);
+path.close();
+path.moveTo(0, 15.5);
+path.lineTo(15.5, 15.5);
+path.quadTo(15.5, 15.5, 46.5, 31);
+path.lineTo(0, 15.5);
+path.close();
+</div>
+
+<div id="testQuadratic11b">
+path.moveTo(9.30000019, 18.6000004);
+path.lineTo(0, 15.5);
+path.lineTo(7.75, 15.5);
+path.lineTo(15.5, 15.5);
+path.lineTo(46.5, 31);
+path.lineTo(9.30000019, 18.6000004);
+path.close();
+</div>
+
+<div id="testQuadratic12">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(0, 1);
+ path.quadTo(1, 1, 0, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic13a">
+path.moveTo(0, 0);
+path.quadTo(0, 0, 15.5, 0);
+path.lineTo(15.5, 31);
+path.lineTo(0, 0);
+path.close();
+path.moveTo(0, 0);
+path.quadTo(15.5, 46.5, 46.5, 46.5);
+path.lineTo(0, 0);
+path.close();
+</div>
+
+<div id="testQuadratic13b">
+path.moveTo(14.8800001, 29.7600002);
+path.quadTo(6.20000029, 18.6000004, 0, 0);
+path.lineTo(14.8800001, 29.7600002);
+path.close();
+path.moveTo(15.5, 30.5437222);
+path.lineTo(15.5, 31);
+path.lineTo(14.8800001, 29.7600002);
+path.quadTo(15.1884346, 30.156559, 15.5, 30.5437222);
+path.close();
+path.moveTo(15.5, 15.5);
+path.lineTo(0, 0);
+path.lineTo(15.5, 0);
+path.lineTo(15.5, 15.5);
+path.close();
+path.moveTo(15.5, 30.5437222);
+path.lineTo(15.5, 15.5);
+path.lineTo(46.5, 46.5);
+path.quadTo(28.34062, 46.5, 15.5, 30.5437222);
+path.close();
+</div>
+
+<div id="testQuadratic14">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(3, 2, 3, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic15">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 1, 0);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(0, 1);
+ path.quadTo(1, 1, 0, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic16a">
+path.moveTo(0, 0);
+path.quadTo(0, 0, 31, 0);
+path.lineTo(46.5, 31);
+path.lineTo(0, 0);
+path.close();
+path.moveTo(46.5, 15.5);
+path.lineTo(0, 31);
+path.quadTo(0, 31, 15.5, 31);
+path.lineTo(46.5, 15.5);
+path.close();
+</div>
+
+<div id="testQuadratic16b">
+path.moveTo(31, 20.6666679);
+path.lineTo(0, 0);
+path.lineTo(31, 0);
+path.lineTo(39.8571434, 17.7142868);
+path.lineTo(31, 20.6666679);
+path.close();
+path.moveTo(33.214283, 22.1428585);
+path.lineTo(15.5, 31);
+path.lineTo(0, 31);
+path.lineTo(31, 20.6666679);
+path.lineTo(33.214283, 22.1428585);
+path.close();
+path.moveTo(40.2999992, 18.6000004);
+path.lineTo(46.5, 31);
+path.lineTo(33.214283, 22.1428585);
+path.lineTo(40.2999992, 18.6000004);
+path.close();
+path.moveTo(39.8571434, 17.7142868);
+path.lineTo(46.5, 15.5);
+path.lineTo(40.2999992, 18.6000004);
+path.lineTo(39.8571434, 17.7142868);
+path.close();
+</div>
+
+<div id="testQuadratic17x">
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 3, 1);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(3, 1, 0, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic18">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 1, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic19">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(2, 0, 0, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic20">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic21">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic22">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(0, 1, 2, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic23">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(0, 2, 1, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic24">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(2, 0, 0, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic25">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 1);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(2, 1, 0, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic26">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 1);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic27">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 1);
+ path.lineTo(2, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(2, 1, 0, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic28">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 2);
+ path.quadTo(1, 2, 0, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic29">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 2, 1);
+ path.lineTo(0, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic30">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 2);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 1, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic31">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 2);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 1, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic32">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 2, 3);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(3, 1, 0, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic33">
+ path.moveTo(0, 0);
+ path.quadTo(2, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 1);
+ path.quadTo(2, 1, 2, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic34">
+ path.moveTo(0, 0);
+ path.quadTo(2, 0, 0, 1);
+ path.lineTo(0, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 1);
+ path.quadTo(2, 1, 1, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic35">
+ path.moveTo(0, 0);
+ path.quadTo(0, 1, 1, 1);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(2, 0);
+ path.lineTo(3, 0);
+ path.quadTo(0, 1, 1, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic36">
+ path.moveTo(0, 0);
+ path.quadTo(2, 1, 2, 3);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(3, 1);
+ path.lineTo(1, 2);
+ path.quadTo(3, 2, 1, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic37">
+ path.moveTo(0, 0);
+ path.quadTo(0, 2, 1, 2);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(3, 1);
+ path.quadTo(0, 2, 1, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic38">
+ path.moveTo(1, 0);
+ path.quadTo(0, 1, 1, 1);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 2);
+ path.quadTo(2, 2, 1, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic39">
+path.moveTo(15.5, 0);
+path.quadTo(46.5, 15.5, 46.5, 31);
+path.lineTo(15.5, 0);
+path.close();
+path.moveTo(46.5, 15.5);
+path.lineTo(0, 31);
+path.quadTo(0, 31, 15.5, 31);
+path.lineTo(46.5, 15.5);
+ path.close();
+</div>
+
+<div id="testQuadratic39a">
+path.moveTo(34.875, 19.375);
+path.lineTo(15.5, 0);
+path.quadTo(32.9687576, 8.73437881, 40.5937271, 17.4687576);
+path.lineTo(34.875, 19.375);
+path.close();
+path.moveTo(36.1666641, 20.6666679);
+path.lineTo(15.5, 31);
+path.lineTo(0, 31);
+path.lineTo(34.875, 19.375);
+path.lineTo(36.1666641, 20.6666679);
+path.close();
+path.moveTo(41.1812401, 18.15938);
+path.quadTo(46.5, 24.5796909, 46.5, 31);
+path.lineTo(36.1666641, 20.6666679);
+path.lineTo(41.1812401, 18.15938);
+path.close();
+path.moveTo(40.5937271, 17.4687576);
+path.lineTo(46.5, 15.5);
+path.lineTo(41.1812401, 18.15938);
+path.quadTo(40.8951759, 17.8140678, 40.5937271, 17.4687576);
+ path.close();
+</div>
+
+<div id="testQuadratic40x">
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(2, 0);
+ path.quadTo(3, 0, 2, 2);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(3, 1);
+ path.lineTo(0, 2);
+ path.quadTo(0, 2, 1, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic40xa">
+path.moveTo(31, 0);
+path.quadTo(41.3333359, 0, 37.8888893, 13.7777777);
+path.lineTo(31, 0);
+path.close();
+path.moveTo(37.8888893, 13.7777777);
+path.quadTo(37.2993202, 16.1360455, 36.3061028, 18.8979664);
+path.lineTo(0, 31);
+path.lineTo(15.5, 31);
+path.lineTo(35.5182915, 20.9908543);
+path.quadTo(33.7454262, 25.5091457, 31, 31);
+path.lineTo(46.5, 31);
+path.lineTo(40.2999992, 18.6000004);
+path.lineTo(46.5, 15.5);
+path.lineTo(39.8571434, 17.7142868);
+path.lineTo(37.8888893, 13.7777777);
+path.close();
+path.moveTo(36.3061028, 18.8979664);
+path.quadTo(35.9396667, 19.9169388, 35.5182915, 20.9908543);
+path.lineTo(40.2999992, 18.6000004);
+path.lineTo(39.8571434, 17.7142868);
+path.lineTo(36.3061028, 18.8979664);
+</div>
+
+<div id="testQuadratic40xb">
+path.moveTo(31, 0);
+path.quadTo(46.5, 0, 31, 31);
+path.lineTo(46.5, 31);
+path.lineTo(31, 0);
+path.close();
+path.moveTo(46.5, 15.5);
+path.lineTo(0, 31);
+path.quadTo(0, 31, 15.5, 31);
+path.lineTo(46.5, 15.5);
+path.close();
+</div>
+
+<div id="testQuadratic41o">
+path.moveTo(419.33905, 236.377808);
+path.quadTo(398.847778, 242.58728, 384.255524, 242.58728);
+path.quadTo(359.417633, 242.58728, 343.738708, 226.080429);
+path.quadTo(328.059784, 209.573578, 328.059784, 183.286819);
+path.quadTo(328.059784, 157.724487, 341.875854, 141.372879);
+path.quadTo(355.691956, 125.021263, 377.218109, 125.021263);
+path.quadTo(397.605896, 125.021263, 408.731201, 139.51004);
+path.quadTo(419.856506, 153.99881, 419.856506, 180.699539);
+path.lineTo(419.752991, 187.012497);
+path.lineTo(348.861511, 187.012497);
+path.quadTo(353.311646, 227.063599, 388.084686, 227.063599);
+path.quadTo(400.814117, 227.063599, 419.33905, 220.233185);
+path.lineTo(419.33905, 236.377808);
+path.close();
+path.moveTo(349.792938, 171.695801);
+path.lineTo(399.365234, 171.695801);
+path.quadTo(399.365234, 140.337967, 375.976227, 140.337967);
+path.quadTo(352.483704, 140.337967, 349.792938, 171.695801);
+path.close();
+path.moveTo(378.682587, 277.360321);
+path.lineTo(381.062897, 259.66333);
+path.quadTo(398.759888, 268.046112, 415.939423, 268.046112);
+path.quadTo(450.402008, 268.046112, 450.402008, 231.513718);
+path.lineTo(450.402008, 213.816727);
+path.quadTo(439.12146, 237.41272, 413.352142, 237.41272);
+path.quadTo(393.171356, 237.41272, 381.269867, 222.716965);
+path.quadTo(369.368378, 208.02121, 369.368378, 183.079834);
+path.quadTo(369.368378, 157.414017, 382.92572, 141.269379);
+path.quadTo(396.483093, 125.124756, 418.009247, 125.124756);
+path.quadTo(436.844666, 125.124756, 450.402008, 140.441467);
+path.lineTo(450.402008, 127.608543);
+path.lineTo(470.89325, 127.608543);
+path.lineTo(470.89325, 209.366608);
+path.quadTo(470.89325, 235.756866, 468.150757, 248.43454);
+path.quadTo(465.408234, 261.112213, 457.853363, 269.184509);
+path.quadTo(444.502991, 283.362823, 416.353394, 283.362823);
+path.quadTo(396.690063, 283.362823, 378.682587, 277.360321);
+path.close();
+path.moveTo(450.402008, 201.087311);
+path.lineTo(450.402008, 154.412781);
+path.quadTo(436.948151, 140.441467, 421.113983, 140.441467);
+path.quadTo(407.039185, 140.441467, 399.070374, 151.722);
+path.quadTo(391.101532, 163.002533, 391.101532, 182.665863);
+path.quadTo(391.101532, 219.612228, 417.07782, 219.612228);
+path.quadTo(434.774841, 219.612228, 450.402008, 201.087311);
+path.close();
+path.moveTo(482.9328, 236.377808);
+path.quadTo(462.441528, 242.58728, 447.849274, 242.58728);
+path.quadTo(423.011383, 242.58728, 407.332458, 226.080429);
+path.quadTo(391.653534, 209.573578, 391.653534, 183.286819);
+path.quadTo(391.653534, 157.724487, 405.469604, 141.372879);
+path.quadTo(419.285706, 125.021263, 440.811859, 125.021263);
+path.quadTo(461.199646, 125.021263, 472.324951, 139.51004);
+path.quadTo(483.450256, 153.99881, 483.450256, 180.699539);
+path.lineTo(483.346741, 187.012497);
+path.lineTo(412.455261, 187.012497);
+path.quadTo(416.905396, 227.063599, 451.678436, 227.063599);
+path.quadTo(464.407867, 227.063599, 482.9328, 220.233185);
+path.lineTo(482.9328, 236.377808);
+path.close();
+path.moveTo(413.386688, 171.695801);
+path.lineTo(462.958984, 171.695801);
+path.quadTo(462.958984, 140.337967, 439.569977, 140.337967);
+path.quadTo(416.077454, 140.337967, 413.386688, 171.695801);
+path.close();
+</div>
+
+<div id="testQuadratic41s">
+path.moveTo(341.875854, 141.372879);
+path.quadTo(355.691956,125.021263, 377.218109,125.021263);
+path.quadTo(388.787811,125.021263, 397.374664,129.687164);
+path.quadTo(406.565979,125.124756, 418.009247,125.124756);
+path.quadTo(423.583374,125.124756, 428.695251,126.466187);
+path.quadTo(434.412903,125.021263, 440.811859,125.021263);
+path.quadTo(449.427277,125.021263, 456.388672,127.608543);
+path.lineTo(470.89325,127.608543);
+path.lineTo(470.89325,137.749908);
+path.quadTo(471.627319,138.601486, 472.324951,139.51004);
+path.quadTo(483.450256,153.99881, 483.450256,180.699539);
+path.lineTo(483.346741,187.012497);
+path.lineTo(470.89325,187.012497);
+path.lineTo(470.89325,209.366608);
+path.quadTo(470.89325,217.414856, 470.638184,224.187729);
+path.quadTo(476.428223,222.631516, 482.9328,220.233185);
+path.lineTo(482.9328,236.377808);
+path.quadTo(475.87207,238.517426, 469.511749,239.919785);
+path.quadTo(468.946777,244.754791, 468.150757,248.43454);
+path.quadTo(465.408234,261.112213, 457.853363,269.184509);
+path.quadTo(444.502991,283.362823, 416.353394,283.362823);
+path.quadTo(396.690063,283.362823, 378.682587,277.360321);
+path.lineTo(381.062897,259.66333);
+path.quadTo(398.759888,268.046112, 415.939423,268.046112);
+path.quadTo(444.719147,268.046112, 449.464905,242.568665);
+path.quadTo(448.648254,242.58728, 447.849274,242.58728);
+path.quadTo(433.084625,242.58728, 421.556366,236.754425);
+path.quadTo(418.89566,237.203537, 416.046783,237.346252);
+path.quadTo(397.661652,242.58728, 384.255524,242.58728);
+path.quadTo(359.417633,242.58728, 343.738708,226.080429);
+path.quadTo(328.059784,209.573578, 328.059784,183.286819);
+path.quadTo(328.059784,157.724487, 341.875854,141.372879);
+path.close();
+path.moveTo(442.014923, 226.179474);
+path.quadTo(445.951935,226.953491, 450.402008,227.049881);
+path.lineTo(450.402008,213.816727);
+path.quadTo(446.904755,221.132065, 442.014923,226.179474);
+path.close();
+path.moveTo(395.347717, 206.501785);
+path.quadTo(392.200165,197.593536, 391.734406,187.012497);
+path.lineTo(391.197113,187.012497);
+path.quadTo(391.738647,198.938644, 395.347717,206.501785);
+path.close();
+path.moveTo(391.808533, 171.695801);
+path.lineTo(392.428436,171.695801);
+path.quadTo(393.693451,162.656265, 397.02359,154.9935);
+path.quadTo(397.023804,154.992996, 397.024048,154.992493);
+path.quadTo(393.175995,143.845093, 383.003235,141.177292);
+path.quadTo(382.964447,141.223267, 382.92572,141.269379);
+</div>
+
+<div id="testQuadratic42o">
+path.moveTo(421.962158, 236.285355);
+path.quadTo(400.947845, 242.65332, 385.983124, 242.65332);
+path.quadTo(360.511261, 242.65332, 344.432129, 225.725143);
+path.quadTo(328.352997, 208.796951, 328.352997, 181.839218);
+path.quadTo(328.352997, 155.62442, 342.521729, 138.855438);
+path.quadTo(356.69046, 122.086449, 378.766083, 122.086449);
+path.quadTo(399.674255, 122.086449, 411.083527, 136.945038);
+path.quadTo(422.492798, 151.803635, 422.492798, 179.185898);
+path.lineTo(422.386688, 185.660004);
+path.lineTo(349.685699, 185.660004);
+path.quadTo(354.24942, 226.733398, 389.910034, 226.733398);
+path.quadTo(402.964386, 226.733398, 421.962158, 219.728638);
+path.lineTo(421.962158, 236.285355);
+path.close();
+path.moveTo(350.6409, 169.952347);
+path.lineTo(401.478516, 169.952347);
+path.quadTo(401.478516, 137.794098, 377.492493, 137.794098);
+path.quadTo(353.40036, 137.794098, 350.6409, 169.952347);
+path.close();
+path.moveTo(379.213562, 278.313934);
+path.lineTo(381.654602, 260.165222);
+path.quadTo(399.803314, 268.761993, 417.421356, 268.761993);
+path.quadTo(452.763611, 268.761993, 452.763611, 231.297104);
+path.lineTo(452.763611, 213.148392);
+path.quadTo(441.195129, 237.34668, 414.768036, 237.34668);
+path.quadTo(394.072144, 237.34668, 381.866882, 222.275818);
+path.quadTo(369.661591, 207.204956, 369.661591, 181.626953);
+path.quadTo(369.661591, 155.306015, 383.565002, 138.749298);
+path.quadTo(397.468384, 122.192581, 419.544037, 122.192581);
+path.quadTo(438.860199, 122.192581, 452.763611, 137.900238);
+path.lineTo(452.763611, 124.739769);
+path.lineTo(473.777893, 124.739769);
+path.lineTo(473.777893, 208.584686);
+path.quadTo(473.777893, 235.64856, 470.965363, 248.649826);
+path.quadTo(468.152863, 261.651093, 460.405151, 269.929443);
+path.quadTo(446.71402, 284.469666, 417.845886, 284.469666);
+path.quadTo(397.680664, 284.469666, 379.213562, 278.313934);
+path.close();
+path.moveTo(452.763611, 200.094055);
+path.lineTo(452.763611, 152.228165);
+path.quadTo(438.966339, 137.900238, 422.727997, 137.900238);
+path.quadTo(408.293945, 137.900238, 400.121704, 149.468719);
+path.quadTo(391.949493, 161.037186, 391.949493, 181.202423);
+path.quadTo(391.949493, 219.091827, 418.588837, 219.091827);
+path.quadTo(436.737549, 219.091827, 452.763611, 200.094055);
+path.close();
+path.moveTo(485.555908, 236.285355);
+path.quadTo(464.541595, 242.65332, 449.576874, 242.65332);
+path.quadTo(424.105011, 242.65332, 408.025879, 225.725143);
+path.quadTo(391.946747, 208.796951, 391.946747, 181.839218);
+path.quadTo(391.946747, 155.62442, 406.115479, 138.855438);
+path.quadTo(420.28421, 122.086449, 442.359833, 122.086449);
+path.quadTo(463.268005, 122.086449, 474.677277, 136.945038);
+path.quadTo(486.086548, 151.803635, 486.086548, 179.185898);
+path.lineTo(485.980438, 185.660004);
+path.lineTo(413.279449, 185.660004);
+path.quadTo(417.84317, 226.733398, 453.503784, 226.733398);
+path.quadTo(466.558136, 226.733398, 485.555908, 219.728638);
+path.lineTo(485.555908, 236.285355);
+path.close();
+path.moveTo(414.23465, 169.952347);
+path.lineTo(465.072266, 169.952347);
+path.quadTo(465.072266, 137.794098, 441.086243, 137.794098);
+path.quadTo(416.99411, 137.794098, 414.23465, 169.952347);
+path.close();
+</div>
+
+<div id="testQuadratic42s">
+path.moveTo(342.521729, 138.855438);
+path.quadTo(356.69046,122.086449, 378.766083,122.086449);
+path.quadTo(390.293488,122.086449, 398.933502,126.603004);
+path.quadTo(408.150299,122.192581, 419.544037,122.192581);
+path.quadTo(425.108429,122.192581, 430.223633,123.496056);
+path.quadTo(435.959412,122.086449, 442.359833,122.086449);
+path.quadTo(451.19516,122.086449, 458.334229,124.739769);
+path.lineTo(473.777893,124.739769);
+path.lineTo(473.777893,135.814713);
+path.quadTo(474.234741,136.368698, 474.677277,136.945038);
+path.quadTo(486.086548,151.803635, 486.086548,179.185898);
+path.lineTo(485.980438,185.660004);
+path.lineTo(473.777893,185.660004);
+path.lineTo(473.777893,208.584686);
+path.quadTo(473.777893,216.745773, 473.522156,223.628113);
+path.quadTo(479.207153,222.069519, 485.555908,219.728638);
+path.lineTo(485.555908,236.285355);
+path.quadTo(478.638306,238.381592, 472.376221,239.787796);
+path.quadTo(471.792389,244.826782, 470.965363,248.649826);
+path.quadTo(468.152863,261.651093, 460.405151,269.929443);
+path.quadTo(446.71402,284.469666, 417.845886,284.469666);
+path.quadTo(397.680664,284.469666, 379.213562,278.313934);
+path.lineTo(381.654602,260.165222);
+path.quadTo(399.803314,268.761993, 417.421356,268.761993);
+path.quadTo(446.944275,268.761993, 451.80542,242.619034);
+path.quadTo(450.674866,242.65332, 449.576874,242.65332);
+path.quadTo(434.524628,242.65332, 422.75238,236.741913);
+path.quadTo(420.864227,237.041901, 418.884674,237.193085);
+path.quadTo(399.840271,242.65332, 385.983124,242.65332);
+path.quadTo(360.511261,242.65332, 344.432129,225.725143);
+path.quadTo(328.352997,208.796951, 328.352997,181.839218);
+path.quadTo(328.352997,155.62442, 342.521729,138.855438);
+path.close();
+path.moveTo(383.823944, 138.443222);
+path.quadTo(380.900299,137.794098, 377.492493,137.794098);
+path.quadTo(353.40036,137.794098, 350.6409,169.952347);
+path.lineTo(370.408203,169.952347);
+path.quadTo(372.883484,151.469254, 383.565002,138.749298);
+path.quadTo(383.694122,138.595551, 383.823944,138.443222);
+path.close();
+path.moveTo(369.740021, 185.660004);
+path.lineTo(349.685699,185.660004);
+path.quadTo(353.983734,224.342361, 385.863525,226.594208);
+path.quadTo(383.762756,224.616837, 381.866882,222.275818);
+path.quadTo(370.639954,208.41301, 369.740021,185.660004);
+path.close();
+path.moveTo(413.279449, 185.660004);
+path.quadTo(415.737305,207.780716, 427.214905,217.987976);
+path.quadTo(440.600586,214.512451, 452.763611,200.094055);
+path.lineTo(452.763611,185.660004);
+</div>
+
+<div id="testQuadratic43o">
+path.moveTo(288.755981, 240);
+path.lineTo(288.755981, 102.232819);
+path.lineTo(315.843994, 102.232819);
+path.lineTo(354.009216, 208.816208);
+path.lineTo(393.291473, 102.232819);
+path.lineTo(417.493835, 102.232819);
+path.lineTo(417.493835, 240);
+path.lineTo(399.248962, 240);
+path.lineTo(399.248962, 127.92453);
+path.lineTo(361.269928, 230.784485);
+path.lineTo(342.373474, 230.784485);
+path.lineTo(305.511444, 127.645271);
+path.lineTo(305.511444, 240);
+path.lineTo(288.755981, 240);
+path.close();
+path.moveTo(397.864014, 236.741989);
+path.quadTo(379.433014, 242.327148, 366.307892, 242.327148);
+path.quadTo(343.967255, 242.327148, 329.864746, 227.479935);
+path.quadTo(315.762238, 212.632736, 315.762238, 188.988907);
+path.quadTo(315.762238, 165.996674, 328.189209, 151.289093);
+path.quadTo(340.61618, 136.581512, 359.978058, 136.581512);
+path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
+path.quadTo(398.329468, 162.645584, 398.329468, 186.661758);
+path.lineTo(398.236359, 192.339996);
+path.lineTo(334.472504, 192.339996);
+path.quadTo(338.475189, 228.364258, 369.752075, 228.364258);
+path.quadTo(381.20163, 228.364258, 397.864014, 222.220581);
+path.lineTo(397.864014, 236.741989);
+path.close();
+path.moveTo(335.310272, 178.563278);
+path.lineTo(379.898438, 178.563278);
+path.quadTo(379.898438, 150.358246, 358.861023, 150.358246);
+path.quadTo(337.730499, 150.358246, 335.310272, 178.563278);
+path.close();
+path.moveTo(346.052765, 240);
+path.lineTo(346.052765, 138.908661);
+path.lineTo(364.390686, 138.908661);
+path.lineTo(364.390686, 157.898193);
+path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
+path.quadTo(398.832489, 136.674606, 401.904327, 137.140045);
+path.lineTo(401.904327, 154.267853);
+path.quadTo(397.156952, 152.685394, 393.526611, 152.685394);
+path.quadTo(376.119537, 152.685394, 364.390686, 173.350464);
+path.lineTo(364.390686, 240);
+path.lineTo(346.052765, 240);
+path.close();
+path.moveTo(362.792297, 273.604034);
+path.lineTo(364.933289, 257.68634);
+path.quadTo(380.850983, 265.226288, 396.303253, 265.226288);
+path.quadTo(427.300842, 265.226288, 427.300842, 232.366959);
+path.lineTo(427.300842, 216.449265);
+path.quadTo(417.15448, 237.672852, 393.976105, 237.672852);
+path.quadTo(375.824341, 237.672852, 365.119446, 224.454651);
+path.quadTo(354.414581, 211.23645, 354.414581, 188.802734);
+path.quadTo(354.414581, 165.717422, 366.608826, 151.196014);
+path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
+path.quadTo(415.106598, 136.674606, 427.300842, 150.451324);
+path.lineTo(427.300842, 138.908661);
+path.lineTo(445.731873, 138.908661);
+path.lineTo(445.731873, 212.446564);
+path.quadTo(445.731873, 236.183472, 443.265106, 247.586502);
+path.quadTo(440.798309, 258.989532, 434.003052, 266.250244);
+path.quadTo(421.994965, 279.002991, 396.675598, 279.002991);
+path.quadTo(378.989258, 279.002991, 362.792297, 273.604034);
+path.close();
+path.moveTo(427.300842, 204.999695);
+path.lineTo(427.300842, 163.017929);
+path.quadTo(415.199677, 150.451324, 400.95755, 150.451324);
+path.quadTo(388.297852, 150.451324, 381.130249, 160.597687);
+path.quadTo(373.962616, 170.744064, 373.962616, 188.430389);
+path.quadTo(373.962616, 221.662079, 397.327179, 221.662079);
+path.quadTo(413.244873, 221.662079, 427.300842, 204.999695);
+path.close();
+path.moveTo(461.457764, 236.741989);
+path.quadTo(443.026764, 242.327148, 429.901642, 242.327148);
+path.quadTo(407.561005, 242.327148, 393.458496, 227.479935);
+path.quadTo(379.355988, 212.632736, 379.355988, 188.988907);
+path.quadTo(379.355988, 165.996674, 391.782959, 151.289093);
+path.quadTo(404.20993, 136.581512, 423.571808, 136.581512);
+path.quadTo(441.909729, 136.581512, 451.916473, 149.613556);
+path.quadTo(461.923218, 162.645584, 461.923218, 186.661758);
+path.lineTo(461.830109, 192.339996);
+path.lineTo(398.066254, 192.339996);
+path.quadTo(402.068939, 228.364258, 433.345825, 228.364258);
+path.quadTo(444.79538, 228.364258, 461.457764, 222.220581);
+path.lineTo(461.457764, 236.741989);
+path.close();
+path.moveTo(398.904022, 178.563278);
+path.lineTo(443.492188, 178.563278);
+path.quadTo(443.492188, 150.358246, 422.454773, 150.358246);
+path.quadTo(401.324249, 150.358246, 398.904022, 178.563278);
+path.close();
+</div>
+
+<div id="testQuadratic43s">
+path.moveTo(288.755981, 240);
+path.lineTo(288.755981,102.232819);
+path.lineTo(315.843994,102.232819);
+path.lineTo(331.979736,147.294876);
+path.quadTo(343.453125,136.581512, 359.978058,136.581512);
+path.quadTo(370.869446,136.581512, 378.822021,141.178574);
+path.quadTo(378.893585,141.140915, 378.965302,141.103577);
+path.lineTo(393.291473,102.232819);
+path.lineTo(417.493835,102.232819);
+path.lineTo(417.493835,136.965759);
+path.quadTo(420.44223,136.581512, 423.571808,136.581512);
+path.quadTo(431.320984,136.581512, 437.582458,138.908661);
+path.lineTo(445.731873,138.908661);
+path.lineTo(445.731873,143.392502);
+path.quadTo(449.143951,146.002823, 451.916473,149.613556);
+path.quadTo(461.923218,162.645584, 461.923218,186.661758);
+path.lineTo(461.830109,192.339996);
+path.lineTo(445.731873,192.339996);
+path.lineTo(445.731873,212.446564);
+path.quadTo(445.731873,220.39856, 445.455017,226.966339);
+path.quadTo(452.7435,225.43367, 461.457764,222.220581);
+path.lineTo(461.457764,236.741989);
+path.quadTo(452.250824,239.531982, 444.367889,240.928268);
+path.quadTo(443.897583,244.662796, 443.265106,247.586502);
+path.quadTo(440.798309,258.989532, 434.003052,266.250244);
+path.quadTo(421.994965,279.002991, 396.675598,279.002991);
+path.quadTo(378.989258,279.002991, 362.792297,273.604034);
+path.lineTo(364.933289,257.68634);
+path.quadTo(380.850983,265.226288, 396.303253,265.226288);
+path.quadTo(422.230743,265.226288, 426.471558,242.237076);
+path.quadTo(419.570892,241.869324, 413.503387,240);
+path.lineTo(399.248962,240);
+path.lineTo(399.248962,237.37915);
+path.quadTo(397.047638,237.633072, 394.711517,237.667465);
+path.quadTo(378.296356,242.327148, 366.307892,242.327148);
+path.quadTo(357.463165,242.327148, 349.909637,240);
+path.lineTo(346.052765,240);
+path.lineTo(346.052765,238.625916);
+path.quadTo(336.926056,234.914124, 329.864746,227.479935);
+path.quadTo(315.762238,212.632736, 315.762238,188.988907);
+path.quadTo(315.762238,176.540054, 319.405273,166.519882);
+path.lineTo(305.511444,127.645271);
+path.lineTo(305.511444,240);
+path.lineTo(288.755981,240);
+path.close();
+path.moveTo(375.464813, 192.339996);
+path.lineTo(374.267029,195.583939);
+path.quadTo(375.987579,214.575378, 387.432068,219.736267);
+path.quadTo(380.122528,208.101486, 379.428741,192.339996);
+path.lineTo(375.464813,192.339996);
+path.close();
+path.moveTo(427.300842, 178.563278);
+path.lineTo(427.300842,163.017929);
+path.quadTo(422.561523,158.096329, 417.493835,155.102234);
+path.lineTo(417.493835,178.563278);
+path.lineTo(427.300842,178.563278);
+path.close();
+path.moveTo(427.300842, 192.339996);
+path.lineTo(417.493835,192.339996);
+path.lineTo(417.493835,214.429169);
+path.quadTo(422.505676,210.684036, 427.300842,204.999695);
+path.lineTo(427.300842,192.339996);
+path.close();
+path.moveTo(420.700134, 226.556015);
+path.quadTo(423.794342,227.54834, 427.300842,227.996094);
+path.lineTo(427.300842,216.449265);
+path.quadTo(424.497772,222.312531, 420.700134,226.556015);
+path.close();
+path.moveTo(368.744965, 228.354782);
+path.quadTo(366.836426,226.574738, 365.119446,224.454651);
+path.quadTo(364.748657,223.996796, 364.390686,223.527878);
+path.lineTo(364.390686,228.077774);
+path.quadTo(366.495239,228.312164, 368.744965,228.354782);
+path.close();
+path.moveTo(399.248962, 199.701065);
+path.lineTo(399.248962,192.339996);
+path.lineTo(398.236359,192.339996);
+path.lineTo(398.066254,192.339996);
+path.quadTo(398.498535,196.230621, 399.248962,199.701065);
+path.close();
+path.moveTo(399.248962, 178.563278);
+path.lineTo(399.248962,175.376892);
+path.quadTo(399.04483,176.922348, 398.904022,178.563278);
+path.lineTo(399.248962,178.563278);
+path.close();
+path.moveTo(399.248962, 136.688828);
+path.lineTo(399.248962,127.92453);
+path.lineTo(396.018158,136.674606);
+path.quadTo(396.029053,136.674606, 396.039917,136.674606);
+path.quadTo(396.513672,136.674606, 396.995453,136.688004);
+path.quadTo(397.576904,136.674606, 398.164948,136.674606);
+path.quadTo(398.709412,136.674606, 399.248962,136.688828);
+path.close();
+path.moveTo(346.052765, 178.563278);
+path.lineTo(346.052765,154.02713);
+path.quadTo(340.97113,157.621338, 338.22525,164.736588);
+path.lineTo(343.1763,178.563278);
+path.lineTo(346.052765,178.563278);
+path.close();
+path.moveTo(364.390686, 150.922379);
+path.lineTo(364.390686,154.048065);
+path.quadTo(365.340851,152.726639, 366.38147,151.468765);
+path.quadTo(365.420258,151.14975, 364.390686,150.922379);
+path.close();
+path.moveTo(367.863586, 152.032623);
+path.quadTo(367.144043,151.721848, 366.38147,151.468765);
+</div>
+
+<div id="testQuadratic44o">
+path.moveTo(354.009216, 208.816208);
+path.lineTo(393.291473, 102.232819);
+path.lineTo(399.248962, 127.92453);
+path.lineTo(361.269928, 230.784485);
+path.lineTo(354.009216, 208.816208);
+path.close();
+path.moveTo(328.189209, 151.289093);
+path.quadTo(340.61618, 136.581512, 359.978058, 136.581512);
+path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
+path.lineTo(328.189209, 151.289093);
+path.close();
+path.moveTo(346.052765, 138.908661);
+path.lineTo(364.390686, 138.908661);
+path.lineTo(364.390686, 157.898193);
+path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
+path.lineTo(346.052765, 138.908661);
+path.close();
+</div>
+
+<div id="testQuadratic44s">
+path.moveTo(380.33902, 137.376312);
+path.lineTo(393.291473,102.232819);
+path.lineTo(399.248962,127.92453);
+path.lineTo(396.018158,136.674606);
+path.quadTo(396.029053,136.674606, 396.039917,136.674606);
+path.lineTo(396.017792,136.675598);
+path.lineTo(361.269928,230.784485);
+path.lineTo(354.009216,208.816208);
+path.lineTo(375.699249,149.965286);
+path.lineTo(369.22699,150.14563);
+path.quadTo(373.524384,144.511566, 378.917297,141.233871);
+path.lineTo(380.33902,137.376312);
+path.close();
+path.moveTo(380.33902, 137.376312);
+path.lineTo(378.917297,141.233856);
+path.quadTo(375.048248,138.978912, 370.480499,137.816925);
+path.lineTo(380.33902,137.376312);
+path.close();
+path.moveTo(392.55661, 136.830276);
+path.lineTo(380.33902,137.376312);
+</div>
+
+<div id="testQuadratic45o">
+path.moveTo(315.843994, 102.232819);
+path.lineTo(354.009216, 208.816208);
+path.lineTo(393.291473, 102.232819);
+path.lineTo(399.248962, 127.92453);
+path.lineTo(361.269928, 230.784485);
+path.lineTo(342.373474, 230.784485);
+path.lineTo(305.511444, 127.645271);
+path.lineTo(315.843994, 102.232819);
+path.close();
+path.moveTo(366.307892, 242.327148);
+path.quadTo(343.967255, 242.327148, 329.864746, 227.479935);
+path.quadTo(315.762238, 212.632736, 315.762238, 188.988907);
+path.quadTo(315.762238, 165.996674, 328.189209, 151.289093);
+path.quadTo(340.61618, 136.581512, 359.978058, 136.581512);
+path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
+path.quadTo(398.329468, 162.645584, 398.329468, 186.661758);
+path.lineTo(398.236359, 192.339996);
+path.lineTo(334.472504, 192.339996);
+path.quadTo(338.475189, 228.364258, 369.752075, 228.364258);
+path.quadTo(381.20163, 228.364258, 397.864014, 222.220581);
+path.lineTo(366.307892, 242.327148);
+path.close();
+path.moveTo(335.310272, 178.563278);
+path.lineTo(379.898438, 178.563278);
+path.quadTo(379.898438, 150.358246, 358.861023, 150.358246);
+path.quadTo(337.730499, 150.358246, 335.310272, 178.563278);
+path.close();
+path.moveTo(346.052765, 240);
+path.lineTo(346.052765, 138.908661);
+path.lineTo(364.390686, 138.908661);
+path.lineTo(364.390686, 157.898193);
+path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
+path.lineTo(401.904327, 154.267853);
+path.quadTo(397.156952, 152.685394, 393.526611, 152.685394);
+path.quadTo(376.119537, 152.685394, 364.390686, 173.350464);
+path.lineTo(364.390686, 240);
+path.lineTo(346.052765, 240);
+path.close();
+path.moveTo(396.303253, 265.226288);
+path.quadTo(427.300842, 265.226288, 427.300842, 232.366959);
+path.lineTo(427.300842, 216.449265);
+path.quadTo(417.15448, 237.672852, 393.976105, 237.672852);
+path.quadTo(375.824341, 237.672852, 365.119446, 224.454651);
+path.quadTo(354.414581, 211.23645, 354.414581, 188.802734);
+path.quadTo(354.414581, 165.717422, 366.608826, 151.196014);
+path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
+path.lineTo(396.303253, 265.226288);
+path.close();
+path.moveTo(400.95755, 150.451324);
+path.quadTo(388.297852, 150.451324, 381.130249, 160.597687);
+path.quadTo(373.962616, 170.744064, 373.962616, 188.430389);
+path.quadTo(373.962616, 221.662079, 397.327179, 221.662079);
+path.lineTo(400.95755, 150.451324);
+path.close();
+path.moveTo(429.901642, 242.327148);
+path.quadTo(407.561005, 242.327148, 393.458496, 227.479935);
+path.quadTo(379.355988, 212.632736, 379.355988, 188.988907);
+path.quadTo(379.355988, 165.996674, 391.782959, 151.289093);
+path.quadTo(404.20993, 136.581512, 423.571808, 136.581512);
+path.lineTo(429.901642, 242.327148);
+path.close();
+</div>
+
+<div id="testQuadratic45s">
+path.moveTo(305.511444, 127.645271);
+path.lineTo(315.843994,102.232819);
+path.lineTo(331.979736,147.294876);
+path.quadTo(343.453125,136.581512, 359.978058,136.581512);
+path.quadTo(370.869446,136.581512, 378.822021,141.178574);
+path.quadTo(378.893585,141.140915, 378.965302,141.103577);
+path.lineTo(393.291473,102.232819);
+path.lineTo(399.248962,127.92453);
+path.lineTo(396.018158,136.674606);
+path.quadTo(396.029053,136.674606, 396.039917,136.674606);
+path.lineTo(396.054596,136.718628);
+path.quadTo(397.098907,136.674606, 398.164948,136.674606);
+path.lineTo(398.076477,142.784256);
+path.lineTo(398.697632,144.647751);
+path.quadTo(409.233032,136.581512, 423.571808,136.581512);
+path.lineTo(429.901642,242.327148);
+path.quadTo(428.161621,242.327148, 426.471558,242.237076);
+path.quadTo(427.300842,237.741562, 427.300842,232.366959);
+path.lineTo(427.300842,216.449265);
+path.quadTo(419.710114,232.327133, 404.8255,236.326401);
+path.quadTo(400.557983,233.971252, 396.803375,230.691772);
+path.lineTo(396.7034,237.596863);
+path.quadTo(395.363068,237.672852, 393.976105,237.672852);
+path.quadTo(385.309937,237.672852, 378.341187,234.659912);
+path.lineTo(366.307892,242.327148);
+path.quadTo(357.463165,242.327148, 349.909637,240);
+path.lineTo(346.052765,240);
+path.lineTo(346.052765,238.625916);
+path.quadTo(336.926056,234.914124, 329.864746,227.479935);
+path.quadTo(315.762238,212.632736, 315.762238,188.988907);
+path.quadTo(315.762238,176.540054, 319.405273,166.519882);
+path.lineTo(305.511444,127.645271);
+path.close();
+path.moveTo(375.464813, 192.339996);
+path.lineTo(374.267029,195.583939);
+path.quadTo(375.987579,214.575378, 387.432068,219.736267);
+path.quadTo(380.122528,208.101486, 379.428741,192.339996);
+path.lineTo(375.464813,192.339996);
+path.close();
+path.moveTo(397.925934, 153.178131);
+path.lineTo(397.615479,174.615356);
+path.quadTo(398.329468,180.246704, 398.329468,186.661758);
+path.lineTo(398.236359,192.339996);
+path.lineTo(397.358795,192.339996);
+path.lineTo(396.934174,221.659714);
+path.quadTo(397.129852,221.662079, 397.327179,221.662079);
+path.lineTo(400.781189,153.910889);
+path.quadTo(399.295654,153.462463, 397.925934,153.178131);
+path.close();
+path.moveTo(400.914398, 151.298019);
+path.lineTo(400.632721,150.453003);
+path.quadTo(400.794678,150.451324, 400.95755,150.451324);
+path.lineTo(400.914398,151.298019);
+path.close();
+path.moveTo(368.744965, 228.354782);
+path.quadTo(366.836426,226.574738, 365.119446,224.454651);
+path.quadTo(364.748657,223.996796, 364.390686,223.527878);
+path.lineTo(364.390686,228.077774);
+path.quadTo(366.495239,228.312164, 368.744965,228.354782);
+path.close();
+path.moveTo(346.052765, 178.563278);
+path.lineTo(346.052765,154.02713);
+path.quadTo(340.97113,157.621338, 338.22525,164.736588);
+path.lineTo(343.1763,178.563278);
+path.lineTo(346.052765,178.563278);
+path.close();
+path.moveTo(364.390686, 150.922379);
+path.lineTo(364.390686,154.048065);
+path.quadTo(365.340851,152.726639, 366.38147,151.468765);
+path.quadTo(365.420258,151.14975, 364.390686,150.922379);
+path.close();
+path.moveTo(367.863586, 152.032623);
+path.quadTo(367.144043,151.721848, 366.38147,151.468765);
+</div>
+
+<div id="testQuadratic46o">
+path.moveTo(366.608826, 151.196014);
+path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
+path.lineTo(354.009216, 208.816208);
+path.lineTo(393.291473, 102.232819);
+path.lineTo(359.978058, 136.581512);
+path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
+path.lineTo(364.390686, 157.898193);
+path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
+path.lineTo(350, 120);
+path.lineTo(366.608826, 151.196014);
+path.close();
+</div>
+
+<div id="testQuadratic46s">
+path.moveTo(369.285553, 126.984779);
+path.lineTo(393.291473,102.232819);
+path.lineTo(382.416199,131.740402);
+path.lineTo(396.039917,136.674606);
+path.quadTo(387.290802,136.674606, 380.294495,140.44487);
+path.quadTo(379.623352,140.760971, 378.965302,141.103577);
+path.lineTo(378.917297,141.233856);
+path.quadTo(378.86972,141.206131, 378.822021,141.178574);
+path.quadTo(372.011871,144.761871, 366.608826,151.196014);
+path.lineTo(350,120);
+path.lineTo(369.285553,126.984779);
+path.close();
+path.moveTo(374.00174, 154.571106);
+path.lineTo(378.917297,141.233871);
+path.quadTo(378.917297,141.233871, 378.917297,141.233856);
+path.quadTo(384.294891,144.368011, 388.322723,149.613556);
+path.lineTo(374.00174,154.571106);
+path.close();
+path.moveTo(378.917297, 141.233871);
+path.quadTo(370.233887,146.511475, 364.390686,157.898193);
+path.lineTo(374.00174,154.571106);
+path.lineTo(354.009216,208.816208);
+path.lineTo(398.164948,136.674606);
+path.quadTo(388.299255,136.674606, 380.294495,140.44487);
+</div>
+
+<div id="testQuadratic47o">
+path.moveTo(343.939362, 212.598053);
+path.lineTo(378.457642, 118.940636);
+path.lineTo(383.692657, 141.516571);
+path.lineTo(350.319519, 231.902115);
+path.lineTo(343.939362, 212.598053);
+path.close();
+path.moveTo(325.429016, 162.047577);
+path.quadTo(336.348907, 149.123688, 353.36264, 149.123688);
+path.quadTo(369.476624, 149.123688, 378.269806, 160.575241);
+path.lineTo(325.429016, 162.047577);
+path.close();
+path.moveTo(370.867188, 186.014069);
+path.quadTo(370.867188, 161.229614, 352.381104, 161.229614);
+path.quadTo(333.813202, 161.229614, 331.686493, 186.014069);
+path.lineTo(370.867188, 186.014069);
+path.close();
+path.moveTo(353.161499, 195.011719);
+path.quadTo(353.161499, 174.726105, 363.876862, 161.96579);
+path.lineTo(353.161499, 195.011719);
+path.close();
+</div>
+
+<div id="testQuadratic47s">
+path.moveTo(366.466309, 151.476364);
+path.lineTo(378.457642,118.940636);
+path.lineTo(383.692657,141.516571);
+path.lineTo(377.159943,159.209305);
+path.quadTo(377.728729,159.87059, 378.269806,160.575241);
+path.lineTo(376.638824,160.620682);
+path.lineTo(370.26593,177.8806);
+path.quadTo(368.708496,168.390671, 363.116943,164.309357);
+path.lineTo(356.079041,186.014069);
+path.lineTo(367.262817,186.014069);
+path.lineTo(350.319519,231.902115);
+path.lineTo(343.939362,212.598053);
+path.lineTo(353.736816,186.014923);
+path.lineTo(353.737122,186.014069);
+path.lineTo(353.736938,186.014069);
+path.quadTo(353.736877,186.014496, 353.736816,186.014923);
+path.quadTo(353.161499,190.31131, 353.161499,195.011719);
+</div>
+
+<div id="testQuadratic48o">
+path.moveTo(366.608826, 151.196014);
+path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
+path.lineTo(354.009216, 208.816208);
+path.lineTo(393.291473, 102.232819);
+path.lineTo(359.978058, 136.581512);
+path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
+path.lineTo(364.390686, 157.898193);
+path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
+path.lineTo(350, 120);
+path.lineTo(366.608826, 151.196014);
+path.close();
+</div>
+
+<div id="testQuadratic48s">
+path.moveTo(369.285553, 126.984779);
+path.lineTo(393.291473,102.232819);
+path.lineTo(382.416199,131.740402);
+path.lineTo(396.039917,136.674606);
+path.quadTo(387.290802,136.674606, 380.294495,140.44487);
+path.quadTo(379.623352,140.760971, 378.965302,141.103577);
+path.lineTo(378.917297,141.233856);
+path.quadTo(378.86972,141.206131, 378.822021,141.178574);
+path.quadTo(372.011871,144.761871, 366.608826,151.196014);
+path.lineTo(350,120);
+path.lineTo(369.285553,126.984779);
+path.close();
+</div>
+
+<div id="testQuadratic49s">
+path.moveTo(366.400513, 204.162521);
+path.lineTo(411.545044, 81.6732483);
+path.lineTo(366.400513, 204.162521);
+path.close();
+path.moveTo(331.585693, 138.050415);
+path.quadTo(345.867188, 121.147957, 368.11853, 121.147957);
+path.quadTo(389.193115, 121.147957, 400.693176, 136.124817);
+path.lineTo(331.585693, 138.050415);
+path.close();
+path.moveTo(369.863983, 145.645813);
+path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
+path.lineTo(369.863983, 145.645813);
+path.close();
+path.moveTo(369.970581, 137.94342);
+path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
+path.lineTo(369.970581, 137.94342);
+path.close();
+</div>
+
+<div id="testQuadratic50o">
+path.moveTo(366.400513, 204.162521);
+path.lineTo(411.545044, 81.6732483);
+path.lineTo(366.400513, 204.162521);
+path.close();
+path.moveTo(331.585693, 138.050415);
+path.quadTo(345.867188, 121.147957, 368.11853, 121.147957);
+path.quadTo(389.193115, 121.147957, 400.693176, 136.124817);
+path.lineTo(331.585693, 138.050415);
+path.close();
+path.moveTo(369.863983, 145.645813);
+path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
+path.lineTo(369.863983, 145.645813);
+path.close();
+path.moveTo(369.970581, 137.94342);
+path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
+path.lineTo(369.970581, 137.94342);
+path.close();
+</div>
+
+<div id="testQuadratic50s">
+path.moveTo(331.585693, 138.050415);
+path.quadTo(345.867188,121.147957, 368.11853,121.147957);
+path.quadTo(378.797424,121.147957, 387.017914,124.993469);
+path.quadTo(391.577667,123.030998, 396.645874,122.098694);
+path.quadTo(401.232697,121.254936, 406.235992,121.254936);
+path.lineTo(395.061676,126.397095);
+path.lineTo(391.979187,127.81559);
+path.quadTo(393.010406,128.517273, 393.994415,129.292801);
+path.quadTo(394.053131,129.339066, 394.111664,129.385605);
+path.lineTo(393.910492,129.520508);
+path.lineTo(383.340973,136.608322);
+path.lineTo(375.350006,136.830978);
+path.quadTo(376.20224,135.708145, 377.092102,134.66626);
+path.lineTo(372.197113,136.918823);
+</div>
+
+<div id="testQuadratic51">
+path.moveTo(369.863983, 145.645813);
+path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
+path.lineTo(369.863983, 145.645813);
+path.close();
+path.moveTo(369.970581, 137.94342);
+path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
+path.lineTo(369.970581, 137.94342);
+path.close();
+</div>
+
+<div id="testQuadratic52o">
+path.moveTo(366.400513, 204.162521);
+path.lineTo(411.545044, 81.6732483);
+path.lineTo(366.400513, 204.162521);
+path.close();
+path.moveTo(331.585693, 138.050415);
+path.quadTo(345.867188, 121.147957, 368.11853, 121.147957);
+path.quadTo(389.193115, 121.147957, 400.693176, 136.124817);
+path.lineTo(331.585693, 138.050415);
+path.close();
+path.moveTo(369.863983, 145.645813);
+path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
+path.lineTo(369.863983, 145.645813);
+path.close();
+path.moveTo(369.970581, 137.94342);
+path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
+path.lineTo(369.970581, 137.94342);
+path.close();
+</div>
+
+<div id="testQuadratic52s">
+path.moveTo(331.585693, 138.050415);
+path.quadTo(345.867188,121.147957, 368.11853,121.147957);
+path.quadTo(378.797424,121.147957, 387.017914,124.993469);
+path.quadTo(391.577667,123.030998, 396.645874,122.098694);
+path.quadTo(401.232697,121.254936, 406.235992,121.254936);
+path.close();
+path.moveTo(383.340973, 136.608322);
+path.lineTo(369.863983,145.645813);
+path.quadTo(372.378204,140.746292, 375.350006,136.830978);
+path.lineTo(372.197113,136.918823);
+path.lineTo(369.970581,137.94342);
+path.quadTo(370.390961,137.442825, 370.818756,136.95723);
+path.lineTo(331.585693,138.050415);
+path.quadTo(345.867188,121.147957, 368.11853,121.147957);
+path.quadTo(378.797424,121.147957, 387.017914,124.993469);
+path.quadTo(391.577667,123.030998, 396.645874,122.098694);
+path.quadTo(401.232697,121.254936, 406.235992,121.254936);
+path.close();
+path.moveTo(383.340973, 136.608322);
+path.lineTo(391.380798,136.384293);
+path.lineTo(400.693176,136.124817);
+path.quadTo(397.721985,132.255341, 394.111664,129.385605);
+path.lineTo(406.236359,121.254936);
+path.quadTo(406.236176,121.254936, 406.235992,121.254936);
+path.lineTo(406.235992,121.254936);
+path.quadTo(401.232697,121.254936, 396.645874,122.098694);
+path.quadTo(391.577667,123.030998, 387.017914,124.993469);
+path.quadTo(378.797424,121.147957, 368.11853,121.147957);
+path.quadTo(345.867188,121.147957, 331.585693,138.050415);
+path.lineTo(370.818756,136.95723);
+path.quadTo(370.390961,137.442825, 369.970581,137.94342);
+path.lineTo(372.197113,136.918823);
+path.lineTo(375.350006,136.830978);
+path.quadTo(372.378204,140.746292, 369.863983,145.645813);
+path.lineTo(383.340973,136.608322);
+path.close();
+</div>
+
+<div id="testQuadratic52sa">
+path.moveTo(331.585693, 138.050415);
+path.quadTo(345.867188,121.147957, 368.11853,121.147957);
+path.quadTo(378.797424,121.147957, 387.017914,124.993469);
+path.quadTo(391.577667,123.030998, 396.645874,122.098694);
+path.quadTo(401.232697,121.254936, 406.235992,121.254936);
+path.close();
+</div>
+
+<div id="testQuadratic52sb">
+path.moveTo(383.340973, 136.608322);
+path.lineTo(369.863983,145.645813);
+path.quadTo(372.378204,140.746292, 375.350006,136.830978);
+path.lineTo(372.197113,136.918823);
+path.lineTo(369.970581,137.94342);
+path.quadTo(370.390961,137.442825, 370.818756,136.95723);
+path.lineTo(331.585693,138.050415);
+path.quadTo(345.867188,121.147957, 368.11853,121.147957);
+path.quadTo(378.797424,121.147957, 387.017914,124.993469);
+path.quadTo(391.577667,123.030998, 396.645874,122.098694);
+path.quadTo(401.232697,121.254936, 406.235992,121.254936);
+path.close();
+</div>
+
+<div id="testQuadratic52sc">
+path.moveTo(383.340973, 136.608322);
+path.lineTo(391.380798,136.384293);
+path.lineTo(400.693176,136.124817);
+path.quadTo(397.721985,132.255341, 394.111664,129.385605);
+path.lineTo(406.236359,121.254936);
+path.quadTo(406.236176,121.254936, 406.235992,121.254936);
+path.lineTo(406.235992,121.254936);
+path.quadTo(401.232697,121.254936, 396.645874,122.098694);
+path.quadTo(391.577667,123.030998, 387.017914,124.993469);
+path.quadTo(378.797424,121.147957, 368.11853,121.147957);
+path.quadTo(345.867188,121.147957, 331.585693,138.050415);
+path.lineTo(370.818756,136.95723);
+path.quadTo(370.390961,137.442825, 369.970581,137.94342);
+path.lineTo(372.197113,136.918823);
+path.lineTo(375.350006,136.830978);
+path.quadTo(372.378204,140.746292, 369.863983,145.645813);
+path.lineTo(383.340973,136.608322);
+path.close();
+</div>
+
+<div id="testQuadratic53o">
+path.moveTo(303.12088, 141.299606);
+path.lineTo(330.463562, 217.659027);
+path.lineTo(303.12088, 141.299606);
+path.close();
+path.moveTo(371.919067, 205.854996);
+path.lineTo(326.236786, 205.854996);
+path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
+path.lineTo(371.919067, 205.854996);
+path.close();
+</div>
+
+<div id="testQuadratic53s">
+path.moveTo(326.236786,205.854996);
+path.lineTo(326.236786,205.854996);
+path.close();
+path.moveTo(371.919067,205.854996);
+path.lineTo(326.236786,205.854996);
+</div>
+
+<div id="testQuadratic54">
+path.moveTo(303.12088, 141.299606);
+path.lineTo(330.463562, 217.659027);
+path.lineTo(358.606506, 141.299606);
+path.lineTo(303.12088, 141.299606);
+path.close();
+path.moveTo(371.919067, 205.854996);
+path.lineTo(326.236786, 205.854996);
+path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
+path.lineTo(371.919067, 205.854996);
+path.close();
+</div>
+
+<div id="testQuadratic55o">
+path.moveTo(303.12088, 141.299606);
+path.lineTo(330.463562, 217.659027);
+path.lineTo(358.606506, 141.299606);
+path.lineTo(303.12088, 141.299606);
+path.close();
+path.moveTo(326.236786, 205.854996);
+path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
+path.lineTo(326.236786, 205.854996);
+path.close();
+</div>
+
+<div id="testQuadratic55s">
+path.moveTo(326.236786,205.854996);
+path.lineTo(303.12088,141.299606);
+path.lineTo(358.606506,141.299606);
+path.lineTo(332.468719,212.218475);
+path.lineTo(351.512085,231.663818);
+path.quadTo(329.104431,231.663818, 326.236786,205.854996);
+path.close();
+</div>
+
+<div id="testQuadratic56o">
+path.moveTo(366.608826, 151.196014);
+path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
+path.lineTo(354.009216, 208.816208);
+path.lineTo(393.291473, 102.232819);
+path.lineTo(359.978058, 136.581512);
+path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
+path.lineTo(364.390686, 157.898193);
+path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
+path.lineTo(350, 120);
+path.lineTo(366.608826, 151.196014);
+path.close();
+</div>
+
+<div id="testQuadratic56s">
+path.moveTo(369.285553,126.984779);
+path.lineTo(393.291473,102.232819);
+path.lineTo(382.416199,131.740402);
+path.lineTo(396.039917,136.674606);
+path.quadTo(387.290802,136.674606, 380.294495,140.44487);
+path.quadTo(379.623352,140.760971, 378.965302,141.103577);
+path.lineTo(378.917297,141.233856);
+path.quadTo(378.86972,141.206131, 378.822021,141.178574);
+path.quadTo(372.011871,144.761871, 366.608826,151.196014);
+path.lineTo(350,120);
+path.lineTo(369.285553,126.984779);
+path.close();
+path.moveTo(378.917297,141.233871);
+path.lineTo(378.917297,141.233856);
+path.quadTo(378.86972,141.206131, 378.822021,141.178574);
+path.quadTo(372.011871,144.761871, 366.608826,151.196014);
+</div>
+
+<div id="testQuadratic57o">
+path.moveTo(303.12088, 141.299606);
+path.lineTo(330.463562, 217.659027);
+path.lineTo(358.606506, 141.299606);
+path.lineTo(362.874634, 159.705902);
+path.lineTo(335.665344, 233.397751);
+path.lineTo(322.12738, 233.397751);
+path.lineTo(295.718353, 159.505829);
+path.lineTo(295.718353, 240);
+path.lineTo(303.12088, 141.299606);
+path.close();
+path.moveTo(322.935669, 231.030273);
+path.quadTo(312.832214, 220.393295, 312.832214, 203.454178);
+path.quadTo(312.832214, 186.981888, 321.73526, 176.444946);
+path.quadTo(330.638306, 165.90802, 344.509705, 165.90802);
+path.lineTo(371.919067, 205.854996);
+path.lineTo(326.236786, 205.854996);
+path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
+path.lineTo(322.935669, 231.030273);
+path.close();
+path.moveTo(326.837006, 195.984955);
+path.lineTo(358.78125, 195.984955);
+path.lineTo(343.709442, 175.778046);
+path.quadTo(328.570923, 175.778046, 326.837006, 195.984955);
+path.close();
+</div>
+
+<div id="testQuadratic57s">
+path.moveTo(300.708282,173.46756);
+path.lineTo(303.12088,141.299606);
+path.lineTo(317.770294,182.210785);
+path.quadTo(319.462738,179.134506, 321.73526,176.444946);
+path.quadTo(330.638306,165.90802, 344.509705,165.90802);
+path.lineTo(347.780151,170.674438);
+path.lineTo(358.606506,141.299606);
+path.lineTo(362.874634,159.705902);
+path.lineTo(354.960693,181.139511);
+path.lineTo(371.919067,205.854996);
+path.lineTo(345.834961,205.854996);
+path.lineTo(337.609253,228.13298);
+path.quadTo(342.649323,231.302383, 349.843323,231.626816);
+path.lineTo(336.429047,231.329422);
+path.lineTo(335.665344,233.397751);
+path.lineTo(322.12738,233.397751);
+path.lineTo(320.050781,227.587433);
+path.quadTo(313.982483,219.336182, 313.015503,207.902908);
+path.lineTo(300.708282,173.46756);
+path.close();
+path.moveTo(300.708282,173.46756);
+path.lineTo(295.718353,240);
+path.lineTo(295.718353,159.505829);
+path.lineTo(300.708282,173.46756);
+path.close();
+path.moveTo(349.843323,231.626816);
+path.lineTo(351.512085,231.663818);
+path.quadTo(350.663696,231.663818, 349.843323,231.626816);
+path.close();
+path.moveTo(326.236786,205.854996);
+path.lineTo(330.463562,217.659027);
+path.lineTo(334.814056,205.854996);
+path.lineTo(326.236786,205.854996);
+path.close();
+path.moveTo(334.814056,205.854996);
+path.lineTo(338.451721,195.984955);
+path.lineTo(349.479309,195.984955);
+path.lineTo(352.559326,187.643173);
+path.lineTo(358.78125,195.984955);
+</div>
+
+<div id="testQuadratic58o">
+path.moveTo(283.714233, 240);
+path.lineTo(283.714233, 141.299606);
+path.lineTo(303.12088, 141.299606);
+path.lineTo(330.463562, 217.659027);
+path.lineTo(358.606506, 141.299606);
+path.lineTo(362.874634, 159.705902);
+path.lineTo(335.665344, 233.397751);
+path.lineTo(322.12738, 233.397751);
+path.lineTo(295.718353, 159.505829);
+path.lineTo(295.718353, 240);
+path.lineTo(283.714233, 240);
+path.close();
+path.moveTo(322.935669, 231.030273);
+path.quadTo(312.832214, 220.393295, 312.832214, 203.454178);
+path.quadTo(312.832214, 186.981888, 321.73526, 176.444946);
+path.quadTo(330.638306, 165.90802, 344.509705, 165.90802);
+path.quadTo(357.647522, 165.90802, 364.81665, 175.244537);
+path.lineTo(371.919067, 205.854996);
+path.lineTo(326.236786, 205.854996);
+path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
+path.lineTo(322.935669, 231.030273);
+path.close();
+path.moveTo(326.837006, 195.984955);
+path.lineTo(358.78125, 195.984955);
+path.quadTo(358.78125, 175.778046, 343.709442, 175.778046);
+path.quadTo(328.570923, 175.778046, 326.837006, 195.984955);
+path.close();
+</div>
+
+<div id="testQuadratic58s">
+path.moveTo(283.714233,240);
+path.lineTo(283.714233,141.299606);
+path.lineTo(303.12088,141.299606);
+path.lineTo(317.770294,182.210785);
+path.quadTo(319.462738,179.134506, 321.73526,176.444946);
+path.quadTo(330.638306,165.90802, 344.509705,165.90802);
+path.quadTo(347.07132,165.90802, 349.406036,166.26297);
+path.lineTo(358.606506,141.299606);
+path.lineTo(362.874634,159.705902);
+path.lineTo(359.116211,169.884979);
+path.quadTo(362.326477,172.001541, 364.81665,175.244537);
+path.lineTo(371.919067,205.854996);
+path.lineTo(345.834961,205.854996);
+path.lineTo(337.609253,228.13298);
+path.quadTo(342.649323,231.302383, 349.843323,231.626816);
+path.lineTo(336.429047,231.329422);
+path.lineTo(335.665344,233.397751);
+path.lineTo(322.12738,233.397751);
+path.lineTo(320.050781,227.587433);
+path.quadTo(313.982483,219.336182, 313.015503,207.902908);
+path.lineTo(295.718353,159.505829);
+path.lineTo(295.718353,240);
+path.lineTo(283.714233,240);
+path.close();
+path.moveTo(349.843323,231.626816);
+path.lineTo(351.512085,231.663818);
+path.quadTo(350.663696,231.663818, 349.843323,231.626816);
+path.close();
+path.moveTo(326.236786,205.854996);
+path.lineTo(330.463562,217.659027);
+path.lineTo(334.814056,205.854996);
+path.lineTo(326.236786,205.854996);
+path.close();
+path.moveTo(334.814056,205.854996);
+path.lineTo(338.451721,195.984955);
+path.lineTo(349.479309,195.984955);
+path.lineTo(355.054535,180.885361);
+path.quadTo(358.78125,185.936935, 358.78125,195.984955);
+</div>
+
+<div id="testQuadratic58a">
+path.moveTo(283.714233,240);
+path.lineTo(283.714233,141.299606);
+path.lineTo(303.12088,141.299606);
+path.lineTo(317.770294,182.210785);
+path.quadTo(319.462738,179.134506, 321.73526,176.444946);
+path.quadTo(330.638306,165.90802, 344.509705,165.90802);
+path.quadTo(347.07132,165.90802, 349.406036,166.26297);
+path.lineTo(358.606506,141.299606);
+path.lineTo(362.874634,159.705902);
+path.lineTo(359.116211,169.884979);
+path.quadTo(362.326477,172.001541, 364.81665,175.244537);
+path.lineTo(371.919067,205.854996);
+path.lineTo(345.834961,205.854996);
+path.lineTo(337.609253,228.13298);
+path.quadTo(342.649323,231.302383, 349.843323,231.626816);
+path.lineTo(336.429047,231.329422);
+path.lineTo(335.665344,233.397751);
+path.lineTo(322.12738,233.397751);
+path.lineTo(320.050781,227.587433);
+path.quadTo(313.982483,219.336182, 313.015503,207.902908);
+path.lineTo(295.718353,159.505829);
+path.lineTo(295.718353,240);
+path.lineTo(283.714233,240);
+path.close();
+path.moveTo(349.843323,231.626816);
+path.lineTo(351.512085,231.663818);
+path.quadTo(350.663696,231.663818, 349.843323,231.626816);
+path.close();
+path.moveTo(349.479309,195.984955);
+path.lineTo(358.78125,195.984955);
+path.quadTo(358.78125,185.936935, 355.054535,180.885361);
+path.lineTo(349.479309,195.984955);
+path.close();
+path.moveTo(345.858368,175.888794);
+path.lineTo(338.451721,195.984955);
+path.lineTo(326.837006,195.984955);
+path.quadTo(328.570923,175.778046, 343.709442,175.778046);
+path.quadTo(344.825195,175.778046, 345.858368,175.888794);
+path.close();
+</div>
+
+<div id="testQuadratic59">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 0);
+ path.quadTo(3, 1, 1, 2);
+</div>
+
+<div id="testQuadratic59o">
+path.moveTo(369.863983, 145.645813);
+path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
+path.quadTo(409.445679, 121.254936, 412.975952, 121.789818);
+path.lineTo(369.863983, 145.645813);
+path.close();
+path.moveTo(369.970581, 137.94342);
+path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
+path.quadTo(425.705902, 121.254936, 439.71994, 137.087616);
+path.lineTo(369.970581, 137.94342);
+path.close();
+</div>
+
+<div id="testQuadratic59s">
+path.moveTo(369.970581,137.94342);
+path.quadTo(383.98465,121.254936, 406.235992,121.254936);
+path.quadTo(406.237854,121.254936, 406.239746,121.254936);
+path.lineTo(406.239532,121.254936);
+path.quadTo(409.447418,121.255203, 412.975952,121.789818);
+</div>
+
+<div id="testQuadratic60">
+path.moveTo(360.416077, 166.795715);
+path.quadTo(370.126831, 147.872162, 388.635406, 147.872162);
+path.lineTo(360.416077, 166.795715);
+path.close();
+path.moveTo(353.2948, 194.351074);
+path.quadTo(353.2948, 173.767563, 364.167572, 160.819855);
+path.quadTo(375.040314, 147.872162, 392.303894, 147.872162);
+path.lineTo(353.2948, 194.351074);
+path.close();
+</div>
+
+<div id="testQuadratic61">
+path.moveTo(348.781738, 123.864815);
+path.lineTo(369.848602, 123.864815);
+path.lineTo(369.848602, 145.680267);
+path.quadTo(382.360413, 121.298294, 406.207703, 121.298294);
+path.lineTo(348.781738, 123.864815);
+path.close();
+path.moveTo(369.961151, 137.980698);
+path.quadTo(383.970093, 121.298294, 406.213287, 121.298294);
+path.lineTo(369.961151, 137.980698);
+path.close();
+</div>
+
+<div id="testQuadratic62x">
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 0);
+ path.quadTo(3, 1, 1, 2);
+ path.close();
+</div>
+
+<div id="testLine1a">
+ path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
+ path.addRect(4, 0, 13, 13, SkPath::kCCW_Direction);
+ path.close();
+</div>
+
+<div id="testQuadratic63">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(2, 1);
+ path.quadTo(2, 1, 2, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic64">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(1, 2);
+ path.lineTo(2, 2);
+ path.quadTo(0, 3, 3, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic65">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(2, 1);
+ path.lineTo(2, 2);
+ path.quadTo(0, 3, 1, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic66">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 1);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(2, 0);
+ path.lineTo(1, 1);
+ path.quadTo(3, 2, 2, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic67x">
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 2, 1);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 0);
+ path.quadTo(1, 1, 3, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic68">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(0, 1, 2, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic69">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 1);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(2, 0);
+ path.lineTo(1, 1);
+ path.quadTo(3, 2, 2, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic70x">
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 1);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(0, 1, 2, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic71">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 1);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 1, 3, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic72">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 2);
+ path.lineTo(1, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 3, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic73">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 0, 3);
+ path.lineTo(0, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 1, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic74">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 3);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.quadTo(3, 2, 2, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic75">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 3);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.quadTo(3, 2, 2, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic76">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 0, 0);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 2);
+ path.quadTo(1, 2, 2, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic77">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 1);
+ path.lineTo(3, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 3, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic78">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 2);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(2, 1, 0, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic79">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 1, 2);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.quadTo(0, 1, 3, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic80">
+ path.moveTo(0, 0);
+ path.quadTo(1, 0, 2, 3);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(3, 0);
+ path.quadTo(0, 1, 1, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic81">
+ path.moveTo(0, 0);
+ path.quadTo(2, 0, 1, 1);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(2, 1, 0, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic82">
+ path.moveTo(0, 0);
+ path.quadTo(2, 0, 1, 1);
+ path.lineTo(0, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(2, 1, 0, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic83">
+ path.moveTo(0, 0);
+ path.quadTo(0, 0, 2, 0);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(0, 1);
+ path.lineTo(0, 2);
+ path.quadTo(2, 2, 1, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic84">
+ path.moveTo(0, 0);
+ path.quadTo(2, 0, 1, 1);
+ path.lineTo(2, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(2, 0);
+ path.quadTo(0, 1, 2, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic85">
+ path.moveTo(0, 0);
+ path.quadTo(3, 0, 1, 1);
+ path.lineTo(1, 1);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(3, 0);
+ path.quadTo(0, 1, 1, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic86">
+ path.moveTo(0, 0);
+ path.quadTo(0, 1, 1, 1);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.quadTo(1, 1, 1, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic87">
+ path.moveTo(0, 0);
+ path.quadTo(2, 1, 0, 2);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 1);
+ path.quadTo(0, 2, 3, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic88">
+ path.moveTo(0, 0);
+ path.quadTo(2, 1, 0, 2);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(1, 1);
+ path.quadTo(0, 2, 2, 2);
+ path.close();
+</div>
+
+<div id="testQuadratic89x">
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(3, 1, 2, 2);
+ path.lineTo(0, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 1);
+ path.quadTo(3, 1, 3, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic90x">
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(0, 0);
+ path.quadTo(3, 0, 2, 2);
+ path.lineTo(1, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(0, 1);
+ path.quadTo(3, 2, 2, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic91">
+ path.moveTo(0, 0);
+ path.quadTo(3, 2, 2, 3);
+ path.lineTo(2, 3);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(1, 1);
+ path.quadTo(2, 1, 2, 3);
+ path.close();
+</div>
+
+<div id="testQuadratic92x">
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.moveTo(1, 0);
+ path.quadTo(3, 0, 2, 2);
+ path.lineTo(2, 2);
+ path.close();
+ path.moveTo(2, 0);
+ path.lineTo(0, 1);
+ path.quadTo(3, 2, 2, 3);
+ path.close();
+</div>
+
+<div id="testLine82">
+ path.addRect(20, 0, 40, 40, SkPath::kCCWDirection);
+ path.addRect(24, 20, 36, 30, SkPath::kCCWDirection);
+ path.addRect(24, 32, 33, 36, SkPath::kCCWDirection);
+</div>
+
+<div id="testLine82a">
+ SkPath path;
+ path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
+ path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
+ testSimplifyx(path);
+</div>
+
+<div id="testLine82b">
+ SkPath path;
+ path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
+ path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+</div>
+
+<div id="testLine82c">
+ SkPath path;
+ path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
+ path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
+ testSimplifyx(path);
+</div>
+
+
+<div id="testLine82d">
+ SkPath path;
+ path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
+ path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+</div>
+
+<div id="testLine82e">
+ SkPath path;
+ path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
+ path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
+ testSimplifyx(path);
+</div>
+
+<div id="testLine82f">
+ SkPath path;
+ path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
+ path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+</div>
+
+<div id="testLine82g">
+ SkPath path;
+ path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
+ path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
+ testSimplifyx(path);
+</div>
+
+<div id="testLine82h">
+ SkPath path;
+ path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
+ path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
+ path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
+ testSimplifyx(path);
+</div>
+
+<div id="testLine83">
+path.addRect(10, 30, 30, 40, SkPath::kCCW_Direction);
+path.addRect(0, 12, 12, 18, SkPath::kCCW_Direction);
+path.addRect(4, 13, 13, 16, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine84x">
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ path.addRect(0, 12, 60, 30, SkPath::kCCW_Direction);
+ path.addRect(10, 20, 40, 30, SkPath::kCCW_Direction);
+ path.addRect(0, 12, 12, 12, SkPath::kCCW_Direction);
+ path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
+</div>
+
+<div id="testLine85">
+ path.addRect(36, 0, 66, 60, SkPath::kCCW_Direction);
+ path.addRect(20, 0, 40, 40, SkPath::kCCW_Direction);
+ path.addRect(12, 0, 24, 24, SkPath::kCCW_Direction);
+ path.addRect(32, 0, 36, 41, SkPath::kCCW_Direction);
+</div>
+
+<div id="testQuadralateral1">
+ path.moveTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(0, 0);
+ path.lineTo(3, 2);
+ path.close();
+ path.moveTo(0, 0);
+ path.lineTo(2, 1);
+ path.lineTo(2, 2);
+ path.lineTo(2, 3);
+ path.close();
+</div>
+
+<div id="testCubic1">
+ path.moveTo(0, 0);
+ path.cubicTo(0, 1, 1, 1, 1, 0);
+ path.close();
+ path.moveTo(1, 0);
+ path.cubicTo(0, 0, 0, 1, 1, 1);
+ path.close();
+</div>
+
+<div id="testQuadratic93">
+ path.moveTo(3, 0);
+ path.quadTo(0, 1, 3, 2);
+ path.lineTo(0, 3);
+ path.close();
+ path.moveTo(1, 0);
+ path.lineTo(2, 0);
+ path.quadTo(1, 1, 2, 2);
+ path.close();
+</div>
+
+<div id="cubicOp1d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,2, 1,0, 1,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,1, 1,0, 2,0);
+ pathB.close();
+</div>
+
+<div id="cubicOp2d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(0,1, 1,0, 1,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,1, 2,0, 1,0);
+ pathB.close();
+</div>
+
+<div id="cubicOp3d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,3, 1,0, 1,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,1, 1,0, 3,2);
+ pathB.close();
+</div>
+
+<div id="cubicOp4d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,2, 1,0, 2,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,2, 1,0, 2,0);
+ pathB.close();
+</div>
+
+<div id="cubicOp5d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,2, 1,0, 2,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,2, 1,0, 2,0);
+ pathB.close();
+</div>
+
+<div id="cubicOp6d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,6, 1,0, 3,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,3, 1,0, 6,0);
+ pathB.close();
+</div>
+
+<div id="cubicOp7d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(3,4, 1,0, 3,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,3, 1,0, 4,3);
+ pathB.close();
+</div>
+
+<div id="cubicOp8d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,5, 1,0, 4,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,4, 1,0, 5,0);
+ pathB.close();
+</div>
+
+<div id="cubicOp9d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,6, 1,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(1,2, 1,0, 6,1);
+ pathB.close();
+</div>
+
+<div id="quadOp9d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.quadTo(1,6, 1.5f,1);
+ path.quadTo(1.5f,0.8f, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.quadTo(1,2, 1.4f,1);
+ pathB.quadTo(3,0.4f, 6,1);
+ pathB.close();
+</div>
+
+<div id="lineOp9d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.lineTo(1,6);
+ path.lineTo(1.5f,1);
+ path.lineTo(1.8f,0.8f);
+ path.lineTo(2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.lineTo(1,2);
+ pathB.lineTo(1.4f,1);
+ pathB.lineTo(3,0.4f);
+ pathB.lineTo(6,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp1i">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,2, 1,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(1,2, 1,0, 2,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp10d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,3, 1,0, 4,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(1,4, 1,0, 3,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp11d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(3,4, 1,0, 5,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(1,5, 1,0, 4,3);
+ pathB.close();
+</div>
+
+<div id="cubicOp12d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,6, 1,0, 1,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(0,1, 1,0, 6,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp13d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(4,5, 1,0, 5,3);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(3,5, 1,0, 5,4);
+ pathB.close();
+</div>
+
+<div id="cubicOp14d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,2, 2,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,2);
+ pathB.cubicTo(1,2, 1,0, 2,0);
+ pathB.close();
+</div>
+
+<div id="cubicOp15d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(3,6, 2,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,2);
+ pathB.cubicTo(1,2, 1,0, 6,3);
+ pathB.close();
+</div>
+
+<div id="cubicOp16d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(0,1, 3,0, 1,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,3);
+ pathB.cubicTo(0,1, 2,0, 1,0);
+ pathB.close();
+</div>
+
+<div id="cubicOp17d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(0,2, 4,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,4);
+ pathB.cubicTo(1,2, 2,0, 2,0);
+ pathB.close();
+</div>
+
+<div id="cubicOp18d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(3,5, 2,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,2);
+ pathB.cubicTo(1,2, 1,0, 5,3);
+ pathB.close();
+</div>
+
+<div id="cubicOp19i">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(0,1, 2,1, 6,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,2);
+ pathB.cubicTo(2,6, 2,0, 1,0);
+ pathB.close();
+</div>
+
+<div id="cubicOp20d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,1, 6,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,6);
+ pathB.cubicTo(1,2, 1,0, 1,0);
+ pathB.close();
+</div>
+
+<div id="cubicOp21d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,1, 2,1, 6,5);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,2);
+ pathB.cubicTo(5,6, 1,0, 1,0);
+ pathB.close();
+</div>
+
+<div id="cubicOp22d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,3, 3,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,3);
+ pathB.cubicTo(1,2, 1,0, 3,2);
+ pathB.close();
+</div>
+
+<div id="cubicOp23d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,2, 4,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,4);
+ pathB.cubicTo(1,2, 1,0, 2,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp24d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,2, 2,0, 3,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,2);
+ pathB.cubicTo(2,3, 1,0, 2,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp25i">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,4, 5,0, 3,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,5);
+ pathB.cubicTo(2,3, 1,0, 4,2);
+ pathB.close();
+</div>
+
+<div id="cubicOp26d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(3,4, 4,0, 3,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,4);
+ pathB.cubicTo(2,3, 1,0, 4,3);
+ pathB.close();
+</div>
+
+<div id="cubicOp27d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(3,6, 1,0, 5,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,1);
+ pathB.cubicTo(2,5, 1,0, 6,3);
+ pathB.close();
+</div>
+
+<div id="cubicOp28u">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,4, 6,0, 3,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,6);
+ pathB.cubicTo(2,3, 1,0, 4,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp29d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,5, 6,0, 4,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,6);
+ pathB.cubicTo(2,4, 1,0, 5,2);
+ pathB.close();
+</div>
+
+<div id="cubicOp30d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,5, 6,0, 5,3);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,6);
+ pathB.cubicTo(3,5, 1,0, 5,2);
+ pathB.close();
+</div>
+
+<div id="cubicOp31d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(0,3, 2,1, 4,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,2);
+ pathB.cubicTo(0,4, 2,0, 3,0);
+ pathB.close();
+</div>
+
+<div id="cubicOp32d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,2, 6,0, 3,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,6);
+ pathB.cubicTo(1,3, 1,0, 2,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp33i">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,2, 6,0, 3,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,6);
+ pathB.cubicTo(1,3, 1,0, 2,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp34d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(3,5, 2,1, 3,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,2);
+ pathB.cubicTo(1,3, 1,0, 5,3);
+ pathB.close();
+</div>
+
+<div id="cubicOp35d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,5, 2,1, 4,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,2);
+ pathB.cubicTo(0,4, 1,0, 5,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp36u">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,6, 2,0, 5,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,2);
+ pathB.cubicTo(1,5, 1,0, 6,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp37d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,6, 6,1, 4,3);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,6);
+ pathB.cubicTo(3,4, 1,0, 6,2);
+ pathB.close();
+</div>
+
+<div id="cubicOp38d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(0,6, 3,2, 4,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(2,3);
+ pathB.cubicTo(1,4, 1,0, 6,0);
+ pathB.close();
+</div>
+
+<div id="cubicOp39d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,3, 5,1, 4,3);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,5);
+ pathB.cubicTo(3,4, 1,0, 3,2);
+ pathB.close();
+</div>
+
+<div id="cubicOp40d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,5, 3,2, 4,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(2,3);
+ pathB.cubicTo(2,4, 1,0, 5,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp41i">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,6, 4,3, 6,4);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(3,4);
+ pathB.cubicTo(4,6, 1,0, 6,2);
+ pathB.close();
+</div>
+
+<div id="cubicOp42d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,2, 6,5, 5,4);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(5,6);
+ pathB.cubicTo(4,5, 1,0, 2,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp43d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(1,2, 4,0, 3,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,4);
+ pathB.cubicTo(1,3, 2,0, 2,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp44d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(3,6, 4,0, 3,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,4);
+ pathB.cubicTo(2,3, 2,0, 6,3);
+ pathB.close();
+</div>
+
+<div id="cubicOp45d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(2,4, 4,0, 3,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,4);
+ pathB.cubicTo(2,3, 2,0, 4,2);
+ pathB.close();
+</div>
+
+<div id="cubicOp46d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(3,5, 5,0, 4,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,5);
+ pathB.cubicTo(2,4, 2,0, 5,3);
+ pathB.close();
+</div>
+
+<div id="cubicOp47d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(1,6, 6,2, 5,4);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(2,6);
+ pathB.cubicTo(4,5, 1,0, 6,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp48d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(2,3, 5,1, 3,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,5);
+ pathB.cubicTo(2,3, 2,0, 3,2);
+ pathB.close();
+</div>
+
+<div id="cubicOp49d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(1,5, 3,2, 4,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(2,3);
+ pathB.cubicTo(1,4, 2,0, 5,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp50d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,3);
+ path.cubicTo(1,6, 5,0, 5,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,5);
+ pathB.cubicTo(1,5, 3,0, 6,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp51d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,3);
+ path.cubicTo(1,2, 4,1, 6,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(1,4);
+ pathB.cubicTo(0,6, 3,0, 2,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp52d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(1,2, 5,4, 4,3);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(4,5);
+ pathB.cubicTo(3,4, 2,0, 2,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp53d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,3);
+ path.cubicTo(1,2, 5,3, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(3,5);
+ pathB.cubicTo(1,2, 3,0, 2,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp54d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,4);
+ path.cubicTo(1,3, 5,4, 4,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(4,5);
+ pathB.cubicTo(2,4, 4,0, 3,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp55d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,5);
+ path.cubicTo(1,3, 3,2, 5,0);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(2,3);
+ pathB.cubicTo(0,5, 5,0, 3,1);
+ pathB.close();
+</div>
+
+<div id="cubicOp56d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(2,6, 5,0, 2,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,5);
+ pathB.cubicTo(1,2, 1,0, 6,2);
+ pathB.close();
+</div>
+
+<div id="cubicOp57d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,5);
+ path.cubicTo(0,5, 5,4, 6,4);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(4,5);
+ pathB.cubicTo(4,6, 5,0, 5,0);
+ pathB.close();
+</div>
+
+<div id="cubicOp58d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,5);
+ path.cubicTo(3,4, 6,5, 5,3);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(5,6);
+ pathB.cubicTo(3,5, 5,0, 4,3);
+ pathB.close();
+</div>
+
+<div id="cubicOp59d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,1);
+ path.cubicTo(5,6, 4,0, 4,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,4);
+ pathB.cubicTo(1,4, 1,0, 6,5);
+ pathB.close();
+</div>
+
+<div id="cubicOp60d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(0,2);
+ path.cubicTo(4,6, 6,0, 5,2);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(0,6);
+ pathB.cubicTo(2,5, 2,0, 6,4);
+ pathB.close();
+</div>
+
+<div id="cubicOp61d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(1,2);
+ path.cubicTo(0,5, 3,2, 6,1);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(2,3);
+ pathB.cubicTo(1,6, 2,1, 5,0);
+ pathB.close();
+</div>
+
+<div id="cubicOp62d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(1,3);
+ path.cubicTo(5,6, 5,3, 5,4);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(3,5);
+ pathB.cubicTo(4,5, 3,1, 6,5);
+ pathB.close();
+</div>
+
+<div id="cubicOp63d">
+ path.setFillType(SkPath::kWinding_FillType);
+ path.moveTo(2,3);
+ path.cubicTo(0,4, 3,2, 5,3);
+ path.close();
+ pathB.setFillType(SkPath::kWinding_FillType);
+ pathB.moveTo(2,3);
+ pathB.cubicTo(3,5, 3,2, 4,0);
+ pathB.close();
+</div>
+
+<div id="testQuadratic94">
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(8, 8);
+ path.quadTo(8, 4, 4, 4);
+ path.quadTo(4, 0, 0, 0);
+ path.close();
+ testSimplify(reporter, path);
+</div>
+
+<div id="testQuadratic95">
+ SkPath path;
+ path.moveTo(8, 8);
+ path.lineTo(0, 0);
+ path.quadTo(4, 0, 4, 4);
+ path.quadTo(8, 4, 8, 8);
+ path.close();
+ testSimplify(reporter, path);
+</div>
+
+<div id="testQuadratic96">
+ SkPath path;
+ path.moveTo(8, 0);
+ path.lineTo(0, 8);
+ path.quadTo(0, 4, 4, 4);
+ path.quadTo(4, 0, 8, 0);
+ path.close();
+ testSimplify(reporter, path);
+</div>
+
+<div id="testQuadratic97">
+ SkPath path;
+ path.moveTo(0, 8);
+ path.lineTo(8, 0);
+ path.quadTo(4, 0, 4, 4);
+ path.quadTo(0, 4, 0, 8);
+ path.close();
+ testSimplify(reporter, path);
+</div>
+
+<div id="testTriangle2">
+ path.moveTo(0, 0);
+ path.lineTo(1, 0);
+ path.lineTo(3, 3);
+ path.close();
+ path.moveTo(1, 1);
+ path.lineTo(2, 3);
+ path.lineTo(1, 2);
+ path.close();
+</div>
+
+</div>
+
+<script type="text/javascript">
+
+var testDivs = [
+ testTriangle2,
+ testQuadratic97,
+ testQuadratic96,
+ testQuadratic95,
+ testQuadratic94,
+ testLine16,
+ cubicOp63d,
+ cubicOp62d,
+ cubicOp61d,
+ cubicOp60d,
+ cubicOp59d,
+ cubicOp58d,
+ cubicOp57d,
+ cubicOp56d,
+ cubicOp55d,
+ cubicOp54d,
+ cubicOp53d,
+ cubicOp52d,
+ cubicOp51d,
+ cubicOp50d,
+ cubicOp49d,
+ cubicOp48d,
+ cubicOp47d,
+ cubicOp46d,
+ cubicOp45d,
+ cubicOp44d,
+ cubicOp43d,
+ cubicOp42d,
+ cubicOp41i,
+ cubicOp40d,
+ cubicOp39d,
+ cubicOp38d,
+ cubicOp37d,
+ cubicOp36u,
+ cubicOp35d,
+ cubicOp34d,
+ cubicOp33i,
+ cubicOp32d,
+ cubicOp31d,
+ cubicOp30d,
+ cubicOp29d,
+ cubicOp28u,
+ cubicOp27d,
+ cubicOp26d,
+ cubicOp25i,
+ cubicOp24d,
+ cubicOp23d,
+ cubicOp18d,
+ cubicOp15d,
+ cubicOp14d,
+ cubicOp13d,
+ cubicOp11d,
+ cubicOp9d,
+ cubicOp8d,
+ cubicOp7d,
+ cubicOp6d,
+ cubicOp5d,
+ cubicOp10d,
+ cubicOp22d,
+ cubicOp21d,
+ cubicOp20d,
+ cubicOp19i,
+ cubicOp17d,
+ cubicOp16d,
+ cubicOp12d,
+ cubicOp1i,
+ lineOp9d,
+ quadOp9d,
+ cubicOp4d,
+ cubicOp3d,
+ cubicOp2d,
+ cubicOp1d,
+ testQuadratic93,
+ testCubic1,
+ testQuadralateral1,
+ testLine85,
+ testLine84x,
+ testLine83,
+ testLine82h,
+ testLine82g,
+ testLine82f,
+ testLine82e,
+ testLine82d,
+ testLine82c,
+ testLine82b,
+ testLine82a,
+ testLine82,
+ testQuadratic92x,
+ testQuadratic91,
+ testQuadratic90x,
+ testQuadratic89x,
+ testQuadratic88,
+ testQuadratic87,
+ testQuadratic86,
+ testQuadratic85,
+ testQuadratic84,
+ testQuadratic83,
+ testQuadratic82,
+ testQuadratic81,
+ testQuadratic80,
+ testQuadratic79,
+ testQuadratic78,
+ testQuadratic77,
+ testQuadratic76,
+ testQuadratic75,
+ testQuadratic74,
+ testQuadratic73,
+ testQuadratic72,
+ testQuadratic71,
+ testQuadratic70x,
+ testQuadratic69,
+ testQuadratic68,
+ testQuadratic67x,
+ testQuadratic66,
+ testQuadratic65,
+ testQuadratic64,
+ testQuadratic63,
+ testLine1a,
+ testQuadratic62x,
+ testLine81,
+ testQuadratic61,
+ testQuadratic60,
+ testQuadratic59,
+ testQuadratic59o,
+ testQuadratic59s,
+ testQuadratic58o,
+ testQuadratic58a,
+ testQuadratic58s,
+ testQuadratic57o,
+ testQuadratic57s,
+ testQuadratic56o,
+ testQuadratic56s,
+ testQuadratic55o,
+ testQuadratic55s,
+ testQuadratic54,
+ testQuadratic53o,
+ testQuadratic53s,
+ testQuadratic52sa,
+ testQuadratic52sb,
+ testQuadratic52sc,
+ testQuadratic52o,
+ testQuadratic52s,
+ testQuadratic51,
+ testQuadratic50o,
+ testQuadratic50s,
+ testQuadratic49s,
+ testQuadratic48o,
+ testQuadratic48s,
+ testQuadratic47o,
+ testQuadratic47s,
+ testQuadratic46o,
+ testQuadratic46s,
+ testQuadratic45o,
+ testQuadratic45s,
+ testQuadratic44o,
+ testQuadratic44s,
+ testQuadratic43o,
+ testQuadratic43s,
+ testQuadratic42o,
+ testQuadratic42s,
+ testQuadratic41o,
+ testQuadratic41s,
+ testQuadratic40xb,
+ testQuadratic40xa,
+ testQuadratic40x,
+ testQuadratic39,
+ testQuadratic39a,
+ testQuadratic38,
+ testQuadratic37,
+ testQuadratic36,
+ testQuadratic35,
+ testQuadratic34,
+ testQuadratic33,
+ testQuadratic32,
+ testQuadratic31,
+ testQuadratic30,
+ testQuadratic29,
+ testQuadratic28,
+ testQuadratic27,
+ testQuadratic26,
+ testQuadratic25,
+ testQuadratic24,
+ testQuadratic23,
+ testQuadratic22,
+ testQuadratic21,
+ testQuadratic20,
+ testQuadratic19,
+ testQuadratic18,
+ testQuadratic17x,
+ testQuadratic16b,
+ testQuadratic16a,
+ testQuadratic15,
+ testQuadratic14,
+ testQuadratic13b,
+ testQuadratic13a,
+ testQuadratic12,
+ testQuadratic11b,
+ testQuadratic11a,
+ testQuadratic10b,
+ testQuadratic10a,
+ testQuadratic9a,
+ testQuadratic9,
+ testQuadratic8,
+ testQuadratic7,
+ testQuadratic6,
+ testQuadratic5,
+ testQuadratic4x,
+ testQuadratic3,
+ testQuadratic2,
+ testQuadratic1,
+ testLine4x,
+ testLine3x,
+ testLine2x,
+ testLine1x,
+ testQuadralateral9,
+ testQuadralateral8,
+ testQuadralateral7,
+ testFauxQuadralateral6d,
+ testFauxQuadralateral6c,
+ testFauxQuadralateral6b,
+ testFauxQuadralateral6a,
+ testFauxQuadralateral6,
+ testQuadralateral6a,
+ testQuadralateral6,
+ testQuadralateral5,
+ testNondegenerate4,
+ testNondegenerate3,
+ testNondegenerate2,
+ testNondegenerate1,
+ testDegenerate4,
+ testDegenerate3,
+ testDegenerate2,
+ testDegenerate1,
+ testLine79,
+ testLine78,
+ testLine77,
+ testLine76,
+ testLine75,
+ testLine74,
+ testLine73,
+ testLine72,
+ testLine71,
+ testLine70,
+ testLine69,
+ testLine68f,
+ testLine68e,
+ testLine68d,
+ testLine68c,
+ testLine68b,
+ testLine68a,
+ testLine67,
+ testLine66,
+ testLine65,
+ testLine64,
+ testLine63,
+ testLine62,
+ testLine61,
+ testLine60,
+ testLine59,
+ testLine58,
+ testLine57,
+ testLine56,
+ testLine55,
+ testLine54,
+ testLine53,
+ testLine52,
+ testLine51,
+ testLine50,
+ testLine49,
+ testLine48,
+ testLine47,
+ testLine46,
+ testLine45,
+ testLine44,
+ testLine43,
+ testLine42,
+ testLine41,
+ testLine40,
+ testLine39,
+ testLine38,
+ testLine37,
+ testLine36,
+ testLine35,
+ testLine34,
+ testLine33,
+ testLine32,
+ testLine31,
+ testLine30,
+ testLine29,
+ testLine28,
+ testLine24,
+ testLine22,
+ testLine19,
+ testLine17,
+ testLine16,
+ testLine13,
+ testLine12,
+ testLine9,
+ testLine7b,
+ testLine7,
+ testLine6,
+ testLine5,
+ testSimplifyQuadratic21,
+ testSimplifyQuadratic20,
+ testSimplifyQuadratic19,
+ testSimplifyQuadratic18,
+ testSimplifyQuadratic17,
+ testSimplifyQuadratic16,
+ testSimplifyQuadratic15,
+ testSimplifyQuadratic14,
+ testSimplifyQuadratic13,
+ testSimplifyQuadratic12,
+ testSimplifyQuadratic11,
+ testSimplifyQuadratic10,
+ testSimplifyQuadratic9,
+ testSimplifyQuadratic8,
+ testSimplifyQuadratic7,
+ testSimplifyQuadratic6,
+ testSimplifyQuadratic5,
+ testSimplifyQuadratic4,
+ testSimplifyQuadratic3,
+ testSimplifyQuadratic2,
+ testSimplifyQuadratic1,
+];
+
+var scale, columns, rows, xStart, yStart;
+
+var ticks = 0.1;
+var at_x = 13 + 0.5;
+var at_y = 13 + 0.5;
+var decimal_places = 0; // make this 3 to show more precision
+
+var tests = [];
+var testTitles = [];
+var testIndex = 0;
+var hasXor = false;
+var draw_labels = true;
+
+var ctx;
+
+function parse(test, title) {
+ var contours = [];
+ var contourStrs = test.split("path.close();");
+ var pattern = /-?\d+\.*\d*/g;
+ hasXor = test.split("kEvenOdd_FillType").length > 1;
+ for (var c in contourStrs) {
+ var contour = contourStrs[c];
+ var verbStrs = contour.split("path");
+ var verbs = [];
+ for (var v in verbStrs) {
+ var verbStr = verbStrs[v];
+ var points = verbStr.match(pattern);
+ var pts = [];
+ for (var wd in points) {
+ var num = parseFloat(points[wd]);
+ if (isNaN(num)) continue;
+ pts.push(num);
+ }
+ if (pts.length > 0)
+ verbs.push(pts);
+ }
+ if (verbs.length > 0) {
+ var lastIndex = verbs.length - 1;
+ var lastVerb = verbs[lastIndex];
+ var lastLen = lastVerb.length;
+ if (verbs[0][0] != lastVerb[lastLen - 2] && verbs[0][1] != lastVerb[lastLen - 1]) {
+ var lastPts = [];
+ lastPts.push(verbs[0][0]);
+ lastPts.push(verbs[0][1]);
+ verbs.push(lastPts);
+ }
+ contours.push(verbs);
+ }
+ }
+ if (contours.length > 0) {
+ tests.push(contours);
+ testTitles.push(title);
+ }
+}
+
+function parseRect(test, title) {
+ var contours = [];
+ var rectStrs = test.split("path.addRect");
+ var pattern = /-?\d+\.*\d*/g;
+ hasXor = test.split("kEvenOdd_FillType").length > 1;
+ for (var r in rectStrs) {
+ var rect = rectStrs[r];
+ var sideStrs = rect.match(pattern);
+ var ccw = rect.split("kCCW_Direction").length > 1;
+ var sides = [];
+ for (var wd in sideStrs) {
+ var num = parseFloat(sideStrs[wd]);
+ if (isNaN(num)) continue;
+ sides.push(num);
+ }
+ if (sides.length == 0)
+ continue;
+ var verbs = [];
+ var topLeft = [];
+ topLeft.push(sides[0]); topLeft.push(sides[1]);
+ var topRight = [];
+ topRight.push(sides[2]); topRight.push(sides[1]);
+ var botLeft = [];
+ botLeft.push(sides[0]); botLeft.push(sides[3]);
+ var botRight = [];
+ botRight.push(sides[2]); botRight.push(sides[3]);
+ verbs.push(topLeft);
+ if (!ccw) {
+ verbs.push(topRight);
+ verbs.push(botRight);
+ verbs.push(botLeft);
+ } else {
+ verbs.push(botLeft);
+ verbs.push(botRight);
+ verbs.push(topRight);
+ }
+ verbs.push(topLeft);
+ contours.push(verbs);
+ }
+ if (contours.length > 0) {
+ tests.push(contours);
+ testTitles.push(title);
+ }
+}
+
+function init(test) {
+ var canvas = document.getElementById('canvas');
+ if (!canvas.getContext) return;
+ canvas.width = window.innerWidth - at_x;
+ canvas.height = window.innerHeight - at_y;
+ ctx = canvas.getContext('2d');
+ var xmin = Infinity;
+ var xmax = -Infinity;
+ var ymin = Infinity;
+ var ymax = -Infinity;
+ for (var contours in test) {
+ var contour = test[contours];
+ for (var verbs in contour) {
+ var verb = contour[verbs];
+ var last = verb.length;
+ for (var idx = 0; idx < last; idx += 2) {
+ xmin = Math.min(xmin, verb[idx]);
+ xmax = Math.max(xmax, verb[idx]);
+ ymin = Math.min(ymin, verb[idx + 1]);
+ ymax = Math.max(ymax, verb[idx + 1]);
+ }
+ }
+ }
+ var subscale = 1;
+ while ((xmax - xmin) * subscale < 0.1 && (ymax - ymin) * subscale < 0.1) {
+ subscale *= 10;
+ }
+ columns = Math.ceil(xmax) - Math.floor(xmin) + 1;
+ rows = Math.ceil(ymax) - Math.floor(ymin) + 1;
+ xStart = Math.floor(xmin);
+ yStart = Math.floor(ymin);
+ var hscale = ctx.canvas.width / columns / ticks;
+ var vscale = ctx.canvas.height / rows / ticks;
+ scale = Math.floor(Math.min(hscale, vscale)) * subscale;
+}
+
+function drawPoint(px, py, xoffset, yoffset, unit) {
+ var label = px.toFixed(decimal_places) + ", " + py.toFixed(decimal_places);
+ var _px = px * unit + xoffset;
+ var _py = py * unit + yoffset;
+ ctx.beginPath();
+ ctx.arc(_px, _py, 3, 0, Math.PI*2, true);
+ ctx.closePath();
+ ctx.fill();
+ ctx.fillText(label, _px + 5, _py);
+}
+
+function draw(test, title, _at_x, _at_y, scale) {
+ ctx.fillStyle = "rgba(0,0,0, 0.1)";
+ ctx.font = "normal 50px Arial";
+ ctx.fillText(title, 50, 50);
+ ctx.font = "normal 10px Arial";
+
+ var unit = scale * ticks;
+ ctx.lineWidth = 1;
+ var i;
+ for (i = 0; i <= rows * ticks; ++i) {
+ ctx.strokeStyle = (i % ticks) != 0 ? "rgb(160,160,160)" : "black";
+ ctx.beginPath();
+ ctx.moveTo(_at_x + 0, _at_y + i * scale);
+ ctx.lineTo(_at_x + unit * columns, _at_y + i * scale);
+ ctx.stroke();
+ }
+ for (i = 0; i <= columns * ticks; ++i) {
+ ctx.strokeStyle = (i % ticks) != 0 ? "rgb(160,160,160)" : "black";
+ ctx.beginPath();
+ ctx.moveTo(_at_x + i * scale, _at_y + 0);
+ ctx.lineTo(_at_x + i * scale, _at_y + unit * rows);
+ ctx.stroke();
+ }
+
+ var xoffset = xStart * -unit + _at_x;
+ var yoffset = yStart * -unit + _at_y;
+
+ ctx.fillStyle = "rgb(40,80,60)"
+ for (i = 0; i <= columns; i += (1 / ticks))
+ {
+ num = (xoffset - _at_x) / -unit + i;
+ ctx.fillText(num.toFixed(0), i * unit + _at_y - 5, 10);
+ }
+ for (i = 0; i <= rows; i += (1 / ticks))
+ {
+ num = (yoffset - _at_x) / -unit + i;
+ ctx.fillText(num.toFixed(0), 0, i * unit + _at_y + 0);
+ }
+
+ ctx.strokeStyle = "red";
+ var contours, verbs, pts;
+ ctx.beginPath();
+ for (contours in test) {
+ var contour = test[contours];
+ if (contours == 2) ctx.strokeStyle = "blue";
+ var first = true;
+ for (verbs in contour) {
+ var verb = contour[verbs];
+ switch (verb.length) {
+ case 2:
+ if (first) {
+ ctx.moveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit);
+ first = false;
+ } else
+ ctx.lineTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit);
+ break;
+ case 4:
+ ctx.quadraticCurveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit,
+ xoffset + verb[2] * unit, yoffset + verb[3] * unit);
+ break;
+ case 6:
+ ctx.bezierCurveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit,
+ xoffset + verb[2] * unit, yoffset + verb[3] * unit,
+ xoffset + verb[4] * unit, yoffset + verb[5] * unit);
+ break;
+ }
+ }
+ ctx.closePath();
+ }
+ // uncomment if ever part of the standard
+ // ctx.fillRule=hasXor ? evenodd : nonzero;
+ ctx.stroke();
+ ctx.fillStyle="rgba(192,192,255, 0.3)";
+ ctx.fill();
+
+ if (!draw_labels) {
+ return;
+ }
+ ctx.fillStyle="blue";
+ for (contours in test) {
+ var contour = test[contours];
+ for (verbs in contour) {
+ var verb = contour[verbs];
+ for (i = 0; i < verb.length; i += 2) {
+ x = verb[i];
+ y = verb[i + 1];
+ drawPoint(x, y, xoffset, yoffset, unit);
+ }
+ }
+ }
+}
+
+var mouseX = Infinity, mouseY;
+
+function calcXY() {
+ var e = window.event;
+ var tgt = e.target || e.srcElement;
+ var left = tgt.offsetLeft;
+ var top = tgt.offsetTop;
+ var unit = scale * ticks;
+ mouseX = (e.clientX - left - Math.ceil(at_x) + 1) / unit + xStart;
+ mouseY = (e.clientY - top - Math.ceil(at_y)) / unit + yStart;
+}
+
+function handleMouseOver() {
+ calcXY();
+ var num = mouseX.toFixed(3) + ", " + mouseY.toFixed(3);
+ ctx.beginPath();
+ ctx.rect(300,0,72,9);
+ ctx.fillStyle="white";
+ ctx.fill();
+ ctx.fillStyle="black";
+ ctx.fillText(num, 300, 7);
+}
+
+function handleMouseClick() {
+ calcXY();
+// drawInset();
+}
+
+function drawTop() {
+ init(tests[testIndex]);
+ redraw();
+}
+
+function redraw() {
+ ctx.beginPath();
+ ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);
+ ctx.fillStyle="white";
+ ctx.fill();
+ draw(tests[testIndex], testTitles[testIndex], at_x, at_y, scale);
+// if (insetScale != scale && mouseX != Infinity)
+// drawInset();
+}
+
+function doKeyPress(evt) {
+ var char = String.fromCharCode(evt.charCode);
+ switch (char) {
+ case 'N':
+ testIndex += 9;
+ case 'n':
+ if (++testIndex >= tests.length)
+ testIndex = 0;
+ mouseX = Infinity;
+ drawTop();
+ break;
+ case 'P':
+ testIndex -= 9;
+ case 'p':
+ if (--testIndex < 0)
+ testIndex = tests.length - 1;
+ mouseX = Infinity;
+ drawTop();
+ break;
+ case 'T':
+ case 't':
+ break;
+ case '-':
+ drawTop();
+ break;
+ case '=':
+ case '+':
+ drawTop();
+ break;
+ case 'x':
+ draw_labels ^= true;
+ drawTop();
+ break;
+ }
+}
+
+function start() {
+ for (i = 0; i < testDivs.length; ++i) {
+ var title = testDivs[i].id.toString();
+ var str = testDivs[i].firstChild.data;
+ if (str.split("addRect").length > 1) {
+ parseRect(str, title);
+ } else {
+ parse(str, title);
+ }
+ }
+ drawTop();
+ window.addEventListener('keypress', doKeyPress, true);
+ window.onresize = function() {
+ drawTop();
+ }
+}
+
+</script>
+</head>
+
+<body onLoad="start();">
+<canvas id="canvas" width="750" height="500"
+ onmousemove="handleMouseOver()"
+ onclick="handleMouseClick()"
+ ></canvas >
+</body>
+</html>
diff --git a/chromium/third_party/skia/experimental/Intersection/qc.htm b/chromium/third_party/skia/experimental/Intersection/qc.htm
new file mode 100644
index 00000000000..bae06b76a12
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/qc.htm
@@ -0,0 +1,2883 @@
+<html>
+<head>
+<div style="height:0">
+
+<div id="cubic1">
+$1 = (Cubic &) @0x297c40: {{x = 60.776536520932126, y = 71.249307306133829}, {x = 87.107894191103014, y = 22.377669868235323}, {x = 1.4974754310666936, y = 68.069569937917208}, {x = 45.261946574441133, y = 17.536076632112298}}
+$3 = {{{x = 60.776536520932126, y = 71.249307306133829}, {x = 66.996745328074098, y = 59.419614231505768}, {x = 65.760655441289899, y = 53.975522936482086}}, {{x = 65.760655441289899, y = 53.975522936482086}, {x = 64.524565554505699, y = 48.531431641458411}, {x = 59.040356119613065, y = 46.936502854722001}}, {{x = 59.040356119613065, y = 46.936502854722001}, {x = 53.556146684720431, y = 45.341574067985597}, {x = 47.031996847537108, y = 45.059368518219323}}, {{x = 47.031996847537108, y = 45.059368518219323}, {x = 40.29980253329046, y = 44.781843489000011}, {x = 35.915024002796116, y = 43.168182836391942}}, {{x = 35.915024002796116, y = 43.168182836391942}, {x = 31.530245472301775, y = 41.554522183783902}, {x = 32.992157437282373, y = 35.838141687728616}}, {{x = 32.992157437282373, y = 35.838141687728616}, {x = 34.454069402262967, y = 30.121761191673329}, {x = 45.261946574441133, y = 17.536076632112298}}}
+</div>
+
+<div id="cubic2">
+$1 = {{x = 73.565270739405079, y = 11.505317181118446}, {x = 69.865863057722279, y = 35.56041113825534}, {x = 63.830000657509075, y = 90.821050755130614}, {x = 29.400041480269302, y = 26.497158886164968}}
+</div>
+
+<div id="cubic3">
+$3 = {{x = 69.729201388419241, y = 38.687735162064307}, {x = 24.764868814854356, y = 23.150171257159752}, {x = 84.928319083959011, y = 90.258844099128083}, {x = 80.39277404565027, y = 61.35338524419506}}
+</div>
+
+<div id="cubic1x0">
+{{14.5975863, 41.632436}, {16.3518929, 26.2639684}, {18.5165519, 7.68775139}, {8.03767257, 89.1628526}},
+{{14.5975863, 41.632436}, {8.03767257, 89.1628526}, {8.03767257, 89.1628526}},
+</div>
+
+<div id="cubic1x0x">
+{{14.5975863, 41.632436}, {16.3518929, 26.2639684}, {18.5165519, 7.68775139}, {8.03767257, 89.1628526}},
+{{14.5975863, 41.632436}, {8.03767257, 89.1628526}, {8.03767257, 89.1628526}},
+</div>
+
+<div id="cubic1x1">
+{{32.0437334, 59.0267425}, {62.4615541, 91.340573}, {61.0102145, 98.6747985}, {27.3387826, 82.9194526}},
+{{32.0437334, 59.0267425}, {75.9425223, 105.66184}, {27.3387826, 82.9194526}},
+</div>
+
+<div id="cubic1x1x">
+{{32.0437334, 59.0267425}, {62.4615541, 91.340573}, {61.0102145, 98.6747985}, {27.3387826, 82.9194526}},
+{{32.0437334, 59.0267425}, {77.7581975, 107.02498}, {27.3387826, 82.9194526}},
+</div>
+
+<div id="cubic1x2">
+{{57.8949944, 41.1707465}, {56.7368674, 76.5309905}, {56.356649, 86.19953}, {55.5002867, 93.318629}},
+{{57.8949944, 41.1707465}, {55.5002867, 93.318629}, {55.5002867, 93.318629}},
+</div>
+
+<div id="cubic1x2x">
+{{57.8949944, 41.1707465}, {56.7368674, 76.5309905}, {56.356649, 86.19953}, {55.5002867, 93.318629}},
+{{57.8949944, 41.1707465}, {55.5002867, 93.318629}, {55.5002867, 93.318629}},
+</div>
+
+<div id="cubic1x3">
+{{41.1844187, 86.52533}, {31.2211043, 33.1005529}, {20.992908, 27.8044979}, {10.1965708, 73.7658388}},
+{{41.1844187, 86.52533}, {26.1439273, 5.87597256}, {10.1965708, 73.7658388}},
+</div>
+
+<div id="cubic1x3x">
+{{41.1844187, 86.52533}, {31.2211043, 33.1005529}, {20.992908, 27.8044979}, {10.1965708, 73.7658388}},
+{{41.1844187, 86.52533}, {26.3152619, 5.60599593}, {10.1965708, 73.7658388}},
+</div>
+
+<div id="cubic1x4">
+{{51.1608132, 59.7881237}, {58.9955693, 38.5338731}, {38.8048957, 93.8817224}, {70.1083283, 10.6741861}},
+{{51.1608132, 59.7881237}, {70.1083283, 10.6741861}, {70.1083283, 10.6741861}},
+</div>
+
+<div id="cubic1x4x">
+{{51.1608132, 59.7881237}, {58.9955693, 38.5338731}, {38.8048957, 93.8817224}, {70.1083283, 10.6741861}},
+{{51.1608132, 59.7881237}, {70.1083283, 10.6741861}, {70.1083283, 10.6741861}},
+</div>
+
+<div id="cubic1x5">
+{{9.45225228, 64.0040808}, {16.5855418, 53.2003115}, {37.6356814, 42.8968969}, {68.1461999, 33.1817941}},
+{{9.45225228, 64.0040808}, {19.5957859, 48.641127}, {68.1461999, 33.1817941}},
+</div>
+
+<div id="cubic1x5x">
+{{9.45225228, 64.0040808}, {16.5855418, 53.2003115}, {37.6356814, 42.8968969}, {68.1461999, 33.1817941}},
+{{9.45225228, 64.0040808}, {21.2663043, 47.7764376}, {68.1461999, 33.1817941}},
+</div>
+
+<div id="cubic1x6">
+{{96.2293269, 26.2973682}, {79.8675829, 34.4649929}, {53.1353046, 45.0651411}, {9.82676512, 58.4413866}},
+{{96.2293269, 26.2973682}, {67.554114, 40.6117577}, {9.82676512, 58.4413866}},
+</div>
+
+<div id="cubic1x6x">
+{{96.2293269, 26.2973682}, {79.8675829, 34.4649929}, {53.1353046, 45.0651411}, {9.82676512, 58.4413866}},
+{{96.2293269, 26.2973682}, {73.2381426, 38.4629118}, {9.82676512, 58.4413866}},
+</div>
+
+<div id="cubic1x7">
+{{77.9926032, 21.6823036}, {14.4765247, 6.95017395}, {11.5735665, 16.9314125}, {66.2493838, 53.3932579}},
+{{77.9926032, 21.6823036}, {-12.9236155, 0.594894684}, {66.2493838, 53.3932579}},
+</div>
+
+<div id="cubic1x7x">
+{{77.9926032, 21.6823036}, {14.4765247, 6.95017395}, {11.5735665, 16.9314125}, {66.2493838, 53.3932579}},
+{{77.9926032, 21.6823036}, {-16.5229284, -0.857700571}, {66.2493838, 53.3932579}},
+</div>
+
+<div id="cubic1x8">
+{{56.479229, 46.4012343}, {65.5444116, 4.92526628}, {78.9504195, 19.6997536}, {93.7579262, 89.4649302}},
+{{56.479229, 46.4012343}, {70.7547833, -18.9137695}, {93.7579262, 89.4649302}},
+</div>
+
+<div id="cubic1x8x">
+{{56.479229, 46.4012343}, {65.5444116, 4.92526628}, {78.9504195, 19.6997536}, {93.7579262, 89.4649302}},
+{{56.479229, 46.4012343}, {70.8118345, -15.4977762}, {93.7579262, 89.4649302}},
+</div>
+
+<div id="cubic1x9">
+{{14.1826743, 68.2075081}, {63.5890486, 41.1398453}, {37.3805687, 55.2173676}, {38.296851, 55.1751163}},
+{{14.1826743, 68.2075081}, {38.296851, 55.1751163}, {38.296851, 55.1751163}},
+</div>
+
+<div id="cubic1x9x">
+{{14.1826743, 68.2075081}, {63.5890486, 41.1398453}, {37.3805687, 55.2173676}, {38.296851, 55.1751163}},
+{{14.1826743, 68.2075081}, {38.296851, 55.1751163}, {38.296851, 55.1751163}},
+</div>
+
+<div id="cubic2x0">
+{{27.9052884, 4.18132628}, {75.550717, 80.9000193}, {86.6244633, 97.3541595}, {31.358766, 46.7795742}},
+{{27.9052884, 4.18132628}, {66.5480157, 66.4038653}, {68.2236994, 73.2154296}},
+{{68.2236994, 73.2154296}, {70.5412458, 82.636132}, {31.358766, 46.7795742}},
+</div>
+
+<div id="cubic2x0x">
+{{27.9052884, 4.18132628}, {75.550717, 80.9000193}, {86.6244633, 97.3541595}, {31.358766, 46.7795742}},
+{{27.9052884, 4.18132628}, {64.5696024, 61.9317264}, {68.2236994, 73.2154296}},
+{{68.2236994, 73.2154296}, {71.8777964, 84.4991328}, {31.358766, 46.7795742}},
+</div>
+
+<div id="cubic2x1">
+{{55.6607299, 89.8878963}, {45.872586, 80.5522712}, {42.0218181, 60.6961261}, {19.7918636, 41.8513322}},
+{{55.6607299, 89.8878963}, {52.7119153, 87.0754092}, {42.3919757, 69.4355526}},
+{{42.3919757, 69.4355526}, {32.6126647, 52.7197915}, {19.7918636, 41.8513322}},
+</div>
+
+<div id="cubic2x1x">
+{{55.6607299, 89.8878963}, {45.872586, 80.5522712}, {42.0218181, 60.6961261}, {19.7918636, 41.8513322}},
+{{55.6607299, 89.8878963}, {49.0795145, 82.5258065}, {42.3919757, 69.4355526}},
+{{42.3919757, 69.4355526}, {35.7044369, 56.3452986}, {19.7918636, 41.8513322}},
+</div>
+
+<div id="cubic2x2">
+{{80.5982112, 14.1354079}, {73.8005055, 65.0951435}, {54.0762929, 60.254824}, {2.82780649, 26.9437232}},
+{{80.5982112, 14.1354079}, {75.7174786, 50.7243473}, {58.3820516, 52.1411292}},
+{{58.3820516, 52.1411292}, {43.4686812, 53.3599624}, {2.82780649, 26.9437232}},
+</div>
+
+<div id="cubic2x2x">
+{{80.5982112, 14.1354079}, {73.8005055, 65.0951435}, {54.0762929, 60.254824}, {2.82780649, 26.9437232}},
+{{80.5982112, 14.1354079}, {76.0811121, 51.5011698}, {58.3820516, 52.1411292}},
+{{58.3820516, 52.1411292}, {40.6829911, 52.7810886}, {2.82780649, 26.9437232}},
+</div>
+
+<div id="cubic2x3">
+{{1.6014867, 16.1869736}, {54.4660745, 11.3148647}, {68.9317074, 35.2054791}, {98.4868263, 68.0902175}},
+{{1.6014867, 16.1869736}, {36.7068582, 12.9515906}, {58.7852073, 27.9797778}},
+{{58.7852073, 27.9797778}, {68.1927213, 34.3832403}, {98.4868263, 68.0902175}},
+</div>
+
+<div id="cubic2x3x">
+{{1.6014867, 16.1869736}, {54.4660745, 11.3148647}, {68.9317074, 35.2054791}, {98.4868263, 68.0902175}},
+{{1.6014867, 16.1869736}, {39.5784138, 13.1506607}, {58.7852073, 27.9797778}},
+{{58.7852073, 27.9797778}, {77.9920009, 42.808895}, {98.4868263, 68.0902175}},
+</div>
+
+<div id="cubic2x4">
+{{23.0453529, 23.2462522}, {99.7603064, 71.4695575}, {88.8529841, 52.1034408}, {2.52897437, 4.4722111}},
+{{23.0453529, 23.2462522}, {83.1995453, 61.0594014}, {73.9267748, 49.8046823}},
+{{73.9267748, 49.8046823}, {64.9578598, 38.9187642}, {2.52897437, 4.4722111}},
+</div>
+
+<div id="cubic2x4x">
+{{23.0453529, 23.2462522}, {99.7603064, 71.4695575}, {88.8529841, 52.1034408}, {2.52897437, 4.4722111}},
+{{23.0453529, 23.2462522}, {80.2001434, 58.1848465}, {73.9267748, 49.8046823}},
+{{73.9267748, 49.8046823}, {67.6534063, 41.424518}, {2.52897437, 4.4722111}},
+</div>
+
+<div id="cubic2x5">
+{{64.4519328, 43.6345262}, {65.4821636, 58.7228333}, {54.6599207, 69.286817}, {3.532848, 76.5762786}},
+{{64.4519328, 43.6345262}, {65.2901892, 55.9112614}, {53.5513792, 63.0299695}},
+{{53.5513792, 63.0299695}, {39.721686, 71.4166414}, {3.532848, 76.5762786}},
+</div>
+
+<div id="cubic2x5x">
+{{64.4519328, 43.6345262}, {65.4821636, 58.7228333}, {54.6599207, 69.286817}, {3.532848, 76.5762786}},
+{{64.4519328, 43.6345262}, {66.113742, 54.9117003}, {53.5513792, 63.0299695}},
+{{53.5513792, 63.0299695}, {40.9890164, 71.1482387}, {3.532848, 76.5762786}},
+</div>
+
+<div id="cubic2x6">
+{{82.5366784, 93.9543251}, {90.3418213, 74.9907304}, {69.20575, 41.039441}, {49.884656, 11.4126389}},
+{{82.5366784, 93.9543251}, {87.7472455, 81.2945847}, {76.383006, 56.6821848}},
+{{76.383006, 56.6821848}, {69.0501277, 40.8008111}, {49.884656, 11.4126389}},
+</div>
+
+<div id="cubic2x6x">
+{{82.5366784, 93.9543251}, {90.3418213, 74.9907304}, {69.20575, 41.039441}, {49.884656, 11.4126389}},
+{{82.5366784, 93.9543251}, {87.4294046, 79.1281234}, {76.383006, 56.6821848}},
+{{76.383006, 56.6821848}, {65.3366074, 34.2362462}, {49.884656, 11.4126389}},
+</div>
+
+<div id="cubic2x7">
+{{81.6027334, 97.1400425}, {32.694003, 88.1076582}, {25.4108981, 80.9641684}, {64.7788314, 37.8185316}},
+{{81.6027334, 97.1400425}, {43.6639346, 90.1335672}, {40.0870335, 80.2717567}},
+{{40.0870335, 80.2717567}, {36.0922592, 69.2578356}, {64.7788314, 37.8185316}},
+</div>
+
+<div id="cubic2x7x">
+{{81.6027334, 97.1400425}, {32.694003, 88.1076582}, {25.4108981, 80.9641684}, {64.7788314, 37.8185316}},
+{{81.6027334, 97.1400425}, {44.7641414, 91.5498493}, {40.0870335, 80.2717567}},
+{{40.0870335, 80.2717567}, {35.4099255, 68.9936642}, {64.7788314, 37.8185316}},
+</div>
+
+<div id="cubic2x8">
+{{43.6332675, 44.3267048}, {98.9277035, 77.9134953}, {92.1152147, 80.4133992}, {7.99971512, 51.2120151}},
+{{43.6332675, 44.3267048}, {85.4039037, 69.6989069}, {78.0952172, 71.3149254}},
+{{78.0952172, 71.3149254}, {70.649222, 72.9613041}, {7.99971512, 51.2120151}},
+</div>
+
+<div id="cubic2x8x">
+{{43.6332675, 44.3267048}, {98.9277035, 77.9134953}, {92.1152147, 80.4133992}, {7.99971512, 51.2120151}},
+{{43.6332675, 44.3267048}, {85.5789722, 69.5359977}, {78.0952172, 71.3149254}},
+{{78.0952172, 71.3149254}, {70.6114621, 73.0938531}, {7.99971512, 51.2120151}},
+</div>
+
+<div id="cubic2x9">
+{{3.42763756, 8.30440876}, {72.1979502, 30.9497829}, {73.001545, 36.9676506}, {15.3033876, 4.03527813}},
+{{3.42763756, 8.30440876}, {62.7221525, 27.8294978}, {56.7911889, 27.0114984}},
+{{56.7911889, 27.0114984}, {55.1652933, 26.7872547}, {15.3033876, 4.03527813}},
+</div>
+
+<div id="cubic2x9x">
+{{3.42763756, 8.30440876}, {72.1979502, 30.9497829}, {73.001545, 36.9676506}, {15.3033876, 4.03527813}},
+{{3.42763756, 8.30440876}, {54.7095919, 25.9860248}, {56.7911889, 27.0114984}},
+{{56.7911889, 27.0114984}, {58.8727859, 28.036972}, {15.3033876, 4.03527813}},
+</div>
+
+<div id="cubic3x0">
+{{37.7493998, 54.1620116}, {0.928181503, 99.9465276}, {1.29019157, 84.2497321}, {85.2470221, 46.7010984}},
+{{37.7493998, 54.1620116}, {30.0262679, 63.7651662}, {19.9157535, 75.222785}},
+{{19.9157535, 75.222785}, {12.0739437, 84.1094218}, {23.0870945, 77.9306985}},
+{{23.0870945, 77.9306985}, {53.2236264, 61.0231583}, {85.2470221, 46.7010984}},
+</div>
+
+<div id="cubic3x0x">
+{{37.7493998, 54.1620116}, {0.928181503, 99.9465276}, {1.29019157, 84.2497321}, {85.2470221, 46.7010984}},
+{{37.7493998, 54.1620116}, {26.0576358, 68.4753229}, {19.9157535, 75.222785}},
+{{19.9157535, 75.222785}, {7.36020346, 87.8757618}, {23.0870945, 77.9306985}},
+{{23.0870945, 77.9306985}, {37.855802, 68.7339725}, {85.2470221, 46.7010984}},
+</div>
+
+<div id="cubic3x1">
+{{77.853445, 82.8493315}, {48.7140421, 36.904878}, {60.2845497, 2.42643608}, {81.1111786, 35.5792593}},
+{{77.853445, 82.8493315}, {64.326138, 61.5206609}, {61.1190571, 42.8070764}},
+{{61.1190571, 42.8070764}, {58.2548088, 26.0939491}, {64.5348786, 22.8899965}},
+{{64.5348786, 22.8899965}, {71.0512995, 19.5654629}, {81.1111786, 35.5792593}},
+</div>
+
+<div id="cubic3x1x">
+{{77.853445, 82.8493315}, {48.7140421, 36.904878}, {60.2845497, 2.42643608}, {81.1111786, 35.5792593}},
+{{77.853445, 82.8493315}, {63.5749823, 59.3570561}, {61.1190571, 42.8070764}},
+{{61.1190571, 42.8070764}, {58.6631319, 26.2570968}, {64.5348786, 22.8899965}},
+{{64.5348786, 22.8899965}, {70.4066254, 19.5228963}, {81.1111786, 35.5792593}},
+</div>
+
+<div id="cubic3x2">
+{{38.2012882, 49.0499648}, {82.7576585, 7.96646616}, {92.3967278, 11.8042378}, {93.8251679, 19.597347}},
+{{38.2012882, 49.0499648}, {58.8845939, 29.9787846}, {72.1076941, 21.4229661}},
+{{72.1076941, 21.4229661}, {83.1166319, 14.2997899}, {88.6707154, 14.6399404}},
+{{88.6707154, 14.6399404}, {92.9647013, 14.9029184}, {93.8251679, 19.597347}},
+</div>
+
+<div id="cubic3x2x">
+{{38.2012882, 49.0499648}, {82.7576585, 7.96646616}, {92.3967278, 11.8042378}, {93.8251679, 19.597347}},
+{{38.2012882, 49.0499648}, {60.2321893, 28.8875296}, {72.1076941, 21.4229661}},
+{{72.1076941, 21.4229661}, {83.983199, 13.9584026}, {88.6707154, 14.6399404}},
+{{88.6707154, 14.6399404}, {93.3582319, 15.3214782}, {93.8251679, 19.597347}},
+</div>
+
+<div id="cubic3x3">
+{{52.7120295, 31.0801866}, {64.6964272, 52.8517052}, {78.6098203, 95.2490945}, {51.5310243, 81.9254304}},
+{{52.7120295, 31.0801866}, {59.5211432, 43.4499986}, {63.7497522, 56.8993316}},
+{{63.7497522, 56.8993316}, {68.6258107, 72.4079153}, {66.5354307, 79.5030739}},
+{{66.5354307, 79.5030739}, {64.0124137, 88.0666872}, {51.5310243, 81.9254304}},
+</div>
+
+<div id="cubic3x3x">
+{{52.7120295, 31.0801866}, {64.6964272, 52.8517052}, {78.6098203, 95.2490945}, {51.5310243, 81.9254304}},
+{{52.7120295, 31.0801866}, {59.1016467, 42.6728619}, {63.7497522, 56.8993316}},
+{{63.7497522, 56.8993316}, {68.3978576, 71.1258013}, {66.5354307, 79.5030739}},
+{{66.5354307, 79.5030739}, {64.6730039, 87.8803465}, {51.5310243, 81.9254304}},
+</div>
+
+<div id="cubic3x4">
+{{20.7082833, 44.1170772}, {75.7169666, 75.0570675}, {84.1330966, 24.9551825}, {21.7528516, 0.176163297}},
+{{20.7082833, 44.1170772}, {46.6273271, 58.6954113}, {59.2896776, 51.9825439}},
+{{59.2896776, 51.9825439}, {71.1540672, 45.6927106}, {61.4307428, 29.4567029}},
+{{61.4307428, 29.4567029}, {50.807026, 11.71722}, {21.7528516, 0.176163297}},
+</div>
+
+<div id="cubic3x4x">
+{{20.7082833, 44.1170772}, {75.7169666, 75.0570675}, {84.1330966, 24.9551825}, {21.7528516, 0.176163297}},
+{{20.7082833, 44.1170772}, {48.4367344, 58.6022136}, {59.2896776, 51.9825439}},
+{{59.2896776, 51.9825439}, {70.1426209, 45.3628742}, {61.4307428, 29.4567029}},
+{{61.4307428, 29.4567029}, {52.7188646, 13.5505316}, {21.7528516, 0.176163297}},
+</div>
+
+<div id="cubic3x5">
+{{20.8291142, 74.9221559}, {16.6750469, 57.513008}, {21.1249099, 46.360262}, {76.9233116, 50.0985771}},
+{{20.8291142, 74.9221559}, {18.4755741, 65.0587801}, {21.1261573, 59.9182775}},
+{{21.1261573, 59.9182775}, {24.474036, 53.4254499}, {36.6579558, 51.0041468}},
+{{36.6579558, 51.0041468}, {50.2178533, 48.3093965}, {76.9233116, 50.0985771}},
+</div>
+
+<div id="cubic3x5x">
+{{20.8291142, 74.9221559}, {16.6750469, 57.513008}, {21.1249099, 46.360262}, {76.9233116, 50.0985771}},
+{{20.8291142, 74.9221559}, {18.3562971, 66.1376314}, {21.1261573, 59.9182775}},
+{{21.1261573, 59.9182775}, {23.8960175, 53.6989236}, {36.6579558, 51.0041468}},
+{{36.6579558, 51.0041468}, {49.4198942, 48.3093701}, {76.9233116, 50.0985771}},
+</div>
+
+<div id="cubic3x6">
+{{39.306348, 21.7912016}, {44.72463, 86.8568551}, {3.16400146, 77.3725818}, {0.981986477, 4.24671164}},
+{{39.306348, 21.7912016}, {41.8751537, 52.6388057}, {32.26342, 62.4108917}},
+{{32.26342, 62.4108917}, {23.2193358, 71.6058581}, {13.0917792, 55.754704}},
+{{13.0917792, 55.754704}, {2.00097021, 38.3959145}, {0.981986477, 4.24671164}},
+</div>
+
+<div id="cubic3x6x">
+{{39.306348, 21.7912016}, {44.72463, 86.8568551}, {3.16400146, 77.3725818}, {0.981986477, 4.24671164}},
+{{39.306348, 21.7912016}, {41.2158823, 54.2230253}, {32.26342, 62.4108917}},
+{{32.26342, 62.4108917}, {23.3109577, 70.5987581}, {13.0917792, 55.754704}},
+{{13.0917792, 55.754704}, {2.87260067, 40.9106498}, {0.981986477, 4.24671164}},
+</div>
+
+<div id="cubic3x7">
+{{85.4907277, 42.6604079}, {93.4752654, 38.7852218}, {63.2230996, 90.6357313}, {14.7351715, 54.0271501}},
+{{85.4907277, 42.6604079}, {92.9820656, 39.0245896}, {81.4704732, 52.0202764}},
+{{81.4704732, 52.0202764}, {71.0697229, 63.7619094}, {56.4037366, 66.489545}},
+{{56.4037366, 66.489545}, {36.2148038, 70.2443591}, {14.7351715, 54.0271501}},
+</div>
+
+<div id="cubic3x7x">
+{{85.4907277, 42.6604079}, {93.4752654, 38.7852218}, {63.2230996, 90.6357313}, {14.7351715, 54.0271501}},
+{{85.4907277, 42.6604079}, {89.2978026, 42.0578592}, {81.4704732, 52.0202764}},
+{{81.4704732, 52.0202764}, {73.6431437, 61.9826936}, {56.4037366, 66.489545}},
+{{56.4037366, 66.489545}, {39.1643295, 70.9963964}, {14.7351715, 54.0271501}},
+</div>
+
+<div id="cubic3x8">
+{{95.2957887, 36.3209844}, {46.7852652, 19.9519225}, {31.9607143, 63.7251956}, {29.3620354, 87.7284659}},
+{{95.2957887, 36.3209844}, {73.0036621, 28.7988805}, {57.2191042, 37.0396513}},
+{{57.2191042, 37.0396513}, {44.4309585, 43.7160611}, {36.8308235, 60.0949108}},
+{{36.8308235, 60.0949108}, {30.9912846, 72.6795466}, {29.3620354, 87.7284659}},
+</div>
+
+<div id="cubic3x8x">
+{{95.2957887, 36.3209844}, {46.7852652, 19.9519225}, {31.9607143, 63.7251956}, {29.3620354, 87.7284659}},
+{{95.2957887, 36.3209844}, {71.2392316, 28.8763825}, {57.2191042, 37.0396513}},
+{{57.2191042, 37.0396513}, {43.1989768, 45.20292}, {36.8308235, 60.0949108}},
+{{36.8308235, 60.0949108}, {30.4626702, 74.9869017}, {29.3620354, 87.7284659}},
+</div>
+
+<div id="cubic3x9">
+{{11.6274826, 23.1005334}, {50.665531, 35.5788199}, {73.2259434, 8.43082047}, {96.7997166, 12.8374226}},
+{{11.6274826, 23.1005334}, {26.8690196, 27.9724026}, {42.2684837, 25.6341105}},
+{{42.2684837, 25.6341105}, {51.3514943, 24.254924}, {67.0182186, 18.4582098}},
+{{67.0182186, 18.4582098}, {87.1065443, 11.0254957}, {96.7997166, 12.8374226}},
+</div>
+
+<div id="cubic3x9x">
+{{11.6274826, 23.1005334}, {50.665531, 35.5788199}, {73.2259434, 8.43082047}, {96.7997166, 12.8374226}},
+{{11.6274826, 23.1005334}, {28.7555518, 28.1569895}, {42.2684837, 25.6341105}},
+{{42.2684837, 25.6341105}, {55.7814156, 23.1112314}, {67.0182186, 18.4582098}},
+{{67.0182186, 18.4582098}, {82.5639521, 11.3566582}, {96.7997166, 12.8374226}},
+</div>
+
+<div id="cubic4x0">
+{{24.2578299, 1.34695745}, {38.313885, 41.465269}, {6.77689729, 99.312693}, {48.4308047, 76.5337766}},
+{{24.2578299, 1.34695745}, {27.9750096, 11.9564045}, {28.1705087, 26.7539994}},
+{{28.1705087, 26.7539994}, {28.2848367, 35.4076429}, {26.8433323, 51.6959666}},
+{{26.8433323, 51.6959666}, {24.9672902, 72.8943612}, {27.4957684, 77.9195086}},
+{{27.4957684, 77.9195086}, {31.4664535, 85.8109263}, {48.4308047, 76.5337766}},
+</div>
+
+<div id="cubic4x0x">
+{{24.2578299, 1.34695745}, {38.313885, 41.465269}, {6.77689729, 99.312693}, {48.4308047, 76.5337766}},
+{{24.2578299, 1.34695745}, {28.2364584, 13.5769276}, {28.1705087, 26.7539994}},
+{{28.1705087, 26.7539994}, {28.104559, 39.9310711}, {26.8433323, 51.6959666}},
+{{26.8433323, 51.6959666}, {24.5051265, 69.7176532}, {27.4957684, 77.9195086}},
+{{27.4957684, 77.9195086}, {30.4864104, 86.121364}, {48.4308047, 76.5337766}},
+</div>
+
+<div id="cubic4x1">
+{{3.18338154, 3.09354817}, {93.264044, 88.7879534}, {59.132973, 47.8778685}, {83.3354337, 18.6335197}},
+{{3.18338154, 3.09354817}, {35.8260971, 34.1468066}, {48.9325859, 44.6922254}},
+{{48.9325859, 44.6922254}, {62.4915199, 55.6016796}, {67.1257676, 54.3074276}},
+{{67.1257676, 54.3074276}, {70.2512267, 53.4345498}, {72.6465479, 43.2128608}},
+{{72.6465479, 43.2128608}, {76.4594277, 26.9419442}, {83.3354337, 18.6335197}},
+</div>
+
+<div id="cubic4x1x">
+{{3.18338154, 3.09354817}, {93.264044, 88.7879534}, {59.132973, 47.8778685}, {83.3354337, 18.6335197}},
+{{3.18338154, 3.09354817}, {34.807442, 33.2979688}, {48.9325859, 44.6922254}},
+{{48.9325859, 44.6922254}, {63.0577297, 56.086482}, {67.1257676, 54.3074276}},
+{{67.1257676, 54.3074276}, {71.1938054, 52.5283732}, {72.6465479, 43.2128608}},
+{{72.6465479, 43.2128608}, {74.0679283, 31.8888383}, {83.3354337, 18.6335197}},
+</div>
+
+<div id="cubic4x2">
+{{5.3607232, 97.6747591}, {19.6754743, 85.6972941}, {14.421376, 80.0662188}, {72.9397619, 98.5790647}},
+{{5.3607232, 97.6747591}, {7.15867444, 96.170374}, {9.99357731, 93.4972246}},
+{{9.99357731, 93.4972246}, {15.4658237, 88.3372129}, {19.1058065, 87.2914549}},
+{{19.1058065, 87.2914549}, {24.5745003, 85.7203128}, {35.9606711, 88.1040392}},
+{{35.9606711, 88.1040392}, {47.3960315, 90.4980635}, {72.9397619, 98.5790647}},
+</div>
+
+<div id="cubic4x2x">
+{{5.3607232, 97.6747591}, {19.6754743, 85.6972941}, {14.421376, 80.0662188}, {72.9397619, 98.5790647}},
+{{5.3607232, 97.6747591}, {8.01636596, 95.4093652}, {9.99357731, 93.4972246}},
+{{9.99357731, 93.4972246}, {14.161732, 88.9702622}, {19.1058065, 87.2914549}},
+{{19.1058065, 87.2914549}, {24.0498811, 85.6126476}, {35.9606711, 88.1040392}},
+{{35.9606711, 88.1040392}, {47.871461, 90.5954307}, {72.9397619, 98.5790647}},
+</div>
+
+<div id="cubic4x3">
+{{18.340571, 49.9760211}, {46.9862021, 97.0991299}, {45.0770262, 9.57918773}, {97.4081647, 39.0235061}},
+{{18.340571, 49.9760211}, {27.6759966, 65.333137}, {34.9254897, 64.1054159}},
+{{34.9254897, 64.1054159}, {39.46946, 63.3358824}, {47.9840785, 52.4199142}},
+{{47.9840785, 52.4199142}, {58.4594697, 38.9901831}, {66.2068641, 35.3036404}},
+{{66.2068641, 35.3036404}, {79.5296469, 28.9640886}, {97.4081647, 39.0235061}},
+</div>
+
+<div id="cubic4x3x">
+{{18.340571, 49.9760211}, {46.9862021, 97.0991299}, {45.0770262, 9.57918773}, {97.4081647, 39.0235061}},
+{{18.340571, 49.9760211}, {28.406995, 66.1423531}, {34.9254897, 64.1054159}},
+{{34.9254897, 64.1054159}, {41.4439844, 62.0684788}, {47.9840785, 52.4199142}},
+{{47.9840785, 52.4199142}, {54.9532374, 41.9238105}, {66.2068641, 35.3036404}},
+{{66.2068641, 35.3036404}, {77.4604907, 28.6834703}, {97.4081647, 39.0235061}},
+</div>
+
+<div id="cubic4x4">
+{{68.0670356, 2.66693188}, {23.1241074, 46.8739094}, {9.79601006, 41.5410025}, {79.6294187, 31.6402602}},
+{{68.0670356, 2.66693188}, {56.7853646, 13.7638629}, {41.0137122, 27.3042275}},
+{{41.0137122, 27.3042275}, {29.788878, 36.941033}, {31.0433353, 38.0354879}},
+{{31.0433353, 38.0354879}, {32.2977925, 39.1299429}, {51.0493703, 36.059867}},
+{{51.0493703, 36.059867}, {67.7999464, 33.3174024}, {79.6294187, 31.6402602}},
+</div>
+
+<div id="cubic4x4x">
+{{68.0670356, 2.66693188}, {23.1241074, 46.8739094}, {9.79601006, 41.5410025}, {79.6294187, 31.6402602}},
+{{68.0670356, 2.66693188}, {50.940695, 19.1344928}, {41.0137122, 27.3042275}},
+{{41.0137122, 27.3042275}, {29.4752637, 36.6674193}, {31.0433353, 38.0354879}},
+{{31.0433353, 38.0354879}, {32.6114068, 39.4035566}, {51.0493703, 36.059867}},
+{{51.0493703, 36.059867}, {61.9478496, 34.2106234}, {79.6294187, 31.6402602}},
+</div>
+
+<div id="cubic4x5">
+{{80.6109054, 27.4877124}, {85.9817399, 95.1019056}, {77.7276185, 68.083746}, {83.5185407, 96.1129614}},
+{{80.6109054, 27.4877124}, {82.5499811, 51.8990092}, {82.5259477, 65.0368853}},
+{{82.5259477, 65.0368853}, {82.5124299, 72.4264589}, {81.7002161, 78.1564815}},
+{{81.7002161, 78.1564815}, {81.2315331, 81.462956}, {81.4316783, 83.8990214}},
+{{81.4316783, 83.8990214}, {81.7199102, 87.4072321}, {83.5185407, 96.1129614}},
+</div>
+
+<div id="cubic4x5x">
+{{80.6109054, 27.4877124}, {85.9817399, 95.1019056}, {77.7276185, 68.083746}, {83.5185407, 96.1129614}},
+{{80.6109054, 27.4877124}, {82.6925268, 54.7439407}, {82.5259477, 65.0368853}},
+{{82.5259477, 65.0368853}, {82.3593687, 75.3298298}, {81.7002161, 78.1564815}},
+{{81.7002161, 78.1564815}, {81.2086421, 80.6624342}, {81.4316783, 83.8990214}},
+{{81.4316783, 83.8990214}, {81.6547145, 87.1356086}, {83.5185407, 96.1129614}},
+</div>
+
+<div id="cubic4x6">
+{{70.5424749, 7.37512261}, {53.6857094, 95.7185581}, {41.8065019, 41.8776796}, {38.1617001, 83.6927474}},
+{{70.5424749, 7.37512261}, {64.0240124, 41.5372735}, {57.0495799, 54.4661558}},
+{{57.0495799, 54.4661558}, {53.0372544, 61.9040203}, {46.633996, 64.0865108}},
+{{46.633996, 64.0865108}, {42.8562175, 65.3741311}, {41.4346736, 67.9484678}},
+{{41.4346736, 67.9484678}, {39.1777978, 72.0355437}, {38.1617001, 83.6927474}},
+</div>
+
+<div id="cubic4x6x">
+{{70.5424749, 7.37512261}, {53.6857094, 95.7185581}, {41.8065019, 41.8776796}, {38.1617001, 83.6927474}},
+{{70.5424749, 7.37512261}, {63.0887524, 44.8198844}, {57.0495799, 54.4661558}},
+{{57.0495799, 54.4661558}, {51.0104074, 64.1124273}, {46.633996, 64.0865108}},
+{{46.633996, 64.0865108}, {43.5741104, 64.6069899}, {41.4346736, 67.9484678}},
+{{41.4346736, 67.9484678}, {39.2952367, 71.2899457}, {38.1617001, 83.6927474}},
+</div>
+
+<div id="cubic4x7">
+{{24.0062249, 72.6211198}, {43.1612821, 11.6690897}, {22.3913226, 30.9587957}, {24.4801394, 37.7033828}},
+{{24.0062249, 72.6211198}, {30.5430063, 51.8208637}, {31.8675739, 40.5026282}},
+{{31.8675739, 40.5026282}, {32.9179067, 31.5276894}, {30.6430223, 29.7760199}},
+{{30.6430223, 29.7760199}, {28.7741669, 28.3369942}, {26.2185506, 31.7425273}},
+{{26.2185506, 31.7425273}, {23.6812077, 35.1237098}, {24.4801394, 37.7033828}},
+</div>
+
+<div id="cubic4x7x">
+{{24.0062249, 72.6211198}, {43.1612821, 11.6690897}, {22.3913226, 30.9587957}, {24.4801394, 37.7033828}},
+{{24.0062249, 72.6211198}, {30.9441221, 50.1265572}, {31.8675739, 40.5026282}},
+{{31.8675739, 40.5026282}, {32.7910257, 30.8786991}, {30.6430223, 29.7760199}},
+{{30.6430223, 29.7760199}, {28.4950189, 28.6733406}, {26.2185506, 31.7425273}},
+{{26.2185506, 31.7425273}, {23.9420823, 34.811714}, {24.4801394, 37.7033828}},
+</div>
+
+<div id="cubic4x8">
+{{83.4128604, 19.944285}, {3.59808416, 73.0005231}, {19.791118, 29.3197498}, {77.0346567, 21.4750355}},
+{{83.4128604, 19.944285}, {56.4409479, 37.8736494}, {40.6945347, 43.6697281}},
+{{40.6945347, 43.6697281}, {27.6832174, 48.4590486}, {28.8268904, 43.5475174}},
+{{28.8268904, 43.5475174}, {29.9619906, 38.6728026}, {42.6576802, 32.0063781}},
+{{42.6576802, 32.0063781}, {57.6563877, 24.1306537}, {77.0346567, 21.4750355}},
+</div>
+
+<div id="cubic4x8x">
+{{83.4128604, 19.944285}, {3.59808416, 73.0005231}, {19.791118, 29.3197498}, {77.0346567, 21.4750355}},
+{{83.4128604, 19.944285}, {53.6969963, 39.3225107}, {40.6945347, 43.6697281}},
+{{40.6945347, 43.6697281}, {27.6920731, 48.0169456}, {28.8268904, 43.5475174}},
+{{28.8268904, 43.5475174}, {29.9617077, 39.0780892}, {42.6576802, 32.0063781}},
+{{42.6576802, 32.0063781}, {55.3536527, 24.9346669}, {77.0346567, 21.4750355}},
+</div>
+
+<div id="cubic4x9">
+{{13.6133623, 99.7800201}, {2.79733483, 14.8064674}, {52.2975031, 64.1339272}, {98.9146078, 57.8132952}},
+{{13.6133623, 99.7800201}, {10.1036384, 72.2067072}, {14.9007617, 60.2808941}},
+{{14.9007617, 60.2808941}, {19.0431228, 49.9828423}, {30.5807774, 49.2954321}},
+{{30.5807774, 49.2954321}, {37.7022355, 48.8711377}, {56.117561, 53.190874}},
+{{56.117561, 53.190874}, {84.2814202, 59.7973522}, {98.9146078, 57.8132952}},
+</div>
+
+<div id="cubic4x9x">
+{{13.6133623, 99.7800201}, {2.79733483, 14.8064674}, {52.2975031, 64.1339272}, {98.9146078, 57.8132952}},
+{{13.6133623, 99.7800201}, {10.0919269, 71.197946}, {14.9007617, 60.2808941}},
+{{14.9007617, 60.2808941}, {19.7095965, 49.3638421}, {30.5807774, 49.2954321}},
+{{30.5807774, 49.2954321}, {41.4519583, 49.2270222}, {56.117561, 53.190874}},
+{{56.117561, 53.190874}, {76.476137, 59.3205959}, {98.9146078, 57.8132952}},
+</div>
+
+<div id="cubic5x0">
+{{73.5652707, 11.5053172}, {69.8658631, 35.5604111}, {63.8300007, 90.8210508}, {29.4000415, 26.4971589}},
+{{73.5652707, 11.5053172}, {73.3885843, 12.654206}, {73.0163837, 15.1491032}},
+{{73.0163837, 15.1491032}, {70.9175181, 29.2180034}, {69.2121151, 36.2586021}},
+{{69.2121151, 36.2586021}, {66.2435432, 48.5140774}, {62.0808557, 53.3239452}},
+{{62.0808557, 53.3239452}, {56.8541433, 59.3632637}, {49.5132747, 54.1388813}},
+{{49.5132747, 54.1388813}, {40.9233022, 48.0255311}, {29.4000415, 26.4971589}},
+</div>
+
+<div id="cubic5x0x">
+{{73.5652707, 11.5053172}, {69.8658631, 35.5604111}, {63.8300007, 90.8210508}, {29.4000415, 26.4971589}},
+{{73.5652707, 11.5053172}, {73.3009509, 13.2327574}, {73.0163837, 15.1491032}},
+{{73.0163837, 15.1491032}, {71.6823308, 25.1891102}, {69.2121151, 36.2586021}},
+{{69.2121151, 36.2586021}, {66.7418995, 47.328094}, {62.0808557, 53.3239452}},
+{{62.0808557, 53.3239452}, {57.4198119, 59.3197964}, {49.5132747, 54.1388813}},
+{{49.5132747, 54.1388813}, {41.6067374, 48.9579661}, {29.4000415, 26.4971589}},
+</div>
+
+<div id="cubic5x1">
+{{80.7539402, 31.4736433}, {77.5229567, 28.3334108}, {99.6348716, 63.2867312}, {60.0910899, 50.9480224}},
+{{80.7539402, 31.4736433}, {80.1293736, 30.8666193}, {81.0927918, 33.3061348}},
+{{81.0927918, 33.3061348}, {82.7770389, 37.5708941}, {83.4256875, 40.319949}},
+{{83.4256875, 40.319949}, {84.5951485, 45.2762733}, {83.5574674, 48.3997103}},
+{{83.5574674, 48.3997103}, {82.2131806, 52.4460356}, {77.2064841, 53.3431558}},
+{{77.2064841, 53.3431558}, {71.2104332, 54.4175525}, {60.0910899, 50.9480224}},
+</div>
+
+<div id="cubic5x1x">
+{{80.7539402, 31.4736433}, {77.5229567, 28.3334108}, {99.6348716, 63.2867312}, {60.0910899, 50.9480224}},
+{{80.7539402, 31.4736433}, {79.9741932, 30.7172975}, {81.0927918, 33.3061348}},
+{{81.0927918, 33.3061348}, {82.2743126, 36.0212723}, {83.4256875, 40.319949}},
+{{83.4256875, 40.319949}, {84.5770623, 44.6186258}, {83.5574674, 48.3997103}},
+{{83.5574674, 48.3997103}, {82.5378725, 52.1807949}, {77.2064841, 53.3431558}},
+{{77.2064841, 53.3431558}, {71.8750956, 54.5055166}, {60.0910899, 50.9480224}},
+</div>
+
+<div id="cubic5x2">
+{{30.9220007, 6.06626757}, {55.7590106, 41.691652}, {11.5944877, 68.5545306}, {95.99508, 89.3088364}},
+{{30.9220007, 6.06626757}, {36.6680413, 14.3081978}, {38.6632502, 23.8943374}},
+{{38.6632502, 23.8943374}, {39.8467707, 29.5806556}, {40.109652, 40.2122054}},
+{{40.109652, 40.2122054}, {40.4211241, 52.8088852}, {42.588681, 58.5795625}},
+{{42.588681, 58.5795625}, {46.141784, 68.0389732}, {57.1660752, 74.8906876}},
+{{57.1660752, 74.8906876}, {70.1317224, 82.9489754}, {95.99508, 89.3088364}},
+</div>
+
+<div id="cubic5x2x">
+{{30.9220007, 6.06626757}, {55.7590106, 41.691652}, {11.5944877, 68.5545306}, {95.99508, 89.3088364}},
+{{30.9220007, 6.06626757}, {37.1487855, 15.3683637}, {38.6632502, 23.8943374}},
+{{38.6632502, 23.8943374}, {40.1777149, 32.4203112}, {40.109652, 40.2122054}},
+{{40.109652, 40.2122054}, {39.8437309, 49.9303489}, {42.588681, 58.5795625}},
+{{42.588681, 58.5795625}, {45.3336311, 67.2287761}, {57.1660752, 74.8906876}},
+{{57.1660752, 74.8906876}, {68.9985192, 82.5525991}, {95.99508, 89.3088364}},
+</div>
+
+<div id="cubic5x3">
+{{74.7743754, 32.9274563}, {11.7577089, 11.8127863}, {37.4985242, 37.696964}, {72.8744837, 1.44809908}},
+{{74.7743754, 32.9274563}, {60.7273344, 28.2207866}, {49.5992486, 25.6169692}},
+{{49.5992486, 25.6169692}, {43.5981152, 24.2127874}, {37.944249, 23.3667683}},
+{{37.944249, 23.3667683}, {35.9715145, 23.0715771}, {37.4878767, 22.7373028}},
+{{37.4878767, 22.7373028}, {44.1459136, 21.2695724}, {50.3950023, 18.2059418}},
+{{50.3950023, 18.2059418}, {62.1391178, 12.4483612}, {72.8744837, 1.44809908}},
+</div>
+
+<div id="cubic5x3x">
+{{74.7743754, 32.9274563}, {11.7577089, 11.8127863}, {37.4985242, 37.696964}, {72.8744837, 1.44809908}},
+{{74.7743754, 32.9274563}, {58.4980331, 27.5812922}, {49.5992486, 25.6169692}},
+{{49.5992486, 25.6169692}, {40.7004642, 23.6526461}, {37.944249, 23.3667683}},
+{{37.944249, 23.3667683}, {35.0992403, 23.0813479}, {37.4878767, 22.7373028}},
+{{37.4878767, 22.7373028}, {40.7578786, 22.4379602}, {50.3950023, 18.2059418}},
+{{50.3950023, 18.2059418}, {60.0321261, 13.9739234}, {72.8744837, 1.44809908}},
+</div>
+
+<div id="cubic5x4">
+{{72.6117562, 85.7863012}, {10.3637705, 83.8910282}, {56.5110395, 81.0400843}, {40.6969416, 93.4977145}},
+{{72.6117562, 85.7863012}, {59.583082, 85.3896153}, {50.1257271, 84.8566602}},
+{{50.1257271, 84.8566602}, {45.0042708, 84.5680481}, {40.4221343, 84.1941021}},
+{{40.4221343, 84.1941021}, {38.6138335, 84.0465275}, {39.3498335, 84.2964765}},
+{{39.3498335, 84.2964765}, {42.6031074, 85.4013033}, {43.6650027, 86.8548971}},
+{{43.6650027, 86.8548971}, {45.661047, 89.587217}, {40.6969416, 93.4977145}},
+</div>
+
+<div id="cubic5x4x">
+{{72.6117562, 85.7863012}, {10.3637705, 83.8910282}, {56.5110395, 81.0400843}, {40.6969416, 93.4977145}},
+{{72.6117562, 85.7863012}, {57.6253009, 85.3070124}, {50.1257271, 84.8566602}},
+{{50.1257271, 84.8566602}, {42.6261532, 84.4063079}, {40.4221343, 84.1941021}},
+{{40.4221343, 84.1941021}, {37.9777583, 83.9471466}, {39.3498335, 84.2964765}},
+{{39.3498335, 84.2964765}, {41.4441267, 84.7344658}, {43.6650027, 86.8548971}},
+{{43.6650027, 86.8548971}, {45.8858786, 88.9753284}, {40.6969416, 93.4977145}},
+</div>
+
+<div id="cubic5x5">
+{{49.5466436, 30.4382438}, {75.5627334, 82.8610433}, {45.5550553, 43.8144668}, {89.743077, 11.8944428}},
+{{49.5466436, 30.4382438}, {54.1919031, 39.7985093}, {58.8653675, 50.331813}},
+{{58.8653675, 50.331813}, {61.2282341, 55.6573679}, {61.7133948, 56.0247083}},
+{{61.7133948, 56.0247083}, {62.1985554, 56.3920486}, {62.7466525, 53.2705356}},
+{{62.7466525, 53.2705356}, {64.4490529, 43.5750541}, {68.2227928, 36.1296005}},
+{{68.2227928, 36.1296005}, {75.1711506, 22.4207397}, {89.743077, 11.8944428}},
+</div>
+
+<div id="cubic5x5x">
+{{49.5466436, 30.4382438}, {75.5627334, 82.8610433}, {45.5550553, 43.8144668}, {89.743077, 11.8944428}},
+{{49.5466436, 30.4382438}, {56.3292139, 44.3383274}, {58.8653675, 50.331813}},
+{{58.8653675, 50.331813}, {61.106944, 55.5655329}, {61.7133948, 56.0247083}},
+{{61.7133948, 56.0247083}, {62.3198455, 56.4838837}, {62.7466525, 53.2705356}},
+{{62.7466525, 53.2705356}, {63.1064311, 47.7098594}, {68.2227928, 36.1296005}},
+{{68.2227928, 36.1296005}, {73.3391545, 24.5493417}, {89.743077, 11.8944428}},
+</div>
+
+<div id="cubic5x6">
+{{24.3042985, 82.344259}, {59.9615856, 74.3697725}, {32.7666043, 8.31767205}, {95.114078, 82.3081283}},
+{{24.3042985, 82.344259}, {33.0316107, 80.3924607}, {38.6135161, 73.199581}},
+{{38.6135161, 73.199581}, {41.8734961, 68.9987494}, {45.7986582, 59.6541823}},
+{{45.7986582, 59.6541823}, {49.7161349, 50.3279117}, {52.6598645, 48.50717}},
+{{52.6598645, 48.50717}, {57.3512738, 45.6054619}, {66.2796867, 52.394109}},
+{{66.2796867, 52.394109}, {76.3758191, 60.0706222}, {95.114078, 82.3081283}},
+</div>
+
+<div id="cubic5x6x">
+{{24.3042985, 82.344259}, {59.9615856, 74.3697725}, {32.7666043, 8.31767205}, {95.114078, 82.3081283}},
+{{24.3042985, 82.344259}, {33.965356, 79.8151924}, {38.6135161, 73.199581}},
+{{38.6135161, 73.199581}, {43.2616761, 66.5839696}, {45.7986582, 59.6541823}},
+{{45.7986582, 59.6541823}, {48.5966015, 51.6963295}, {52.6598645, 48.50717}},
+{{52.6598645, 48.50717}, {56.7231274, 45.3180106}, {66.2796867, 52.394109}},
+{{66.2796867, 52.394109}, {75.8362459, 59.4702074}, {95.114078, 82.3081283}},
+</div>
+
+<div id="cubic5x7">
+{{14.6365061, 95.7588134}, {18.3773411, 67.9719648}, {4.8126874, 86.837213}, {73.0391371, 68.7771361}},
+{{14.6365061, 95.7588134}, {15.2275148, 91.3688129}, {15.5044612, 85.7525859}},
+{{15.5044612, 85.7525859}, {15.7576453, 80.618239}, {16.904617, 79.6508905}},
+{{16.904617, 79.6508905}, {18.0515887, 78.683542}, {24.680235, 78.0137979}},
+{{24.680235, 78.0137979}, {33.9302732, 77.0791942}, {41.7459023, 75.745697}},
+{{41.7459023, 75.745697}, {55.7221394, 73.3610813}, {73.0391371, 68.7771361}},
+</div>
+
+<div id="cubic5x7x">
+{{14.6365061, 95.7588134}, {18.3773411, 67.9719648}, {4.8126874, 86.837213}, {73.0391371, 68.7771361}},
+{{14.6365061, 95.7588134}, {15.4253236, 89.2562084}, {15.5044612, 85.7525859}},
+{{15.5044612, 85.7525859}, {15.4709024, 80.8600761}, {16.904617, 79.6508905}},
+{{16.904617, 79.6508905}, {18.3383317, 78.4417048}, {24.680235, 78.0137979}},
+{{24.680235, 78.0137979}, {30.2055996, 77.5914828}, {41.7459023, 75.745697}},
+{{41.7459023, 75.745697}, {53.2862049, 73.8999113}, {73.0391371, 68.7771361}},
+</div>
+
+<div id="cubic5x8">
+{{11.3940197, 99.2884769}, {41.4314282, 38.0142946}, {6.25007991, 45.0930539}, {78.9565565, 22.8458219}},
+{{11.3940197, 99.2884769}, {17.9356966, 85.9439202}, {21.7417223, 74.0130457}},
+{{21.7417223, 74.0130457}, {23.9251358, 67.1686272}, {26.0700343, 57.3329391}},
+{{26.0700343, 57.3329391}, {28.2750992, 47.2213507}, {30.7090957, 43.764797}},
+{{30.7090957, 43.764797}, {34.2237869, 38.7735329}, {44.5059747, 34.4313542}},
+{{44.5059747, 34.4313542}, {53.4825656, 30.6405304}, {78.9565565, 22.8458219}},
+</div>
+
+<div id="cubic5x8x">
+{{11.3940197, 99.2884769}, {41.4314282, 38.0142946}, {6.25007991, 45.0930539}, {78.9565565, 22.8458219}},
+{{11.3940197, 99.2884769}, {18.6635437, 84.168545}, {21.7417223, 74.0130457}},
+{{21.7417223, 74.0130457}, {24.8199009, 63.8575464}, {26.0700343, 57.3329391}},
+{{26.0700343, 57.3329391}, {27.5370962, 48.6793447}, {30.7090957, 43.764797}},
+{{30.7090957, 43.764797}, {33.8810951, 38.8502494}, {44.5059747, 34.4313542}},
+{{44.5059747, 34.4313542}, {55.1308542, 30.012459}, {78.9565565, 22.8458219}},
+</div>
+
+<div id="cubic5x9">
+{{69.7292014, 38.6877352}, {24.7648688, 23.1501713}, {84.9283191, 90.2588441}, {80.392774, 61.3533852}},
+{{69.7292014, 38.6877352}, {57.2585085, 34.3784487}, {54.0073216, 37.8534623}},
+{{54.0073216, 37.8534623}, {51.2791269, 40.7694784}, {55.3644243, 48.2785885}},
+{{55.3644243, 48.2785885}, {59.0228346, 55.0030454}, {65.6488241, 61.3874162}},
+{{65.6488241, 61.3874162}, {72.4185069, 67.9102405}, {76.7088359, 68.6042477}},
+{{76.7088359, 68.6042477}, {81.6560742, 69.4045171}, {80.392774, 61.3533852}},
+</div>
+
+<div id="cubic5x9x">
+{{69.7292014, 38.6877352}, {24.7648688, 23.1501713}, {84.9283191, 90.2588441}, {80.392774, 61.3533852}},
+{{69.7292014, 38.6877352}, {56.5795552, 34.3837867}, {54.0073216, 37.8534623}},
+{{54.0073216, 37.8534623}, {51.4350879, 41.3231378}, {55.3644243, 48.2785885}},
+{{55.3644243, 48.2785885}, {59.2937606, 55.2340392}, {65.6488241, 61.3874162}},
+{{65.6488241, 61.3874162}, {72.0038877, 67.5407932}, {76.7088359, 68.6042477}},
+{{76.7088359, 68.6042477}, {81.413784, 69.6677022}, {80.392774, 61.3533852}},
+</div>
+
+<div id="cubic6x0">
+{{60.7765365, 71.2493073}, {87.1078942, 22.3776699}, {1.49747543, 68.0695699}, {45.2619466, 17.5360766}},
+{{60.7765365, 71.2493073}, {66.8034381, 60.063232}, {65.7606554, 53.9755229}},
+{{65.7606554, 53.9755229}, {64.9026034, 48.9662616}, {59.0403561, 46.9365029}},
+{{59.0403561, 46.9365029}, {55.5624487, 45.7323037}, {47.0319968, 45.0593685}},
+{{47.0319968, 45.0593685}, {38.6438055, 44.3976557}, {35.915024, 43.1681828}},
+{{35.915024, 43.1681828}, {31.4270492, 41.1460923}, {32.9921574, 35.8381417}},
+{{32.9921574, 35.8381417}, {34.8405988, 29.5692874}, {45.2619466, 17.5360766}},
+</div>
+
+<div id="cubic6x0x">
+{{60.7765365, 71.2493073}, {87.1078942, 22.3776699}, {1.49747543, 68.0695699}, {45.2619466, 17.5360766}},
+{{60.7765365, 71.2493073}, {66.9967453, 59.4196142}, {65.7606554, 53.9755229}},
+{{65.7606554, 53.9755229}, {64.5245656, 48.5314316}, {59.0403561, 46.9365029}},
+{{59.0403561, 46.9365029}, {53.5561467, 45.3415741}, {47.0319968, 45.0593685}},
+{{47.0319968, 45.0593685}, {40.2998025, 44.7818435}, {35.915024, 43.1681828}},
+{{35.915024, 43.1681828}, {31.5302455, 41.5545222}, {32.9921574, 35.8381417}},
+{{32.9921574, 35.8381417}, {34.4540694, 30.1217612}, {45.2619466, 17.5360766}},
+</div>
+
+<div id="cubic6x1">
+{{7.56463181, 38.7667716}, {53.1298274, 53.009038}, {22.9012888, 1.96013199}, {43.9383991, 72.6733402}},
+{{7.56463181, 38.7667716}, {18.0499753, 42.0441646}, {24.9041761, 41.2832621}},
+{{24.9041761, 41.2832621}, {30.0084481, 40.7166236}, {32.7855974, 37.9676099}},
+{{32.7855974, 37.9676099}, {34.25762, 36.5105005}, {35.0000192, 34.4010014}},
+{{35.0000192, 34.4010014}, {35.1477005, 33.9813707}, {35.2051475, 34.7029855}},
+{{35.2051475, 34.7029855}, {35.5299907, 38.7834725}, {36.7160087, 44.7150792}},
+{{36.7160087, 44.7150792}, {38.9607709, 55.9417619}, {43.9383991, 72.6733402}},
+</div>
+
+<div id="cubic6x1x">
+{{7.56463181, 38.7667716}, {53.1298274, 53.009038}, {22.9012888, 1.96013199}, {43.9383991, 72.6733402}},
+{{7.56463181, 38.7667716}, {19.0728251, 42.1807008}, {24.9041761, 41.2832621}},
+{{24.9041761, 41.2832621}, {30.7355271, 40.3858233}, {32.7855974, 37.9676099}},
+{{32.7855974, 37.9676099}, {34.8356678, 35.5493964}, {35.0000192, 34.4010014}},
+{{35.0000192, 34.4010014}, {35.1702591, 33.6960593}, {35.2051475, 34.7029855}},
+{{35.2051475, 34.7029855}, {35.1391248, 36.1152585}, {36.7160087, 44.7150792}},
+{{36.7160087, 44.7150792}, {38.2928925, 53.3148999}, {43.9383991, 72.6733402}},
+</div>
+
+<div id="cubic6x2">
+{{53.4808373, 52.4330519}, {42.3039286, 2.12741392}, {55.4457253, 76.3045082}, {49.8689114, 46.7937026}},
+{{53.4808373, 52.4330519}, {50.9719376, 41.1408598}, {49.8115514, 36.9274013}},
+{{49.8115514, 36.9274013}, {48.82027, 33.3279765}, {48.8115145, 34.8928161}},
+{{48.8115145, 34.8928161}, {48.8045445, 36.1385203}, {49.4292469, 40.7546742}},
+{{49.4292469, 40.7546742}, {49.7879548, 43.4052983}, {50.613269, 48.9383534}},
+{{50.613269, 48.9383534}, {51.3518777, 53.8901197}, {51.31236, 53.9808933}},
+{{51.31236, 53.9808933}, {51.2529165, 54.1174374}, {49.8689114, 46.7937026}},
+</div>
+
+<div id="cubic6x2x">
+{{53.4808373, 52.4330519}, {42.3039286, 2.12741392}, {55.4457253, 76.3045082}, {49.8689114, 46.7937026}},
+{{53.4808373, 52.4330519}, {50.8474472, 40.6156325}, {49.8115514, 36.9274013}},
+{{49.8115514, 36.9274013}, {48.7756556, 33.2391701}, {48.8115145, 34.8928161}},
+{{48.8115145, 34.8928161}, {48.8473733, 36.5464621}, {49.4292469, 40.7546742}},
+{{49.4292469, 40.7546742}, {50.0111204, 44.9628863}, {50.613269, 48.9383534}},
+{{50.613269, 48.9383534}, {51.3082301, 53.5085713}, {51.31236, 53.9808933}},
+{{51.31236, 53.9808933}, {51.31649, 54.4532153}, {49.8689114, 46.7937026}},
+</div>
+
+<div id="cubic6x3">
+{{30.270176, 50.8484091}, {9.21238377, 32.534054}, {99.8452993, 99.9447358}, {71.1751053, 39.994736}},
+{{30.270176, 50.8484091}, {26.1998702, 47.3083881}, {27.3542845, 47.6109361}},
+{{27.3542845, 47.6109361}, {28.1421178, 47.8174109}, {33.7377536, 50.9254737}},
+{{33.7377536, 50.9254737}, {43.6710144, 56.4428448}, {49.5826034, 59.2306974}},
+{{49.5826034, 59.2306974}, {60.0794163, 64.1809007}, {66.5061178, 65.1608314}},
+{{66.5061178, 65.1608314}, {74.7232814, 66.4137682}, {76.404788, 61.2406021}},
+{{76.404788, 61.2406021}, {78.4000331, 55.1022173}, {71.1751053, 39.994736}},
+</div>
+
+<div id="cubic6x3x">
+{{30.270176, 50.8484091}, {9.21238377, 32.534054}, {99.8452993, 99.9447358}, {71.1751053, 39.994736}},
+{{30.270176, 50.8484091}, {26.0151068, 47.1560011}, {27.3542845, 47.6109361}},
+{{27.3542845, 47.6109361}, {28.6934622, 48.0658712}, {33.7377536, 50.9254737}},
+{{33.7377536, 50.9254737}, {40.3775737, 54.7374488}, {49.5826034, 59.2306974}},
+{{49.5826034, 59.2306974}, {58.787633, 63.723946}, {66.5061178, 65.1608314}},
+{{66.5061178, 65.1608314}, {74.2246025, 66.5977168}, {76.404788, 61.2406021}},
+{{76.404788, 61.2406021}, {78.5849735, 55.8834875}, {71.1751053, 39.994736}},
+</div>
+
+<div id="cubic6x4">
+{{52.3256249, 36.7777584}, {23.7859194, 69.9470399}, {99.9000587, 20.2858463}, {44.2180221, 72.2977287}},
+{{52.3256249, 36.7777584}, {46.323817, 43.7531512}, {45.7451821, 46.7544892}},
+{{45.7451821, 46.7544892}, {45.2655359, 49.2423797}, {48.551811, 49.2476269}},
+{{48.551811, 49.2476269}, {50.5144448, 49.2507606}, {55.9087216, 48.0313516}},
+{{55.9087216, 48.0313516}, {62.3329105, 46.5791247}, {63.9943433, 47.0044226}},
+{{63.9943433, 47.0044226}, {66.7468982, 47.7090289}, {62.987381, 52.8381772}},
+{{62.987381, 52.8381772}, {58.5075376, 58.9500739}, {44.2180221, 72.2977287}},
+</div>
+
+<div id="cubic6x4x">
+{{52.3256249, 36.7777584}, {23.7859194, 69.9470399}, {99.9000587, 20.2858463}, {44.2180221, 72.2977287}},
+{{52.3256249, 36.7777584}, {46.0840368, 44.1087946}, {45.7451821, 46.7544892}},
+{{45.7451821, 46.7544892}, {45.4063273, 49.4001838}, {48.551811, 49.2476269}},
+{{48.551811, 49.2476269}, {51.6972946, 49.09507}, {55.9087216, 48.0313516}},
+{{55.9087216, 48.0313516}, {61.1409519, 46.6483554}, {63.9943433, 47.0044226}},
+{{63.9943433, 47.0044226}, {66.8477347, 47.3604898}, {62.987381, 52.8381772}},
+{{62.987381, 52.8381772}, {59.1270273, 58.3158645}, {44.2180221, 72.2977287}},
+</div>
+
+<div id="cubic6x5">
+{{42.9059103, 19.6341859}, {91.762872, 58.5903164}, {27.4474096, 8.61261101}, {52.1532298, 39.3337672}},
+{{42.9059103, 19.6341859}, {54.1145994, 28.5714415}, {58.004639, 31.7917065}},
+{{58.004639, 31.7917065}, {62.019725, 35.1154878}, {61.7728162, 35.2682181}},
+{{61.7728162, 35.2682181}, {61.6064162, 35.3711481}, {58.4041375, 33.5820691}},
+{{58.4041375, 33.5820691}, {53.244257, 30.6992989}, {50.8183004, 29.6863137}},
+{{50.8183004, 29.6863137}, {46.5331956, 27.8970204}, {46.2915313, 29.5538521}},
+{{46.2915313, 29.5538521}, {45.9839754, 31.662432}, {52.1532298, 39.3337672}},
+</div>
+
+<div id="cubic6x5x">
+{{42.9059103, 19.6341859}, {91.762872, 58.5903164}, {27.4474096, 8.61261101}, {52.1532298, 39.3337672}},
+{{42.9059103, 19.6341859}, {53.8121244, 28.322992}, {58.004639, 31.7917065}},
+{{58.004639, 31.7917065}, {62.1971535, 35.260421}, {61.7728162, 35.2682181}},
+{{61.7728162, 35.2682181}, {61.3484789, 35.2760153}, {58.4041375, 33.5820691}},
+{{58.4041375, 33.5820691}, {54.7626269, 31.4620033}, {50.8183004, 29.6863137}},
+{{50.8183004, 29.6863137}, {46.8739739, 27.9106241}, {46.2915313, 29.5538521}},
+{{46.2915313, 29.5538521}, {45.7090887, 31.1970802}, {52.1532298, 39.3337672}},
+</div>
+
+<div id="cubic6x6">
+{{73.4375576, 65.030414}, {66.1679208, 84.2450892}, {7.2134248, 36.0306381}, {66.9352454, 80.6694031}},
+{{73.4375576, 65.030414}, {71.5866063, 69.9227391}, {65.0188473, 69.7835224}},
+{{65.0188473, 69.7835224}, {60.0105733, 69.677362}, {52.4355896, 66.6514651}},
+{{52.4355896, 66.6514651}, {48.2960051, 64.9978699}, {42.4281173, 61.975806}},
+{{42.4281173, 61.975806}, {40.1794784, 60.817718}, {40.5562709, 61.1722188}},
+{{40.5562709, 61.1722188}, {40.9330633, 61.5267196}, {45.4424567, 64.8118124}},
+{{45.4424567, 64.8118124}, {56.3732534, 72.774897}, {66.9352454, 80.6694031}},
+</div>
+
+<div id="cubic6x6x">
+{{73.4375576, 65.030414}, {66.1679208, 84.2450892}, {7.2134248, 36.0306381}, {66.9352454, 80.6694031}},
+{{73.4375576, 65.030414}, {71.1118808, 70.1709551}, {65.0188473, 69.7835224}},
+{{65.0188473, 69.7835224}, {58.9258137, 69.3960897}, {52.4355896, 66.6514651}},
+{{52.4355896, 66.6514651}, {45.9453656, 63.9068405}, {42.4281173, 61.975806}},
+{{42.4281173, 61.975806}, {40.0852803, 60.7290928}, {40.5562709, 61.1722188}},
+{{40.5562709, 61.1722188}, {41.0272614, 61.6153448}, {45.4424567, 64.8118124}},
+{{45.4424567, 64.8118124}, {51.3278432, 69.0492921}, {66.9352454, 80.6694031}},
+</div>
+
+<div id="cubic6x7">
+{{46.6695473, 75.0819435}, {2.22400357, 78.828021}, {62.548768, 57.1436195}, {12.8128845, 46.150303}},
+{{46.6695473, 75.0819435}, {36.8374139, 75.9106415}, {32.735691, 75.1220326}},
+{{32.735691, 75.1220326}, {29.1601585, 74.4345905}, {29.1402184, 72.2922743}},
+{{29.1402184, 72.2922743}, {29.1278273, 70.9609985}, {31.0504514, 67.4052326}},
+{{31.0504514, 67.4052326}, {33.5289159, 62.8214769}, {33.7777617, 60.3248048}},
+{{33.7777617, 60.3248048}, {34.2044612, 56.0437252}, {30.1210496, 52.8325143}},
+{{30.1210496, 52.8325143}, {25.0685705, 48.8592251}, {12.8128845, 46.150303}},
+</div>
+
+<div id="cubic6x7x">
+{{46.6695473, 75.0819435}, {2.22400357, 78.828021}, {62.548768, 57.1436195}, {12.8128845, 46.150303}},
+{{46.6695473, 75.0819435}, {36.5139384, 75.9210204}, {32.735691, 75.1220326}},
+{{32.735691, 75.1220326}, {28.9574435, 74.3230448}, {29.1402184, 72.2922743}},
+{{29.1402184, 72.2922743}, {29.3229933, 70.2615038}, {31.0504514, 67.4052326}},
+{{31.0504514, 67.4052326}, {33.1016834, 64.1207271}, {33.7777617, 60.3248048}},
+{{33.7777617, 60.3248048}, {34.45384, 56.5288825}, {30.1210496, 52.8325143}},
+{{30.1210496, 52.8325143}, {25.7882591, 49.1361461}, {12.8128845, 46.150303}},
+</div>
+
+<div id="cubic6x8">
+{{55.3467924, 13.540705}, {78.628494, 9.09824134}, {14.1422475, 88.7534345}, {78.9736115, 9.48816133}},
+{{55.3467924, 13.540705}, {60.6017653, 12.5379851}, {60.6776079, 17.0952733}},
+{{60.6776079, 17.0952733}, {60.7373059, 20.6824519}, {57.5541656, 27.8149349}},
+{{57.5541656, 27.8149349}, {55.7485732, 31.8607373}, {51.7778474, 39.2052874}},
+{{51.7778474, 39.2052874}, {48.7947857, 44.7229805}, {49.1759091, 44.7804774}},
+{{49.1759091, 44.7804774}, {49.7203899, 44.8626187}, {56.152876, 37.2125188}},
+{{56.152876, 37.2125188}, {61.4648441, 30.8950413}, {78.9736115, 9.48816133}},
+</div>
+
+<div id="cubic6x8x">
+{{55.3467924, 13.540705}, {78.628494, 9.09824134}, {14.1422475, 88.7534345}, {78.9736115, 9.48816133}},
+{{55.3467924, 13.540705}, {60.8509374, 12.7149155}, {60.6776079, 17.0952733}},
+{{60.6776079, 17.0952733}, {60.5042785, 21.475631}, {57.5541656, 27.8149349}},
+{{57.5541656, 27.8149349}, {54.6040527, 34.1542387}, {51.7778474, 39.2052874}},
+{{51.7778474, 39.2052874}, {48.8652599, 44.4020133}, {49.1759091, 44.7804774}},
+{{49.1759091, 44.7804774}, {49.4865584, 45.1589416}, {56.152876, 37.2125188}},
+{{56.152876, 37.2125188}, {62.8191937, 29.2660961}, {78.9736115, 9.48816133}},
+</div>
+
+<div id="cubic6x9">
+{{6.436938, 85.6170305}, {65.4323691, 21.8280372}, {63.8217439, 52.0501321}, {6.57091737, 37.4082543}},
+{{6.436938, 85.6170305}, {18.3889022, 72.6939321}, {29.5730232, 62.1640306}},
+{{29.5730232, 62.1640306}, {35.8331919, 56.2700528}, {44.0352491, 49.2100734}},
+{{44.0352491, 49.2100734}, {50.0664784, 44.0186496}, {50.0976641, 43.1465107}},
+{{50.0976641, 43.1465107}, {50.1288498, 42.2743718}, {44.2847347, 42.2329622}},
+{{44.2847347, 42.2329622}, {36.0580615, 42.1746705}, {29.7656368, 41.5603994}},
+{{29.7656368, 41.5603994}, {18.5096561, 40.4615824}, {6.57091737, 37.4082543}},
+</div>
+
+<div id="cubic6x9x">
+{{6.436938, 85.6170305}, {65.4323691, 21.8280372}, {63.8217439, 52.0501321}, {6.57091737, 37.4082543}},
+{{6.436938, 85.6170305}, {20.1874324, 70.8746109}, {29.5730232, 62.1640306}},
+{{29.5730232, 62.1640306}, {38.958614, 53.4534502}, {44.0352491, 49.2100734}},
+{{44.0352491, 49.2100734}, {50.058682, 44.2366844}, {50.0976641, 43.1465107}},
+{{50.0976641, 43.1465107}, {50.1366462, 42.0563371}, {44.2847347, 42.2329622}},
+{{44.2847347, 42.2329622}, {39.2093652, 42.3394209}, {29.7656368, 41.5603994}},
+{{29.7656368, 41.5603994}, {20.3219083, 40.7813779}, {6.57091737, 37.4082543}},
+</div>
+
+<div id="cubic7x0">
+{{47.0675449, 64.2273128}, {68.4467872, 85.1524572}, {57.3478562, 45.4193099}, {62.340955, 64.4298956}},
+{{47.0675449, 64.2273128}, {52.2209452, 69.2712543}, {55.5069225, 70.2618397}},
+{{55.5069225, 70.2618397}, {58.2344663, 71.0840808}, {59.6132451, 69.0985913}},
+{{59.6132451, 69.0985913}, {60.6680756, 67.5795987}, {60.901578, 64.4621115}},
+{{60.901578, 64.4621115}, {61.029698, 62.7515845}, {60.8869865, 60.0769443}},
+{{60.8869865, 60.0769443}, {60.8258684, 58.931493}, {60.9363129, 59.2030029}},
+{{60.9363129, 59.2030029}, {61.0467573, 59.4745129}, {61.7705423, 62.2490239}},
+{{61.7705423, 62.2490239}, {62.1209644, 63.5923097}, {62.340955, 64.4298956}},
+</div>
+
+<div id="cubic7x0x">
+{{47.0675449, 64.2273128}, {68.4467872, 85.1524572}, {57.3478562, 45.4193099}, {62.340955, 64.4298956}},
+{{47.0675449, 64.2273128}, {52.5598806, 69.5095881}, {55.5069225, 70.2618397}},
+{{55.5069225, 70.2618397}, {58.4539644, 71.0140913}, {59.6132451, 69.0985913}},
+{{59.6132451, 69.0985913}, {60.7725259, 67.1830912}, {60.901578, 64.4621115}},
+{{60.901578, 64.4621115}, {61.0306302, 61.7411317}, {60.8869865, 60.0769443}},
+{{60.8869865, 60.0769443}, {60.7982573, 58.8636155}, {60.9363129, 59.2030029}},
+{{60.9363129, 59.2030029}, {61.0743684, 59.5423904}, {61.7705423, 62.2490239}},
+{{61.7705423, 62.2490239}, {62.0120077, 63.1760698}, {62.340955, 64.4298956}},
+</div>
+
+<div id="cubic7x1">
+{{44.6639438, 66.9040647}, {56.6149349, 27.2102873}, {23.2993796, 92.6723405}, {44.026369, 51.1832799}},
+{{44.6639438, 66.9040647}, {47.1627908, 58.6044453}, {47.3201686, 55.4528932}},
+{{47.3201686, 55.4528932}, {47.4533435, 52.7860125}, {45.9070214, 53.8259442}},
+{{45.9070214, 53.8259442}, {44.6909451, 54.6437792}, {42.4058247, 57.7914576}},
+{{42.4058247, 57.7914576}, {41.1108979, 59.5751769}, {38.7979012, 63.1176732}},
+{{38.7979012, 63.1176732}, {37.2505608, 65.4875199}, {37.097116, 65.5770977}},
+{{37.097116, 65.5770977}, {36.8720355, 65.7084948}, {38.3585854, 62.6270533}},
+{{38.3585854, 62.6270533}, {39.7438195, 59.7556272}, {44.026369, 51.1832799}},
+</div>
+
+<div id="cubic7x1x">
+{{44.6639438, 66.9040647}, {56.6149349, 27.2102873}, {23.2993796, 92.6723405}, {44.026369, 51.1832799}},
+{{44.6639438, 66.9040647}, {47.2570645, 58.1934532}, {47.3201686, 55.4528932}},
+{{47.3201686, 55.4528932}, {47.3832726, 52.7123331}, {45.9070214, 53.8259442}},
+{{45.9070214, 53.8259442}, {44.4307701, 54.9395554}, {42.4058247, 57.7914576}},
+{{42.4058247, 57.7914576}, {40.3808794, 60.6433599}, {38.7979012, 63.1176732}},
+{{38.7979012, 63.1176732}, {37.3874524, 65.3142201}, {37.097116, 65.5770977}},
+{{37.097116, 65.5770977}, {36.8067796, 65.8399752}, {38.3585854, 62.6270533}},
+{{38.3585854, 62.6270533}, {39.9103912, 59.4141313}, {44.026369, 51.1832799}},
+</div>
+
+<div id="cubic7x2">
+{{8.53545089, 55.3230609}, {14.6846658, 5.17757498}, {19.5026836, 81.6040195}, {18.7564744, 40.0648544}},
+{{8.53545089, 55.3230609}, {9.80938657, 44.9343975}, {11.1496907, 40.6303968}},
+{{11.1496907, 40.6303968}, {12.2999484, 36.9366756}, {13.510145, 37.7040519}},
+{{13.510145, 37.7040519}, {14.4789672, 38.3183745}, {15.5359245, 41.871143}},
+{{15.5359245, 41.871143}, {16.1464176, 43.9232035}, {17.1461401, 48.4587871}},
+{{17.1461401, 48.4587871}, {17.9290951, 52.0109309}, {18.2017805, 52.6665884}},
+{{18.2017805, 52.6665884}, {18.6299694, 53.6961462}, {18.7604053, 51.1306715}},
+{{18.7604053, 51.1306715}, {18.904388, 48.2987505}, {18.7564744, 40.0648544}},
+</div>
+
+<div id="cubic7x2x">
+{{8.53545089, 55.3230609}, {14.6846658, 5.17757498}, {19.5026836, 81.6040195}, {18.7564744, 40.0648544}},
+{{8.53545089, 55.3230609}, {9.89590602, 44.4510387}, {11.1496907, 40.6303968}},
+{{11.1496907, 40.6303968}, {12.4034754, 36.8097549}, {13.510145, 37.7040519}},
+{{13.510145, 37.7040519}, {14.6168146, 38.5983488}, {15.5359245, 41.871143}},
+{{15.5359245, 41.871143}, {16.4550345, 45.1439372}, {17.1461401, 48.4587871}},
+{{17.1461401, 48.4587871}, {17.7900216, 51.5253445}, {18.2017805, 52.6665884}},
+{{18.2017805, 52.6665884}, {18.6135393, 53.8078322}, {18.7604053, 51.1306715}},
+{{18.7604053, 51.1306715}, {18.9072713, 48.4535108}, {18.7564744, 40.0648544}},
+</div>
+
+<div id="cubic7x3">
+{{77.2429303, 21.9290386}, {61.3518447, 40.4530391}, {94.2286334, 0.642292155}, {95.0042533, 36.4855481}},
+{{77.2429303, 21.9290386}, {76.5648343, 22.7194849}, {75.4687566, 23.992131}},
+{{75.4687566, 23.992131}, {73.1344126, 26.702517}, {72.9524614, 27.0039848}},
+{{72.9524614, 27.0039848}, {72.7705102, 27.3054527}, {74.013147, 26.4038735}},
+{{74.013147, 26.4038735}, {76.9396956, 24.2805538}, {79.071521, 23.1293275}},
+{{79.071521, 23.1293275}, {82.9580525, 21.0305265}, {85.9547875, 20.9037075}},
+{{85.9547875, 20.9037075}, {89.8728448, 20.737899}, {92.1150103, 23.9485892}},
+{{92.1150103, 23.9485892}, {94.8166786, 27.8172686}, {95.0042533, 36.4855481}},
+</div>
+
+<div id="cubic7x3x">
+{{77.2429303, 21.9290386}, {61.3518447, 40.4530391}, {94.2286334, 0.642292155}, {95.0042533, 36.4855481}},
+{{77.2429303, 21.9290386}, {76.2273572, 23.1121054}, {75.4687566, 23.992131}},
+{{75.4687566, 23.992131}, {73.1799004, 26.6271501}, {72.9524614, 27.0039848}},
+{{72.9524614, 27.0039848}, {72.7250224, 27.3808196}, {74.013147, 26.4038735}},
+{{74.013147, 26.4038735}, {75.7676189, 25.0320659}, {79.071521, 23.1293275}},
+{{79.071521, 23.1293275}, {82.3754232, 21.226589}, {85.9547875, 20.9037075}},
+{{85.9547875, 20.9037075}, {89.5341519, 20.580826}, {92.1150103, 23.9485892}},
+{{92.1150103, 23.9485892}, {94.6958688, 27.3163524}, {95.0042533, 36.4855481}},
+</div>
+
+<div id="cubic7x4">
+{{85.1880251, 55.1384624}, {12.1381459, 5.8187271}, {95.3464197, 87.2766355}, {58.4136199, 57.7104629}},
+{{85.1880251, 55.1384624}, {69.4954757, 44.5436142}, {61.7319269, 40.861468}},
+{{61.7319269, 40.861468}, {55.009991, 37.6733448}, {54.1223283, 39.6260005}},
+{{54.1223283, 39.6260005}, {53.4043154, 41.2054652}, {56.5289517, 46.3315706}},
+{{56.5289517, 46.3315706}, {58.3527212, 49.323546}, {63.1215192, 55.8776895}},
+{{63.1215192, 55.8776895}, {66.7797089, 60.9054346}, {67.68997, 62.4640064}},
+{{67.68997, 62.4640064}, {69.1578236, 64.9773019}, {67.3518779, 64.1520255}},
+{{67.3518779, 64.1520255}, {65.2740366, 63.2024988}, {58.4136199, 57.7104629}},
+</div>
+
+<div id="cubic7x4x">
+{{85.1880251, 55.1384624}, {12.1381459, 5.8187271}, {95.3464197, 87.2766355}, {58.4136199, 57.7104629}},
+{{85.1880251, 55.1384624}, {68.7695663, 44.1020224}, {61.7319269, 40.861468}},
+{{61.7319269, 40.861468}, {54.6942874, 37.6209137}, {54.1223283, 39.6260005}},
+{{54.1223283, 39.6260005}, {53.5503693, 41.6310872}, {56.5289517, 46.3315706}},
+{{56.5289517, 46.3315706}, {59.5075341, 51.032054}, {63.1215192, 55.8776895}},
+{{63.1215192, 55.8776895}, {66.1706775, 59.9915119}, {67.68997, 62.4640064}},
+{{67.68997, 62.4640064}, {69.2092626, 64.9365008}, {67.3518779, 64.1520255}},
+{{67.3518779, 64.1520255}, {65.4944933, 63.3675501}, {58.4136199, 57.7104629}},
+</div>
+
+<div id="cubic7x5">
+{{8.65591127, 79.9006976}, {91.0247206, 52.4786449}, {8.58452539, 80.1182901}, {48.1023732, 56.5861463}},
+{{8.65591127, 79.9006976}, {10.1949106, 79.3883372}, {13.1021747, 78.4205896}},
+{{13.1021747, 78.4205896}, {33.3914306, 71.6668594}, {38.6134953, 69.8848279}},
+{{38.6134953, 69.8848279}, {45.9243859, 67.3899838}, {46.7629899, 66.8658296}},
+{{46.7629899, 66.8658296}, {47.3619928, 66.4914338}, {44.5359397, 66.7758818}},
+{{44.5359397, 66.7758818}, {40.3498242, 67.197223}, {38.6707421, 67.0021236}},
+{{38.6707421, 67.0021236}, {35.6941333, 66.6562593}, {37.1605001, 64.6054153}},
+{{37.1605001, 64.6054153}, {39.032712, 61.9869609}, {48.1023732, 56.5861463}},
+</div>
+
+<div id="cubic7x5x">
+{{8.65591127, 79.9006976}, {91.0247206, 52.4786449}, {8.58452539, 80.1182901}, {48.1023732, 56.5861463}},
+{{8.65591127, 79.9006976}, {10.9639426, 79.1323302}, {13.1021747, 78.4205896}},
+{{13.1021747, 78.4205896}, {31.0714516, 72.4500538}, {38.6134953, 69.8848279}},
+{{38.6134953, 69.8848279}, {46.155539, 67.319602}, {46.7629899, 66.8658296}},
+{{46.7629899, 66.8658296}, {47.3704409, 66.4120572}, {44.5359397, 66.7758818}},
+{{44.5359397, 66.7758818}, {41.5267469, 67.1697889}, {38.6707421, 67.0021236}},
+{{38.6707421, 67.0021236}, {35.8147372, 66.8344583}, {37.1605001, 64.6054153}},
+{{37.1605001, 64.6054153}, {38.5062629, 62.3763723}, {48.1023732, 56.5861463}},
+</div>
+
+<div id="cubic7x6">
+{{42.8441148, 81.0382013}, {9.0486696, 80.9900212}, {99.2855478, 92.2020003}, {39.0193165, 97.6524087}},
+{{42.8441148, 81.0382013}, {36.5292256, 81.0291985}, {35.3205259, 81.5652507}},
+{{35.3205259, 81.5652507}, {34.274399, 82.0292026}, {36.9288084, 83.0293311}},
+{{36.9288084, 83.0293311}, {38.5699459, 83.647679}, {43.916545, 85.1977854}},
+{{43.916545, 85.1977854}, {50.735588, 87.1747884}, {53.7318941, 88.2602772}},
+{{53.7318941, 88.2602772}, {58.8545207, 90.11608}, {59.9920782, 91.5927712}},
+{{59.9920782, 91.5927712}, {61.3953813, 93.4144333}, {56.9901885, 94.8414282}},
+{{56.9901885, 94.8414282}, {51.9120881, 96.4864013}, {39.0193165, 97.6524087}},
+</div>
+
+<div id="cubic7x6x">
+{{42.8441148, 81.0382013}, {9.0486696, 80.9900212}, {99.2855478, 92.2020003}, {39.0193165, 97.6524087}},
+{{42.8441148, 81.0382013}, {36.3303003, 81.0383861}, {35.3205259, 81.5652507}},
+{{35.3205259, 81.5652507}, {34.3107514, 82.0921153}, {36.9288084, 83.0293311}},
+{{36.9288084, 83.0293311}, {39.5468653, 83.9665469}, {43.916545, 85.1977854}},
+{{43.916545, 85.1977854}, {48.9996472, 86.6173008}, {53.7318941, 88.2602772}},
+{{53.7318941, 88.2602772}, {58.4641409, 89.9032535}, {59.9920782, 91.5927712}},
+{{59.9920782, 91.5927712}, {61.5200154, 93.2822889}, {56.9901885, 94.8414282}},
+{{56.9901885, 94.8414282}, {52.4603617, 96.4005675}, {39.0193165, 97.6524087}},
+</div>
+
+<div id="cubic7x7">
+{{70.2955832, 57.867012}, {70.8709129, 27.4331047}, {68.1912432, 90.2241446}, {97.1991291, 25.763215}},
+{{70.2955832, 57.867012}, {70.3286385, 56.1184463}, {70.3691418, 53.5027125}},
+{{70.3691418, 53.5027125}, {70.4294268, 49.6094598}, {70.5008735, 49.1586526}},
+{{70.5008735, 49.1586526}, {70.5723202, 48.7078455}, {70.9407155, 49.8962556}},
+{{70.9407155, 49.8962556}, {71.8329974, 52.7746761}, {72.7964345, 54.1820074}},
+{{72.7964345, 54.1820074}, {74.5546706, 56.7503333}, {77.0780289, 56.0896348}},
+{{77.0780289, 56.0896348}, {80.3799099, 55.2250934}, {84.85557, 48.8673125}},
+{{84.85557, 48.8673125}, {90.2513448, 41.2024868}, {97.1991291, 25.763215}},
+</div>
+
+<div id="cubic7x7x">
+{{70.2955832, 57.867012}, {70.8709129, 27.4331047}, {68.1912432, 90.2241446}, {97.1991291, 25.763215}},
+{{70.2955832, 57.867012}, {70.3435094, 55.2546173}, {70.3691418, 53.5027125}},
+{{70.3691418, 53.5027125}, {70.4115651, 49.7221615}, {70.5008735, 49.1586526}},
+{{70.5008735, 49.1586526}, {70.5901819, 48.5951437}, {70.9407155, 49.8962556}},
+{{70.9407155, 49.8962556}, {71.3958651, 51.7896844}, {72.7964345, 54.1820074}},
+{{72.7964345, 54.1820074}, {74.1970039, 56.5743304}, {77.0780289, 56.0896348}},
+{{77.0780289, 56.0896348}, {79.9590538, 55.6049393}, {84.85557, 48.8673125}},
+{{84.85557, 48.8673125}, {89.7520861, 42.1296858}, {97.1991291, 25.763215}},
+</div>
+
+<div id="cubic7x8">
+{{50.528201, 27.4745214}, {64.2810473, 71.5620589}, {43.5236709, 2.33669765}, {72.8774712, 51.6581711}},
+{{50.528201, 27.4745214}, {53.3761101, 36.6040713}, {54.38742, 39.6099548}},
+{{54.38742, 39.6099548}, {55.5064406, 42.9359834}, {55.7720854, 42.9677817}},
+{{55.7720854, 42.9677817}, {55.9546136, 42.9896307}, {55.8827854, 40.8375726}},
+{{55.8827854, 40.8375726}, {55.7725733, 37.5354848}, {55.9802468, 35.9707481}},
+{{55.9802468, 35.9707481}, {56.3474228, 33.2042239}, {57.7009449, 33.0167369}},
+{{57.7009449, 33.0167369}, {59.424989, 32.7779259}, {62.7612346, 36.6782932}},
+{{62.7612346, 36.6782932}, {66.7088662, 41.293425}, {72.8774712, 51.6581711}},
+</div>
+
+<div id="cubic7x8x">
+{{50.528201, 27.4745214}, {64.2810473, 71.5620589}, {43.5236709, 2.33669765}, {72.8774712, 51.6581711}},
+{{50.528201, 27.4745214}, {53.2265224, 36.1478361}, {54.38742, 39.6099548}},
+{{54.38742, 39.6099548}, {55.5483175, 43.0720735}, {55.7720854, 42.9677817}},
+{{55.7720854, 42.9677817}, {55.9958532, 42.8634898}, {55.8827854, 40.8375726}},
+{{55.8827854, 40.8375726}, {55.7402514, 38.5138013}, {55.9802468, 35.9707481}},
+{{55.9802468, 35.9707481}, {56.2202423, 33.4276949}, {57.7009449, 33.0167369}},
+{{57.7009449, 33.0167369}, {59.1816474, 32.6057789}, {62.7612346, 36.6782932}},
+{{62.7612346, 36.6782932}, {66.3408218, 40.7508075}, {72.8774712, 51.6581711}},
+</div>
+
+<div id="cubic7x9">
+{{30.3413925, 47.7835835}, {98.6874047, 39.210338}, {8.15117029, 96.7190508}, {57.0872154, 64.8290379}},
+{{30.3413925, 47.7835835}, {46.0782555, 45.8095694}, {52.5540659, 48.2453346}},
+{{52.5540659, 48.2453346}, {57.9511897, 50.2753703}, {56.8130484, 55.3244869}},
+{{56.8130484, 55.3244869}, {55.9369414, 59.2111449}, {51.1961195, 64.811489}},
+{{51.1961195, 64.811489}, {48.5753558, 67.9074035}, {43.7810591, 72.4967897}},
+{{43.7810591, 72.4967897}, {41.2648644, 74.905441}, {42.230691, 74.4021224}},
+{{42.230691, 74.4021224}, {43.1965176, 73.8988039}, {51.5076718, 68.470241}},
+{{51.5076718, 68.470241}, {54.9756852, 66.2050527}, {57.0872154, 64.8290379}},
+</div>
+
+<div id="cubic7x9x">
+{{30.3413925, 47.7835835}, {98.6874047, 39.210338}, {8.15117029, 96.7190508}, {57.0872154, 64.8290379}},
+{{30.3413925, 47.7835835}, {46.9458744, 45.8339148}, {52.5540659, 48.2453346}},
+{{52.5540659, 48.2453346}, {58.1622574, 50.6567543}, {56.8130484, 55.3244869}},
+{{56.8130484, 55.3244869}, {55.4638393, 59.9922194}, {51.1961195, 64.811489}},
+{{51.1961195, 64.811489}, {46.9283998, 69.6307587}, {43.7810591, 72.4967897}},
+{{43.7810591, 72.4967897}, {41.0234077, 75.0312707}, {42.230691, 74.4021224}},
+{{42.230691, 74.4021224}, {43.4379742, 73.7729742}, {51.5076718, 68.470241}},
+{{51.5076718, 68.470241}, {53.9259122, 66.8899375}, {57.0872154, 64.8290379}},
+</div>
+
+<div id="cubic8x0">
+{{42.5967063, 22.8420382}, {6.13525533, 15.2363991}, {78.1588409, 15.6382141}, {31.4640028, 15.4944166}},
+{{42.5967063, 22.8420382}, {34.7914244, 21.2139034}, {32.6593413, 19.878761}},
+{{32.6593413, 19.878761}, {30.8695713, 18.7579803}, {33.1023831, 17.8591237}},
+{{33.1023831, 17.8591237}, {34.8391625, 17.1599535}, {39.0195021, 16.5984277}},
+{{39.0195021, 16.5984277}, {41.3590736, 16.2841638}, {45.5043686, 15.9119743}},
+{{45.5043686, 15.9119743}, {47.7538437, 15.7100029}, {47.8024311, 15.6545014}},
+{{47.8024311, 15.6545014}, {47.8704535, 15.5767993}, {44.9932779, 15.5487509}},
+{{44.9932779, 15.5487509}, {42.9381525, 15.5287163}, {34.6690635, 15.5040796}},
+{{34.6690635, 15.5040796}, {32.6017407, 15.4979203}, {31.4640028, 15.4944166}},
+</div>
+
+<div id="cubic8x0x">
+{{42.5967063, 22.8420382}, {6.13525533, 15.2363991}, {78.1588409, 15.6382141}, {31.4640028, 15.4944166}},
+{{42.5967063, 22.8420382}, {34.4196308, 21.1014023}, {32.6593413, 19.878761}},
+{{32.6593413, 19.878761}, {30.8990517, 18.6561197}, {33.1023831, 17.8591237}},
+{{33.1023831, 17.8591237}, {35.3057145, 17.0621277}, {39.0195021, 16.5984277}},
+{{39.0195021, 16.5984277}, {42.7332897, 16.1347277}, {45.5043686, 15.9119743}},
+{{45.5043686, 15.9119743}, {47.6292231, 15.7339768}, {47.8024311, 15.6545014}},
+{{47.8024311, 15.6545014}, {47.9756391, 15.575026}, {44.9932779, 15.5487509}},
+{{44.9932779, 15.5487509}, {42.0109167, 15.5224759}, {34.6690635, 15.5040796}},
+{{34.6690635, 15.5040796}, {33.169788, 15.4996412}, {31.4640028, 15.4944166}},
+</div>
+
+<div id="cubic8x1">
+{{29.0323957, 47.4745379}, {4.55778772, 2.73824763}, {21.7278637, 80.2053625}, {11.5269861, 34.0549996}},
+{{29.0323957, 47.4745379}, {23.6693619, 37.6716337}, {20.3221199, 34.4936205}},
+{{20.3221199, 34.4936205}, {17.5126817, 31.826221}, {16.162445, 33.8631071}},
+{{16.162445, 33.8631071}, {15.1123784, 35.4471745}, {14.9546458, 39.8886357}},
+{{14.9546458, 39.8886357}, {14.8663892, 42.3737787}, {15.0999972, 46.8758445}},
+{{15.0999972, 46.8758445}, {15.2259779, 49.3037298}, {15.1224749, 49.3309043}},
+{{15.1224749, 49.3309043}, {14.9775707, 49.3689487}, {14.2215808, 46.1220869}},
+{{14.2215808, 46.1220869}, {13.6815881, 43.8028999}, {11.62512, 34.4989774}},
+{{11.62512, 34.4989774}, {11.559983, 34.2042829}, {11.5269861, 34.0549996}},
+</div>
+
+<div id="cubic8x1x">
+{{29.0323957, 47.4745379}, {4.55778772, 2.73824763}, {21.7278637, 80.2053625}, {11.5269861, 34.0549996}},
+{{29.0323957, 47.4745379}, {23.339767, 37.184683}, {20.3221199, 34.4936205}},
+{{20.3221199, 34.4936205}, {17.3044729, 31.802558}, {16.162445, 33.8631071}},
+{{16.162445, 33.8631071}, {15.0204171, 35.9236561}, {14.9546458, 39.8886357}},
+{{14.9546458, 39.8886357}, {14.8888745, 43.8536153}, {15.0999972, 46.8758445}},
+{{15.0999972, 46.8758445}, {15.2455546, 49.1755419}, {15.1224749, 49.3309043}},
+{{15.1224749, 49.3309043}, {14.9993952, 49.4862668}, {14.2215808, 46.1220869}},
+{{14.2215808, 46.1220869}, {13.4437665, 42.757907}, {11.62512, 34.4989774}},
+{{11.62512, 34.4989774}, {11.5764809, 34.2789225}, {11.5269861, 34.0549996}},
+</div>
+
+<div id="cubic8x2">
+{{30.5187597, 28.7944151}, {47.7341773, 68.3182353}, {24.579915, 14.6321317}, {22.237118, 39.2417454}},
+{{30.5187597, 28.7944151}, {30.823715, 29.4945431}, {31.3959629, 30.8080078}},
+{{31.3959629, 30.8080078}, {34.9281707, 38.9153861}, {35.7821411, 40.9504208}},
+{{35.7821411, 40.9504208}, {36.9776996, 43.7994693}, {36.8148424, 43.845334}},
+{{36.8148424, 43.845334}, {36.6985159, 43.8780945}, {35.3792396, 41.9741019}},
+{{35.3792396, 41.9741019}, {33.3589087, 39.0583404}, {32.0725075, 37.4554574}},
+{{32.0725075, 37.4554574}, {29.7893226, 34.6105606}, {28.0338583, 33.4024856}},
+{{28.0338583, 33.4024856}, {25.7901854, 31.8584352}, {24.3823693, 32.9522328}},
+{{24.3823693, 32.9522328}, {22.7123482, 34.2497498}, {22.237118, 39.2417454}},
+</div>
+
+<div id="cubic8x2x">
+{{30.5187597, 28.7944151}, {47.7341773, 68.3182353}, {24.579915, 14.6321317}, {22.237118, 39.2417454}},
+{{30.5187597, 28.7944151}, {30.9761076, 29.8443688}, {31.3959629, 30.8080078}},
+{{31.3959629, 30.8080078}, {34.5380678, 38.0012585}, {35.7821411, 40.9504208}},
+{{35.7821411, 40.9504208}, {37.0262144, 43.899583}, {36.8148424, 43.845334}},
+{{36.8148424, 43.845334}, {36.6034705, 43.791085}, {35.3792396, 41.9741019}},
+{{35.3792396, 41.9741019}, {34.0487375, 39.9904922}, {32.0725075, 37.4554574}},
+{{32.0725075, 37.4554574}, {30.0962775, 34.9204225}, {28.0338583, 33.4024856}},
+{{28.0338583, 33.4024856}, {25.9714391, 31.8845487}, {24.3823693, 32.9522328}},
+{{24.3823693, 32.9522328}, {22.7932996, 34.019917}, {22.237118, 39.2417454}},
+</div>
+
+<div id="cubic8x3">
+{{44.0194731, 35.2849254}, {33.7413378, 90.6639866}, {89.6236054, 3.93610117}, {54.0523993, 58.6752083}},
+{{44.0194731, 35.2849254}, {41.8034025, 47.2252151}, {43.4093427, 51.8147312}},
+{{43.4093427, 51.8147312}, {44.7573046, 55.6669869}, {48.7793294, 54.2868164}},
+{{48.7793294, 54.2868164}, {51.9073817, 53.2134153}, {56.6514498, 48.9586591}},
+{{56.6514498, 48.9586591}, {59.3060696, 46.5778416}, {63.5477208, 42.0877376}},
+{{63.5477208, 42.0877376}, {65.8388976, 39.6623562}, {66.0159848, 39.6831127}},
+{{66.0159848, 39.6831127}, {66.2639069, 39.7121719}, {64.0479481, 43.2239426}},
+{{64.0479481, 43.2239426}, {62.4651204, 45.7323502}, {55.9567221, 55.7452241}},
+{{55.9567221, 55.7452241}, {54.718939, 57.649497}, {54.0523993, 58.6752083}},
+</div>
+
+<div id="cubic8x3x">
+{{44.0194731, 35.2849254}, {33.7413378, 90.6639866}, {89.6236054, 3.93610117}, {54.0523993, 58.6752083}},
+{{44.0194731, 35.2849254}, {41.7846308, 47.8464432}, {43.4093427, 51.8147312}},
+{{43.4093427, 51.8147312}, {45.0340547, 55.7830192}, {48.7793294, 54.2868164}},
+{{48.7793294, 54.2868164}, {52.524604, 52.7906136}, {56.6514498, 48.9586591}},
+{{56.6514498, 48.9586591}, {60.7782955, 45.1267046}, {63.5477208, 42.0877376}},
+{{63.5477208, 42.0877376}, {65.6800669, 39.7784361}, {66.0159848, 39.6831127}},
+{{66.0159848, 39.6831127}, {66.3519027, 39.5877893}, {64.0479481, 43.2239426}},
+{{64.0479481, 43.2239426}, {61.7439935, 46.8600958}, {55.9567221, 55.7452241}},
+{{55.9567221, 55.7452241}, {55.0519496, 57.1371078}, {54.0523993, 58.6752083}},
+</div>
+
+<div id="cubic8x4">
+{{34.4823321, 44.5556425}, {46.6831036, 2.92242272}, {17.1586486, 85.4072306}, {39.3243103, 23.6824388}},
+{{34.4823321, 44.5556425}, {36.9549821, 36.1181121}, {37.4421857, 33.458373}},
+{{37.4421857, 33.458373}, {37.852416, 31.2188464}, {36.8498458, 33.1020754}},
+{{36.8498458, 33.1020754}, {36.0666826, 34.5731701}, {34.4114682, 38.5859621}},
+{{34.4114682, 38.5859621}, {33.4805756, 40.8427565}, {31.8332086, 45.009246}},
+{{31.8332086, 45.009246}, {30.8106719, 47.5954265}, {30.8033416, 47.5462886}},
+{{30.8033416, 47.5462886}, {30.793079, 47.4774956}, {32.1835801, 43.5816708}},
+{{32.1835801, 43.5816708}, {33.1767952, 40.7989388}, {37.1569859, 29.7171487}},
+{{37.1569859, 29.7171487}, {38.5382511, 25.8713805}, {39.3243103, 23.6824388}},
+</div>
+
+<div id="cubic8x4x">
+{{34.4823321, 44.5556425}, {46.6831036, 2.92242272}, {17.1586486, 85.4072306}, {39.3243103, 23.6824388}},
+{{34.4823321, 44.5556425}, {37.0635768, 35.7091664}, {37.4421857, 33.458373}},
+{{37.4421857, 33.458373}, {37.8207947, 31.2075797}, {36.8498458, 33.1020754}},
+{{36.8498458, 33.1020754}, {35.878897, 34.996571}, {34.4114682, 38.5859621}},
+{{34.4114682, 38.5859621}, {32.9440394, 42.1753532}, {31.8332086, 45.009246}},
+{{31.8332086, 45.009246}, {30.8636314, 47.4784019}, {30.8033416, 47.5462886}},
+{{30.8033416, 47.5462886}, {30.7430517, 47.6141753}, {32.1835801, 43.5816708}},
+{{32.1835801, 43.5816708}, {33.6241085, 39.5491663}, {37.1569859, 29.7171487}},
+{{37.1569859, 29.7171487}, {38.146263, 26.9628595}, {39.3243103, 23.6824388}},
+</div>
+
+<div id="cubic8x5">
+{{67.1009526, 65.7102964}, {92.9511368, 29.7558215}, {6.09136899, 77.6386629}, {73.0077305, 40.9268787}},
+{{67.1009526, 65.7102964}, {72.234988, 58.569475}, {72.0584002, 54.9887776}},
+{{72.0584002, 54.9887776}, {71.9092626, 51.9646911}, {67.9699024, 51.5063347}},
+{{67.9699024, 51.5063347}, {64.8799872, 51.1468138}, {59.401457, 52.3770387}},
+{{59.401457, 52.3770387}, {56.3059837, 53.072139}, {50.919062, 54.7149606}},
+{{50.919062, 54.7149606}, {47.1095083, 55.8767404}, {47.0889098, 55.6405516}},
+{{47.0889098, 55.6405516}, {47.0600718, 55.3098873}, {52.2780952, 52.3607383}},
+{{52.2780952, 52.3607383}, {56.0052548, 50.2542034}, {70.9344915, 42.0642523}},
+{{70.9344915, 42.0642523}, {72.2995322, 41.3154119}, {73.0077305, 40.9268787}},
+</div>
+
+<div id="cubic8x5x">
+{{67.1009526, 65.7102964}, {92.9511368, 29.7558215}, {6.09136899, 77.6386629}, {73.0077305, 40.9268787}},
+{{67.1009526, 65.7102964}, {72.4119125, 58.1790269}, {72.0584002, 54.9887776}},
+{{72.0584002, 54.9887776}, {71.7048879, 51.7985283}, {67.9699024, 51.5063347}},
+{{67.9699024, 51.5063347}, {64.2349168, 51.2141411}, {59.401457, 52.3770387}},
+{{59.401457, 52.3770387}, {54.5679971, 53.5399363}, {50.919062, 54.7149606}},
+{{50.919062, 54.7149606}, {47.3051356, 55.8776986}, {47.0889098, 55.6405516}},
+{{47.0889098, 55.6405516}, {46.8726839, 55.4034046}, {52.2780952, 52.3607383}},
+{{52.2780952, 52.3607383}, {57.6835065, 49.3180721}, {70.9344915, 42.0642523}},
+{{70.9344915, 42.0642523}, {71.9455119, 41.5096286}, {73.0077305, 40.9268787}},
+</div>
+
+<div id="cubic8x6">
+{{34.6917773, 64.7007906}, {26.1879157, 40.299837}, {19.3601908, 86.7271998}, {24.0468774, 55.867852}},
+{{34.6917773, 64.7007906}, {32.8936408, 59.5412235}, {30.9809892, 57.9762826}},
+{{30.9809892, 57.9762826}, {29.3733084, 56.6608702}, {27.7048898, 57.9022642}},
+{{27.7048898, 57.9022642}, {26.4047253, 58.8696572}, {25.0679408, 61.4005651}},
+{{25.0679408, 61.4005651}, {24.3182009, 62.820033}, {23.2746043, 65.3930147}},
+{{23.2746043, 65.3930147}, {22.674283, 66.8731035}, {22.5736375, 66.8767729}},
+{{22.5736375, 66.8767729}, {22.4327337, 66.88191}, {22.7095685, 64.8303341}},
+{{22.7095685, 64.8303341}, {22.9073076, 63.3649228}, {23.7989097, 57.4996081}},
+{{23.7989097, 57.4996081}, {23.9603141, 56.4378254}, {24.0468774, 55.867852}},
+</div>
+
+<div id="cubic8x6x">
+{{34.6917773, 64.7007906}, {26.1879157, 40.299837}, {19.3601908, 86.7271998}, {24.0468774, 55.867852}},
+{{34.6917773, 64.7007906}, {32.7532689, 59.2911428}, {30.9809892, 57.9762826}},
+{{30.9809892, 57.9762826}, {29.2087096, 56.6614223}, {27.7048898, 57.9022642}},
+{{27.7048898, 57.9022642}, {26.2010699, 59.1431061}, {25.0679408, 61.4005651}},
+{{25.0679408, 61.4005651}, {23.9348117, 63.658024}, {23.2746043, 65.3930147}},
+{{23.2746043, 65.3930147}, {22.7294605, 66.7981817}, {22.5736375, 66.8767729}},
+{{22.5736375, 66.8767729}, {22.4178145, 66.955364}, {22.7095685, 64.8303341}},
+{{22.7095685, 64.8303341}, {23.0013225, 62.7053042}, {23.7989097, 57.4996081}},
+{{23.7989097, 57.4996081}, {23.9170479, 56.7225788}, {24.0468774, 55.867852}},
+</div>
+
+<div id="cubic8x7">
+{{33.7213174, 54.1809799}, {19.7290722, 86.516309}, {79.6055485, 30.4535282}, {32.4492169, 73.9888241}},
+{{33.7213174, 54.1809799}, {30.929259, 60.6332771}, {31.7178101, 63.1685506}},
+{{31.7178101, 63.1685506}, {32.3822203, 65.3046982}, {35.5832592, 64.6365068}},
+{{35.5832592, 64.6365068}, {38.0860576, 64.1140676}, {42.1661464, 61.8599641}},
+{{42.1661464, 61.8599641}, {44.4631798, 60.5909351}, {48.3149537, 58.1140379}},
+{{48.3149537, 58.1140379}, {50.7761073, 56.5313841}, {50.8756876, 56.6229029}},
+{{50.8756876, 56.6229029}, {51.0150999, 56.7510292}, {48.1271345, 59.4792497}},
+{{48.1271345, 59.4792497}, {46.064302, 61.4279786}, {37.7133917, 69.1313755}},
+{{37.7133917, 69.1313755}, {34.3790695, 72.2071608}, {32.4492169, 73.9888241}},
+</div>
+
+<div id="cubic8x7x">
+{{33.7213174, 54.1809799}, {19.7290722, 86.516309}, {79.6055485, 30.4535282}, {32.4492169, 73.9888241}},
+{{33.7213174, 54.1809799}, {30.8583849, 60.9640583}, {31.7178101, 63.1685506}},
+{{31.7178101, 63.1685506}, {32.5772353, 65.3730429}, {35.5832592, 64.6365068}},
+{{35.5832592, 64.6365068}, {38.589283, 63.8999708}, {42.1661464, 61.8599641}},
+{{42.1661464, 61.8599641}, {45.7430098, 59.8199575}, {48.3149537, 58.1140379}},
+{{48.3149537, 58.1140379}, {50.6281545, 56.5876371}, {50.8756876, 56.6229029}},
+{{50.8756876, 56.6229029}, {51.1232206, 56.6581687}, {48.1271345, 59.4792497}},
+{{48.1271345, 59.4792497}, {45.1310483, 62.3003307}, {37.7133917, 69.1313755}},
+{{37.7133917, 69.1313755}, {35.340896, 71.3195506}, {32.4492169, 73.9888241}},
+</div>
+
+<div id="cubic8x8">
+{{53.9853472, 31.729689}, {80.8833995, 7.2950833}, {8.46509939, 72.9253675}, {56.6511208, 35.3872682}},
+{{53.9853472, 31.729689}, {54.6892116, 31.0902877}, {55.8968586, 29.9930402}},
+{{55.8968586, 29.9930402}, {59.7242319, 26.5155538}, {60.0744106, 26.2078693}},
+{{60.0744106, 26.2078693}, {60.4245892, 25.9001849}, {58.6982878, 27.5315648}},
+{{58.6982878, 27.5315648}, {54.8548255, 31.1636922}, {52.2592609, 33.6639071}},
+{{52.2592609, 33.6639071}, {47.5369986, 38.2126941}, {44.5524326, 41.278553}},
+{{44.5524326, 41.278553}, {40.6568202, 45.2802731}, {39.8604011, 46.6125979}},
+{{39.8604011, 46.6125979}, {38.901811, 48.2162178}, {42.4657645, 45.9031378}},
+{{42.4657645, 45.9031378}, {46.5800498, 43.232881}, {56.6511208, 35.3872682}},
+</div>
+
+<div id="cubic8x8x">
+{{53.9853472, 31.729689}, {80.8833995, 7.2950833}, {8.46509939, 72.9253675}, {56.6511208, 35.3872682}},
+{{53.9853472, 31.729689}, {55.0401587, 30.7714526}, {55.8968586, 29.9930402}},
+{{55.8968586, 29.9930402}, {59.6366873, 26.5924749}, {60.0744106, 26.2078693}},
+{{60.0744106, 26.2078693}, {60.5121339, 25.8232638}, {58.6982878, 27.5315648}},
+{{58.6982878, 27.5315648}, {56.3310494, 29.756797}, {52.2592609, 33.6639071}},
+{{52.2592609, 33.6639071}, {48.1874723, 37.5710172}, {44.5524326, 41.278553}},
+{{44.5524326, 41.278553}, {40.9173929, 44.9860887}, {39.8604011, 46.6125979}},
+{{39.8604011, 46.6125979}, {38.8034093, 48.2391072}, {42.4657645, 45.9031378}},
+{{42.4657645, 45.9031378}, {46.1281196, 43.5671684}, {56.6511208, 35.3872682}},
+</div>
+
+<div id="cubic8x9">
+{{73.1810322, 53.6088109}, {3.28446082, 1.93300047}, {87.9389074, 89.2160727}, {54.5340817, 54.3107021}},
+{{73.1810322, 53.6088109}, {58.5574459, 42.7973267}, {51.3867695, 38.9320081}},
+{{51.3867695, 38.9320081}, {45.1924119, 35.5929695}, {44.6615376, 37.4897176}},
+{{44.6615376, 37.4897176}, {44.2222697, 39.0591673}, {47.6643015, 44.1654891}},
+{{47.6643015, 44.1654891}, {50.2846557, 48.0528359}, {55.0540263, 53.8428721}},
+{{55.0540263, 53.8428721}, {57.6549797, 57.0004406}, {61.4896769, 61.4054165}},
+{{61.4896769, 61.4054165}, {62.8763033, 62.9982556}, {62.6160157, 62.7489128}},
+{{62.6160157, 62.7489128}, {62.3557281, 62.49957}, {59.4073763, 59.4106743}},
+{{59.4073763, 59.4106743}, {56.5808171, 56.449377}, {54.5340817, 54.3107021}},
+</div>
+
+<div id="cubic8x9x">
+{{73.1810322, 53.6088109}, {3.28446082, 1.93300047}, {87.9389074, 89.2160727}, {54.5340817, 54.3107021}},
+{{73.1810322, 53.6088109}, {57.8490138, 42.3222252}, {51.3867695, 38.9320081}},
+{{51.3867695, 38.9320081}, {44.9245252, 35.5417911}, {44.6615376, 37.4897176}},
+{{44.6615376, 37.4897176}, {44.3985499, 39.4376442}, {47.6643015, 44.1654891}},
+{{47.6643015, 44.1654891}, {50.9300531, 48.893334}, {55.0540263, 53.8428721}},
+{{55.0540263, 53.8428721}, {59.1779995, 58.7924103}, {61.4896769, 61.4054165}},
+{{61.4896769, 61.4054165}, {62.9413752, 63.0605913}, {62.6160157, 62.7489128}},
+{{62.6160157, 62.7489128}, {62.2906562, 62.4372343}, {59.4073763, 59.4106743}},
+{{59.4073763, 59.4106743}, {57.5885087, 57.5036974}, {54.5340817, 54.3107021}},
+</div>
+
+<div id="cubic4">
+{{24.2578299, 1.34695745}, {6.77689729, 99.312693}, {3.18338154, 3.09354817}, {59.132973, 47.8778685}},
+{{38.313885, 41.465269}, {48.4308047, 76.5337766}, {93.264044, 88.7879534}, {83.3354337, 18.6335197}}
+</div>
+
+<div id="cubic5">
+{{24.0062249, 72.6211198}, {22.3913226, 30.9587957}, {80.7539402, 31.4736433}, {99.6348716, 63.2867312}},
+{{43.1612821, 11.6690897}, {24.4801394, 37.7033828}, {77.5229567, 28.3334108}, {60.0910899, 50.9480224}}
+$6 = {{x = 24.006224853920855, y = 72.621119847810419}, {x = 24.119692298829129, y = 51.890688643515688}, {x = 38.700154924642845, y = 44.614929583485953}}
+(gdb) p q2
+$7 = {{x = 24.006224853920855, y = 72.621119847810419}, {x = 29.758671200376888, y = 31.764642512385173}, {x = 71.277052443896736, y = 42.309313461363033}}
+</div>
+
+<div id="quad1">
+{{x = 34.879150914024962, y = 83.862726601601125}, {x = 35.095810134304429, y = 83.693473210169543}, {x = 35.359284111931586, y = 83.488069234177502}}
+{{x = 54.503204203015471, y = 76.094098492518242}, {x = 51.366889541918894, y = 71.609856061299155}, {x = 46.53086955445437, y = 69.949863036494207}}
+</div>
+
+<div id="cubic6">
+{{x = 54.080923997834752, y = 38.089631608729078}, {x = 10.447347774378651, y = 88.574043981998258}, {x = 33.294667831293616, y = 83.482240551841556}, {x = 25.649263209500006, y = 87.166762066617025}}
+</div>
+
+<div id="quad2">
+{{x = 25.367434474345036, y = 50.4712103169743}, {x = 17.865013304933097, y = 37.356741010559439}, {x = 16.818988838905465, y = 37.682915484123129}}
+{{x = 16.818988838905465, y = 37.682915484123129}, {x = 15.772964372877833, y = 38.009089957686811}, {x = 20.624104547604965, y = 41.825131596683121}}
+</div>
+
+<div id="cubic7">
+{{x = 25.367434474345036, y = 50.4712103169743}, {x = 5.2367042308844178, y = 13.28800847441331}, {x = 21.031375239152169, y = 74.32364443052731}, {x = 60.821163496384933, y = 21.294883741668837}}
+</div>
+
+<div id="quad3">
+{{x = 36.148792695174222, y = 70.336952793070424}, {x = 36.141613037691357, y = 70.711654739870085}, {x = 36.154708826402597, y = 71.088492662905836}}
+{{x = 35.216235592661825, y = 70.580199617313212}, {x = 36.244476835123969, y = 71.010897787304074}, {x = 37.230244263238326, y = 71.423156953613102}}
+</div>
+
+<div id="quad4">
+{{x = 369.84860200000003, y = 145.68026699999999}, {x = 382.36041299999999, y = 121.298294}, {x = 406.20770299999998, y = 121.298294}}
+{{x = 369.850525, y = 145.67596399999999}, {x = 382.36291499999999, y = 121.29286999999999}, {x = 406.21127300000001, y = 121.29286999999999}}
+</div>
+
+<div id="quad5">
+{{x = 67.25299631583178, y = 21.109080184767524}, {x = 43.617595267398613, y = 33.658034168577529}, {x = 33.38371819435676, y = 44.214192553988745}}
+{{x = 40.476838859398541, y = 39.543209911285999}, {x = 36.701186108431131, y = 34.8817994016458}, {x = 30.102144288878023, y = 26.739063172945315}}
+</div>
+
+<div id="quad6">
+{{x = 59.981867574297752, y = 19.243986850744687}, {x = 59.992798861020468, y = 19.257454808070786}, {x = 60.003741189575571, y = 19.270930807443623}}
+{{x = 47.800898294803176, y = 89.697640756935641}, {x = 38.74069898238357, y = 58.416865487251982}, {x = 37.639862598936119, y = 44.208141075385868}}
+</div>
+
+<div id="cubic8">
+{{x = 53.674595921148828, y = 8.9336467482771944}, {x = 48.248201817389678, y = 7.5279448682106773}, {x = 89.942031162763953, y = 55.717752573880254}, {x = 81.402728418541486, y = 35.656530426655216}}
+{{x = 47.800898294803176, y = 89.697640756935641}, {x = 22.169400016856102, y = 1.1060833004797266}, {x = 48.267509205391399, y = 32.027215013293187}, {x = 79.306880794142785, y = 10.745507157754854}}
+</div>
+
+<div id="quad7">
+{{x = 33.567436351153468, y = 62.336347586395924}, {x = 35.200980274619084, y = 65.038561460144479}, {x = 36.479571811084995, y = 67.632178905412445}}
+{{x = 41.349524945572696, y = 67.886658677862641}, {x = 39.125562529359087, y = 67.429772735149214}, {x = 35.600314083992416, y = 66.705372160552685}}
+</div>
+
+<div id="quad8">
+{{x = 36.148792695174222, y = 70.336952793070424}, {x = 36.141613037691357, y = 70.711654739870085}, {x = 36.154708826402597, y = 71.088492662905836}}
+{{x = 35.216235592661825, y = 70.580199617313212}, {x = 36.244476835123969, y = 71.010897787304074}, {x = 37.230244263238326, y = 71.423156953613102}}
+</div>
+
+<div id="quad9">
+{{353.2948,194.351074}, {353.2948,173.767563}, {364.167572,160.819855}},
+{{360.416077,166.795715}, {370.126831,147.872162}, {388.635406,147.872162}},
+</div>
+
+<div id="quad10">
+ {{8, 8}, {10, 10}, {8, -10}},
+ {{8, 8}, {12, 12}, {14, 4}},
+</div>
+
+<div id="quad11">
+{{x = 50.934805397717923, y = 51.52391952648901}, {x = 56.803308902971423, y = 44.246234610627596}, {x = 69.776888596721406, y = 40.166645096692555}}
+{{x = 50.230212796400401, y = 38.386469101526998}, {x = 49.855620812184917, y = 38.818990392153609}, {x = 56.356567496227363, y = 47.229909093319407}}
+</div>
+
+<div id="cubic9">
+{{18.1312339, 31.6473732}, {95.5711034, 63.5350219}, {92.3283165, 62.0158945}, {18.5656052, 32.1268808}},
+{{97.402018, 35.7169972}, {33.1127443, 25.8935163}, {1.13970027, 54.9424981}, {56.4860195, 60.529264}},
+</div>
+
+<div id="cubic10">
+{{67.4265481, 37.9937726}, {23.4836959, 90.4768632}, {35.5970651, 79.8724826}, {75.3863417, 18.24489}},
+{{61.3365082, 82.6931328}, {44.6393809, 54.0748258}, {16.8156155, 20.0497047}, {41.866885, 56.7355037}},
+</div>
+
+<div id="cubic11">
+{{40.3684631, 72.7588382}, {85.2198593, 90.174892}, {31.9101421, 13.7580149}, {72.0483425, 16.4930846}},
+{{57.7943379, 49.4368549}, {69.4103137, 79.1415428}, {30.9563231, 82.9221187}, {99.2731298, 83.4922981}},
+</div>
+
+<div id="cubic12">
+{{98.3415562, 26.5353662}, {15.3721551, 59.8107939}, {77.1895742, 25.1742572}, {11.7326863, 91.2589209}},
+{{79.899867, 77.0640431}, {40.0129651, 97.9042774}, {3.74105489, 75.9095456}, {88.6837571, 7.90615282}},
+</div>
+
+<div id="cubic13">
+{{95.6513419, 12.1029701}, {63.4801516, 10.9081754}, {41.0209588, 39.2537121}, {65.9441362, 23.0970739}},
+{{14.6179238, 83.4452002}, {33.7032426, 50.3981092}, {37.1399002, 10.3032037}, {92.5218685, 15.0431467}},
+</div>
+
+<div id="cubic14">
+{{67.4265481, 37.9937726}, {23.4836959, 90.4768632}, {35.5970651, 79.8724826}, {75.3863417, 18.24489}},
+{{61.3365082, 82.6931328}, {44.6393809, 54.0748258}, {16.8156155, 20.0497047}, {41.866885, 56.7355037}},
+{{67.4265481,37.9937726}, {51.1295132,57.5422812}, {44.5947482,65.6442673}},
+{{44.5947482,65.6442673}, {35.2387481,77.3910511}, {43.2346162,66.2224493}},
+{{43.2346162,66.2224493}, {51.8234203,54.2750917}, {75.3863417,18.24489}},
+{{61.3365082,82.6931328}, {54.8250789,71.6639328}, {47.7274442,61.4049645}},
+{{47.7274442,61.4049645}, {40.6298095,51.1459962}, {35.9460478,45.2252785}},
+{{35.9460478,45.2252785}, {31.2622861,39.3045608}, {31.9924758,41.2901124}},
+{{31.9924758,41.2901124}, {32.7226655,43.275664}, {41.866885,56.7355037}},
+</div>
+
+<div id="quad12">
+{{x = 67.426548091427676, y = 37.993772624988935}, {x = 51.129513170665042, y = 57.542281234563646}, {x = 44.594748190899182, y = 65.644267382683879}}
+{{x = 61.336508189019057, y = 82.693132843213675}, {x = 54.825078921449354, y = 71.663932799212432}, {x = 47.727444217558926, y = 61.4049645128392}}
+</div>
+
+<div id="quad13">
+{{x = 53.774852327053594, y = 53.318060789841951}, {x = 45.787877803416805, y = 51.393492026284981}, {x = 46.703936967162392, y = 53.06860709822206}}
+{{x = 46.703936967162392, y = 53.06860709822206}, {x = 47.619996130907957, y = 54.74372217015916}, {x = 53.020051653535361, y = 48.633140968832024}}
+</div>
+
+<div id="cubic15">
+{{40.3684631, 72.7588382}, {85.2198593, 90.174892}, {31.9101421, 13.7580149}, {72.0483425, 16.4930846}},
+{{57.7943379, 49.4368549}, {69.4103137, 79.1415428}, {30.9563231, 82.9221187}, {99.2731298, 83.4922981}},
+</div>
+
+<div id="cubic16">
+{{98.3415562, 26.5353662}, {15.3721551, 59.8107939}, {77.1895742, 25.1742572}, {11.7326863, 91.2589209}},
+{{79.899867, 77.0640431}, {40.0129651, 97.9042774}, {3.74105489, 75.9095456}, {88.6837571, 7.90615282}},
+</div>
+
+<div id="cubic17">
+{{95.6513419, 12.1029701}, {63.4801516, 10.9081754}, {41.0209588, 39.2537121}, {65.9441362, 23.0970739}},
+{{14.6179238, 83.4452002}, {33.7032426, 50.3981092}, {37.1399002, 10.3032037}, {92.5218685, 15.0431467}},
+{{95.6513419,12.1029701}, {79.216947,12.1911515}, {68.1126831,18.0126375}},
+{{68.1126831,18.0126375}, {57.0084192,23.8341235}, {55.4198832,27.1619689}},
+{{55.4198832,27.1619689}, {53.8313472,30.4898143}, {65.9441362,23.0970739}},
+{{14.6179238,83.4452002}, {20.3825754,73.0912112}, {25.0377248,62.5209893}},
+{{25.0377248,62.5209893}, {33.2090045,41.6303758}, {46.9147771,27.3313746}},
+{{46.9147771,27.3313746}, {60.6205496,13.0323735}, {92.5218685,15.0431467}},
+</div>
+
+<div id="cubic18">
+{{55.7513494, 12.929877}, {46.4296358, 42.8887602}, {16.8160022, 26.5487217}, {4.93643419, 66.6494508}},
+{{12.4426199, 23.1121812}, {31.3921366, 7.64067448}, {4.36561578, 72.9044408}, {77.3190123, 0.63959742}},
+
+{{55.7513494,12.929877}, {52.399261,23.0070161}, {46.4958203,27.5595279}},
+{{46.4958203,27.5595279}, {40.5923795,32.1120397}, {33.5495747,34.9548738}},
+{{33.5495747,34.9548738}, {25.3214643,38.1279717}, {17.6150117,44.5570525}},
+{{17.6150117,44.5570525}, {9.90855921,50.9861334}, {4.93643419,66.6494508}},
+
+{{12.4426199,23.1121812}, {17.0040168,19.5021098}, {18.7553606,21.0894159}},
+{{18.7553606,21.0894159}, {20.5067044,22.676722}, {21.4650431,26.4450934}},
+{{21.4650431,26.4450934}, {22.5692754,31.7464864}, {26.4671516,34.648351}},
+{{26.4671516,34.648351}, {30.3650278,37.5502156}, {41.873704,30.8489321}},
+{{41.873704,30.8489321}, {53.3823801,24.1476487}, {77.3190123,0.63959742}},
+</div>
+
+<div id="quad14">
+{{67.4265481,37.9937726}, {51.1295132,57.5422812}, {44.5947482,65.6442674}},
+{{61.3365082,82.6931328}, {54.8250789,71.6639328}, {47.7274442,61.4049645}},
+</div>
+
+<div id="quad15">
+{{x = 80.897794748143198, y = 49.236332042718459}, {x = 81.082078218891212, y = 64.066749904488631}, {x = 69.972305057149981, y = 72.968595519850993}}
+{{x = 72.503745601281395, y = 32.952320736577882}, {x = 88.030880716061645, y = 38.137194847810164}, {x = 73.193774825517906, y = 67.773492479591397}}
+</div>
+
+<div id="cubic19">
+{{x = 34.560092601254624, y = 51.476349286491221}, {x = 27.498466254909744, y = 66.722346267999313}, {x = 42.500359724508769, y = 3.5458898188294325}, {x = 73.37353619438295, y = 89.022818994253328}}
+{{x = 63.002458057833124, y = 82.312578001205154}, {x = 2.4737262644217006, y = 75.917326135522373}, {x = 95.77018506628005, y = 9.5004089686555826}, {x = 6.5188364156143912, y = 62.083637231068508}}
+</div>
+
+<div id="cubic20">
+ {{x = 42.449716172390481, y = 52.379709366885805}, {x = 27.896043159019225, y = 48.797373636065686}, {x = 92.770268299044233, y = 89.899302036454571}, {x = 12.102066544863426, y = 99.43241951960718}}
+{{x = 45.77532924980639, y = 45.958701495993274}, {x = 37.458701356062065, y = 68.393691335056758}, {x = 37.569326692060258, y = 27.673713456687381}, {x = 60.674866037757539, y = 62.47349659096146}}
+</div>
+
+<div id="cubic21">
+{{x = 26.192053931854691, y = 9.8504326817814416}, {x = 10.174241480498686, y = 98.476562741434464}, {x = 21.177712558385782, y = 33.814968789841501}, {x = 75.329030899018534, y = 55.02231980442177}}
+{{x = 56.222082700683771, y = 24.54395039218662}, {x = 95.589995289030483, y = 81.050822735322086}, {x = 28.180450866082897, y = 28.837706255185282}, {x = 60.128952916771617, y = 87.311672180570511}}
+</div>
+
+<div id="quad16">
+{{x = 67.965974918365831, y = 52.573040929556633}, {x = 67.973015821010591, y = 52.57495862082331}, {x = 67.980057838863502, y = 52.576878275262274}}
+{{x = 67.975025709349239, y = 52.572750461020817}, {x = 67.973101328974863, y = 52.57506284863603}, {x = 67.971173663444745, y = 52.577372136133093}}
+</div>
+
+<div id="quad17">
+{{x = 52.14807018377202, y = 65.012420045148644}, {x = 44.778669050208237, y = 66.315562705604378}, {x = 51.619118408823567, y = 63.787827046262684}}
+{{x = 30.004993234763383, y = 93.921296668202288}, {x = 53.384822003076991, y = 60.732180341802753}, {x = 58.652998934338584, y = 43.111073088306185}}
+</div>
+
+<div id="quad18">
+{{x = 369.850525, y = 145.67596399999999}, {x = 382.36291499999999, y = 121.29286999999999}, {x = 406.21127300000001, y = 121.29286999999999}}
+{{x = 369.962311, y = 137.976044}, {x = 383.97189300000002, y = 121.29286999999999}, {x = 406.21612499999998, y = 121.29286999999999}}
+</div>
+
+<div id="quad19">
+{{x = 406.23635899999999, y = 121.254936}, {x = 409.44567899999998, y = 121.254936}, {x = 412.97595200000001, y = 121.789818}}
+{{x = 406.23599200000001, y = 121.254936}, {x = 425.70590199999998, y = 121.254936}, {x = 439.71994000000001, y = 137.087616}}
+</div>
+
+<div id="cubic22">
+{{x = 7.5374809128872498, y = 82.441702896003477}, {x = 22.444346930107265, y = 22.138854312775123}, {x = 66.76091829629658, y = 50.753805856571446}, {x = 78.193478508942519, y = 97.7932997968948}}
+{{x = 97.700573130371311, y = 53.53260215070685}, {x = 87.72443481149358, y = 84.575876772671876}, {x = 19.215031396232092, y = 47.032676472809484}, {x = 11.989686410869325, y = 10.659507480757082}}
+ {{7.53748091,82.4417029}, {15.5677076,52.942994}, {29.9404074,49.1672596}},
+ {{29.9404074,49.1672596}, {44.3131071,45.3915253}, {58.1067559,59.5061814}},
+ {{58.1067559,59.5061814}, {71.9004047,73.6208375}, {78.1934785,97.7932998}},
+
+ {{97.7005731,53.5326022}, {91.6030843,68.4083459}, {72.6510251,64.2972928}},
+ {{72.6510251,64.2972928}, {53.6989659,60.1862397}, {35.2053722,44.8391126}},
+ {{35.2053722,44.8391126}, {16.7117786,29.4919856}, {11.9896864,10.6595075}},
+</div>
+
+<div id="quad20">
+ {{29.9404074,49.1672596}, {44.3131071,45.3915253}, {58.1067559,59.5061814}},
+ {{72.6510251,64.2972928}, {53.6989659,60.1862397}, {35.2053722,44.8391126}},
+</div>
+
+<div id="cubic23">
+{{x = 32.484981432782945, y = 75.082940782924624}, {x = 42.467313093350882, y = 48.131159948246157}, {x = 3.5963115764764657, y = 43.208665839959245}, {x = 79.442476890721579, y = 89.709102357602262}}
+{{x = 18.98573861410177, y = 93.308887208490106}, {x = 40.405250173250792, y = 91.039661826118675}, {x = 8.0467721950480584, y = 42.100282172719147}, {x = 40.883324221187891, y = 26.030185504830527}}
+ {{32.4849814,75.0829408}, {35.4553509,65.5763004}, {33.5767697,60.2097835}},
+ {{33.5767697,60.2097835}, {31.6981886,54.8432666}, {31.1663962,54.7302484}},
+ {{31.1663962,54.7302484}, {31.1662882,54.7301074}, {31.1663969,54.7302485}},
+ {{31.1663969,54.7302485}, {30.4117445,54.6146017}, {40.1631726,62.9428436}},
+ {{40.1631726,62.9428436}, {49.9146008,71.2710854}, {79.4424769,89.7091024}},
+
+ {{18.9857386,93.3088872}, {25.7662938,92.3417699}, {26.5917262,85.8225583}},
+ {{26.5917262,85.8225583}, {27.4171586,79.3033467}, {26.141946,69.8089528}},
+ {{26.141946,69.8089528}, {24.2922348,57.665767}, {26.0404936,45.4260361}},
+ {{26.0404936,45.4260361}, {27.7887523,33.1863051}, {40.8833242,26.0301855}},
+</div>
+
+<div id="quad21">
+ {{31.1663962,54.7302484}, {31.1662882,54.7301074}, {31.1663969,54.7302485}},
+ {{26.0404936,45.4260361}, {27.7887523,33.1863051}, {40.8833242,26.0301855}},
+</div>
+
+<div id="cubic24">
+{{x = 65.454505973241524, y = 93.881892270353575}, {x = 45.867360264932437, y = 92.723972719499827}, {x = 2.1464054482739447, y = 74.636369140183717}, {x = 33.774068594804994, y = 40.770872887582925}}
+{{x = 72.963387832494163, y = 95.659300729473728}, {x = 11.809496633619768, y = 82.209921247423594}, {x = 13.456139067865974, y = 57.329313623406605}, {x = 36.060621606214262, y = 70.867335643091849}}
+ {{65.454506,93.8818923}, {54.7397995,93.2922678}, {41.5072916,87.1234036}},
+ {{41.5072916,87.1234036}, {28.2747836,80.9545395}, {23.5780771,69.3344126}},
+ {{23.5780771,69.3344126}, {18.8813706,57.7142857}, {33.7740686,40.7708729}},
+
+ {{72.9633878,95.6593007}, {42.7738746,88.4730382}, {31.1932785,80.2458029}},
+ {{31.1932785,80.2458029}, {19.6126823,72.0185676}, {21.9918152,68.2892325}},
+ {{21.9918152,68.2892325}, {24.370948,64.5598974}, {36.0606216,70.8673356}},
+</div>
+
+<div id="quad22">
+ {{41.5072916,87.1234036}, {28.2747836,80.9545395}, {23.5780771,69.3344126}},
+ {{72.9633878,95.6593007}, {42.7738746,88.4730382}, {31.1932785,80.2458029}},
+</div>
+
+<div id="cubic25">
+{{x = 39.765160968417838, y = 33.060396198677083}, {x = 5.1922921581157908, y = 66.854301452103215}, {x = 31.619281802149157, y = 25.269248720849514}, {x = 81.541621071073038, y = 70.025341524754353}}
+{{x = 46.078911165743556, y = 48.259962651999651}, {x = 20.24450549867214, y = 49.403916182650214}, {x = 0.26325131778756683, y = 24.46489805563581}, {x = 15.915006546264051, y = 83.515023059917155}}
+ {{39.765161,33.0603962}, {30.6426004,41.804305}, {26.9359756,44.8138368}},
+ {{26.9359756,44.8138368}, {21.5667569,48.8605535}, {26.2727712,47.6735862}},
+ {{26.2727712,47.6735862}, {31.3832959,46.2642047}, {45.8264929,49.1528875}},
+ {{45.8264929,49.1528875}, {60.2696898,52.0415702}, {81.5416211,70.0253415}},
+
+ {{46.0789112,48.2599627}, {35.5887068,48.1941457}, {27.2014026,45.6924463}},
+ {{27.2014026,45.6924463}, {19.5490336,43.4817863}, {15.020365,44.2719744}},
+ {{15.020365,44.2719744}, {10.4916964,45.0621625}, {10.3896311,53.6689795}},
+ {{10.3896311,53.6689795}, {10.2875658,62.2757965}, {15.9150065,83.5150231}},
+</div>
+
+<div id="cubic26">
+{{x = 95.837747722788592, y = 45.025976907939643}, {x = 16.564570095652982, y = 0.72959763963222402}, {x = 63.209855865319199, y = 68.047528419665767}, {x = 57.640240647662544, y = 59.524565264361243}}
+{{x = 51.593891741518817, y = 38.53849970667553}, {x = 62.34752929878772, y = 74.924924725166022}, {x = 74.810149322641152, y = 34.17966562983564}, {x = 29.368398119401373, y = 94.66719277886078}}
+ {{95.8377477,45.0259769}, {72.4120612,32.1119735}, {61.9589898,30.3422249}},
+ {{61.9589898,30.3422249}, {51.5059185,28.5724763}, {49.7502617,33.4480576}},
+ {{49.7502617,33.4480576}, {47.9946048,38.3236388}, {50.6611618,45.345625}},
+ {{50.6611618,45.345625}, {53.3277187,52.3676112}, {56.1412886,57.0370775}},
+ {{56.1412886,57.0370775}, {58.9548585,61.7065438}, {57.6402406,59.5245653}},
+
+ {{51.5938917,38.5384997}, {54.39659,47.5609728}, {56.9124968,51.2509862}},
+ {{56.9124968,51.2509862}, {59.4284036,54.9409997}, {60.7901347,55.8937858}},
+ {{60.7901347,55.8937858}, {63.1940269,56.8659601}, {59.551481,59.5998651}},
+ {{59.551481,59.5998651}, {56.8806183,61.8512737}, {49.6576236,69.6523525}},
+ {{49.6576236,69.6523525}, {42.434629,77.4534313}, {29.3683981,94.6671928}},
+</div>
+
+<div id="quad23">
+{{x = 56.14128857485079, y = 57.037077517172825}, {x = 58.954858484191291, y = 61.706543802985237}, {x = 57.640240647662544, y = 59.524565264361243}}
+{{x = 59.551480981235549, y = 59.599865066889976}, {x = 56.880618274428095, y = 61.851273706132794}, {x = 49.657623623535379, y = 69.652352522894546}}
+</div>
+
+<div id="cubic27">
+{{x = 56.14128857485079, y = 57.037077517172825}, {x = 57.779490695232283, y = 59.900114769069532}, {x = 58.754163691193881, y = 61.229157895422141}, {x = 57.640240647662544, y = 59.524565264361243}}
+{{x = 56.14128857485079, y = 57.037077517172825}, {x = 58.954858484191291, y = 61.706543802985237}, {x = 57.640240647662544, y = 59.524565264361243}}
+</div>
+
+<div id="testCubic1">
+{{0, 0}, {0, 1}, {1, 1}, {1, 0}},
+{{1, 0}, {0, 0}, {0, 1}, {1, 1}},
+
+ {{0,0}, {0.0185185185,0.5}, {0.259259259,0.666666667}},
+ {{0.259259259,0.666666667}, {0.5,0.833333333}, {0.740740741,0.666666667}},
+ {{0.740740741,0.666666667}, {0.981481481,0.5}, {1,0}},
+
+ {{1,0}, {0.5,0.0185185185}, {0.333333333,0.259259259}},
+ {{0.333333333,0.259259259}, {0.166666667,0.5}, {0.333333333,0.740740741}},
+ {{0.333333333,0.740740741}, {0.5,0.981481481}, {1,1}},
+</div>
+
+<div id="testCubic1a">
+{{x = 0.30075438676757493, y = 0.69070348972827045}, {x = 0.30339450221247349, y = 0.69543451478800855}, {x = 0.30613761677734441, y = 0.7001387457168422}, {x = 0.30898373046218741, y = 0.70481409186990207}}
+{{x = 0.29518590813009821, y = 0.69101626953781281}, {x = 0.29986125428315819, y = 0.69386238322265548}, {x = 0.30456548521199123, y = 0.69660549778752689}, {x = 0.30929651027172955, y = 0.69924561323242507}}
+</div>
+
+<div id="testCubic1b">
+{{x = 0.3039751936710845, y = 0.69622610811401087}, {x = 0.3037698832307662, y = 0.69610758676672113}}
+{{x = 0.3037698832307662, y = 0.69610758676672113}, {x = 0.30387252963474076, y = 0.69616688005807803}}
+{{x = 0.30387252963474076, y = 0.69616688005807803}, {x = 0.3039751936710845, y = 0.69622610811401087}}
+</div>
+
+<div id="cubicOp1d">
+{{0, 1}, {0, 2}, {1, 0}, {1, 0}},
+{{0, 1}, {0, 1}, {1, 0}, {2, 0}},
+
+ {{0,1}, {0.0078125,1.35546875}, {0.15625,1.265625}},
+ {{0.15625,1.265625}, {0.3046875,1.17578125}, {0.5,0.875}},
+ {{0.5,0.875}, {0.6953125,0.57421875}, {0.84375,0.296875}},
+ {{0.84375,0.296875}, {0.9921875,0.01953125}, {1,0}},
+
+ {{0,1}, {0.00925925926,0.981481481}, {0.296296296,0.740740741}},
+ {{0.296296296,0.740740741}, {0.583333333,0.5}, {1.03703704,0.259259259}},
+ {{1.03703704,0.259259259}, {1.49074074,0.0185185185}, {2,0}},
+</div>
+
+<div id="cubicTest1">
+{{0, 1}, {5, 6}, {1, 0}, {1, 0}},
+{{0, 1}, {0, 1}, {1, 0}, {6, 5}},
+ {{0,1}, {1.474,2.466}, {2.024,2.816}},
+ {{2.024,2.816}, {2.574,3.166}, {2.512,2.808}},
+ {{2.512,2.808}, {2.45,2.45}, {2.088,1.792}},
+ {{2.088,1.792}, {1.726,1.134}, {1.376,0.584}},
+ {{1.376,0.584}, {1.026,0.034}, {1,0}},
+
+ {{0,1}, {-0.0277777778,0.935185185}, {0.444444444,0.925925926}},
+ {{0.444444444,0.925925926}, {0.916666667,0.916666667}, {2.22222222,1.74074074}},
+ {{2.22222222,1.74074074}, {3.52777778,2.56481481}, {6,5}},
+</div>
+
+<div id="cubicTest2">
+{{fX = 0, fY = 1}, {fX = 0, fY = 2}, {fX = 1, fY = 0}, {fX = 5, fY = 0}}
+{{fX = 0, fY = 1}, {fX = 0, fY = 5}, {fX = 1, fY = 0}, {fX = 2, fY = 0}}
+</div>
+
+<div id="cubicTest3">
+{{x = 0, y = 1}, {x = 1, y = 6}, {x = 1, y = 0}, {x = 2, y = 0}}
+{{x = 0, y = 1}, {x = 0, y = 2}, {x = 1, y = 0}, {x = 6, y = 1}}
+ {{0,1}, {0.296,2.466}, {0.496,2.816}},
+ {{0.496,2.816}, {0.696,3.166}, {0.848,2.808}},
+ {{0.848,2.808}, {1,2.45}, {1.152,1.792}},
+ {{1.152,1.792}, {1.304,1.134}, {1.504,0.584}},
+ {{1.504,0.584}, {1.704,0.034}, {2,0}},
+
+ {{0,1}, {-0.040150997,1.4850292}, {0.586736465,1.17347293}},
+ {{0.586736465,1.17347293}, {1.11546634,0.936942311}, {2.40073788,0.7574854}},
+ {{2.40073788,0.7574854}, {3.68600943,0.578028489}, {6,1}},
+</div>
+
+<div id="lineTest1">
+{{x = 1.3834888994942065, y = 0.93137912059586503}, {x = 1.3835184247369658, y = 0.93128386633972826}}
+{{x = 1.3834889487833637, y = 0.93138119876148517}, {x = 1.3835243637966514, y = 0.93137251518247632}}
+</div>
+
+<div id="lineQuad1">
+{{x = 0.5, y = 0.875}, {x = 0.65728065326954233, y = 0.63483143515742313}, {x = 0.78907579690950191, y = 0.3959256577144401}}
+{{x = 0.78906720197447666, y = 0.39595053259806418}, {x = 0.78966023971986588, y = 0.39559384654294}}}
+</div>
+
+<div id="lineQuad2">
+{{x = 0.78907579690950191, y = 0.3959256577144401}, {x = 0.78953800250469452, y = 0.39509830801181633}}
+{{x = 0.29629629629629628, y = 0.74074074074074081}, {x = 0.49667506598603178, y = 0.57646999653254238}, {x = 0.78906720197447666, y = 0.39595053259806418}}
+</div>
+
+<div id="x1">
+{{0.5,0.875}, {0.657581172,0.634357518}, {0.789538003,0.395098308}},
+{{0.296296296,0.740740741}, {0.496887363,0.576287939}, {0.78966024,0.395593847}},
+</div>
+
+<div id="x2">
+{{0.5,0.875}, {0.657280653,0.634831435}, {0.789075797,0.395925658}},
+{{0.296296296,0.740740741}, {0.496675066,0.576469997}, {0.789067202,0.395950533}},
+</div>
+
+<div id="x3">
+{{0.789075797,0.395925658}, {0.789538003,0.395098308}},
+{{0.296296296,0.740740741}, {0.496675066,0.576469997}, {0.789067202,0.395950533}},
+</div>
+
+<div id="x4">
+{{0.789538003,0.395098308}, {0.818060471,0.344004048}, {0.84375,0.296875}},
+{{0.296296296,0.740740741}, {0.496887363,0.576287939}, {0.78966024,0.395593847}},
+</div>
+
+<div id="x5">
+{{0.789538003,0.395098308}, {0.818060471,0.344004048}, {0.84375,0.296875}},
+{{0.78966024,0.395593847}, {0.908006316,0.324112697}, {1.03703704,0.259259259}},
+</div>
+
+<div id="cubicX">
+{{x = 0, y = 1}, {x = 0, y = 2}, {x = 1, y = 0}, {x = 1, y = 0}}
+{{x = 0, y = 1}, {x = 0, y = 2}, {x = 1, y = 0}, {x = 6, y = 1}}
+</div>
+
+<div id="cubicOp2d">
+{{0,2}, {0,1}, {1,0}, {1,0}},
+{{0,1}, {0,1}, {2,0}, {1,0}},
+ {{0,2}, {0.0185185185,1.49074074}, {0.259259259,1.03703704}},
+ {{0.259259259,1.03703704}, {0.5,0.583333333}, {0.740740741,0.296296296}},
+ {{0.740740741,0.296296296}, {0.981481481,0.00925925926}, {1,0}},
+
+ {{0,1}, {0.01953125,0.9921875}, {0.296875,0.84375}},
+ {{0.296875,0.84375}, {0.57421875,0.6953125}, {0.875,0.5}},
+ {{0.875,0.5}, {1.17578125,0.3046875}, {1.265625,0.15625}},
+ {{1.265625,0.15625}, {1.35546875,0.0078125}, {1,0}},
+</div>
+
+<div id="cubicOp2da">
+{{0.395593847,0.78966024}, {0.576287939,0.496887363}, {0.740740741,0.296296296}},
+{{0.395098308,0.789538003}, {0.634357518,0.657581172}, {0.875,0.5}},
+</div>
+
+<div id="cubicOp3d">
+{{0,1}, {2,3}, {1,0}, {1,0}},
+{{0,1}, {0,1}, {1,0}, {3,2}},
+ {{0,1}, {0.592,1.584}, {0.872,1.664}},
+ {{0.872,1.664}, {1.152,1.744}, {1.216,1.512}},
+ {{1.216,1.512}, {1.28,1.28}, {1.224,0.928}},
+ {{1.224,0.928}, {1.168,0.576}, {1.088,0.296}},
+ {{1.088,0.296}, {1.008,0.016}, {1,0}},
+
+ {{0,1}, {0,0.962962963}, {0.333333333,0.814814815}},
+ {{0.333333333,0.814814815}, {0.666666667,0.666666667}, {1.33333333,0.851851852}},
+ {{1.33333333,0.851851852}, {2,1.03703704}, {3,2}},
+</div>
+
+<div id="cubicOp3da">
+{{1.224,0.928}, {1.17328164,0.604609714}, {1.09894996,0.336624845}},
+{{1.09895195,0.33662897}, {1.22307655,0.2359436}, {1.265625,0.15625}},
+</div>
+
+<div id="cubicOp3db">
+{{x = 1.2071879545809394, y = 0.82163474041730045}, {x = 1.1534203513372994, y = 0.52790870069930229}, {x = 1.0880000000000001, y = 0.29599999999999982}}
+{{x = 1.205732763658403, y = 0.81345617746834109}, {x = 1.267928895828891, y = 0.83008534558465619}, {x = 1.3333333333333333, y = 0.85185185185185175}}
+</div>
+
+<div id="cubicOp3dc">
+part=(1.20718795,0.82163474 1.17452925,0.632190117 1.1284272,0.444233064 1.088,0.296)
+quad=(1.20718795,0.82163474 1.15342035,0.527908701 1.088,0.296)
+part=(1.20573276,0.813456177 1.24719685,0.824565605 1.28973037,0.837317532 1.33333333,0.851851852)
+quad=(1.20573276,0.813456177 1.2679289,0.830085346 1.33333333,0.851851852)
+</div>
+
+<div id="cubicOp3dd">
+{{1.20718795,0.82163474 1.17452925,0.632190117 1.1284272,0.444233064 1.088,0.296)
+{{1.20718795,0.82163474 1.15342035,0.527908701 1.088,0.296)
+{{1.20568441,0.813443223 1.20570053,0.813447541 1.20571665,0.813451859 1.20573276,0.813456177)
+{{1.20568441,0.813443223 1.20570859,0.8134497 1.20573276,0.813456177)
+{{0.33333333333333326, y = 0.81481481481481488}, {x = 0.63396444791444551, y = 0.68743368362444768}, {x = 1.205732763658403, y = 0.81345617746834109}}
+</div>
+
+<div id="cubicOp3de">
+{{1.2071879545809394,0.82163474041730045}, {1.2065040319428038,0.81766753259119995}, {1.2058123269101506,0.81370135061854221}},
+{{1.205684411948591,0.81344322326274499}, {1.2057085875611198,0.81344969999329253}, {1.205732763658403,0.81345617746834109}},
+</div>
+
+<div id="cubicOp7">
+{{0,1}, {3,4}, {1,0}, {3,0}},
+{{0,1}, {0,3}, {1,0}, {4,3}},
+
+ {{0,1}, {0.837764189,1.83435757}, {1.22841861,2.02640973}},
+ {{1.22841861,2.02640973}, {1.61907304,2.21846188}, {1.74657491,1.9930452}},
+ {{1.74657491,1.9930452}, {1.87407679,1.76762853}, {1.92238332,1.34957962}},
+ {{1.92238332,1.34957962}, {1.97220681,0.867804601}, {2.17393047,0.447689071}},
+ {{2.17393047,0.447689071}, {2.37565413,0.0275735418}, {3,0}},
+
+ {{0,1}, {-0.00234073071,1.60655471}, {0.142631845,1.70125304}},
+ {{0.142631845,1.70125304}, {0.28760442,1.79595137}, {0.60797907,1.68776977}},
+ {{0.60797907,1.68776977}, {1.0447864,1.50810914}, {1.87464474,1.63655092}},
+ {{1.87464474,1.63655092}, {2.70450308,1.76499271}, {4,3}},
+</div>
+
+<div id="cubicOp7a">
+{{x = 1.7465749139282332, y = 1.9930452039527999}, {x = 1.8417960084006277, y = 1.8552583419678612}, {x = 1.8799591210677749, y = 1.6157879692142081}, {x = 1.9223833226085514, y = 1.3495796165215643}}
+{{x = 0.6079790696638232, y = 1.6877697663020552}, {x = 0.90321659591661663, y = 1.6123550739533821}, {x = 1.3173732025571312, y = 1.5065640064343382}, {x = 1.8746447406062119, y = 1.636550924974228}}
+
+{{x = 1.7465749139282332, y = 1.9930452039527999}, {x = 1.8740767879671056, y = 1.7676285282679607}, {x = 1.9223833226085514, y = 1.3495796165215643}}
+{{x = 0.6079790696638232, y = 1.6877697663020552}, {x = 1.0447863962878021, y = 1.5081091374717195}, {x = 1.8746447406062119, y = 1.636550924974228}}
+</div>
+
+<div id="cubicOp7b">
+{{x = 1.7465749139282332, y = 1.9930452039527999}, {x = 1.8417960084006277, y = 1.8552583419678612}, {x = 1.8799591210677749, y = 1.6157879692142081}, {x = 1.9223833226085514, y = 1.3495796165215643}}
+{{x = 1.8746447406062119, y = 1.636550924974228}, {x = 2.4319162786552919, y = 1.7665378435141166}, {x = 3.1323027481129411, y = 2.1323027481129406}, {x = 4, y = 3}}
+{{x = 1.7465749139282332, y = 1.9930452039527999}, {x = 1.8740767879671056, y = 1.7676285282679607}, {x = 1.9223833226085514, y = 1.3495796165215643}}
+{{x = 1.8746447406062119, y = 1.636550924974228}, {x = 2.7045030849246219, y = 1.7649927124767357}, {x = 4, y = 3}}
+</div>
+
+<div id="cubicOp8">
+{{0,1}, {0,5}, {1,0}, {4,0}},
+{{0,1}, {0,4}, {1,0}, {5,0}},
+
+ {{0,1}, {-0.00421781142,2.47981485}, {0.214213168,2.53784857}},
+ {{0.214213168,2.53784857}, {0.432644147,2.59588228}, {0.924337655,1.94072717}},
+ {{0.924337655,1.94072717}, {1.39158994,1.32418496}, {2.14967426,0.687365435}},
+ {{2.14967426,0.687365435}, {2.90775858,0.0505459108}, {4,0}},
+
+ {{0,1}, {-0.00720132722,2.05525633}, {0.206394399,2.10503282}},
+ {{0.206394399,2.10503282}, {0.419990125,2.15480931}, {0.940798831,1.67439357}},
+ {{0.940798831,1.67439357}, {1.48941875,1.16280321}, {2.47884711,0.60465921}},
+ {{2.47884711,0.60465921}, {3.46827548,0.0465152042}, {5,0}},
+</div>
+
+<div id="cubicOp8a">
+{{x = 0.92433765471479945, y = 1.9407271660071879}, {x = 1.2518504275349398, y = 1.5283649441281617}, {x = 1.7179390069715588, y = 1.0614995059145118}}
+{{x = 0.94079883097732186, y = 1.6743935703752681}, {x = 1.2598825072629554, y = 1.3977856697533602}, {x = 1.7179167190286528, y = 1.0665031295527474}}
+</div>
+
+<div id="cubicOp9d">
+{{0,1}, {1,2}, {1,0}, {6,1}},
+{{0,1}, {1,6}, {1,0}, {2,1}},
+</div>
+
+<div id="cubicOp11d">
+ Cubic cubic1 = {{0,1}, {3,4}, {1,0}, {5,1}};
+ Cubic cubic2 = {{0,1}, {1,5}, {1,0}, {4,3}};
+
+ {{0,1}, {1.10659493,2.10239153}, {1.50615334,2.12918252}},
+ {{1.50615334,2.12918252}, {1.90571174,2.15597351}, {2.1530827,1.71245386}},
+ {{2.1530827,1.71245386}, {2.39265628,1.2948736}, {2.98481198,0.986316183}},
+ {{2.98481198,0.986316183}, {3.57696768,0.677758769}, {5,1}},
+
+ {{0,1}, {0.351042317,2.40055211}, {0.610765407,2.56687524}},
+ {{0.610765407,2.56687524}, {0.870488497,2.73319838}, {1.21251591,2.40319262}},
+ {{1.21251591,2.40319262}, {1.57068059,2.04916077}, {2.21702741,1.98363478}},
+ {{2.21702741,1.98363478}, {2.86337424,1.91810879}, {4,3}},
+</div>
+
+<div id="cubicOp12d">
+{{0, 1}, {1, 6}, {1, 0}, {1, 0}},
+{{0, 1}, {0, 1}, {1, 0}, {6, 1}},
+
+ {{0,1}, {0.298,2.466}, {0.488,2.816}},
+ {{0.488,2.816}, {0.678,3.166}, {0.784,2.808}},
+ {{0.784,2.808}, {0.89,2.45}, {0.936,1.792}},
+ {{0.936,1.792}, {0.982,1.134}, {0.992,0.584}},
+ {{0.992,0.584}, {1.002,0.034}, {1,0}},
+
+ {{0,1}, {-0.0277777778,0.972222222}, {0.444444444,0.777777778}},
+ {{0.444444444,0.777777778}, {0.916666667,0.583333333}, {2.22222222,0.555555556}},
+ {{2.22222222,0.555555556}, {3.52777778,0.527777778}, {6,1}},
+</div>
+
+<div id="cubicOp13d">
+{{0,1}, {4,5}, {1,0}, {5,3}},
+{{0,1}, {3,5}, {1,0}, {5,4}},
+
+ {{0,1}, {1.48018645,2.46752265}, {1.93281168,2.58856757}},
+ {{1.93281168,2.58856757}, {2.38543691,2.7096125}, {2.51967352,2.34531784}},
+ {{2.51967352,2.34531784}, {2.65263731,2.00639194}, {3.1212119,1.98608967}},
+ {{3.1212119,1.98608967}, {3.5897865,1.96578739}, {5,3}},
+
+ {{0,1}, {1.05556321,2.39540407}, {1.46049052,2.58073968}},
+ {{1.46049052,2.58073968}, {1.86541784,2.76607529}, {2.09544533,2.51981963}},
+ {{2.09544533,2.51981963}, {2.33331524,2.25252128}, {2.92003302,2.39442311}},
+ {{2.92003302,2.39442311}, {3.5067508,2.53632493}, {5,4}},
+</div>
+
+<div id="cubicTest4">
+{{x = 0, y = 1}, {x = 4, y = 5}, {x = 1, y = 0}, {x = 5, y = 3}}
+{{x = 0, y = 1}, {x = 1, y = 6}, {x = 1, y = 0}, {x = 2, y = 0}}
+</div>
+
+<div id="cubicTest5">
+{{x = 0, y = 1}, {x = 1, y = 6}, {x = 1, y = 0}, {x = 1, y = 0}}
+{{x = 0, y = 1}, {x = 1, y = 6}, {x = 1, y = 0}, {x = 2, y = 1}}
+</div>
+
+<div id="cubicTest6">
+{{x = 0, y = 1}, {x = 4, y = 5}, {x = 1, y = 0}, {x = 5, y = 3}}
+{{x = 4, y = 4}, {x = 3, y = 4}, {x = 1, y = 2}, {x = 0, y = 0}}
+</div>
+
+<div id="cubicTest7">
+{{x = 0, y = 1}, {x = 1.9274705288631189e-19, y = 1.0000000000000002}, {x = 0.0017190297609673323, y = 0.99828097023903239}, {x = 0.0053709083094631276, y = 0.99505672974365911}}
+</div>
+
+<div id="cubicOp16d">
+{{0,2},{0,1},{3,0},{1,0}},
+{{0,3},{0,1},{2,0},{1,0}},
+
+ {{0,2}, {0.0229970175,1.6585632}, {0.366509308,1.33437416}},
+ {{0.366509308,1.33437416}, {0.710021598,1.01018513}, {1.09808495,0.737739381}},
+ {{1.09808495,0.737739381}, {1.40607875,0.517813127}, {1.57937247,0.352342403}},
+ {{1.57937247,0.352342403}, {1.75266619,0.186871679}, {1.64451042,0.0942001592}},
+ {{1.64451042,0.0942001592}, {1.53635465,0.00152863961}, {1,0}},
+
+ {{0,3}, {0.0263932023,2.17082039}, {0.352786405,1.57082039}},
+ {{0.352786405,1.57082039}, {0.679179607,0.970820393}, {0.988854382,0.6}},
+ {{0.988854382,0.6}, {1.23200941,0.3}, {1.27672209,0.15}},
+ {{1.27672209,0.15}, {1.32143477,9.25185854e-17}, {1,0}},
+</div>
+
+<div id="quadOp16d">
+ {{1.64451042,0.0942001592}, {1.53635465,0.00152863961}, {1,0}},
+ {{1.27672209,0.15}, {1.32143477,9.25185854e-17}, {1,0}},
+</div>
+
+<div id="cubicOp20d">
+{{0,6},{1,2},{1,0},{1,0}},
+{{0,1},{0,1},{6,0},{2,1}},
+
+ {{0,6}, {0.71875,3}, {0.875,1.5}},
+ {{0.875,1.5}, {1.03125,1.11022302e-16}, {1,0}},
+
+ {{0,1}, {0.0625,0.98828125}, {0.875,0.859375}},
+ {{0.875,0.859375}, {1.6875,0.73046875}, {2.5,0.625}},
+ {{2.5,0.625}, {3.3125,0.51953125}, {3.375,0.578125}},
+ {{3.375,0.578125}, {3.4375,0.63671875}, {2,1}},
+</div>
+
+<div id="cubicOp21d">
+{{1,2},{5,6},{1,0},{1,0}},
+{{0,1},{0,1},{2,1},{6,5}},
+
+ {{1,2}, {2.176,3.168}, {2.536,3.328}},
+ {{2.536,3.328}, {2.896,3.488}, {2.728,3.024}},
+ {{2.728,3.024}, {2.56,2.56}, {2.152,1.856}},
+ {{2.152,1.856}, {1.744,1.152}, {1.384,0.592}},
+ {{1.384,0.592}, {1.024,0.032}, {1,0}},
+
+ {{0,1}, {7.40148683e-17,0.962962963}, {0.666666667,1.14814815}},
+ {{0.666666667,1.14814815}, {1.33333333,1.33333333}, {2.66666667,2.18518519}},
+ {{2.66666667,2.18518519}, {4,3.03703704}, {6,5}},
+</div>
+
+<div id="quadOp21d">
+ {{2.728,3.024}, {2.56,2.56}, {2.152,1.856}},
+ {{0.666666667,1.14814815}, {1.33333333,1.33333333}, {2.66666667,2.18518519}},
+</div>
+
+<div id="cubicSelf1">
+ {{3.34,8.98}, {1.95,10.27}, {3.76,7.65}, {4.96,10.64}},
+
+ {{3.34,8.98}, {2.83363281,9.4265625}, {2.83796875,9.363125}},
+ {{2.83796875,9.363125}, {2.84230469,9.2996875}, {3.17875,9.1725}},
+ {{3.17875,9.1725}, {3.51519531,9.0453125}, {4.00515625,9.300625}},
+ {{4.00515625,9.300625}, {4.49511719,9.5559375}, {4.96,10.64}},
+</div>
+
+<div id="quadSelf1">
+ {{3.34,8.98}, {2.83363281,9.4265625}, {2.83796875,9.363125}},
+ {{2.83796875,9.363125}, {2.84230469,9.2996875}, {3.17875,9.1725}},
+</div>
+
+<div id="cubicOp27d">
+{{0,1}, {3,6}, {1,0}, {5,2}},
+{{0,1}, {2,5}, {1,0}, {6,3}},
+
+ {{0,1}, {1.11687388,2.858568}, {1.5151589,3.0010603}},
+ {{1.5151589,3.0010603}, {1.91344391,3.14355261}, {2.16505631,2.55782454}},
+ {{2.16505631,2.55782454}, {2.40541285,2.02193091}, {2.99836023,1.68247638}},
+ {{2.99836023,1.68247638}, {3.5913076,1.34302184}, {5,2}},
+
+ {{0,1}, {0.691228423,2.3859516}, {1.0489054,2.56156367}},
+ {{1.0489054,2.56156367}, {1.40658238,2.73717574}, {1.80814127,2.41537795}},
+ {{1.80814127,2.41537795}, {2.23475077,2.05922313}, {3.16529668,1.98358763}},
+ {{3.16529668,1.98358763}, {4.0958426,1.90795214}, {6,3}},
+</div>
+
+<div id="quadOp27d">
+ {{1.80814127,2.41537795}, {2.23475077,2.05922313}, {3.16529668,1.98358763}},
+ {{2.16505631,2.55782454}, {2.40541285,2.02193091}, {2.99836023,1.68247638}},
+</div>
+
+<div id="cubicOp30d">
+{{0,1}, {2,5}, {6,0}, {5,3}},
+{{0,6}, {3,5}, {1,0}, {5,2}},
+
+ {{0,1}, {0.585028897,2.1161006}, {1.31572211,2.42528354}},
+ {{1.31572211,2.42528354}, {2.04641532,2.73446648}, {2.77656625,2.5918049}},
+ {{2.77656625,2.5918049}, {3.50671719,2.44914333}, {4.09011926,2.20971038}},
+ {{4.09011926,2.20971038}, {4.74608133,1.9335932}, {5.02469918,2.00694987}},
+ {{5.02469918,2.00694987}, {5.30331702,2.08030653}, {5,3}},
+
+ {{0,6}, {0.946962644,5.64705935}, {1.35765232,4.89865813}},
+ {{1.35765232,4.89865813}, {1.768342,4.1502569}, {1.97833659,3.34197296}},
+ {{1.97833659,3.34197296}, {2.2269947,2.25886123}, {2.79472921,1.73568666}},
+ {{2.79472921,1.73568666}, {3.36246373,1.21251209}, {5,2}},
+</div>
+
+<div id="quadOp30d">
+ {{4.09011926,2.20971038}, {4.74608133,1.9335932}, {5.02469918,2.00694987}},
+ {{2.79472921,1.73568666}, {3.36246373,1.21251209}, {5,2}},
+</div>
+
+<div id="cubicOp34d">
+{{x = 1.0097960937999808, y = 2.2108396209439607}, {x = 1, y = 2.1969085233712229}, {x = 1, y = 2.1347920612232207}, {x = 1, y = 2}}
+{{x = 1.0097960937999808, y = 2.2108396209439607}, {x = 1.0242251996917398, y = 2.2313593593386498}, {x = 1.0599075827658746, y = 2.1473377437648784}, {x = 1.1481481481481481, y = 2.0370370370370372}}
+{{x = 1.0097960958786989, y = 2.2108396260650962}, {x = 0.73607693096853644, y = 1.9329854848088734}, {x = 0.40437628284615079, y = 1.5391683771282005}, {x = 0, y = 1}}
+{{x = 1.0097960958786989, y = 2.2108396260650962}, {x = 1.8566294376993437, y = 3.0704657726520206}, {x = 2.1484860084122528, y = 2.8201383770234716}, {x = 2.320499529631658, y = 2.3301248824079162}}
+</div>
+
+<div id="cubicOp34da">
+{{x = 1.0097960937999808, y = 2.2108396209439607}, {x = 1, y = 2.1969085233712229}, {x = 1, y = 2.1347920612232207}, {x = 1, y = 2}}
+{{x = 1.0097960937999808, y = 2.2108396209439607}, {x = 1.0242251996917398, y = 2.2313593593386498}, {x = 1.0599075827658746, y = 2.1473377437648784}, {x = 1.1481481481481481, y = 2.0370370370370372}}
+</div>
+
+<div id="cubicOp34db">
+{{1,2}, {1,3}, {1,0}, {5,3}},
+{{0,1}, {3,5}, {2,1}, {3,1}},
+
+ {{1,2}, {0.984375,2.3359375}, {1.0625,2.15625}},
+ {{1.0625,2.15625}, {1.140625,1.9765625}, {1.5,1.75}},
+ {{1.5,1.75}, {1.859375,1.5234375}, {2.6875,1.71875}},
+ {{2.6875,1.71875}, {3.515625,1.9140625}, {5,3}},
+
+ {{0,1}, {0.983539095,2.30041152}, {1.47325103,2.61316872}},
+ {{1.47325103,2.61316872}, {1.96296296,2.92592593}, {2.1563786,2.64609053}},
+ {{2.1563786,2.64609053}, {2.34979424,2.36625514}, {2.44444444,1.88888889}},
+ {{2.44444444,1.88888889}, {2.52083333,1.54166667}, {2.63888889,1.27777778}},
+ {{2.63888889,1.27777778}, {2.75694444,1.01388889}, {3,1}},
+</div>
+
+<div id="quadOp34d">
+ {{1,2}, {0.984375,2.3359375}, {1.0625,2.15625}},
+ {{0,1}, {0.983539095,2.30041152}, {1.47325103,2.61316872}},
+</div>
+
+<div id="cubicOp35d">
+{{0,1}, {1,5}, {2,1}, {4,0}},
+{{1,2}, {0,4}, {1,0}, {5,1}},
+
+ {{0,1}, {0.324417544,2.27953848}, {0.664376547,2.58940267}},
+ {{0.664376547,2.58940267}, {1.00433555,2.89926686}, {1.39091893,2.58136885}},
+ {{1.39091893,2.58136885}, {1.7775023,2.26347084}, {2.24179297,1.65972271}},
+ {{2.24179297,1.65972271}, {2.61097963,1.18900727}, {3.04664862,0.731366192}},
+ {{3.04664862,0.731366192}, {3.48231762,0.273725118}, {4,0}},
+
+ {{1,2}, {0.62109375,2.70703125}, {0.640625,2.546875}},
+ {{0.640625,2.546875}, {0.66015625,2.38671875}, {1.125,1.875}},
+ {{1.125,1.875}, {1.58984375,1.36328125}, {2.546875,1.015625}},
+ {{2.546875,1.015625}, {3.50390625,0.66796875}, {5,1}},
+</div>
+
+<div id="cubicOp35da">
+
+{{x = 0.44618727783085621, y = 2.2840286415243063}, {x = 0.51170845243761109, y = 2.4044088819954914}, {x = 0.57783675570457882, y = 2.4985733182515446}, {x = 0.64483584772311509, y = 2.5694222112973661}}
+{{x = 0.64244110111854291, y = 2.5673840215265367}, {x = 0.63479413812245555, y = 2.5620057200094775}, {x = 0.64115438240274059, y = 2.533597555954064}, {x = 0.6620248993310307, y = 2.4876932484482714}}
+
+</div>
+
+<div id="line0">
+ {{2, 1}, {2, 1}},
+</div>
+
+<div id="line1">
+ {{2, 1}, {1, 1}},
+</div>
+
+<div id="line2">
+ {{2, 1}, {2, 2}}
+</div>
+
+<div id="line3">
+ {{1, 1}, {2, 2}},
+</div>
+
+<div id="line4">
+ {{3, 0}, {2, 1}},
+</div>
+
+<div id="line5">
+ {{3, 2}, {1, 1}},
+</div>
+
+<div id="tri0">
+ {{2, 0}, {3, 1}},
+ {{3, 1}, {2, 2}},
+ {{2, 2}, {2, 0}},
+</div>
+<div id="tri1">
+ {{3, 1}, {2, 2}},
+ {{2, 2}, {1, 1}},
+ {{1, 1}, {3, 1}},
+</div>
+<div id="tri2">
+ {{3, 0}, {2, 1}},
+ {{2, 1}, {3, 2}},
+ {{3, 2}, {3, 0}},
+</div>
+<div id="testQuad0">
+ {{1, 1}, {2, 1}, {0, 2}},
+</div>
+<div id="testQuad1">
+ {{0, 0}, {1, 1}, {3, 1}},
+</div>
+<div id="testQuad2">
+ {{2, 0}, {1, 1}, {2, 2}},
+</div>
+<div id="testQuad3">
+ {{4, 0}, {0, 1}, {4, 2}},
+</div>
+<div id="testQuad4">
+ {{0, 0}, {0, 1}, {1, 1}},
+</div>
+
+<div id="cubicOp65d">
+{{0,1}, {1,5}, {1,0}, {1,0}},
+{{0,1}, {0,1}, {1,0}, {5,1}},
+</div>
+
+</div>
+
+<script type="text/javascript">
+
+var testDivs = [
+ cubicOp65d,
+ testQuad0,
+ testQuad1,
+ testQuad2,
+ testQuad3,
+ testQuad4,
+ tri0,
+ tri1,
+ tri2,
+ line0,
+ line1,
+ line2,
+ line3,
+ line4,
+ line5,
+ cubicOp35da,
+ cubicOp35d,
+ quadOp34d,
+ cubicOp34db,
+ cubicOp34d,
+ cubicOp34da,
+ quadOp30d,
+ cubicOp30d,
+ quadOp27d,
+ cubicOp27d,
+ quadSelf1,
+ cubicSelf1,
+ quadOp21d,
+ cubicOp21d,
+ cubicOp20d,
+ quadOp16d,
+ cubicOp16d,
+ cubicTest7,
+ cubicTest6,
+ cubicTest5,
+ cubicTest4,
+ cubicOp13d,
+ cubicOp12d,
+ cubicOp11d,
+ cubicOp9d,
+ cubicOp8a,
+ cubicOp8,
+ cubicOp7b,
+ cubicOp7a,
+ cubicOp7,
+ cubicOp3de,
+ cubicOp3dd,
+ cubicOp3dc,
+ cubicOp3db,
+ cubicOp3da,
+ cubicOp3d,
+ cubicOp2da,
+ cubicOp2d,
+ cubicX,
+ x1,
+ x2,
+ x3,
+ x4,
+ x5,
+ lineQuad2,
+ lineQuad1,
+ lineTest1,
+ cubicTest3,
+ cubicTest2,
+ cubicTest1,
+ cubicOp1d,
+ testCubic1b,
+ testCubic1a,
+ testCubic1,
+ cubic27,
+ cubic26,
+ quad23,
+ cubic25,
+ quad22,
+ cubic24,
+ quad21,
+ cubic23,
+ quad20,
+ cubic22,
+ quad19,
+ quad18,
+ quad17,
+ quad16,
+ cubic21,
+ cubic20,
+ cubic19,
+ quad15,
+ quad14,
+ cubic18,
+ cubic17,
+ cubic16,
+ cubic15,
+ quad13,
+ quad12,
+ cubic14,
+ cubic13,
+ cubic12,
+ cubic11,
+ cubic10,
+ cubic9,
+ quad11,
+ quad10,
+ quad9,
+ quad8,
+ quad7,
+ cubic8,
+ quad6,
+ quad5,
+ quad4,
+ quad3,
+ cubic7,
+ quad2,
+ cubic6,
+ quad1,
+ cubic5,
+ cubic4,
+ cubic1x0,
+ cubic1x0x,
+ cubic1x1,
+ cubic1x1x,
+ cubic1x2,
+ cubic1x2x,
+ cubic1x3,
+ cubic1x3x,
+ cubic1x4,
+ cubic1x4x,
+ cubic1x5,
+ cubic1x5x,
+ cubic1x6,
+ cubic1x6x,
+ cubic1x7,
+ cubic1x7x,
+ cubic1x8,
+ cubic1x8x,
+ cubic1x9,
+ cubic1x9x,
+ cubic2x0,
+ cubic2x0x,
+ cubic2x1,
+ cubic2x1x,
+ cubic2x2,
+ cubic2x2x,
+ cubic2x3,
+ cubic2x3x,
+ cubic2x4,
+ cubic2x4x,
+ cubic2x5,
+ cubic2x5x,
+ cubic2x6,
+ cubic2x6x,
+ cubic2x7,
+ cubic2x7x,
+ cubic2x8,
+ cubic2x8x,
+ cubic2x9,
+ cubic2x9x,
+ cubic3x0,
+ cubic3x0x,
+ cubic3x1,
+ cubic3x1x,
+ cubic3x2,
+ cubic3x2x,
+ cubic3x3,
+ cubic3x3x,
+ cubic3x4,
+ cubic3x4x,
+ cubic3x5,
+ cubic3x5x,
+ cubic3x6,
+ cubic3x6x,
+ cubic3x7,
+ cubic3x7x,
+ cubic3x8,
+ cubic3x8x,
+ cubic3x9,
+ cubic3x9x,
+ cubic4x0,
+ cubic4x0x,
+ cubic4x1,
+ cubic4x1x,
+ cubic4x2,
+ cubic4x2x,
+ cubic4x3,
+ cubic4x3x,
+ cubic4x4,
+ cubic4x4x,
+ cubic4x5,
+ cubic4x5x,
+ cubic4x6,
+ cubic4x6x,
+ cubic4x7,
+ cubic4x7x,
+ cubic4x8,
+ cubic4x8x,
+ cubic4x9,
+ cubic4x9x,
+ cubic5x0,
+ cubic5x0x,
+ cubic5x1,
+ cubic5x1x,
+ cubic5x2,
+ cubic5x2x,
+ cubic5x3,
+ cubic5x3x,
+ cubic5x4,
+ cubic5x4x,
+ cubic5x5,
+ cubic5x5x,
+ cubic5x6,
+ cubic5x6x,
+ cubic5x7,
+ cubic5x7x,
+ cubic5x8,
+ cubic5x8x,
+ cubic5x9,
+ cubic5x9x,
+ cubic6x0,
+ cubic6x0x,
+ cubic6x1,
+ cubic6x1x,
+ cubic6x2,
+ cubic6x2x,
+ cubic6x3,
+ cubic6x3x,
+ cubic6x4,
+ cubic6x4x,
+ cubic6x5,
+ cubic6x5x,
+ cubic6x6,
+ cubic6x6x,
+ cubic6x7,
+ cubic6x7x,
+ cubic6x8,
+ cubic6x8x,
+ cubic6x9,
+ cubic6x9x,
+ cubic7x0,
+ cubic7x0x,
+ cubic7x1,
+ cubic7x1x,
+ cubic7x2,
+ cubic7x2x,
+ cubic7x3,
+ cubic7x3x,
+ cubic7x4,
+ cubic7x4x,
+ cubic7x5,
+ cubic7x5x,
+ cubic7x6,
+ cubic7x6x,
+ cubic7x7,
+ cubic7x7x,
+ cubic7x8,
+ cubic7x8x,
+ cubic7x9,
+ cubic7x9x,
+ cubic8x0,
+ cubic8x0x,
+ cubic8x1,
+ cubic8x1x,
+ cubic8x2,
+ cubic8x2x,
+ cubic8x3,
+ cubic8x3x,
+ cubic8x4,
+ cubic8x4x,
+ cubic8x5,
+ cubic8x5x,
+ cubic8x6,
+ cubic8x6x,
+ cubic8x7,
+ cubic8x7x,
+ cubic8x8,
+ cubic8x8x,
+ cubic8x9,
+ cubic8x9x,
+ cubic3,
+ cubic2,
+ cubic1,
+];
+
+var scale, columns, rows, xStart, yStart;
+
+var ticks = 10;
+var at_x = 13 + 0.5;
+var at_y = 23 + 0.5;
+var decimal_places = 3;
+var tests = [];
+var testTitles = [];
+var testIndex = 0;
+var ctx;
+var minScale = 1;
+var subscale = 1;
+var curveT = -1;
+var drawCubics = true;
+var drawQuads = true;
+var drawControlLines = true;
+var drawTangents = false;
+var drawGrid = true;
+var xmin, xmax, ymin, ymax;
+
+function parse(test, title) {
+ var curveStrs = test.split("{{");
+ if (curveStrs.length == 1)
+ curveStrs = test.split("=(");
+ var pattern = /[a-z$=]?-?\d+\.*\d*e?-?\d*/g;
+ var curves = [];
+ for (var c in curveStrs) {
+ var curveStr = curveStrs[c];
+ var points = curveStr.match(pattern);
+ var pts = [];
+ for (var wd in points) {
+ var num = parseFloat(points[wd]);
+ if (isNaN(num)) continue;
+ pts.push(num);
+ }
+ if (pts.length > 2)
+ curves.push(pts);
+ }
+ if (curves.length >= 1) {
+ tests.push(curves);
+ testTitles.push(title);
+ }
+}
+
+function init(test) {
+ var canvas = document.getElementById('canvas');
+ if (!canvas.getContext) return;
+ canvas.width = window.innerWidth - at_x;
+ canvas.height = window.innerHeight - at_y;
+ ctx = canvas.getContext('2d');
+ xmin = Infinity;
+ xmax = -Infinity;
+ ymin = Infinity;
+ ymax = -Infinity;
+ for (var curves in test) {
+ var curve = test[curves];
+ var last = curve.length;
+ for (var idx = 0; idx < last; idx += 2) {
+ xmin = Math.min(xmin, curve[idx]);
+ xmax = Math.max(xmax, curve[idx]);
+ ymin = Math.min(ymin, curve[idx + 1]);
+ ymax = Math.max(ymax, curve[idx + 1]);
+ }
+ }
+ var testW = xmax - xmin;
+ var testH = ymax - ymin;
+ subscale = 1;
+ while (testW * subscale < 0.1 && testH * subscale < 0.1) {
+ subscale *= 10;
+ }
+ while (testW * subscale > 10 && testH * subscale > 10) {
+ subscale /= 10;
+ }
+ calcFromScale();
+}
+
+function calcFromScale() {
+ xStart = Math.floor(xmin * subscale) / subscale;
+ yStart = Math.floor(ymin * subscale) / subscale;
+ var xEnd = Math.ceil(xmin * subscale) / subscale;
+ var yEnd = Math.ceil(ymin * subscale) / subscale;
+ var cCelsW = Math.floor(ctx.canvas.width / 10);
+ var cCelsH = Math.floor(ctx.canvas.height / 10);
+ var testW = xEnd - xStart;
+ var testH = yEnd - yStart;
+ var scaleWH = 1;
+ while (cCelsW > testW * scaleWH * 10 && cCelsH > testH * scaleWH * 10) {
+ scaleWH *= 10;
+ }
+ while (cCelsW * 10 < testW * scaleWH && cCelsH * 10 < testH * scaleWH) {
+ scaleWH /= 10;
+ }
+
+ columns = Math.ceil(xmax * subscale) - Math.floor(xmin * subscale) + 1;
+ rows = Math.ceil(ymax * subscale) - Math.floor(ymin * subscale) + 1;
+
+ var hscale = ctx.canvas.width / columns / ticks;
+ var vscale = ctx.canvas.height / rows / ticks;
+ minScale = Math.floor(Math.min(hscale, vscale));
+ scale = minScale * subscale;
+}
+
+function drawPoint(px, py, xoffset, yoffset, unit) {
+ var label = px.toFixed(decimal_places) + ", " + py.toFixed(decimal_places);
+ var _px = px * unit + xoffset;
+ var _py = py * unit + yoffset;
+ ctx.beginPath();
+ ctx.arc(_px, _py, 3, 0, Math.PI*2, true);
+ ctx.closePath();
+ ctx.fill();
+ ctx.fillText(label, _px + 5, _py);
+}
+
+function draw(test, title, scale) {
+ ctx.fillStyle = "rgba(0,0,0, 0.1)";
+ ctx.font = "normal 50px Arial";
+ ctx.fillText(title, 50, 50);
+ ctx.font = "normal 10px Arial";
+
+ var unit = scale * ticks;
+ ctx.lineWidth = 1;
+ if (drawGrid) {
+ var i;
+ for (i = 0; i <= rows * ticks; ++i) {
+ ctx.strokeStyle = (i % ticks) != 0 ? "rgb(200,200,200)" : "black";
+ ctx.beginPath();
+ ctx.moveTo(at_x + 0, at_y + i * minScale);
+ ctx.lineTo(at_x + ticks * columns * minScale, at_y + i * minScale);
+ ctx.stroke();
+ }
+ for (i = 0; i <= columns * ticks; ++i) {
+ ctx.strokeStyle = (i % ticks) != 0 ? "rgb(200,200,200)" : "black";
+ ctx.beginPath();
+ ctx.moveTo(at_x + i * minScale, at_y + 0);
+ ctx.lineTo(at_x + i * minScale, at_y + ticks * rows * minScale);
+ ctx.stroke();
+ }
+ }
+ var xoffset = xStart * -unit + at_x;
+ var yoffset = yStart * -unit + at_y;
+
+ ctx.fillStyle = "rgb(40,80,60)"
+ if (drawGrid) {
+ for (i = 0; i <= columns; i += 1)
+ {
+ num = xStart + i / subscale;
+ ctx.fillText(num.toFixed(decimal_places), xoffset + num * unit - 5, 10);
+ }
+ for (i = 0; i <= rows; i += 1)
+ {
+ num = yStart + i / subscale;
+ ctx.fillText(num.toFixed(decimal_places), 0, yoffset + num * unit + 0);
+ }
+ }
+ var curves, pts;
+ for (curves in test) {
+ var curve = test[curves];
+ if (curve.length == 6 && !drawQuads) {
+ continue;
+ }
+ if (curve.length == 8 && !drawCubics) {
+ continue;
+ }
+ ctx.beginPath();
+ ctx.moveTo(xoffset + curve[0] * unit, yoffset + curve[1] * unit);
+ switch (curve.length) {
+ case 4:
+ ctx.lineTo(
+ xoffset + curve[2] * unit, yoffset + curve[3] * unit);
+ break;
+ case 6:
+ ctx.quadraticCurveTo(
+ xoffset + curve[2] * unit, yoffset + curve[3] * unit,
+ xoffset + curve[4] * unit, yoffset + curve[5] * unit);
+ break;
+ case 8:
+ ctx.bezierCurveTo(
+ xoffset + curve[2] * unit, yoffset + curve[3] * unit,
+ xoffset + curve[4] * unit, yoffset + curve[5] * unit,
+ xoffset + curve[6] * unit, yoffset + curve[7] * unit);
+ break;
+ }
+ ctx.strokeStyle = drawQuads && drawCubics && curve.length == 6 ? "red" : "black";
+ if (curve.length == 4) {
+ ctx.strokeStyle = "blue";
+ }
+ ctx.stroke();
+ if (drawControlLines && (curve.length == 6 || curve.length == 8)) {
+ ctx.strokeStyle = "rgba(0,0,0, 0.3)";
+ ctx.beginPath();
+ ctx.moveTo(xoffset + curve[0] * unit, yoffset + curve[1] * unit);
+ ctx.lineTo(xoffset + curve[2] * unit, yoffset + curve[3] * unit);
+ ctx.lineTo(xoffset + curve[4] * unit, yoffset + curve[5] * unit);
+ if (curve.length == 8)
+ ctx.lineTo(xoffset + curve[6] * unit, yoffset + curve[7] * unit);
+ // ctx.lineTo(xoffset + curve[0] * unit, yoffset + curve[1] * unit);
+ ctx.stroke();
+ }
+ if (curveT >= 0 && curveT <= 1) {
+ var x, y;
+ var t = curveT;
+ switch (curve.length) {
+ case 4:
+ var a = 1 - t;
+ var b = t;
+ x = a * curve[0] + b * curve[2];
+ y = a * curve[1] + b * curve[3];
+ break;
+ case 6:
+ var one_t = 1 - t;
+ var a = one_t * one_t;
+ var b = 2 * one_t * t;
+ var c = t * t;
+ x = a * curve[0] + b * curve[2] + c * curve[4];
+ y = a * curve[1] + b * curve[3] + c * curve[5];
+ break;
+ case 8:
+ var one_t = 1 - t;
+ var one_t2 = one_t * one_t;
+ var a = one_t2 * one_t;
+ var b = 3 * one_t2 * t;
+ var t2 = t * t;
+ var c = 3 * one_t * t2;
+ var d = t2 * t;
+ x = a * curve[0] + b * curve[2] + c * curve[4] + d * curve[6];
+ y = a * curve[1] + b * curve[3] + c * curve[5] + d * curve[7];
+ break;
+ }
+ drawPoint(x, y, xoffset, yoffset, unit);
+ var num = curveT.toFixed(decimal_places);
+ ctx.beginPath();
+ ctx.rect(200,10,200,10);
+ ctx.fillStyle="white";
+ ctx.fill();
+ ctx.fillStyle="black";
+ ctx.fillText(num, 230, 18);
+ if (drawTangents && curve.length == 8) {
+ var one_t = 1 - t;
+ var a = curve[0];
+ var b = curve[2];
+ var c = curve[4];
+ var d = curve[6];
+ var dx = (b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t;
+ a = curve[1];
+ b = curve[3];
+ c = curve[5];
+ d = curve[7];
+ var dy = (b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t;
+ ctx.beginPath();
+ ctx.moveTo(xoffset + (x - dx) * unit, yoffset + (y - dy) * unit);
+ ctx.lineTo(xoffset + (x + dx) * unit, yoffset + (y + dy) * unit);
+ ctx.stroke();
+ }
+ }
+ }
+}
+
+function drawTop() {
+ init(tests[testIndex]);
+ redraw();
+}
+
+function redraw() {
+ ctx.beginPath();
+ ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);
+ ctx.fillStyle="white";
+ ctx.fill();
+ draw(tests[testIndex], testTitles[testIndex], scale);
+}
+
+function doKeyPress(evt) {
+ var char = String.fromCharCode(evt.charCode);
+ switch (char) {
+ case 'c':
+ drawCubics ^= true;
+ redraw();
+ break;
+ case 'd':
+ decimal_places++;
+ redraw();
+ break;
+ case 'D':
+ decimal_places--;
+ if (decimal_places < 1) {
+ decimal_places = 1;
+ }
+ redraw();
+ break;
+ case 'g':
+ drawGrid ^= true;
+ redraw();
+ break;
+ case 'l':
+ drawControlLines ^= true;
+ redraw();
+ break;
+ case 'N':
+ testIndex += 9;
+ case 'n':
+ if (++testIndex >= tests.length)
+ testIndex = 0;
+ mouseX = Infinity;
+ drawTop();
+ break;
+ case 'P':
+ testIndex -= 9;
+ case 'p':
+ if (--testIndex < 0)
+ testIndex = tests.length - 1;
+ mouseX = Infinity;
+ drawTop();
+ break;
+ case 'q':
+ drawQuads ^= true;
+ redraw();
+ break;
+ case 't':
+ drawTangents ^= true;
+ redraw();
+ break;
+ case 'x':
+ drawCubics ^= true;
+ drawQuads ^= true;
+ redraw();
+ break;
+ case '-':
+ case '_':
+ subscale /= 2;
+ calcFromScale();
+ redraw();
+ break;
+ case '+':
+ case '=':
+ subscale *= 2;
+ calcFromScale();
+ redraw();
+ break;
+ }
+}
+
+function handleMouseClick() {
+ var e = window.event;
+ var tgt = e.target || e.srcElement;
+ var min = tgt.offsetTop + Math.ceil(at_y);
+ var max = min + ticks * rows * minScale;
+ curveT = (e.clientY - min) / (max - min);
+ redraw();
+}
+
+function calcXY() {
+ var e = window.event;
+ var tgt = e.target || e.srcElement;
+ var left = tgt.offsetLeft;
+ var top = tgt.offsetTop;
+ var unit = scale * ticks;
+ mouseX = (e.clientX - left - Math.ceil(at_x) + 1) / unit + xStart;
+ mouseY = (e.clientY - top - Math.ceil(at_y)) / unit + yStart;
+}
+
+function handleMouseOver() {
+ calcXY();
+ var num = mouseX.toFixed(decimal_places) + ", " + mouseY.toFixed(decimal_places);
+ ctx.beginPath();
+ ctx.rect(30,10,200,10);
+ ctx.fillStyle="white";
+ ctx.fill();
+ ctx.fillStyle="black";
+ ctx.fillText(num, 30, 18);
+}
+
+function start() {
+ for (i = 0; i < testDivs.length; ++i) {
+ var title = testDivs[i].id.toString();
+ var str = testDivs[i].firstChild.data;
+ parse(str, title);
+ }
+ drawTop();
+ window.addEventListener('keypress', doKeyPress, true);
+ window.onresize = function() {
+ drawTop();
+ }
+}
+
+</script>
+</head>
+
+<body onLoad="start();">
+<canvas id="canvas" width="750" height="500"
+ onmousemove="handleMouseOver()"
+ onclick="handleMouseClick()"
+ ></canvas >
+</body>
+</html>
diff --git a/chromium/third_party/skia/experimental/Intersection/thingsToDo.txt b/chromium/third_party/skia/experimental/Intersection/thingsToDo.txt
new file mode 100644
index 00000000000..f74d3ee1268
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Intersection/thingsToDo.txt
@@ -0,0 +1,525 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+add unit test for quadratic horizontal intersection
+add unit test for cubic horizontal intersection with left/right
+add unit test for ActiveEdge::calcLeft (can currently loop forever)
+does ActiveEdge::isCoincidentWith need to support quad, cubic?
+figure out why variation in ActiveEdge::tooCloseToCall isn't better
+why does 'lastPtr - 2' in addIntersectingTs break testSimplifyTriangle22?
+add code to promote quad to cubic, or add quad/cubic intersection
+figure out why testSimplifySkinnyTriangle13 fails
+
+for quadratics and cubics, once various T values are added, see if consecutive
+Ts have ys that go up instead of down. If so, the edge needs to be broken.
+
+when splitting curves at inflection pts, should I retain the original curve
+data and note that the first/last T are no longer 0/1 ?
+I need to figure this out before I can proceed
+
+would it make sense to leave the InEdge alone, and add multiple copies of
+ActiveEdge, pointing to the same InEdge, where the copy has only the subset
+of Ts that need to be walked in reverse order?
+
+
+-- A Digression Which Shows Why Resolving Coincidence Does Not Make Sense --
+
+Consider the following fine ASCII art:
+
+ +------>-------+ +------>-------+
+ | | | |
+ ^ V ^ V
+ | | | |
+ +------<-------+ +------<-------+
+ +------>-------+ +------<-------+
+ | | | |
+ ^ V V ^
+ | | | |
+ +------<-------+ +------>-------+
+
+(assume the bottom and top of the stacked rectangles are coincident)
+
+Simplifying said rectangles, regardless of rectangle direction, and regardless
+of winding or even/odd, eliminates the coincident edge, i.e., the result is
+always:
+
+ +------>-------+
+ | |
+ | |
+ | |
+ ^ V
+ | |
+ | |
+ | |
+ +------<-------+
+
+But when the rectangles are enclosed in a larger rectangle:
+
++-------->---------+ +-------->---------+
+| +------>-------+ | | +------>-------+ |
+| | | | | | | |
+| ^ V | | ^ V |
+| | | | | | | |
+| +------<-------+ | | +------<-------+ |
+| +------>-------+ | | +------<-------+ |
+| | | | | | | |
+| ^ V | | V ^ |
+| | | | | | | |
+| +------<-------+ | | +------>-------+ |
++--------<---------+ +--------<---------+
+
+Simplifying them gives different results depending on the winding setting:
+
+winding:
++-------->---------+ +-------->---------+
+| | | |
+| | | |
+| | | |
+| | | |
+| | | +------<-------+ |
+| | | | | |
+| | | V ^ |
+| | | | | |
+| | | +------>-------+ |
++--------<---------+ +--------<---------+
+
+even odd:
++-------->---------+ +-------->---------+
+| +------<-------+ | | +------<-------+ |
+| | | | | | | |
+| | | | | | | |
+| | | | | | | |
+| | | | | | | |
+| V ^ | | V ^ |
+| | | | | | | |
+| | | | | | | |
+| | | | | | | |
+| +------>-------+ | | +------>-------+ |
++--------<---------+ +--------<---------+
+
+So, given the inner rectangles alone (e.g., given coincident pairs in some local
+context), we can't know whether to keep the coincident edges or not.
+
+
+-- Thoughts About Sortless Ops --
+
+I can't come up with anything truly sortless. It seems that the crossings need
+to be sorted to know which segment is next on the outside, although sometimes
+we can use that it is not coincident just to follow the direction.
+
+If it is coincident or if there's more than two crossing segments, sorting
+seems inevitable.
+
+Likewise, to resolve whether one contour is inside another, it seems that
+sorting is required. Given a pair of segments on different contours, to know
+if one is inside of the other, I need to know for each which side of the edge
+is the inside/filled side. When the outer contour is walked, it seems like I
+could record the inside info. I guess when the inner contour is found, its
+inside sense is reversed (inside is above the top). But how do I know if the
+next contour is inside another? Maybe shoot out a line and brute-force
+intersect it with all the segments in all the other contours? If every contour
+has an extra segment when the intersections are computed, this may not be as
+crazy as it seems.
+
+Suppose each contour has one extra segment shooting straight up from the top
+(or straight up from any point on the segment). This ray is not intersected
+with the home contour, but is intersected with all other contours as part of
+the normal intersection engine. If it is possible to get from the T values to
+the other segments to the other contours, it would be straightforward to
+count the contour crossings and determine if the home contour is in another
+contour or not (if the count is even, not, if odd, is inside). By itself that
+doesn't tell us about winding, but it's a start.
+
+
+Since intersecting these rays is unrelated to computing other intersections,
+it can be lazily done once the contour is found.
+
+So
+repeat the following
+find the top segment of all contours
+trace the outside, marking touching first and last segments as inside
+continue tracing the touched segments with reversed outside/inside sense
+once the edges are exhausted, remaining must be disjoint contours
+send a ray from a disjoint point through all other contours
+count the crossings, determine if disjoint is inside or outside, then continue
+
+===
+
+On Quadratic (and Cubic) Intersections
+
+Currently, if only the end points touch, QuadracticIntersections does a lot of
+work to figure that out. Can I test for that up front, then short circuit the
+recursive search for the end points?
+
+Or, is there something defective in the current approach that makes the end
+point recursion go so deep? I'm seeing 56 stack frames (about 28 divides, but
+thankfully, no splits) to find one matching endpoint.
+
+
+Bezier curve focus may allow more quickly determining that end points with
+identical tangents are practically coicident for some range of T, but I don't
+understand the math yet to know.
+
+Another approach is to determine how flat the curve is to make good guesses
+about how far to move away in T before doing the intersection for the remainder
+and/or to determine whether one curve is to the inside or outside of another.
+According to Mike/Rob, the flatness for quadratics increases by 4 for each
+subdivision, and a crude guess of the curvature can be had by comparing P1 to
+(P0+P2)/2. By looking at the ULPS of the numbers, I can guess what value of
+T may be far enough that the curves diverge but don't cross.
+
+====
+
+Code I May Not Need Any More
+
+ static bool CoincidentCandidate(const Angle* current) {
+ const Segment* segment = current->segment();
+ int min = SkMin32(current->start(), current->end());
+ do {
+ const Span& span = segment->fTs[min];
+ if (span.fCoincident == Span::kStart_Coincidence) {
+ return true;
+ }
+ } while (--min >= 0);
+ return false;
+ }
+
+ static bool CoincidentHalf(const Angle* current, const Angle* next) {
+ const Segment* other = next->segment();
+ const Segment* segment = current->segment();
+ int min = SkMin32(current->start(), current->end());
+ const Span& minSpan = segment->fTs[min];
+ if (minSpan.fOther == other) {
+ return minSpan.fCoincident == Span::kStart_Coincidence;
+ }
+ int index = min;
+ int spanCount = segment->fTs.count();
+ while (++index < spanCount) {
+ const Span& span = segment->fTs[index];
+ if (minSpan.fT != span.fT) {
+ break;
+ }
+ if (span.fOther != other) {
+ continue;
+ }
+ return span.fCoincident == Span::kStart_Coincidence;
+ }
+ index = min;
+ while (--index >= 0) {
+ const Span& span = segment->fTs[index];
+ if (span.fOther != other) {
+ continue;
+ }
+ return span.fCoincident == Span::kStart_Coincidence;
+ }
+ return false;
+ }
+
+ static bool Coincident(const Angle* current, const Angle* next) {
+ return CoincidentHalf(current, next) &&
+ CoincidentHalf(next, current);
+ }
+
+ // If three lines cancel in a - b - c order, a - b may or may not
+ // eliminate the edge that describes the b - c cancellation. Check done to
+ // determine this.
+ static bool CoincidentCancels(const Angle* current, const Angle* next) {
+ int curMin = SkMin32(current->start(), current->end());
+ if (current->segment()->fTs[curMin].fDone) {
+ return false;
+ }
+ int nextMin = SkMin32(next->start(), next->end());
+ if (next->segment()->fTs[nextMin].fDone) {
+ return false;
+ }
+ return SkSign32(current->start() - current->end())
+ != SkSign32(next->start() - next->end());
+ }
+
+ // FIXME: at this point, just have two functions for the different steps
+ int coincidentEnd(int from, int step) const {
+ double fromT = fTs[from].fT;
+ int count = fTs.count();
+ int to = from;
+ while (step > 0 ? ++to < count : --to >= 0) {
+ const Span& span = fTs[to];
+ if ((step > 0 ? span.fT - fromT : fromT - span.fT) >= FLT_EPSILON ) {
+ // FIXME: we assume that if the T changes, we don't care about
+ // coincident -- but in nextSpan, we require that both the T
+ // and actual loc change to represent a span. This asymettry may
+ // be OK or may be trouble -- if trouble, probably will need to
+ // detect coincidence earlier or sort differently
+ break;
+ }
+#if 01
+ if (span.fCoincident == (step < 0 ? Span::kStart_Coincidence :
+ Span::kEnd_Coincidence)) {
+ from = to;
+ }
+#else
+ from = to;
+#endif
+ }
+ return from;
+ }
+
+ // once past current span, if step>0, look for coicident==1
+ // if step<0, look for coincident==-1
+ int nextSpanEnd(int from, int step) const {
+ int result = nextSpan(from, step);
+ if (result < 0) {
+ return result;
+ }
+ return coincidentEnd(result, step);
+ }
+
+
+ void adjustFirst(const SkTDArray<Angle*>& sorted, int& first, int& winding,
+ bool outside) {
+ int firstIndex = first;
+ int angleCount = sorted.count();
+ if (true || outside) {
+ const Angle* angle = sorted[firstIndex];
+ int prior = firstIndex;
+ do {
+ if (--prior < 0) {
+ prior = angleCount - 1;
+ }
+ if (prior == firstIndex) { // all are coincident with each other
+ return;
+ }
+ if (!Coincident(sorted[prior], sorted[first])) {
+ return;
+ }
+ winding += angle->sign();
+ first = prior;
+ angle = sorted[prior];
+ winding -= angle->sign();
+ } while (true);
+ }
+ do {
+ int next = first + 1;
+ if (next == angleCount) {
+ next = 0;
+ }
+ if (next == firstIndex) { // all are coincident with each other
+ return;
+ }
+ if (!Coincident(sorted[first], sorted[next])) {
+ return;
+ }
+ first = next;
+ } while (true);
+ }
+
+ bool nextIsCoincident = CoincidentCandidate(nextAngle);
+ bool finalOrNoCoincident = true;
+ bool pairCoincides = false;
+ bool pairCancels = false;
+ if (nextIsCoincident) {
+ int followIndex = nextIndex + 1;
+ if (followIndex == angleCount) {
+ followIndex = 0;
+ }
+ const Angle* followAngle = sorted[followIndex];
+ finalOrNoCoincident = !Coincident(nextAngle, followAngle);
+ if ((pairCoincides = Coincident(angle, nextAngle))) {
+ pairCancels = CoincidentCancels(angle, nextAngle);
+ }
+ }
+ if (pairCancels && !foundAngle && !nextSegment->done()) {
+ Segment* aSeg = angle->segment();
+ // alreadyMarked |= aSeg == sorted[firstIndex]->segment();
+ aSeg->markAndChaseCoincident(angle->start(), angle->end(),
+ nextSegment);
+ if (firstEdge) {
+ return NULL;
+ }
+ }
+ if (pairCoincides) {
+ if (pairCancels) {
+ goto doNext;
+ }
+ int minT = SkMin32(nextAngle->start(), nextAngle->end());
+ bool markNext = abs(maxWinding) < abs(winding);
+ if (markNext) {
+ nextSegment->markDone(minT, winding);
+ }
+ int oldMinT = SkMin32(angle->start(), angle->end());
+ if (true || !foundAngle) {
+ // SkASSERT(0); // do we ever get here?
+ Segment* aSeg = angle->segment();
+ // alreadyMarked |= aSeg == sorted[firstIndex]->segment();
+ aSeg->markDone(oldMinT, maxWinding);
+ }
+ }
+
+ // OPTIMIZATION: uses tail recursion. Unwise?
+ void innerCoincidentChase(int step, Segment* other) {
+ // find other at index
+ // SkASSERT(!done());
+ const Span* start = NULL;
+ const Span* end = NULL;
+ int index, startIndex, endIndex;
+ int count = fTs.count();
+ for (index = 0; index < count; ++index) {
+ const Span& span = fTs[index];
+ if (!span.fCoincident || span.fOther != other) {
+ continue;
+ }
+ if (!start) {
+ startIndex = index;
+ start = &span;
+ } else {
+ SkASSERT(!end);
+ endIndex = index;
+ end = &span;
+ }
+ }
+ if (!end) {
+ return;
+ }
+ bool thisDone = fTs[SkMin32(startIndex, endIndex)].fDone;
+ bool otherDone = other->fTs[SkMin32(start->fOtherIndex,
+ end->fOtherIndex)].fDone;
+ if (thisDone && otherDone) {
+ return;
+ }
+ Segment* next;
+ Segment* nextOther;
+ if (step < 0) {
+ next = start->fT == 0 ? NULL : this;
+ nextOther = other->fTs[start->fOtherIndex].fT > 1 - FLT_EPSILON ? NULL : other;
+ } else {
+ next = end->fT == 1 ? NULL : this;
+ nextOther = other->fTs[end->fOtherIndex].fT < FLT_EPSILON ? NULL : other;
+ }
+ SkASSERT(!next || !nextOther);
+ for (index = 0; index < count; ++index) {
+ const Span& span = fTs[index];
+ if (span.fCoincident || span.fOther == other) {
+ continue;
+ }
+ bool checkNext = !next && (step < 0 ? span.fT < FLT_EPSILON
+ && span.fOtherT > 1 - FLT_EPSILON : span.fT > 1 - FLT_EPSILON
+ && span.fOtherT < FLT_EPSILON);
+ bool checkOther = !nextOther && (step < 0 ? fabs(span.fT - start->fT) < FLT_EPSILON
+ && span.fOtherT < FLT_EPSILON : fabs(span.fT - end->fT) < FLT_EPSILON
+ && span.fOtherT > 1 - FLT_EPSILON);
+ if (!checkNext && !checkOther) {
+ continue;
+ }
+ Segment* oSegment = span.fOther;
+ if (oSegment->done()) {
+ continue;
+ }
+ int oCount = oSegment->fTs.count();
+ for (int oIndex = 0; oIndex < oCount; ++oIndex) {
+ const Span& oSpan = oSegment->fTs[oIndex];
+ if (oSpan.fT >= FLT_EPSILON && oSpan.fT <= 1 - FLT_EPSILON) {
+ continue;
+ }
+ if (!oSpan.fCoincident) {
+ continue;
+ }
+ if (checkNext && (oSpan.fT < FLT_EPSILON ^ step < 0)) {
+ next = oSegment;
+ checkNext = false;
+ }
+ if (checkOther && (oSpan.fT > 1 - FLT_EPSILON ^ step < 0)) {
+ nextOther = oSegment;
+ checkOther = false;
+ }
+ }
+ }
+ // this needs to walk both spans in lock step, skipping edges that
+ // are already marked done on one or the other
+ markCanceled(startIndex, endIndex);
+ if (next && nextOther) {
+ next->innerCoincidentChase(step, nextOther);
+ }
+ }
+
+ // cancel coincident edges in lock step
+ void markCanceled(int start, int end) {
+ if (done()) {
+ return;
+ }
+ Segment* other = fTs[start].fOther;
+ if (other->done()) {
+ return;
+ }
+ if (start > end) {
+ SkTSwap<int>(start, end);
+ }
+ double maxT = fTs[end].fT - FLT_EPSILON;
+ int spanCount = fTs.count();
+ // since these cancel, this walks up and other walks down
+ int oStart = fTs[start].fOtherIndex;
+ double oStartT = other->fTs[oStart].fT;
+ while (oStartT - other->fTs[--oStart].fT < FLT_EPSILON)
+ ;
+ double startT = fTs[start].fT;
+ while (start > 0 && startT - fTs[start - 1].fT < FLT_EPSILON) {
+ --start;
+ }
+ do {
+ Span* span = &fTs[start];
+ Span* oSpan = &other->fTs[oStart];
+ // find start of each, and see if both are not done
+ bool markDone = !span->fDone && !oSpan->fDone;
+ double spanT = span->fT;
+ do {
+ if (markDone) {
+ span->fCanceled = true;
+ #if DEBUG_MARK_DONE
+ const SkPoint& pt = xyAtT(span);
+ SkDebugf("%s segment=%d index=%d t=%1.9g pt=(%1.9g,%1.9g)\n",
+ __FUNCTION__, fID, start, span->fT, pt.fX, pt.fY);
+ #endif
+ SkASSERT(!span->fDone);
+ span->fDone = true;
+ span->fWinding = 0;
+ fDoneSpans++;
+ }
+ if (++start == spanCount) {
+ break;
+ }
+ span = &fTs[start];
+ } while (span->fT - spanT < FLT_EPSILON);
+ double oSpanT = oSpan->fT;
+ do {
+ if (markDone) {
+ oSpan->fCanceled = true;
+ #if DEBUG_MARK_DONE
+ const SkPoint& oPt = xyAtT(oSpan);
+ SkDebugf("%s segment=%d index=%d t=%1.9g pt=(%1.9g,%1.9g)\n",
+ __FUNCTION__, other->fID, oStart, oSpan->fT,
+ oPt.fX, oPt.fY);
+ #endif
+ SkASSERT(!oSpan->fDone);
+ oSpan->fDone = true;
+ oSpan->fWinding = 0;
+ other->fDoneSpans++;
+ }
+ if (--oStart < 0) {
+ break;
+ }
+ oSpan = &other->fTs[oStart];
+ } while (oSpanT - oSpan->fT < FLT_EPSILON);
+ } while (fTs[start].fT <= maxT);
+ }
+
+ bool canceled(int start, int end) const {
+ int min = SkMin32(start, end);
+ return fTs[min].fCanceled;
+ }
+
+ void markAndChaseCoincident(int index, int endIndex, Segment* other) {
+ int step = SkSign32(endIndex - index);
+ innerCoincidentChase(step, other);
+ }
+
diff --git a/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker.sln b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker.sln
new file mode 100644
index 00000000000..3be208ddc4d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker.sln
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Callstacker", "Callstacker\Callstacker.vcxproj", "{A0E72F45-561E-4B28-B9B2-6C9E9F6BA8BA}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {A0E72F45-561E-4B28-B9B2-6C9E9F6BA8BA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A0E72F45-561E-4B28-B9B2-6C9E9F6BA8BA}.Debug|Win32.Build.0 = Debug|Win32
+ {A0E72F45-561E-4B28-B9B2-6C9E9F6BA8BA}.Release|Win32.ActiveCfg = Release|Win32
+ {A0E72F45-561E-4B28-B9B2-6C9E9F6BA8BA}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.cpp b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.cpp
new file mode 100644
index 00000000000..348e6572dc9
--- /dev/null
+++ b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.cpp
@@ -0,0 +1,673 @@
+// Callstacker.cpp : Defines the entry point for the console application.
+//
+
+#include "stdafx.h"
+
+#include <string>
+#include <map>
+#include <vector>
+
+using namespace std;
+
+// can't delete, only add files repository!
+class SkSourceDb {
+public:
+ SkSourceDb(const char* szBaseSrcPath, const char* szLightSymbolsDbFile) {
+ this->baseSrcPath = szBaseSrcPath;
+ this->lightSymbolsDbFile = szLightSymbolsDbFile;
+ nextId = 1;
+ }
+
+ const string& getBaseSrcPath() const {
+ return baseSrcPath;
+ }
+
+ string GetStoredFilename(const string& filename) {
+ string base = filename.substr(0, baseSrcPath.length());
+ if (base != baseSrcPath) {
+ return "";
+ }
+
+ string relative = filename.substr(baseSrcPath.length());
+ char tmp[10000];
+ strcpy(tmp, relative.c_str()); // insecure
+ char* sz = tmp;
+ while (*sz) {
+ if (*sz == '\\') *sz = '/';
+ sz++;
+ }
+ sz = tmp;
+ if (*sz == '/') sz++;
+
+ return string(sz);
+ }
+
+ int obtainFileId(const string& filename) {
+ string stored = GetStoredFilename(filename);
+ if (stored.empty()) {
+ return -1;
+ }
+
+ if (filenames.find(stored) == filenames.end()) {
+ int id = nextId;
+ nextId++;
+ filenames[stored] = id;
+ return id;
+ } else {
+ return filenames[stored];
+ }
+ }
+
+ static void Load(char* szFileName, SkSourceDb** ret, const char* whereToSave, const char* szBaseSrcPath) {
+ char szLine[10000];
+ FILE* file = fopen(szFileName, "rt");
+ if (file == NULL) {
+ *ret = NULL;
+ return;
+ }
+
+ const char* trimed;
+ SkSourceDb* db = new SkSourceDb(szBaseSrcPath, whereToSave == NULL ? szFileName : whereToSave);
+
+ map<int, string> ids;
+ int id;
+ while (true) {
+ id = -1;
+ if (fscanf(file, "%i", &id) == 0) break;
+ if (id == -1) break;
+ *szLine = '\0';
+ fgets(szLine, 10000, file);
+ trimed = trim(szLine);
+
+ if (id < 0 || ids[id] != "") {
+ printf("fatal error: duplicate value for id = %i, existing = \"%s\", new = \"%s\"\n", id, ids[id].c_str(), trimed);
+ exit(-1);
+ }
+
+ if (trimed == NULL || *trimed == '\0') {
+ printf("fatal error: no valuefor id = %i\n", id);
+ exit(-1);
+ }
+
+ if (db->filenames.find(trimed) != db->filenames.end()) {
+ printf("fatal error: duplicate id for same file: file = %s, existing id = %i, new id = %i\n", trimed, db->filenames[trimed], id);
+// exit(-1);
+ }
+
+ string value = trimed;
+ ids[id] = value;
+ db->filenames[value] = id;
+ if (db->nextId <= id) {
+ db->nextId = id + 1;
+ }
+ }
+
+ *ret = db;
+ }
+
+ // dumb comit, smarter: use append
+ void commit() {
+ save(lightSymbolsDbFile.c_str());
+ }
+
+private:
+
+ static const char* trim(char* sz) {
+ if (sz == NULL) return NULL;
+
+ while (*sz == ' ' || *sz == '\t' || *sz == '\r' || *sz == '\n' || *sz == ',')
+ sz++;
+
+ if (*sz == '\0') return sz;
+
+ int len = strlen(sz);
+ char* start = sz;
+ sz = sz + (len - 1);
+
+ while (sz >= start && (*sz == ' ' || *sz == '\t' || *sz == '\r' || *sz == '\n' || *sz == ',')) {
+ *sz = '\0';
+ sz--;
+ }
+
+ return start;
+ }
+
+ void save(const char* szFilename) {
+ char szLine[10000];
+ FILE* file = fopen(szFilename, "wt");
+
+ map<string, int>::const_iterator itr;
+
+ for(itr = filenames.begin(); itr != filenames.end(); ++itr){
+ fprintf(file, "%i, %s\n", (*itr).second, (*itr).first.c_str());
+ }
+ fclose(file);
+ }
+
+ string baseSrcPath;
+ string lightSymbolsDbFile;
+ map<string, int> filenames;
+ int nextId;
+};
+
+SkSourceDb* source_db = NULL;
+
+bool endsWith(const char* who, const char* what) {
+ int a = strlen(who);
+ int b = strlen(what);
+ return stricmp(who + a - b, what) == 0; // insecure
+}
+
+bool sourceFile(const char* szFileName) {
+ return endsWith(szFileName, ".h") || endsWith(szFileName, ".c") || endsWith(szFileName, ".cpp") || endsWith(szFileName, ".cc");
+}
+
+// "
+// //
+// /*
+class CppState {
+public:
+
+ CppState() : line(1), inComment(false), inLineComment(false), inDoubleQuote(false), inSingleQuote(false), isEscaping(false), commentEnding(false), commentMightBeStarting(false) {
+ }
+
+ void apply(int ch) {
+ if (ch == '\n') {
+ line++;
+ if (inLineComment) inLineComment = false;
+ }
+
+ if (inLineComment) {
+ return;
+ }
+
+ if (commentMightBeStarting) {
+ commentMightBeStarting = false;
+ if (ch == '*') {
+ inComment = true;
+ } else if (ch == '/') {
+ inLineComment = true;
+ } else {
+ add('/');//previously we has / but was not pushed on tokens
+ newToken();//
+ }
+ }
+
+ if (inSingleQuote) {
+ if (isEscaping)
+ isEscaping = false;
+ else if (ch == '\\')
+ isEscaping = true;
+ else if (ch == '\'') {
+ inSingleQuote = false;
+ newToken();
+ pushToken("__SINGLE_QUOTE__");
+ newToken();
+ }
+
+ return;
+ } else if (inDoubleQuote) {
+ if (isEscaping)
+ isEscaping = false;
+ else if (ch == '\\')
+ isEscaping = true;
+ else if (ch == '\"') {
+ inDoubleQuote = false;
+ newToken();
+ pushToken("__DOUBLE_QUOTE__");
+ newToken();
+ }
+
+ return;
+ } else if (inComment) {
+ if (ch == '*') {
+ commentEnding = true;
+ } else if (ch == '/') {
+ inComment = false;
+ commentEnding = false;
+ } else {
+ commentEnding = false;
+ }
+
+ return;
+ }
+
+ switch (ch) {
+ case '\'':
+ newToken();
+ inSingleQuote = true;
+ return;
+
+ case '\"':
+ newToken();
+ inDoubleQuote = true;
+ return;
+
+ case '/':
+ newToken();
+ commentMightBeStarting = true;
+ return;
+ }
+
+ if (isspace(ch)) {
+ newToken();
+ } else if (tokenDelimiter(ch)) {
+ newToken();
+ if (isSingleCharToken(ch)) {
+ add(ch);
+ newToken();
+ }
+ } else if (isTokenable(ch)) {
+ add(ch);
+ } else {
+ printf("undexpected ... %c", (char)ch);
+ }
+ }
+
+ bool enteredFunction() {
+ if (inComment || inLineComment || inDoubleQuote || inSingleQuote || commentMightBeStarting) {
+ return false;
+ }
+
+ if (tokens.size() == 0) {
+ return false;
+ }
+
+ if (tokens[tokens.size() - 1] != "{") {
+ return false;
+ }
+
+ int i = tokens.size() - 2;
+
+ bool foundCloseBraket = false;
+ int innerBrakets = 0;
+ bool foundOpenBraket = false;
+ int iName = -1;
+
+ while (i >= 0) {
+ string t_i = tokens[i]; // debugging sucks!
+
+ if (!foundCloseBraket && (tokens[i] == "enum"
+ || tokens[i] == "struct"
+ || tokens[i] == "class"
+ || tokens[i] == "namespace"
+ || tokens[i] == "public"
+ || tokens[i] == "private"
+ || tokens[i] == "protected"
+ || tokens[i] == "__asm"
+ || tokens[i] == "catch"
+ || tokens[i] == "__except"
+ )) {
+ return false;
+ }
+
+ if (tokens[i] == ")") {
+ if (foundCloseBraket)
+ innerBrakets++;
+ else if (i >= 3 && tokens[i - 1] == "." && tokens[i - 2] == "." && tokens[i - 3] == ".") {
+ i -= 3;
+ }
+ foundCloseBraket = true;
+ } else if (tokens[i] == "(" && innerBrakets > 0) {
+ innerBrakets--;
+ } else if (tokens[i] == "(" && innerBrakets == 0) {
+ foundOpenBraket = true;
+ i--; if ( i < 0) return false;
+ string name = tokens[i];
+ iName = i;
+
+ if (name == "if" || name == "while" || name == "switch"|| name == "for") {
+ return false;
+ }
+
+ if (!CouldBeFunctionName(name)) return false;
+ if (i >= 6 && tokens[i - 1] == ":" && tokens[i - 2] == ":" && CouldBeClassnName(tokens[i - 3]) && tokens[i - 4] == ":" && tokens[i - 5] == ":" && CouldBeClassnName(tokens[i - 6])) {
+ name = tokens[i - 6] + "::" + tokens[i - 3] + "::" + name;
+ iName = i - 6;
+ if (i >= 7 && (tokens[i - 7] == ":" || tokens[i-7] == ",")) {
+ i -= 7 + 1;
+ name = "";
+ foundCloseBraket = false;
+ foundOpenBraket = false;
+ innerBrakets = 0;
+ continue;
+ }
+ }
+ else if (i >= 3 && tokens[i - 1] == ":" && tokens[i - 2] == ":" && CouldBeClassnName(tokens[i - 3])) {
+ name = tokens[i - 3] + "::" + name;
+ iName = i - 3;
+ if (i >= 4 && (tokens[i - 4] == ":" || tokens[i-4] == ",")) {
+ i -= 4 + 1;
+ name = "";
+ foundCloseBraket = false;
+ foundOpenBraket = false;
+ innerBrakets = 0;
+ continue;
+ }
+ }
+ else if (i >= 1 && (tokens[i - 1] == ":" || tokens[i-1] == ",")) {
+ i -= 1 + 1;
+ name = "";
+ foundCloseBraket = false;
+ foundOpenBraket = false;
+ innerBrakets = 0;
+ continue;
+ }
+
+ if (name == "") {
+ return false;
+ }
+
+ if (iName >= 2 && tokens[iName - 2] == "#" && tokens[iName - 1] == "define") {
+ return false;
+ }
+
+ if (iName >= 1 && (tokens[i - 1] == "enum"
+ || tokens[i - 1] == "struct"
+ || tokens[i - 1] == "class"
+ || tokens[i - 1] == "namespace"
+ || tokens[i - 1] == "public"
+ || tokens[i - 1] == "private"
+ || tokens[i - 1] == "protected"
+ || tokens[i - 1] == "__asm"
+ || tokens[i - 1] == "if"
+ || tokens[i - 1] == "while"
+ || tokens[i - 1] == "for"
+ || tokens[i - 1] == "switch"
+ || tokens[i - 1] == "!"
+ )) {
+ return false;
+ }
+
+ int k = 10;
+ i = iName - 2;
+ bool isInline = false;// heuristic for inline functions
+ while (k > 0 && i >= 0) {
+ if (tokens[i] == "inline") {
+ isInline = true;
+ break;
+ }
+ if (tokens[i] == ";" || tokens[i] == "{" || tokens[i] == "}") {
+ break;
+ }
+ i--;
+ k--;
+ }
+
+ if (isInline) return false; //do not trace inline functions
+
+ lastFunctionName = name;
+ return true;
+ } else {
+ if (!foundCloseBraket) {
+ if (!IgnorableFunctionModifier(tokens[i])) {
+ return false;
+ }
+ } else {
+ if (!IgnorableFunctionParameter(tokens[i])) {
+ return false;
+ }
+ }
+ }
+
+ i--;
+ }
+
+ return false;
+ }
+
+ const char* functionName() {
+ return lastFunctionName.c_str();
+ }
+
+ int lineNumber() {
+ return line;
+ }
+
+private:
+
+ bool CouldBeFunctionName(const string& str) {
+ if (str.empty()) return false;
+ if (!isalpha(str[0]) && str[0] != '_' && str[0] != '~' && str[0] != ':') return false;
+ for (int i = 1; i < str.length(); i++) {
+ if (!isalpha(str[i]) && !isdigit(str[i]) && str[i] != '_' && str[i] != ':') return false;
+ }
+
+ return true;
+ }
+
+ bool isNumber(const string& str) {
+ if (str.empty()) return false;
+ for (int i = 0; i < str.length(); i++) {
+ if (!isdigit(str[i]) && str[i] != '.' && str[i] != 'x' && str[i] != 'X' && str[i] != 'e' && str[i] != 'E') return false;
+ }
+
+ return true;
+ }
+
+
+ bool isOperator(const string& str) {
+ if (str.empty()) return false;
+ for (int i = 1; i < str.length(); i++) {
+ switch (str[i]) {
+ case '<':
+ case '>':
+ case '=':
+ case '+':
+ case '-':
+ case '*':
+ case '/':
+ case '(':
+ case ')':
+ case '[':
+ case ']':
+ case '!':
+ case '|':
+ case '&':
+ case '^':
+ case '%':
+ break;
+ default:
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ bool CouldBeClassnName(const string& str) {
+ return CouldBeFunctionName(str);
+ }
+
+ bool IgnorableFunctionModifier(const string& str) {
+ return str.empty() || CouldBeFunctionName(str);
+ }
+
+ bool IgnorableFunctionParameter(const string& str) {
+ if (str.empty()) return true;
+ if (CouldBeFunctionName(str)) return true;
+ if (str == ",") return true;
+ if (str == "*") return true;
+ if (str == "=") return true;
+ if (str == "&") return true;
+ if (str == "<") return true;
+ if (str == ">") return true;
+ if (str == ":") return true;
+ if (str == "=") return true;
+ if (isNumber(str)) return true;
+ if (str == "]") return true;
+ if (str == "[") return true;
+
+ if (str == ";") return false;
+
+ return false;
+ }
+
+
+ bool tokenDelimiter(int ch) {
+ if (isspace(ch)) return true;
+ if (isdigit(ch)) return false;
+ if (isalpha(ch)) return false;
+ if (ch == '_') return false;
+ return true;
+ }
+
+ bool isTokenable(int ch) {
+ if (isdigit(ch)) return true;
+ if (isalpha(ch)) return true;
+ if (ch == '_') return true;
+ return false;
+ }
+
+ bool isSingleCharToken(int ch) {
+ if (isspace(ch)) return false;
+ if (isdigit(ch)) return false;
+ if (isalpha(ch)) return false;
+ if (ch == '_') return false;
+ return true;
+ }
+
+ void add(char ch) {
+ token += ch;
+ }
+
+ void pushToken(const char* sz) {
+ newToken();
+ token = sz;
+ newToken();
+ }
+
+ void newToken() {
+ if (token.empty()) return;
+
+ if (tokens.size() > 0) {
+ string last = tokens[tokens.size() -1];
+ if (last == "operator") {
+ if (isOperator(op + token)) {
+ op += token;
+ token = "";
+ return;
+ } else if (op != "" && isOperator(op)) {
+ tokens[tokens.size() -1] = last + op;
+ op = "";
+ return;
+ } else if (isOperator(token)) {
+ op = token;
+ token = "";
+ return;
+ } else {
+ // compile error?
+ op = "";
+ }
+ } else if (last == "~") {
+ tokens[tokens.size() -1] = last + token;
+ token = "";
+ return;
+ }
+ }
+
+ tokens.push_back(token);
+ token = "";
+ }
+
+ int line;
+ vector<string> tokens;
+ string token;
+ string lastFunctionName;
+
+ bool inComment;
+ bool inLineComment;
+ bool inDoubleQuote;
+ bool inSingleQuote;
+ bool isEscaping;
+ bool commentEnding;
+ bool commentMightBeStarting;
+
+ string op;
+};
+
+char output[100000000];
+char* now;
+
+
+void emit(char ch) {
+ *now = ch;
+ now++;
+}
+
+void emit(const char* szCode, const char* szFunctionName, int fileId, int line) {
+ sprintf(now, szCode, szFunctionName, fileId, line);
+ while (*now) {
+ now++;
+ }
+}
+
+void runFile(const char* szFileNameInput, const char* szFileNameOutput, const char* szInclude) {
+ printf("%s\n", szFileNameInput);
+
+
+ if (!sourceFile(szFileNameInput))
+ return;
+
+ now = output;
+ int fileId = source_db->obtainFileId(szFileNameInput);
+ FILE* file = fopen(szFileNameInput, "rt");
+ int ch;
+ CppState state;
+ while (true) {
+ int ch = getc(file);
+ if (ch == -1)
+ break;
+ state.apply(ch);
+ emit(ch);
+ if (ch == '{' && state.enteredFunction()) { // {
+ emit("LS_TRACE(\"%s\", %i, %i);", state.functionName(), fileId, state.lineNumber()); // light symbol traces, create a macro to define it
+ }
+ }
+ fclose(file);
+
+ file = fopen(szFileNameOutput, "wt");
+ // TODO: input parameter
+ fprintf(file, "#include \"%s\"\n", szInclude);
+ fwrite(output, 1, now - output, file);
+ fclose(file);
+ //source_db->commit();
+}
+
+// to create the list file:
+// dir *.cpp;*.h;*.cc /s /b
+void runAll(char* szFileHolder, const char* szInclude) {
+ FILE* file = fopen(szFileHolder, "rt");
+ if (file == NULL) {
+ return;
+ }
+
+ while (true) {
+ char szFileName[10000] = "";
+ fgets(szFileName, 10000, file);
+ char* end = szFileName + strlen(szFileName) - 1;
+ while (end > szFileName && (*end == '\n' || *end == '\r' || *end == ' ' || *end == '\t')) {
+ *end = 0;
+ end--;
+ }
+ if (strlen(szFileName) == 0)
+ break;
+
+ runFile(szFileName, szFileName, szInclude);
+ }
+ fclose(file);
+ source_db->commit();
+}
+
+int _tmain(int argc, char* argv[])
+{
+ // base path, include, list.txt, lightSymbolFile, [lightSymbolsOut]
+ SkSourceDb::Load(argv[4], &source_db, argc == 5 ? argv[4] : argv[5], argv[1]);
+ if (source_db == NULL) {
+ source_db = new SkSourceDb(argv[1], argv[4]);
+ }
+
+ runAll(argv[3], argv[2]); // e.g. foo\\src\\lightsymbols\\lightsymbols.h");
+
+ return 0;
+}
diff --git a/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.vcxproj b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.vcxproj
new file mode 100644
index 00000000000..61411c4ec62
--- /dev/null
+++ b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.vcxproj
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{A0E72F45-561E-4B28-B9B2-6C9E9F6BA8BA}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace>Callstacker</RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LinkIncremental>true</LinkIncremental>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <LinkIncremental>false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <None Include="ReadMe.txt" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="stdafx.h" />
+ <ClInclude Include="targetver.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="Callstacker.cpp" />
+ <ClCompile Include="stdafx.cpp" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.vcxproj.filters b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.vcxproj.filters
new file mode 100644
index 00000000000..b7e939c14a8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.vcxproj.filters
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="ReadMe.txt" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="stdafx.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="targetver.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="stdafx.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="Callstacker.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.vcxproj.user b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.vcxproj.user
new file mode 100644
index 00000000000..797bf6a30f6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.vcxproj.user
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerCommandArguments>D:\edisonn\chromium1_new\ D:\edisonn\chromium1_new\all.txt D:\edisonn\chromium1_new\lightsymbols.txt</LocalDebuggerCommandArguments>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <LocalDebuggerCommandArguments>D:\edisonn\chromium1_new\ D:\edisonn\chromium1_new\all.txt D:\edisonn\chromium1_new\lightsymbols.txt</LocalDebuggerCommandArguments>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/ReadMe.txt b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/ReadMe.txt
new file mode 100644
index 00000000000..8f597bf9790
--- /dev/null
+++ b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/ReadMe.txt
@@ -0,0 +1,40 @@
+========================================================================
+ CONSOLE APPLICATION : Callstacker Project Overview
+========================================================================
+
+AppWizard has created this Callstacker application for you.
+
+This file contains a summary of what you will find in each of the files that
+make up your Callstacker application.
+
+
+Callstacker.vcxproj
+ This is the main project file for VC++ projects generated using an Application Wizard.
+ It contains information about the version of Visual C++ that generated the file, and
+ information about the platforms, configurations, and project features selected with the
+ Application Wizard.
+
+Callstacker.vcxproj.filters
+ This is the filters file for VC++ projects generated using an Application Wizard.
+ It contains information about the association between the files in your project
+ and the filters. This association is used in the IDE to show grouping of files with
+ similar extensions under a specific node (for e.g. ".cpp" files are associated with the
+ "Source Files" filter).
+
+Callstacker.cpp
+ This is the main application source file.
+
+/////////////////////////////////////////////////////////////////////////////
+Other standard files:
+
+StdAfx.h, StdAfx.cpp
+ These files are used to build a precompiled header (PCH) file
+ named Callstacker.pch and a precompiled types file named StdAfx.obj.
+
+/////////////////////////////////////////////////////////////////////////////
+Other notes:
+
+AppWizard uses "TODO:" comments to indicate parts of the source code you
+should add to or customize.
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/stdafx.cpp b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/stdafx.cpp
new file mode 100644
index 00000000000..e746ff29c82
--- /dev/null
+++ b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/stdafx.cpp
@@ -0,0 +1,8 @@
+// stdafx.cpp : source file that includes just the standard includes
+// Callstacker.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
diff --git a/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/stdafx.h b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/stdafx.h
new file mode 100644
index 00000000000..b005a839def
--- /dev/null
+++ b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/stdafx.h
@@ -0,0 +1,15 @@
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#pragma once
+
+#include "targetver.h"
+
+#include <stdio.h>
+#include <tchar.h>
+
+
+
+// TODO: reference additional headers your program requires here
diff --git a/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/targetver.h b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/targetver.h
new file mode 100644
index 00000000000..87c0086de75
--- /dev/null
+++ b/chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/targetver.h
@@ -0,0 +1,8 @@
+#pragma once
+
+// Including SDKDDKVer.h defines the highest available Windows platform.
+
+// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
+// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
+
+#include <SDKDDKVer.h>
diff --git a/chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/helper.h b/chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/helper.h
new file mode 100644
index 00000000000..62f375a396a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/helper.h
@@ -0,0 +1,65 @@
+#include <stdlib.h>
+#define CANVAS_PATH "CANVAS_PATH"
+
+class SkFile {
+ FILE* file;
+ bool busted;
+ char* sz;
+ mutable int i;
+
+public:
+ SkFile(unsigned long id) {
+ file = NULL;
+ busted = false;
+ sz = new char[100000];
+ set(id);
+ i = 100;
+ }
+
+ ~SkFile() {
+ delete sz;
+ if (file) {
+ fclose(file);
+ }
+ }
+
+ void set(unsigned long id) {
+ if (busted) {
+ return;
+ }
+
+ if (file == NULL) {
+ char sz[10000];
+ sprintf(sz, "%s\\%ul.callstacks.txt", getenv(CANVAS_PATH), id);
+ file = fopen(sz, "a");
+ if (file == NULL) {
+ busted = true;
+ }
+ fprintf(file, "\n\n\nNEW SESSION, just coliding ids ... should generate a new file ideally ... \n\n\n");
+ }
+ }
+
+ void appendLine(const char* sz) const {
+ if (busted) {
+ return;
+ }
+
+ fprintf(file, "%s\n", sz);
+ }
+
+ void dump(bool flush = false) const {
+ if (busted) {
+ return;
+ }
+
+ LightSymbol::GetCallStack(sz, 100000, " >- ");
+ appendLine(sz);
+
+ i--;
+
+ if (i < 0 || flush) {
+ i = 100;
+ fflush(file);
+ }
+ }
+};
diff --git a/chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/lightsymbols.cc b/chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/lightsymbols.cc
new file mode 100644
index 00000000000..230faf587fc
--- /dev/null
+++ b/chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/lightsymbols.cc
@@ -0,0 +1,169 @@
+#include "lightsymbols.h"
+
+LightSymbol::PLightSymbol LightSymbol::lsFrames[1000];
+HANDLE LightSymbol::handleFrames[1000];
+SZ* LightSymbol::fileNames;
+bool LightSymbol::busted = false;
+
+
+LightSymbol::LightSymbol(const char* sym, int fileId, int lineNumber) {
+ while (busted) {
+ busted = busted;
+ }
+ this->sym = sym;
+ this->fileId = fileId;
+ this->lineNumber = lineNumber;
+
+ LightSymbol** container = getThreadFrameContainer();
+
+ parentFrame = *container;
+ *container = this; // shortcut for get+set current frame
+}
+
+LightSymbol::~LightSymbol() {
+
+// assert if (GetCurrentFrame() != this) {
+
+ SetCurrentFrame(parentFrame);
+}
+
+bool LightSymbol::GetCallStack(char* sz, int len, const char* separator) {
+ LightSymbol* ls = GetCurrentFrame();
+ if (ls == 0) {
+ return false;
+ } else {
+ return ls->GetCallStackCore(sz, len, separator);
+ }
+}
+
+LightSymbol** LightSymbol::getThreadFrameContainer() {
+ //pthread_t t = pthread_self();
+ HANDLE h = (HANDLE)GetCurrentThreadId(); // f, keep handle so I don't have to recompie tyhe whole app; update toi DWORD one I really need changes in header file
+ int i = 0;
+ while (handleFrames[i] != h && handleFrames[i] != NULL && i < 1000 - 1) {
+ i++;
+ }
+ if (handleFrames[i] == h) {
+ return &lsFrames[i];
+ }
+ handleFrames[i] = h;
+ return &lsFrames[i];
+}
+
+bool LightSymbol::GetCallStackCore(char* sz, int len, const char* separator) const {
+ if (busted) {
+ return false;
+ }
+ if (fileNames == NULL) { // f multithreading synchr
+ FILE* log = fopen("d:\\edisonn\\log.txt", "wt");
+
+ if (log) { fprintf(log, "build\n");fflush(log); }
+
+ char szLine[10000];
+ FILE* file = fopen(getenv(LIGHT_SYMBOLS_FILE), "rt");
+ if (file == NULL) {
+ busted = true;
+ return false;
+ }
+
+ const char* trimed;
+
+ // count number of lines
+ int id;
+ int entries = 0;
+ while (true) {
+ id = -1;
+ if (fscanf(file, "%i", &id) == 0) break;
+ if (id == -1) break;
+ if (entries <= id + 1) {
+ entries = id + 1;
+ }
+ *szLine = '\0';
+ fgets(szLine, 10000, file);
+ trimed = trim(szLine);
+ }
+
+ fclose(file);
+ file = fopen(getenv(LIGHT_SYMBOLS_FILE), "rt");
+ if (file == NULL) {
+ busted = true;
+ return false; // f this
+ }
+
+ if (log) { fprintf(log, "entries: %i\n", entries);fflush(log); }
+
+ SZ* __fileNames = new SZ[entries];
+
+ while (true) {
+ id = -1;
+ if (fscanf(file, "%i", &id) == 0) break;
+ if (id == -1) break;
+ *szLine = '\0';
+ fgets(szLine, 10000, file);
+ trimed = trim(szLine);
+
+ if (log) { fprintf(log, "%i, %s", id, trimed); }
+
+ // ass u me the file is correct
+
+ __fileNames[id] = new char[strlen(trimed) + 1];
+ if (log) { fprintf(log, " - ");fflush(log); }
+ strcpy(__fileNames[id], trimed);
+ if (log) { fprintf(log, " _ \n");fflush(log); }
+ }
+ fclose(file);
+ fileNames = __fileNames;
+ if (log) { fclose(log); }
+ }
+
+ const LightSymbol* ls = this;
+ char* szOut = sz;
+ // f security
+ while (ls != NULL && len > 1000) {
+ sprintf(szOut, "%s, %s:%i%s", ls->sym, fileNames[ls->fileId], ls->lineNumber, separator);
+ while (*szOut && len > 0) {
+ szOut++;
+ len--;
+ }
+ ls = ls->parentFrame;
+ }
+
+ int more = 0;
+ while (ls != NULL) {
+ ls = ls->parentFrame;
+ }
+
+ if (more > 0) {
+ sprintf(szOut, " ... %i more frames. allocate more memory!", more);
+ }
+
+ return true;
+}
+
+LightSymbol* LightSymbol::GetCurrentFrame() {
+ return *getThreadFrameContainer();
+}
+
+void LightSymbol::SetCurrentFrame(LightSymbol* ls) {
+ *getThreadFrameContainer() = ls;
+}
+
+const char* LightSymbol::trim(char* sz) {
+ if (sz == NULL) return NULL;
+
+ while (*sz == ' ' || *sz == '\t' || *sz == '\r' || *sz == '\n' || *sz == ',')
+ sz++;
+
+ if (*sz == '\0') return sz;
+
+ int len = strlen(sz);
+ char* start = sz;
+ sz = sz + (len - 1);
+
+ while (sz >= start && (*sz == ' ' || *sz == '\t' || *sz == '\r' || *sz == '\n' || *sz == ',')) {
+ *sz = '\0';
+ sz--;
+ }
+
+ return start;
+}
diff --git a/chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/lightsymbols.h b/chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/lightsymbols.h
new file mode 100644
index 00000000000..02494e63b54
--- /dev/null
+++ b/chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/lightsymbols.h
@@ -0,0 +1,50 @@
+#ifndef __LIGHT_SYMBOLS__
+#define __LIGHT_SYMBOLS__
+#define LS_TRACE(functionName,fileId,lineNumber) LightSymbol __lstr(functionName,fileId,lineNumber);
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+//#include <pthread.h>
+#include <windows.h>
+
+typedef char* SZ;
+
+#define LIGHT_SYMBOLS_FILE "LIGHT_SYMBOLS_FILE"
+
+class LightSymbol {
+ const char* sym;
+ int fileId;
+ int lineNumber;
+
+ LightSymbol* parentFrame;
+
+ typedef LightSymbol* PLightSymbol;
+
+ static PLightSymbol lsFrames[1000];
+ static HANDLE handleFrames[1000];
+ static SZ* fileNames;
+ static bool busted;
+
+public:
+ LightSymbol(const char* sym, int fileId, int lineNumber);
+
+ ~LightSymbol();
+
+ static bool GetCallStack(char* sz, int len, const char* separator);
+
+private:
+
+ static LightSymbol** getThreadFrameContainer();
+
+ bool GetCallStackCore(char* sz, int len, const char* separator) const ;
+
+ static LightSymbol* GetCurrentFrame() ;
+
+ static void SetCurrentFrame(LightSymbol* ls) ;
+
+ static const char* trim(char* sz) ;
+};
+
+#endif
diff --git a/chromium/third_party/skia/experimental/Networking/SampleNetPipeReader.cpp b/chromium/third_party/skia/experimental/Networking/SampleNetPipeReader.cpp
new file mode 100644
index 00000000000..aef56535940
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Networking/SampleNetPipeReader.cpp
@@ -0,0 +1,129 @@
+#include "SampleCode.h"
+#include "SkView.h"
+#include "SkCanvas.h"
+#include "SkGradientShader.h"
+#include "SkGPipe.h"
+#include "SkSockets.h"
+#include "SkOSMenu.h"
+
+/**
+ * A simple networked pipe reader
+ *
+ * This view will connect to a user specified server, in this case meaning any
+ * Skia app that's has a SkTCPServer set up to broadcast its piped drawing data,
+ * received all the data transmitted and attempt to reproduce the drawing calls.
+ * This reader will only keep the latest batch of data. In order to keep up with
+ * the server, which may be producing data at a much higher rate than the reader
+ * is consuming, the reader will attempt multiple reads and only render the
+ * latest frame. this behavior can be adjusted by changing MAX_READS_PER_FRAME
+ * or disabled by setting fSync to false
+ */
+
+#define MAX_READS_PER_FRAME 12
+
+class NetPipeReaderView : public SampleView {
+public:
+ NetPipeReaderView() {
+ fSocket = NULL;
+ fSync = true;
+ }
+
+ ~NetPipeReaderView() {
+ if (fSocket) {
+ delete fSocket;
+ }
+ fDataArray.reset();
+ }
+ virtual void requestMenu(SkOSMenu* menu) {
+ menu->setTitle("Net Pipe Reader");
+ menu->appendTextField("Server IP", "Server IP", this->getSinkID(),
+ "IP address");
+ menu->appendSwitch("Sync", "Sync", this->getSinkID(), fSync);
+ }
+
+protected:
+ static void readData(int cid, const void* data, size_t size,
+ SkSocket::DataType type, void* context) {
+ NetPipeReaderView* view = (NetPipeReaderView*)context;
+ view->onRead(data, size);
+ }
+
+ void onRead(const void* data, size_t size) {
+ if (size > 0)
+ fDataArray.append(size, (const char*)data);
+ }
+
+ bool onQuery(SkEvent* evt) {
+ if (SampleCode::TitleQ(*evt)) {
+ SampleCode::TitleR(evt, "Net Pipe Reader");
+ return true;
+ }
+ return this->INHERITED::onQuery(evt);
+ }
+
+ bool onEvent(const SkEvent& evt) {
+ SkString s;
+ if (SkOSMenu::FindText(evt, "Server IP", &s)) {
+ if (NULL != fSocket) {
+ delete fSocket;
+ }
+ fSocket = new SkTCPClient(s.c_str());
+ fSocket->connectToServer();
+ SkDebugf("Connecting to %s\n", s.c_str());
+ return true;
+ }
+ if (SkOSMenu::FindSwitchState(evt, "Sync", &fSync))
+ return true;
+ return this->INHERITED::onEvent(evt);
+ }
+
+ void onDrawContent(SkCanvas* canvas) {
+ if (NULL == fSocket)
+ return;
+
+ if (fSocket->isConnected()) {
+ int dataToRemove = fDataArray.count();
+ if (fSync) {
+ int numreads = 0;
+ while (fSocket->readPacket(readData, this) > 0 &&
+ numreads < MAX_READS_PER_FRAME) {
+ // at this point, new data has been read and stored, discard
+ // old data since it's not needed anymore
+ SkASSERT(fDataArray.count() > dataToRemove);
+ fDataArray.remove(0, dataToRemove);
+ dataToRemove = fDataArray.count();
+ ++numreads;
+ }
+ // clean up if max reads reached
+ if (numreads == MAX_READS_PER_FRAME &&
+ fDataArray.count() > dataToRemove)
+ fDataArray.remove(0, dataToRemove);
+ }
+ else {
+ if (fSocket->readPacket(readData, this) > 0)
+ fDataArray.remove(0, dataToRemove);
+ }
+ }
+ else
+ fSocket->connectToServer();
+
+ SkGPipeReader reader(canvas);
+ size_t bytesRead;
+ SkGPipeReader::Status fStatus = reader.playback(fDataArray.begin(),
+ fDataArray.count(),
+ &bytesRead);
+ SkASSERT(SkGPipeReader::kError_Status != fStatus);
+ this->inval(NULL);
+ }
+
+private:
+ bool fSync;
+ SkTDArray<char> fDataArray;
+ SkTCPClient* fSocket;
+ typedef SampleView INHERITED;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+
+static SkView* MyFactory() { return new NetPipeReaderView; }
+static SkViewRegister reg(MyFactory);
diff --git a/chromium/third_party/skia/experimental/Networking/SkSockets.cpp b/chromium/third_party/skia/experimental/Networking/SkSockets.cpp
new file mode 100644
index 00000000000..db9da09d4d0
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Networking/SkSockets.cpp
@@ -0,0 +1,358 @@
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include <netdb.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+#include "SkSockets.h"
+#include "SkData.h"
+
+SkSocket::SkSocket() {
+ fMaxfd = 0;
+ FD_ZERO(&fMasterSet);
+ fConnected = false;
+ fReady = false;
+ fReadSuspended = false;
+ fWriteSuspended = false;
+ fSockfd = this->createSocket();
+}
+
+SkSocket::~SkSocket() {
+ this->closeSocket(fSockfd);
+ shutdown(fSockfd, 2); //stop sending/receiving
+}
+
+int SkSocket::createSocket() {
+ int sockfd = socket(AF_INET, SOCK_STREAM, 0);
+ if (sockfd < 0) {
+ SkDebugf("ERROR opening socket\n");
+ return -1;
+ }
+ int reuse = 1;
+
+ if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(int)) < 0) {
+ SkDebugf("error: %s\n", strerror(errno));
+ return -1;
+ }
+#ifdef NONBLOCKING_SOCKETS
+ this->setNonBlocking(sockfd);
+#endif
+ //SkDebugf("Opened fd:%d\n", sockfd);
+ fReady = true;
+ return sockfd;
+}
+
+void SkSocket::closeSocket(int sockfd) {
+ if (!fReady)
+ return;
+
+ close(sockfd);
+ //SkDebugf("Closed fd:%d\n", sockfd);
+
+ if (FD_ISSET(sockfd, &fMasterSet)) {
+ FD_CLR(sockfd, &fMasterSet);
+ if (sockfd >= fMaxfd) {
+ while (FD_ISSET(fMaxfd, &fMasterSet) == false && fMaxfd > 0)
+ fMaxfd -= 1;
+ }
+ }
+ if (0 == fMaxfd)
+ fConnected = false;
+}
+
+void SkSocket::onFailedConnection(int sockfd) {
+ this->closeSocket(sockfd);
+}
+
+void SkSocket::setNonBlocking(int sockfd) {
+ int flags = fcntl(sockfd, F_GETFL);
+ fcntl(sockfd, F_SETFL, flags | O_NONBLOCK);
+}
+
+void SkSocket::addToMasterSet(int sockfd) {
+ FD_SET(sockfd, &fMasterSet);
+ if (sockfd > fMaxfd)
+ fMaxfd = sockfd;
+}
+
+int SkSocket::readPacket(void (*onRead)(int, const void*, size_t, DataType,
+ void*), void* context) {
+ if (!fConnected || !fReady || NULL == onRead || NULL == context
+ || fReadSuspended)
+ return -1;
+
+ int totalBytesRead = 0;
+
+ char packet[PACKET_SIZE];
+ for (int i = 0; i <= fMaxfd; ++i) {
+ if (!FD_ISSET (i, &fMasterSet))
+ continue;
+
+ memset(packet, 0, PACKET_SIZE);
+ SkDynamicMemoryWStream stream;
+ int attempts = 0;
+ bool failure = false;
+ int bytesReadInTransfer = 0;
+ int bytesReadInPacket = 0;
+ header h;
+ h.done = false;
+ h.bytes = 0;
+ while (!h.done && fConnected && !failure) {
+ int retval = read(i, packet + bytesReadInPacket,
+ PACKET_SIZE - bytesReadInPacket);
+
+ ++attempts;
+ if (retval < 0) {
+#ifdef NONBLOCKING_SOCKETS
+ if (errno == EWOULDBLOCK || errno == EAGAIN) {
+ if (bytesReadInPacket > 0 || bytesReadInTransfer > 0)
+ continue; //incomplete packet or frame, keep tring
+ else
+ break; //nothing to read
+ }
+#endif
+ //SkDebugf("Read() failed with error: %s\n", strerror(errno));
+ failure = true;
+ break;
+ }
+
+ if (retval == 0) {
+ //SkDebugf("Peer closed connection or connection failed\n");
+ failure = true;
+ break;
+ }
+
+ SkASSERT(retval > 0);
+ bytesReadInPacket += retval;
+ if (bytesReadInPacket < PACKET_SIZE) {
+ //SkDebugf("Read %d/%d\n", bytesReadInPacket, PACKET_SIZE);
+ continue; //incomplete packet, keep trying
+ }
+
+ SkASSERT((bytesReadInPacket == PACKET_SIZE) && !failure);
+ memcpy(&h.done, packet, sizeof(bool));
+ memcpy(&h.bytes, packet + sizeof(bool), sizeof(int));
+ memcpy(&h.type, packet + sizeof(bool) + sizeof(int), sizeof(DataType));
+ if (h.bytes > CONTENT_SIZE || h.bytes <= 0) {
+ //SkDebugf("bad packet\n");
+ failure = true;
+ break;
+ }
+ //SkDebugf("read packet(done:%d, bytes:%d) from fd:%d in %d tries\n",
+ // h.done, h.bytes, fSockfd, attempts);
+ stream.write(packet + HEADER_SIZE, h.bytes);
+ bytesReadInPacket = 0;
+ attempts = 0;
+ bytesReadInTransfer += h.bytes;
+ }
+
+ if (failure) {
+ onRead(i, NULL, 0, h.type, context);
+ this->onFailedConnection(i);
+ continue;
+ }
+
+ if (bytesReadInTransfer > 0) {
+ SkData* data = stream.copyToData();
+ SkASSERT(data->size() == bytesReadInTransfer);
+ onRead(i, data->data(), data->size(), h.type, context);
+ data->unref();
+
+ totalBytesRead += bytesReadInTransfer;
+ }
+ }
+ return totalBytesRead;
+}
+
+int SkSocket::writePacket(void* data, size_t size, DataType type) {
+ if (size < 0|| NULL == data || !fConnected || !fReady || fWriteSuspended)
+ return -1;
+
+ int totalBytesWritten = 0;
+ header h;
+ char packet[PACKET_SIZE];
+ for (int i = 0; i <= fMaxfd; ++i) {
+ if (!FD_ISSET (i, &fMasterSet))
+ continue;
+
+ int bytesWrittenInTransfer = 0;
+ int bytesWrittenInPacket = 0;
+ int attempts = 0;
+ bool failure = false;
+ while (bytesWrittenInTransfer < size && fConnected && !failure) {
+ memset(packet, 0, PACKET_SIZE);
+ h.done = (size - bytesWrittenInTransfer <= CONTENT_SIZE);
+ h.bytes = (h.done) ? size - bytesWrittenInTransfer : CONTENT_SIZE;
+ h.type = type;
+ memcpy(packet, &h.done, sizeof(bool));
+ memcpy(packet + sizeof(bool), &h.bytes, sizeof(int));
+ memcpy(packet + sizeof(bool) + sizeof(int), &h.type, sizeof(DataType));
+ memcpy(packet + HEADER_SIZE, (char*)data + bytesWrittenInTransfer,
+ h.bytes);
+
+ int retval = write(i, packet + bytesWrittenInPacket,
+ PACKET_SIZE - bytesWrittenInPacket);
+ attempts++;
+
+ if (retval < 0) {
+ if (errno == EPIPE) {
+ //SkDebugf("broken pipe, client closed connection");
+ failure = true;
+ break;
+ }
+#ifdef NONBLOCKING_SOCKETS
+ else if (errno == EWOULDBLOCK || errno == EAGAIN) {
+ if (bytesWrittenInPacket > 0 || bytesWrittenInTransfer > 0)
+ continue; //incomplete packet or frame, keep trying
+ else
+ break; //client not available, skip current transfer
+ }
+#endif
+ else {
+ //SkDebugf("write(%d) failed with error:%s\n", i,
+ // strerror(errno));
+ failure = true;
+ break;
+ }
+ }
+
+ bytesWrittenInPacket += retval;
+ if (bytesWrittenInPacket < PACKET_SIZE)
+ continue; //incomplete packet, keep trying
+
+ SkASSERT(bytesWrittenInPacket == PACKET_SIZE);
+ //SkDebugf("wrote to packet(done:%d, bytes:%d) to fd:%d in %d tries\n",
+ // h.done, h.bytes, i, attempts);
+ bytesWrittenInTransfer += h.bytes;
+ bytesWrittenInPacket = 0;
+ attempts = 0;
+ }
+
+ if (failure)
+ this->onFailedConnection(i);
+
+ totalBytesWritten += bytesWrittenInTransfer;
+ }
+ return totalBytesWritten;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+SkTCPServer::SkTCPServer(int port) {
+ sockaddr_in serverAddr;
+ serverAddr.sin_family = AF_INET;
+ serverAddr.sin_addr.s_addr = INADDR_ANY;
+ serverAddr.sin_port = htons(port);
+
+ if (bind(fSockfd, (sockaddr*)&serverAddr, sizeof(serverAddr)) < 0) {
+ SkDebugf("ERROR on binding: %s\n", strerror(errno));
+ fReady = false;
+ }
+}
+
+SkTCPServer::~SkTCPServer() {
+ this->disconnectAll();
+}
+
+int SkTCPServer::acceptConnections() {
+ if (!fReady)
+ return -1;
+
+ listen(fSockfd, MAX_WAITING_CLIENTS);
+ int newfd;
+ for (int i = 0; i < MAX_WAITING_CLIENTS; ++i) {
+#ifdef NONBLOCKING_SOCKETS
+ fd_set workingSet;
+ FD_ZERO(&workingSet);
+ FD_SET(fSockfd, &workingSet);
+ timeval timeout;
+ timeout.tv_sec = 0;
+ timeout.tv_usec = 0;
+ int sel = select(fSockfd + 1, &workingSet, NULL, NULL, &timeout);
+ if (sel < 0) {
+ SkDebugf("select() failed with error %s\n", strerror(errno));
+ continue;
+ }
+ if (sel == 0) //select() timed out
+ continue;
+#endif
+ sockaddr_in clientAddr;
+ socklen_t clientLen = sizeof(clientAddr);
+ newfd = accept(fSockfd, (struct sockaddr*)&clientAddr, &clientLen);
+ if (newfd< 0) {
+ SkDebugf("accept() failed with error %s\n", strerror(errno));
+ continue;
+ }
+ SkDebugf("New incoming connection - %d\n", newfd);
+ fConnected = true;
+#ifdef NONBLOCKING_SOCKETS
+ this->setNonBlocking(newfd);
+#endif
+ this->addToMasterSet(newfd);
+ }
+ return 0;
+}
+
+
+int SkTCPServer::disconnectAll() {
+ if (!fConnected || !fReady)
+ return -1;
+ for (int i = 0; i <= fMaxfd; ++i) {
+ if (FD_ISSET(i, &fMasterSet))
+ this->closeSocket(i);
+ }
+ fConnected = false;
+ return 0;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+SkTCPClient::SkTCPClient(const char* hostname, int port) {
+ //Add fSockfd since the client will be using it to read/write
+ this->addToMasterSet(fSockfd);
+
+ hostent* server = gethostbyname(hostname);
+ if (server) {
+ fServerAddr.sin_family = AF_INET;
+ memcpy((char*)&fServerAddr.sin_addr.s_addr, (char*)server->h_addr,
+ server->h_length);
+ fServerAddr.sin_port = htons(port);
+ }
+ else {
+ //SkDebugf("ERROR, no such host\n");
+ fReady = false;
+ }
+}
+
+void SkTCPClient::onFailedConnection(int sockfd) { //cleanup and recreate socket
+ SkASSERT(sockfd == fSockfd);
+ this->closeSocket(fSockfd);
+ fSockfd = this->createSocket();
+ //Add fSockfd since the client will be using it to read/write
+ this->addToMasterSet(fSockfd);
+}
+
+int SkTCPClient::connectToServer() {
+ if (!fReady)
+ return -1;
+ if (fConnected)
+ return 0;
+
+ int conn = connect(fSockfd, (sockaddr*)&fServerAddr, sizeof(fServerAddr));
+ if (conn < 0) {
+#ifdef NONBLOCKING_SOCKETS
+ if (errno == EINPROGRESS || errno == EALREADY)
+ return conn;
+#endif
+ if (errno != EISCONN) {
+ //SkDebugf("error: %s\n", strerror(errno));
+ this->onFailedConnection(fSockfd);
+ return conn;
+ }
+ }
+ fConnected = true;
+ SkDebugf("Succesfully reached server\n");
+ return 0;
+}
diff --git a/chromium/third_party/skia/experimental/Networking/SkSockets.h b/chromium/third_party/skia/experimental/Networking/SkSockets.h
new file mode 100644
index 00000000000..8d85446ecc6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/Networking/SkSockets.h
@@ -0,0 +1,198 @@
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#ifndef SkNetIO_DEFINED
+#define SkNetIO_DEFINED
+
+#include <netinet/in.h>
+#include <sys/socket.h>
+#include "SkTypes.h"
+#include "SkStream.h"
+
+/* PACKET and HEADER Format */
+#define PACKET_SIZE 1024
+#define HEADER_SIZE 20
+#define CONTENT_SIZE 1004
+
+#define DEFAULT_PORT 15555
+#define MAX_WAITING_CLIENTS 3
+#define NONBLOCKING_SOCKETS
+
+class SkSocket {
+public:
+ SkSocket();
+ virtual ~SkSocket();
+
+ enum State {
+ kError_state,
+ kBegin_state,
+ kIncomplete_state,
+ kDone_state
+ };
+
+ enum DataType {
+ kPipeAppend_type,
+ kPipeReplace_type,
+ kString_type,
+ kInt_type
+ };
+
+ bool isConnected() { return fConnected; }
+ /**
+ * Write data to the socket. Data is a pointer to the beginning of the data
+ * to be sent and dataSize specifies the number of bytes to send. This
+ * method will spread the data across multiple packets if the data can't all
+ * fit in a single packet. The method will write all the data to each of the
+ * socket's open connections until all the bytes have been successfully sent
+ * and return total the number of bytes written to all clients, unless there
+ * was an error during the transfer, in which case the method returns -1.
+ * For blocking sockets, write will block indefinitely if the socket at the
+ * other end of the connection doesn't receive any data.
+ * NOTE: This method guarantees that all of the data will be sent unless
+ * there was an error, so it may block temporarily when the write buffer is
+ * full
+ */
+ int writePacket(void* data, size_t size, DataType type = kPipeAppend_type);
+
+ /**
+ * Read a logical packet from socket. The data read will be stored
+ * sequentially in the dataArray. This method will keep running until all
+ * the data in a logical chunk has been read (assembling multiple partial
+ * packets if necessary) and return the number of bytes successfully read,
+ * unless there was an error, in which case the method returns -1. \For
+ * nonblocking sockets, read will return 0 if there's nothing to read. For
+ * blocking sockets, read will block indefinitely if the socket doesn't
+ * receive any data.
+ * NOTE: This method guarantees that all the data in a logical packet will
+ * be read so it may block temporarily if it's waiting for parts of a
+ * packet
+ */
+ int readPacket(void (*onRead)(int cid, const void* data, size_t size,
+ DataType type, void*), void* context);
+
+ /**
+ * Suspend network transfers until resume() is called. Leaves all
+ * connections in tact.
+ */
+ void suspendAll() { fReadSuspended = fWriteSuspended = true; }
+ /**
+ * Resume all network transfers.
+ */
+ void resumeAll() { fReadSuspended = fWriteSuspended = false; }
+ /**
+ * Other helper functions
+ */
+ void suspendRead() { fReadSuspended = true; }
+ void resumeRead() { fReadSuspended = false; }
+ void suspendWrite() { fWriteSuspended = true; }
+ void resumeWrite() { fWriteSuspended = false; }
+
+protected:
+ struct header {
+ bool done;
+ int bytes;
+ DataType type;
+ };
+
+ /**
+ * Create a socket and return its file descriptor. Returns -1 on failure
+ */
+ int createSocket();
+
+ /**
+ * Close the socket specified by the socket file descriptor argument. Will
+ * update fMaxfd and working set properly
+ */
+ void closeSocket(int sockfd);
+
+ /**
+ * Called when a broken or terminated connection has been detected. Closes
+ * the socket file descriptor and removes it from the master set by default.
+ * Override to handle broken connections differently
+ */
+ virtual void onFailedConnection(int sockfd);
+
+ /**
+ * Set the socket specified by the socket file descriptor as nonblocking
+ */
+ void setNonBlocking(int sockfd);
+
+ /**
+ * Add the socket specified by the socket file descriptor to the master
+ * file descriptor set, which is used to in the select() to detect new data
+ * or connections
+ */
+ void addToMasterSet(int sockfd);
+
+ bool fConnected;
+ bool fReady;
+ bool fReadSuspended;
+ bool fWriteSuspended;
+ int fMaxfd;
+ int fPort;
+ int fSockfd;
+
+ /**
+ * fMasterSet contains all the file descriptors to be used for read/write.
+ * For clients, this only contains the client socket. For servers, this
+ * contains all the file descriptors associated with established connections
+ * to clients
+ */
+ fd_set fMasterSet;
+};
+
+/*
+ * TCP server. Can accept simultaneous connections to multiple SkTCPClients and
+ * read/write data back and forth using read/writePacket calls. Port number can
+ * be specified, but make sure that client/server use the same port
+ */
+class SkTCPServer : public SkSocket {
+public:
+ SkTCPServer(int port = DEFAULT_PORT);
+ virtual ~SkTCPServer();
+
+ /**
+ * Accept any incoming connections to the server, will accept 1 connection
+ * at a time. Returns -1 on error. For blocking sockets, this method will
+ * block until a client calls connectToServer()
+ */
+ int acceptConnections();
+
+ /**
+ * Disconnect all connections to clients. Returns -1 on error
+ */
+ int disconnectAll();
+private:
+ typedef SkSocket INHERITED;
+};
+
+/*
+ * TCP client. Will connect to the server specified in the constructor. If a
+ * port number is specified, make sure that it's the same as the port number on
+ * the server
+ */
+class SkTCPClient : public SkSocket {
+public:
+ SkTCPClient(const char* hostname, int port = DEFAULT_PORT);
+
+ /**
+ * Connect to server. Returns -1 on error or failure. Call this to connect
+ * or reconnect to the server. For blocking sockets, this method will block
+ * until the connection is accepted by the server.
+ */
+ int connectToServer();
+protected:
+ /**
+ * Client needs to recreate the socket when a connection is broken because
+ * connect can only be called successfully once.
+ */
+ virtual void onFailedConnection(int sockfd);
+private:
+ sockaddr_in fServerAddr;
+ typedef SkSocket INHERITED;
+};
+
+#endif
diff --git a/chromium/third_party/skia/experimental/PdfViewer/SkNulCanvas.cpp b/chromium/third_party/skia/experimental/PdfViewer/SkNulCanvas.cpp
new file mode 100644
index 00000000000..640fba8bde7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/SkNulCanvas.cpp
@@ -0,0 +1,8 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkNulCanvas.h"
diff --git a/chromium/third_party/skia/experimental/PdfViewer/SkNulCanvas.h b/chromium/third_party/skia/experimental/PdfViewer/SkNulCanvas.h
new file mode 100644
index 00000000000..a976ea49da8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/SkNulCanvas.h
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkNulCanvas_DEFINED
+#define SkNulCanvas_DEFINED
+
+#include "SkCanvas.h"
+
+/** \class SkNulCanvas
+ *
+ * Nul Canvas is a canvas that does nothing. It is used to measure the perf of just parsing
+ * a pdf, without actually rendering anything.
+ *
+ */
+class SK_API SkNulCanvas : public SkCanvas {
+public:
+ SK_DECLARE_INST_COUNT(SkNulCanvas);
+
+ SkNulCanvas() {}
+ explicit SkNulCanvas(SkBaseDevice* device) : SkCanvas(device) {}
+
+ explicit SkNulCanvas(const SkBitmap& bitmap) : SkCanvas(bitmap) {}
+ virtual ~SkNulCanvas() {}
+
+ virtual bool isDrawingToLayer() const SK_OVERRIDE {return false;}
+ virtual void clear(SkColor) SK_OVERRIDE {}
+ virtual void drawPaint(const SkPaint& paint) SK_OVERRIDE {}
+ virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[],
+ const SkPaint& paint) SK_OVERRIDE {}
+ virtual void drawRect(const SkRect& rect, const SkPaint& paint) SK_OVERRIDE {}
+ virtual void drawOval(const SkRect& oval, const SkPaint&) SK_OVERRIDE {}
+ virtual void drawRRect(const SkRRect& rrect, const SkPaint& paint) SK_OVERRIDE {}
+ virtual void drawPath(const SkPath& path, const SkPaint& paint) SK_OVERRIDE {}
+ virtual void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top,
+ const SkPaint* paint = NULL) SK_OVERRIDE {}
+ virtual void drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src,
+ const SkRect& dst,
+ const SkPaint* paint,
+ DrawBitmapRectFlags flags) SK_OVERRIDE {}
+ virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m,
+ const SkPaint* paint = NULL) SK_OVERRIDE {}
+ virtual void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center,
+ const SkRect& dst, const SkPaint* paint = NULL) SK_OVERRIDE {}
+ virtual void drawSprite(const SkBitmap& bitmap, int left, int top,
+ const SkPaint* paint = NULL) SK_OVERRIDE {}
+ virtual void drawVertices(VertexMode vmode, int vertexCount,
+ const SkPoint vertices[], const SkPoint texs[],
+ const SkColor colors[], SkXfermode* xmode,
+ const uint16_t indices[], int indexCount,
+ const SkPaint& paint) SK_OVERRIDE {}
+ virtual void drawData(const void* data, size_t length) SK_OVERRIDE {}
+ virtual void beginCommentGroup(const char* description) SK_OVERRIDE {}
+ virtual void addComment(const char* kywd, const char* value) SK_OVERRIDE {}
+ virtual void endCommentGroup() SK_OVERRIDE {}
+ virtual SkDrawFilter* setDrawFilter(SkDrawFilter* filter) SK_OVERRIDE {return NULL;}
+
+ virtual bool isClipEmpty() const SK_OVERRIDE { return false; }
+#ifdef SK_SUPPORT_LEGACY_GETCLIPTYPE
+ virtual ClipType getClipType() const SK_OVERRIDE { return kRect_ClipType; }
+#endif
+ virtual bool getClipBounds(SkRect* bounds) const SK_OVERRIDE {
+ if (NULL != bounds) {
+ bounds->setXYWH(0, 0,
+ SkIntToScalar(this->imageInfo().fWidth),
+ SkIntToScalar(this->imageInfo().fHeight));
+ }
+ return true;
+ }
+ virtual bool getClipDeviceBounds(SkIRect* bounds) const SK_OVERRIDE {
+ if (NULL != bounds) {
+ bounds->setLargest();
+ }
+ return true;
+ }
+
+protected:
+ virtual SkCanvas* canvasForDrawIter() {return NULL;}
+ virtual SkBaseDevice* setDevice(SkBaseDevice* device) {return NULL;}
+
+ virtual SaveLayerStrategy willSaveLayer(const SkRect* bounds, const SkPaint* paint,
+ SaveFlags flags) SK_OVERRIDE {
+ this->INHERITED::willSaveLayer(bounds, paint, flags);
+ return kNoLayer_SaveLayerStrategy;
+ }
+
+ virtual void onDrawText(const void* text, size_t byteLength, SkScalar x,
+ SkScalar y, const SkPaint& paint) SK_OVERRIDE {}
+ virtual void onDrawPosText(const void* text, size_t byteLength,
+ const SkPoint pos[], const SkPaint& paint) SK_OVERRIDE {}
+ virtual void onDrawPosTextH(const void* text, size_t byteLength,
+ const SkScalar xpos[], SkScalar constY,
+ const SkPaint& paint) SK_OVERRIDE {}
+ virtual void onDrawTextOnPath(const void* text, size_t byteLength,
+ const SkPath& path, const SkMatrix* matrix,
+ const SkPaint& paint) SK_OVERRIDE {}
+
+ virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE {}
+ virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE {}
+ virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE {}
+ virtual void onClipRegion(const SkRegion&, SkRegion::Op) SK_OVERRIDE {}
+
+ virtual void onDrawPicture(const SkPicture* picture) SK_OVERRIDE {}
+
+private:
+ typedef SkCanvas INHERITED;
+};
+
+#endif // SkNulCanvas_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/SkPdfConfig.h b/chromium/third_party/skia/experimental/PdfViewer/SkPdfConfig.h
new file mode 100644
index 00000000000..914f156d18e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/SkPdfConfig.h
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfConfig_DEFINED
+#define SkPdfConfig_DEFINED
+
+#include "stddef.h"
+class SkPdfNativeObject;
+
+// shows what objects have not been used in rendering. can be used to track what features we might
+// have not implemented, or where we implemented only the default behaivour
+//#define PDF_TRACK_OBJECT_USAGE
+
+// tracks the position in the stream, it can be used to show where exactly the errors happened
+//#define PDF_TRACK_STREAM_OFFSETS
+
+// reports issues, warning, NYI, errors, ...
+// enable PDF_TRACK_STREAM_OFFSETS to also have the offset in the stream where the error happened
+//#define PDF_REPORT
+
+// At various points in code we show the value of important variables with this flag
+//#define PDF_TRACE
+
+// displays the result of each read token, individual result
+//#define PDF_TRACE_READ_TOKEN
+
+// Every drawtext draws before a rectangle, in this way we see the one that might have failed
+//#define PDF_TRACE_DRAWTEXT
+
+// For each render operations, it will dump the canvas in a png
+//#define PDF_TRACE_DIFF_IN_PNG
+
+// Does not clip at all, can be used in debugging issues
+//#define PDF_DEBUG_NO_CLIPING
+
+// Does not click the page, use is with 3x
+//#define PDF_DEBUG_NO_PAGE_CLIPING
+
+// render the page 3X bigger (with content in center) - used to make sure we don't mess up
+// positioning
+// like a tick tac toe board, only the center one has content, all the rest of them have to be clean
+//#define PDF_DEBUG_3X
+
+
+// TODO(edisonn): pass a flag to say how it was used? e.g. asked the type? Obtained value?
+// Implement it when it will be needed the first time to fix some bug.
+#ifdef PDF_TRACK_OBJECT_USAGE
+#define SkPdfMarkObjectUsed() fUsed = true
+#else
+#define SkPdfMarkObjectUsed()
+#endif // PDF_TRACK_OBJECT_USAGE
+
+#ifdef PDF_TRACK_OBJECT_USAGE
+#define SkPdfMarkObjectUnused() fUsed = false
+#else
+#define SkPdfMarkObjectUnused()
+#endif // PDF_TRACK_OBJECT_USAGE
+
+#ifdef PDF_TRACK_STREAM_OFFSETS
+#define TRACK_OBJECT_SRC(a)
+#define STORE_TRACK_PARAMETERS(obj) (obj)->fStreamId = streamId;\
+ (obj)->fOffsetStart = offsetStart;\
+ (obj)->fOffsetEnd = offsetEnd;
+#define STORE_TRACK_PARAMETER_OFFSET_END(obj,offsetEnd) (obj)->fOffsetEnd = (offsetEnd)-streamStart;
+#else
+#define TRACK_OBJECT_SRC(a)
+#define STORE_TRACK_PARAMETERS(obj)
+#define STORE_TRACK_PARAMETER_OFFSET_END(obj,offsetEnd)
+#endif //PDF_TRACK_STREAM_OFFSETS
+
+// TODO(edisonn): move it somewhere else?
+struct SkPdfInputStream {
+#ifdef PDF_TRACK_STREAM_OFFSETS
+ // no parent object -> original file to be rendered
+ // no parent file -> stream object
+ // both -> external stream object
+ int fParentFileID;
+ const SkPdfNativeObject* fParentObject;
+
+ size_t fDelta; // delta in parent stream
+ const unsigned char* fStart;
+#endif // PDF_TRACK_STREAM_OFFSETS
+
+ const unsigned char* fEnd;
+};
+
+struct SkPdfInputStreamLocation {
+ SkPdfInputStream fInputStream;
+ const unsigned char* fNow;
+};
+
+#ifdef PDF_TRACK_STREAM_OFFSETS
+struct SkPdfInputStreamRange {
+ SkPdfInputStream fInputStream;
+ const unsigned char* fRangeStart;
+ const unsigned char* fRangeEnd;
+};
+#endif // PDF_TRACK_STREAM_OFFSETS
+
+
+#endif // SkPdfConfig_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/SkPdfFont.cpp b/chromium/third_party/skia/experimental/PdfViewer/SkPdfFont.cpp
new file mode 100644
index 00000000000..71cc851f782
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/SkPdfFont.cpp
@@ -0,0 +1,468 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFont.h"
+
+#include "SkPdfNativeTokenizer.h"
+#include "SkStream.h"
+#include "SkTypeface.h"
+
+SkTDict<SkPdfStandardFontEntry>& getStandardFonts() {
+ static SkTDict<SkPdfStandardFontEntry> gPdfStandardFonts(100);
+
+ // TODO (edisonn): , vs - ? what does it mean?
+ // TODO (edisonn): MT, PS, Oblique=italic?, ... what does it mean?
+ if (gPdfStandardFonts.count() == 0) {
+ gPdfStandardFonts.set("Arial", SkPdfStandardFontEntry("Arial", false, false));
+ gPdfStandardFonts.set("Arial,Bold", SkPdfStandardFontEntry("Arial", true, false));
+ gPdfStandardFonts.set("Arial,BoldItalic", SkPdfStandardFontEntry("Arial", true, true));
+ gPdfStandardFonts.set("Arial,Italic", SkPdfStandardFontEntry("Arial", false, true));
+ gPdfStandardFonts.set("Arial-Bold", SkPdfStandardFontEntry("Arial", true, false));
+ gPdfStandardFonts.set("Arial-BoldItalic", SkPdfStandardFontEntry("Arial", true, true));
+ gPdfStandardFonts.set("Arial-BoldItalicMT", SkPdfStandardFontEntry("Arial", true, true));
+ gPdfStandardFonts.set("Arial-BoldMT", SkPdfStandardFontEntry("Arial", true, false));
+ gPdfStandardFonts.set("Arial-Italic", SkPdfStandardFontEntry("Arial", false, true));
+ gPdfStandardFonts.set("Arial-ItalicMT", SkPdfStandardFontEntry("Arial", false, true));
+ gPdfStandardFonts.set("ArialMT", SkPdfStandardFontEntry("Arial", false, false));
+ gPdfStandardFonts.set("Courier", SkPdfStandardFontEntry("Courier New", false, false));
+ gPdfStandardFonts.set("Courier,Bold", SkPdfStandardFontEntry("Courier New", true, false));
+ gPdfStandardFonts.set("Courier,BoldItalic", SkPdfStandardFontEntry("Courier New", true, true));
+ gPdfStandardFonts.set("Courier,Italic", SkPdfStandardFontEntry("Courier New", false, true));
+ gPdfStandardFonts.set("Courier-Bold", SkPdfStandardFontEntry("Courier New", true, false));
+ gPdfStandardFonts.set("Courier-BoldOblique", SkPdfStandardFontEntry("Courier New", true, true));
+ gPdfStandardFonts.set("Courier-Oblique", SkPdfStandardFontEntry("Courier New", false, true));
+ gPdfStandardFonts.set("CourierNew", SkPdfStandardFontEntry("Courier New", false, false));
+ gPdfStandardFonts.set("CourierNew,Bold", SkPdfStandardFontEntry("Courier New", true, false));
+ gPdfStandardFonts.set("CourierNew,BoldItalic", SkPdfStandardFontEntry("Courier New", true, true));
+ gPdfStandardFonts.set("CourierNew,Italic", SkPdfStandardFontEntry("Courier New", false, true));
+ gPdfStandardFonts.set("CourierNew-Bold", SkPdfStandardFontEntry("Courier New", true, false));
+ gPdfStandardFonts.set("CourierNew-BoldItalic", SkPdfStandardFontEntry("Courier New", true, true));
+ gPdfStandardFonts.set("CourierNew-Italic", SkPdfStandardFontEntry("Courier New", false, true));
+ gPdfStandardFonts.set("CourierNewPS-BoldItalicMT", SkPdfStandardFontEntry("Courier New", true, true));
+ gPdfStandardFonts.set("CourierNewPS-BoldMT", SkPdfStandardFontEntry("Courier New", true, false));
+ gPdfStandardFonts.set("CourierNewPS-ItalicMT", SkPdfStandardFontEntry("Courier New", false, true));
+ gPdfStandardFonts.set("CourierNewPSMT", SkPdfStandardFontEntry("Courier New", false, false));
+ gPdfStandardFonts.set("Helvetica", SkPdfStandardFontEntry("Helvetica", false, false));
+ gPdfStandardFonts.set("Helvetica,Bold", SkPdfStandardFontEntry("Helvetica", true, false));
+ gPdfStandardFonts.set("Helvetica,BoldItalic", SkPdfStandardFontEntry("Helvetica", true, true));
+ gPdfStandardFonts.set("Helvetica,Italic", SkPdfStandardFontEntry("Helvetica", false, true));
+ gPdfStandardFonts.set("Helvetica-Bold", SkPdfStandardFontEntry("Helvetica", true, false));
+ gPdfStandardFonts.set("Helvetica-BoldItalic", SkPdfStandardFontEntry("Helvetica", true, true));
+ gPdfStandardFonts.set("Helvetica-BoldOblique", SkPdfStandardFontEntry("Helvetica", true, true));
+ gPdfStandardFonts.set("Helvetica-Italic", SkPdfStandardFontEntry("Helvetica", false, true));
+ gPdfStandardFonts.set("Helvetica-Oblique", SkPdfStandardFontEntry("Helvetica", false, true));
+ gPdfStandardFonts.set("Times-Bold", SkPdfStandardFontEntry("Times New Roman", true, false));
+ gPdfStandardFonts.set("Times-BoldItalic", SkPdfStandardFontEntry("Times New Roman", true, true));
+ gPdfStandardFonts.set("Times-Italic", SkPdfStandardFontEntry("Times New Roman", false, true));
+ gPdfStandardFonts.set("Times-Roman", SkPdfStandardFontEntry("Times New Roman", false, false));
+ gPdfStandardFonts.set("TimesNewRoman", SkPdfStandardFontEntry("Times New Roman", false, false));
+ gPdfStandardFonts.set("TimesNewRoman,Bold", SkPdfStandardFontEntry("Times New Roman", true, false));
+ gPdfStandardFonts.set("TimesNewRoman,BoldItalic", SkPdfStandardFontEntry("Times New Roman", true, true));
+ gPdfStandardFonts.set("TimesNewRoman,Italic", SkPdfStandardFontEntry("Times New Roman", false, true));
+ gPdfStandardFonts.set("TimesNewRoman-Bold", SkPdfStandardFontEntry("Times New Roman", true, false));
+ gPdfStandardFonts.set("TimesNewRoman-BoldItalic", SkPdfStandardFontEntry("Times New Roman", true, true));
+ gPdfStandardFonts.set("TimesNewRoman-Italic", SkPdfStandardFontEntry("Times New Roman", false, true));
+ gPdfStandardFonts.set("TimesNewRomanPS", SkPdfStandardFontEntry("Times New Roman", false, false));
+ gPdfStandardFonts.set("TimesNewRomanPS-Bold", SkPdfStandardFontEntry("Times New Roman", true, false));
+ gPdfStandardFonts.set("TimesNewRomanPS-BoldItalic", SkPdfStandardFontEntry("Times New Roman", true, true));
+ gPdfStandardFonts.set("TimesNewRomanPS-BoldItalicMT", SkPdfStandardFontEntry("Times New Roman", true, true));
+ gPdfStandardFonts.set("TimesNewRomanPS-BoldMT", SkPdfStandardFontEntry("Times New Roman", true, false));
+ gPdfStandardFonts.set("TimesNewRomanPS-Italic", SkPdfStandardFontEntry("Times New Roman", false, true));
+ gPdfStandardFonts.set("TimesNewRomanPS-ItalicMT", SkPdfStandardFontEntry("Times New Roman", false, true));
+ gPdfStandardFonts.set("TimesNewRomanPSMT", SkPdfStandardFontEntry("Times New Roman", false, false));
+ gPdfStandardFonts.set("Symbol", SkPdfStandardFontEntry("Symbol", false, false));
+ gPdfStandardFonts.set("ZapfDingbats", SkPdfStandardFontEntry("ZapfDingbats", false, false));
+
+ // TODO(edisonn): these are hacks. Load Post Script font name.
+ // see FT_Get_Postscript_Name
+ // Font config is not using it, yet.
+ //https://bugs.freedesktop.org/show_bug.cgi?id=18095
+
+ gPdfStandardFonts.set("Arial-Black", SkPdfStandardFontEntry("Arial", true, false));
+ gPdfStandardFonts.set("DejaVuSans", SkPdfStandardFontEntry("DejaVu Sans", false, false));
+ gPdfStandardFonts.set("DejaVuSansMono", SkPdfStandardFontEntry("DejaVuSans Mono", false, false));
+ gPdfStandardFonts.set("DejaVuSansMono-Bold", SkPdfStandardFontEntry("DejaVuSans Mono", true, false));
+ gPdfStandardFonts.set("DejaVuSansMono-Oblique", SkPdfStandardFontEntry("DejaVuSans Mono", false, true));
+ gPdfStandardFonts.set("Georgia-Bold", SkPdfStandardFontEntry("Georgia", true, false));
+ gPdfStandardFonts.set("Georgia-BoldItalic", SkPdfStandardFontEntry("Georgia", true, true));
+ gPdfStandardFonts.set("Georgia-Italic", SkPdfStandardFontEntry("Georgia", false, true));
+ gPdfStandardFonts.set("TrebuchetMS", SkPdfStandardFontEntry("Trebuchet MS", false, false));
+ gPdfStandardFonts.set("TrebuchetMS-Bold", SkPdfStandardFontEntry("Trebuchet MS", true, false));
+ gPdfStandardFonts.set("Verdana-Bold", SkPdfStandardFontEntry("Verdana", true, false));
+ gPdfStandardFonts.set("WenQuanYiMicroHei", SkPdfStandardFontEntry("WenQuanYi Micro Hei", false, false));
+
+ // TODO(edisonn): list all fonts available, buil post script name as in pdf spec
+ // TODO(edisonn): Does it work in all OSs ?
+ /*
+ * The PostScript name for the value of BaseFontis determined in one of two ways:
+• Use the PostScript name that is an optional entry in the “name” table of the
+TrueType font itself.
+• In the absence of such an entry in the “name” table, derive a PostScript name
+from the name by which the font is known in the host operating system: on a
+Windows system, it is based on the lfFaceName field in a LOGFONT structure; in
+the Mac OS, it is based on the name of the FONDresource. If the name contains
+any spaces, the spaces are removed.
+If the font in a source document uses a bold or italic style, but there is no font
+data for that style, the host operating system will synthesize the style. In this case,
+a comma and the style name (one of Bold, Italic, or BoldItalic) are appended to the
+font name. For example, for a TrueType font that is a bold variant of the New
+ */
+
+ /*
+ * If the value of Subtype is MMType1.
+• If the PostScript name of the instance contains spaces, the spaces are replaced
+by underscores in the value of BaseFont. For instance, as illustrated in Example
+5.7, the name “MinionMM 366 465 11 ” (which ends with a space character)
+becomes /MinionMM_366_465_11_.
+ */
+ }
+
+ return gPdfStandardFonts;
+}
+
+SkTypeface* SkTypefaceFromPdfStandardFont(const char* fontName, bool bold, bool italic) {
+ SkTDict<SkPdfStandardFontEntry>& standardFontMap = getStandardFonts();
+
+ SkTypeface* typeface = NULL;
+ SkPdfStandardFontEntry fontData;
+
+ if (standardFontMap.find(fontName, &fontData)) {
+ // TODO(edisonn): How does the bold/italic specified in standard definition combines with
+ // the one in /font key? use OR for now.
+ bold = bold || fontData.fIsBold;
+ italic = italic || fontData.fIsItalic;
+
+ typeface = SkTypeface::CreateFromName(
+ fontData.fName,
+ SkTypeface::Style((bold ? SkTypeface::kBold : 0) |
+ (italic ? SkTypeface::kItalic : 0)));
+ } else {
+ typeface = SkTypeface::CreateFromName(
+ fontName,
+ SkTypeface::kNormal);
+ }
+
+ if (typeface) {
+ typeface->ref();
+ }
+ return typeface;
+}
+
+SkPdfFont* SkPdfFont::fontFromFontDescriptor(SkPdfNativeDoc* doc, SkPdfFontDescriptorDictionary* fd,
+ bool loadFromName) {
+ // TODO(edisonn): partial implementation.
+ // Only one, at most be available
+ SkPdfStream* pdfStream = NULL;
+ if (fd->has_FontFile()) {
+ pdfStream = fd->FontFile(doc);
+ } else if (fd->has_FontFile2()) {
+ pdfStream = fd->FontFile2(doc);
+ } if (fd->has_FontFile3()) {
+ pdfStream = fd->FontFile3(doc);
+ } else {
+ if (loadFromName) {
+ return fontFromName(doc, fd, fd->FontName(doc).c_str());
+ }
+ }
+
+ const unsigned char* uncompressedStream = NULL;
+ size_t uncompressedStreamLength = 0;
+
+ // TODO(edisonn): report warning to be used in testing.
+ if (!pdfStream ||
+ !pdfStream->GetFilteredStreamRef(&uncompressedStream, &uncompressedStreamLength) ||
+ !uncompressedStream ||
+ !uncompressedStreamLength) {
+ return NULL;
+ }
+
+ SkMemoryStream* skStream = new SkMemoryStream(uncompressedStream, uncompressedStreamLength);
+ SkTypeface* face = SkTypeface::CreateFromStream(skStream);
+
+ if (face == NULL) {
+ // TODO(edisonn): report warning to be used in testing.
+ return NULL;
+ }
+
+ face->ref();
+
+ return new SkPdfStandardFont(face);
+}
+
+SkPdfFont* fontFromName(SkPdfNativeDoc* doc, SkPdfNativeObject* obj, const char* fontName) {
+ SkTypeface* typeface = SkTypefaceFromPdfStandardFont(fontName, false, false);
+ if (typeface != NULL) {
+ return new SkPdfStandardFont(typeface);
+ }
+
+ // TODO(edisonn): perf - make a map
+ for (unsigned int i = 0 ; i < doc->objects(); i++) {
+ SkPdfNativeObject* obj = doc->object(i);
+ if (!obj || !obj->isDictionary()) {
+ continue;
+ }
+
+ SkPdfFontDescriptorDictionary* fd = obj->asDictionary()->asFontDescriptorDictionary();
+
+ if (!fd->valid()) {
+ continue;
+ }
+
+ if (fd->has_FontName() && fd->FontName(doc).equals(fontName)) {
+ SkPdfFont* font = SkPdfFont::fontFromFontDescriptor(doc, fd, false);
+ if (font) {
+ return font;
+ } else {
+ // failed to load font descriptor
+ break;
+ }
+ }
+ }
+
+ // TODO(edisonn): warning/report issue
+ return SkPdfFont::Default();
+}
+
+SkPdfFont* SkPdfFont::fontFromPdfDictionaryOnce(SkPdfNativeDoc* doc, SkPdfFontDictionary* dict) {
+ // TODO(edisonn): keep the type in a smart way in the SkPdfNativeObject
+ // 1) flag, isResolved (1bit): reset at reset, add/remove/update (array) and set(dict)
+ // in a tree like structure, 3-4 bits for all the datatypes inheriting from obj (int, real, ...)
+ // if is a dict, reserve a few bytes to encode type of dict, and so on like in a tree
+ // issue: type can be determined from context! atribute night be missing/wrong
+ switch (doc->mapper()->mapFontDictionary(dict)) {
+ case kType0FontDictionary_SkPdfNativeObjectType:
+ return fontFromType0FontDictionary(doc, dict->asType0FontDictionary());
+
+ case kTrueTypeFontDictionary_SkPdfNativeObjectType:
+ return fontFromTrueTypeFontDictionary(doc, dict->asTrueTypeFontDictionary());
+
+ case kType1FontDictionary_SkPdfNativeObjectType:
+ return fontFromType1FontDictionary(doc, dict->asType1FontDictionary());
+
+ case kMultiMasterFontDictionary_SkPdfNativeObjectType:
+ return fontFromMultiMasterFontDictionary(doc, dict->asMultiMasterFontDictionary());
+
+ case kType3FontDictionary_SkPdfNativeObjectType:
+ return fontFromType3FontDictionary(doc, dict->asType3FontDictionary());
+
+ default:
+ // TODO(edisonn): report error?
+ return NULL;
+ }
+}
+
+SkPdfFont* SkPdfFont::fontFromPdfDictionary(SkPdfNativeDoc* doc, SkPdfFontDictionary* dict) {
+ if (dict == NULL) {
+ return NULL; // TODO(edisonn): report default one?
+ }
+
+ if (!dict->hasData(SkPdfNativeObject::kFont_Data)) {
+ dict->setData(fontFromPdfDictionaryOnce(doc, dict), SkPdfNativeObject::kFont_Data);
+ }
+ return (SkPdfFont*)dict->data(SkPdfNativeObject::kFont_Data);
+}
+
+
+
+SkPdfType0Font* SkPdfFont::fontFromType0FontDictionary(SkPdfNativeDoc* doc,
+ SkPdfType0FontDictionary* dict) {
+ if (dict == NULL) {
+ return NULL; // default one?
+ }
+
+ return new SkPdfType0Font(doc, dict);
+}
+
+SkPdfType1Font* SkPdfFont:: fontFromType1FontDictionary(SkPdfNativeDoc* doc,
+ SkPdfType1FontDictionary* dict) {
+ if (dict == NULL) {
+ return NULL; // default one?
+ }
+
+ return new SkPdfType1Font(doc, dict);
+}
+
+SkPdfType3Font* SkPdfFont::fontFromType3FontDictionary(SkPdfNativeDoc* doc,
+ SkPdfType3FontDictionary* dict) {
+ if (dict == NULL) {
+ return NULL; // default one?
+ }
+
+
+
+ return new SkPdfType3Font(doc, dict);
+}
+
+SkPdfTrueTypeFont* SkPdfFont::fontFromTrueTypeFontDictionary(SkPdfNativeDoc* doc,
+ SkPdfTrueTypeFontDictionary* dict) {
+ if (dict == NULL) {
+ return NULL; // default one?
+ }
+
+ return new SkPdfTrueTypeFont(doc, dict);
+}
+
+SkPdfMultiMasterFont* SkPdfFont::fontFromMultiMasterFontDictionary(
+ SkPdfNativeDoc* doc, SkPdfMultiMasterFontDictionary* dict) {
+ if (dict == NULL) {
+ return NULL; // default one?
+ }
+
+ return new SkPdfMultiMasterFont(doc, dict);
+}
+
+static int skstoi(const SkPdfNativeObject* str) {
+ // TODO(edisonn): report err of it is not a (hex) string
+ int ret = 0;
+ for (unsigned int i = 0 ; i < str->lenstr(); i++) {
+ ret = (ret << 8) + ((unsigned char*)str->c_str())[i];
+ }
+ // TODO(edisonn): character larger than 0x0000ffff not supported right now.
+ return ret & 0x0000ffff;
+}
+
+#define tokenIsKeyword(token,keyword) (token.fType == kKeyword_TokenType && \
+ token.fKeywordLength==sizeof(keyword)-1 && \
+ strncmp(token.fKeyword, keyword, sizeof(keyword)-1) == 0)
+
+SkPdfToUnicode::SkPdfToUnicode(SkPdfNativeDoc* parsed, SkPdfStream* stream) {
+ fCMapEncoding = NULL;
+ fCMapEncodingFlag = NULL;
+
+ if (stream) {
+ // Since font will be cached, the font has to sit in the per doc allocator, not to be
+ // freed after the page is done drawing.
+ SkPdfNativeTokenizer tokenizer(stream, parsed->allocator(), parsed);
+ PdfToken token;
+
+ fCMapEncoding = new unsigned short[256 * 256];
+ fCMapEncodingFlag = new unsigned char[256 * 256];
+ for (int i = 0 ; i < 256 * 256; i++) {
+ fCMapEncoding[i] = i;
+ fCMapEncodingFlag[i] = 0;
+ }
+
+ // TODO(edisonn): deal with multibyte character, or longer strings.
+ // Right now we deal with up 2 characters, e.g. <0020> but not longer like <00660066006C>
+ //2 beginbfrange
+ //<0000> <005E> <0020>
+ //<005F> <0061> [<00660066> <00660069> <00660066006C>]
+
+ while (tokenizer.readToken(&token)) {
+
+ if (tokenIsKeyword(token, "begincodespacerange")) {
+ while (tokenizer.readToken(&token) &&
+ !tokenIsKeyword(token, "endcodespacerange")) {
+// tokenizer.PutBack(token);
+// tokenizer.readToken(&token);
+ // TODO(edisonn): check token type! ignore/report errors.
+ int start = skstoi(token.fObject);
+ tokenizer.readToken(&token);
+ int end = skstoi(token.fObject);
+ for (int i = start; i <= end; i++) {
+ fCMapEncodingFlag[i] |= 1;
+ }
+ }
+ }
+
+ if (tokenIsKeyword(token, "beginbfchar")) {
+ while (tokenizer.readToken(&token) && !tokenIsKeyword(token, "endbfchar")) {
+// tokenizer.PutBack(token);
+// tokenizer.readToken(&token);
+ int from = skstoi(token.fObject);
+ tokenizer.readToken(&token);
+ int to = skstoi(token.fObject);
+
+ fCMapEncodingFlag[from] |= 2;
+ fCMapEncoding[from] = to;
+ }
+ }
+
+ if (tokenIsKeyword(token, "beginbfrange")) {
+ while (tokenizer.readToken(&token) && !tokenIsKeyword(token, "endbfrange")) {
+// tokenizer.PutBack(token);
+// tokenizer.readToken(&token);
+ int start = skstoi(token.fObject);
+ tokenizer.readToken(&token);
+ int end = skstoi(token.fObject);
+
+
+ tokenizer.readToken(&token); // [ or just an array directly?
+ // do not putback, we will reuse the read. See next commented read.
+// tokenizer.PutBack(token);
+
+ // TODO(edisonn): read spec: any string or only hex string?
+ if (token.fType == kObject_TokenType && token.fObject->isAnyString()) {
+// tokenizer.readToken(&token);
+ int value = skstoi(token.fObject);
+
+ for (int i = start; i <= end; i++) {
+ fCMapEncodingFlag[i] |= 2;
+ fCMapEncoding[i] = value;
+ value++;
+ // if i != end, verify last byte id not if, ignore/report error
+ }
+
+ // read one string
+ } else if (token.fType == kObject_TokenType && token.fObject->isArray()) {
+// tokenizer.readToken(&token);
+ // read array
+ for (unsigned int i = 0; i < token.fObject->size(); i++) {
+ fCMapEncodingFlag[start + i] |= 2;
+ fCMapEncoding[start + i] = skstoi((*token.fObject)[i]);
+ }
+ } else {
+ tokenizer.PutBack(token);
+ }
+ }
+ }
+ }
+ }
+}
+
+SkPdfType0Font::SkPdfType0Font(SkPdfNativeDoc* doc, SkPdfType0FontDictionary* dict) {
+ fBaseFont = fontFromName(doc, dict, dict->BaseFont(doc).c_str());
+ fEncoding = NULL;
+
+ if (dict->has_Encoding()) {
+ if (dict->isEncodingAName(doc)) {
+ fEncoding = SkPdfEncoding::fromName(dict->getEncodingAsName(doc).c_str());
+ } else if (dict->isEncodingAStream(doc)) {
+ // TODO(edisonn): NYI
+ //fEncoding = loadEncodingFromStream(dict->getEncodingAsStream());
+ } else {
+ // TODO(edisonn): error ... warning .. assert?
+ }
+ }
+
+ if (dict->has_ToUnicode()) {
+ fToUnicode = new SkPdfToUnicode(doc, dict->ToUnicode(doc));
+ }
+}
+
+SkTDict<SkPdfEncoding*>& getStandardEncodings() {
+ static SkTDict<SkPdfEncoding*> encodings(10);
+ if (encodings.count() == 0) {
+ encodings.set("Identity-H", SkPdfIdentityHEncoding::instance());
+ }
+
+ return encodings;
+}
+
+SkPdfEncoding* SkPdfEncoding::fromName(const char* name) {
+ SkPdfEncoding* encoding = NULL;
+ if (!getStandardEncodings().find(name, &encoding)) {
+ encoding = NULL;
+ }
+
+#ifdef PDF_TRACE
+ if (encoding == NULL) {
+ printf("Encoding not found: %s\n", name);
+ }
+#endif
+ return encoding;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/SkPdfFont.h b/chromium/third_party/skia/experimental/PdfViewer/SkPdfFont.h
new file mode 100644
index 00000000000..cc490553d1a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/SkPdfFont.h
@@ -0,0 +1,479 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+// TODO(edisonn): this file not commented much on purpose.
+// It will probably need heavy refactoring soon anyway to support all encodings, fonts and
+// proper text sizing and spacing
+
+#ifndef SkPdfFont_DEFINED
+#define SkPdfFont_DEFINED
+
+#include "SkPdfContext.h"
+#include "SkPdfHeaders_autogen.h"
+#include "SkPdfMapper_autogen.h"
+#include "SkPdfUtils.h"
+#include "SkTypeface.h"
+#include "SkTDict.h"
+#include "SkUtils.h"
+
+class SkPdfType0Font;
+class SkPdfType1Font;
+class SkPdfType3Font;
+class SkPdfTrueTypeFont;
+class SkPdfMultiMasterFont;
+class SkPdfFont;
+
+struct SkPdfStandardFontEntry {
+ // We don't own this pointer!
+ const char* fName;
+ bool fIsBold;
+ bool fIsItalic;
+ SkPdfStandardFontEntry()
+ : fName(NULL),
+ fIsBold(false),
+ fIsItalic(false) {}
+
+ SkPdfStandardFontEntry(const char* name, bool bold, bool italic)
+ : fName(name),
+ fIsBold(bold),
+ fIsItalic(italic) {}
+};
+
+SkTDict<SkPdfStandardFontEntry>& getStandardFonts();
+SkTypeface* SkTypefaceFromPdfStandardFont(const char* fontName, bool bold, bool italic);
+SkPdfFont* fontFromName(SkPdfNativeDoc* doc, SkPdfNativeObject* obj, const char* fontName);
+
+struct SkUnencodedText {
+ void* text;
+ int len;
+
+public:
+ SkUnencodedText(const SkPdfString* obj) {
+ text = (void*)obj->c_str();
+ len = (int) obj->lenstr();
+ }
+};
+
+struct SkDecodedText {
+ uint16_t* text;
+ int len;
+public:
+ unsigned int operator[](int i) const { return text[i]; }
+ int size() const { return len; }
+};
+
+struct SkUnicodeText {
+ uint16_t* text;
+ int len;
+
+public:
+ unsigned int operator[](int i) const { return text[i]; }
+ int size() const { return len; }
+};
+
+class SkPdfEncoding {
+public:
+ virtual ~SkPdfEncoding() {}
+ virtual bool decodeText(const SkUnencodedText& textIn, SkDecodedText* textOut) const = 0;
+ static SkPdfEncoding* fromName(const char* name);
+};
+
+SkTDict<SkPdfEncoding*>& getStandardEncodings();
+
+class SkPdfToUnicode {
+ // TODO(edisonn): hide public members
+public:
+ unsigned short* fCMapEncoding;
+ unsigned char* fCMapEncodingFlag;
+
+ SkPdfToUnicode(SkPdfNativeDoc* parsed, SkPdfStream* stream);
+};
+
+
+class SkPdfIdentityHEncoding : public SkPdfEncoding {
+public:
+ virtual ~SkPdfIdentityHEncoding() {}
+ virtual bool decodeText(const SkUnencodedText& textIn, SkDecodedText* textOut) const {
+ // TODO(edisonn): SkASSERT(textIn.len % 2 == 0); or report error?
+
+ uint16_t* text = (uint16_t*)textIn.text;
+ textOut->text = new uint16_t[textIn.len / 2];
+ textOut->len = textIn.len / 2;
+
+ for (int i = 0; i < textOut->len; i++) {
+ textOut->text[i] = ((text[i] << 8) & 0xff00) | ((text[i] >> 8) & 0x00ff);
+ }
+
+ return true;
+ }
+
+ static SkPdfIdentityHEncoding* instance() {
+ static SkPdfIdentityHEncoding* inst = new SkPdfIdentityHEncoding();
+ return inst;
+ }
+};
+
+// TODO(edisonn): using this one when no encoding is specified
+class SkPdfDefaultEncoding : public SkPdfEncoding {
+public:
+ virtual ~SkPdfDefaultEncoding() {}
+ virtual bool decodeText(const SkUnencodedText& textIn, SkDecodedText* textOut) const {
+ // TODO(edisonn): SkASSERT(textIn.len % 2 == 0); or report error?
+
+ unsigned char* text = (unsigned char*)textIn.text;
+ textOut->text = new uint16_t[textIn.len];
+ textOut->len = textIn.len;
+
+ for (int i = 0; i < textOut->len; i++) {
+ textOut->text[i] = text[i];
+ }
+
+ return true;
+ }
+
+ static SkPdfDefaultEncoding* instance() {
+ static SkPdfDefaultEncoding* inst = new SkPdfDefaultEncoding();
+ return inst;
+ }
+};
+
+class SkPdfCIDToGIDMapIdentityEncoding : public SkPdfEncoding {
+public:
+ virtual ~SkPdfCIDToGIDMapIdentityEncoding() {}
+ virtual bool decodeText(const SkUnencodedText& textIn, SkDecodedText* textOut) const {
+ // TODO(edisonn): SkASSERT(textIn.len % 2 == 0); or report error?
+
+ uint16_t* text = (uint16_t*)textIn.text;
+ textOut->text = new uint16_t[textIn.len / 2];
+ textOut->len = textIn.len / 2;
+
+ for (int i = 0; i < textOut->len; i++) {
+ textOut->text[i] = ((text[i] << 8) & 0xff00) | ((text[i] >> 8) & 0x00ff);
+ }
+
+ return true;
+ }
+
+ static SkPdfCIDToGIDMapIdentityEncoding* instance() {
+ static SkPdfCIDToGIDMapIdentityEncoding* inst = new SkPdfCIDToGIDMapIdentityEncoding();
+ return inst;
+ }
+};
+
+class SkPdfFont {
+public:
+ SkPdfFont* fBaseFont;
+ SkPdfEncoding* fEncoding;
+ SkPdfToUnicode* fToUnicode;
+
+
+public:
+ SkPdfFont() : fBaseFont(NULL), fEncoding(SkPdfDefaultEncoding::instance()), fToUnicode(NULL) {}
+
+ virtual ~SkPdfFont() {
+ // TODO(edisonn): NYI (will leak for now)
+ }
+
+ const SkPdfEncoding* encoding() const {return fEncoding;}
+
+ void drawText(const SkDecodedText& text, SkPaint* paint, SkPdfContext* pdfContext,
+ SkCanvas* canvas) {
+ for (int i = 0 ; i < text.size(); i++) {
+ canvas->setMatrix(pdfContext->fGraphicsState.fMatrixTm);
+#ifdef PDF_TRACE
+ SkPoint point = SkPoint::Make(SkDoubleToScalar(0), SkDoubleToScalar(0));
+ pdfContext->fGraphicsState.fMatrixTm.mapPoints(&point, 1);
+ printf("DrawText at (%f, %f)\n", SkScalarToDouble(point.x()),
+ SkScalarToDouble(point.y()));
+#endif // PDF_TRACE
+
+#ifdef PDF_TRACE_DRAWTEXT
+ SkPaint col;
+ col.setColor(SK_ColorMAGENTA);
+ SkRect rect = SkRect::MakeXYWH(SkDoubleToScalar(0.0),
+ SkDoubleToScalar(0.0),
+ SkDoubleToScalar(10.0),
+ SkDoubleToScalar(10.0));
+ canvas->save();
+ canvas->setMatrix(pdfContext->fGraphicsState.fMatrixTm);
+ canvas->drawRect(rect, col);
+ canvas->restore();
+#endif
+ double width = drawOneChar(text[i], paint, pdfContext, canvas);
+ pdfContext->fGraphicsState.fMatrixTm.preTranslate(SkDoubleToScalar(width),
+ SkDoubleToScalar(0.0));
+ }
+ }
+
+ void ToUnicode(const SkDecodedText& textIn, SkUnicodeText* textOut) const {
+ if (fToUnicode) {
+ textOut->text = new uint16_t[textIn.len];
+ textOut->len = textIn.len;
+ for (int i = 0; i < textIn.len; i++) {
+ textOut->text[i] = fToUnicode->fCMapEncoding[textIn.text[i]];
+ }
+ } else {
+ textOut->text = textIn.text;
+ textOut->len = textIn.len;
+ }
+ };
+
+ inline unsigned int ToUnicode(unsigned int ch) const {
+ if (fToUnicode && fToUnicode->fCMapEncoding) {
+ return fToUnicode->fCMapEncoding[ch];
+ } else {
+ return ch;
+ }
+ };
+
+ static SkPdfFont* fontFromPdfDictionary(SkPdfNativeDoc* doc, SkPdfFontDictionary* dict);
+ static SkPdfFont* Default() {return fontFromName(NULL, NULL, "TimesNewRoman");}
+
+ static SkPdfType0Font* fontFromType0FontDictionary(SkPdfNativeDoc* doc,
+ SkPdfType0FontDictionary* dict);
+ static SkPdfType1Font* fontFromType1FontDictionary(SkPdfNativeDoc* doc,
+ SkPdfType1FontDictionary* dict);
+ static SkPdfType3Font* fontFromType3FontDictionary(SkPdfNativeDoc* doc,
+ SkPdfType3FontDictionary* dict);
+ static SkPdfTrueTypeFont* fontFromTrueTypeFontDictionary(SkPdfNativeDoc* doc,
+ SkPdfTrueTypeFontDictionary* dict);
+ static SkPdfMultiMasterFont* fontFromMultiMasterFontDictionary(
+ SkPdfNativeDoc* doc, SkPdfMultiMasterFontDictionary* dict);
+
+ static SkPdfFont* fontFromFontDescriptor(SkPdfNativeDoc* doc,
+ SkPdfFontDescriptorDictionary* fd,
+ bool loadFromName = true);
+
+public:
+ virtual double drawOneChar(unsigned int ch, SkPaint* paint, SkPdfContext* pdfContext,
+ SkCanvas* canvas) = 0;
+ virtual void afterWord(SkPaint* paint, SkMatrix* matrix) = 0;
+
+private:
+ static SkPdfFont* fontFromPdfDictionaryOnce(SkPdfNativeDoc* doc, SkPdfFontDictionary* dict);
+};
+
+class SkPdfStandardFont : public SkPdfFont {
+ SkTypeface* fTypeface;
+
+public:
+ SkPdfStandardFont(SkTypeface* typeface) : fTypeface(typeface) {}
+
+public:
+ virtual double drawOneChar(unsigned int ch, SkPaint* paint, SkPdfContext* pdfContext,
+ SkCanvas* canvas) {
+ paint->setTypeface(fTypeface);
+ paint->setTextEncoding(SkPaint::kUTF8_TextEncoding);
+
+ unsigned long ch4 = ch;
+ char utf8[10];
+ size_t len = SkUTF8_FromUnichar((SkUnichar) ch4, utf8);
+
+ canvas->drawText(utf8, len, SkDoubleToScalar(0), SkDoubleToScalar(0), *paint);
+
+ SkScalar textWidth = paint->measureText(utf8, len);
+ return SkScalarToDouble(textWidth);
+ }
+
+ virtual void afterWord(SkPaint* paint, SkMatrix* matrix) {}
+};
+
+class SkPdfType0Font : public SkPdfFont {
+public:
+ SkPdfType0Font(SkPdfNativeDoc* doc, SkPdfType0FontDictionary* dict);
+
+public:
+
+ virtual double drawOneChar(unsigned int ch, SkPaint* paint, SkPdfContext* pdfContext,
+ SkCanvas* canvas) {
+ return fBaseFont->drawOneChar(ToUnicode(ch), paint, pdfContext, canvas);
+ }
+
+ virtual void afterWord(SkPaint* paint, SkMatrix* matrix) {
+ }
+};
+
+class SkPdfType1Font : public SkPdfFont {
+public:
+ SkPdfType1Font(SkPdfNativeDoc* doc, SkPdfType1FontDictionary* dict) {
+ if (dict->has_FontDescriptor()) {
+ fBaseFont = SkPdfFont::fontFromFontDescriptor(doc, dict->FontDescriptor(doc));
+ } else {
+ fBaseFont = fontFromName(doc, dict, dict->BaseFont(doc).c_str());
+ }
+
+ if (dict->isEncodingAName(doc)) {
+ fEncoding = SkPdfEncoding::fromName(dict->getEncodingAsName(doc).c_str());
+ } else if (dict->isEncodingADictionary(doc)) {
+ //SkPdfDictionary* dictEnc = dict->getEncodingAsDictionary(doc);
+ }
+ dict->FontDescriptor(doc);
+ }
+
+public:
+ virtual double drawOneChar(unsigned int ch, SkPaint* paint, SkPdfContext* pdfContext,
+ SkCanvas* canvas) {
+ return fBaseFont->drawOneChar(ToUnicode(ch), paint, pdfContext, canvas);
+ }
+
+ virtual void afterWord(SkPaint* paint, SkMatrix* matrix) {
+
+ }
+};
+
+class SkPdfTrueTypeFont : public SkPdfType1Font {
+public:
+ SkPdfTrueTypeFont(SkPdfNativeDoc* doc, SkPdfTrueTypeFontDictionary* dict)
+ : SkPdfType1Font(doc, dict) {}
+};
+
+class SkPdfMultiMasterFont : public SkPdfType1Font {
+public:
+ SkPdfMultiMasterFont(SkPdfNativeDoc* doc, SkPdfMultiMasterFontDictionary* dict)
+ : SkPdfType1Font(doc, dict) {}
+};
+/*
+class CIDToGIDMap {
+ virtual unsigned int map(unsigned int cid) = 0;
+ static CIDToGIDMap* fromName(const char* name);
+};
+
+class CIDToGIDMap_Identity {
+ virtual unsigned int map(unsigned int cid) { return cid; }
+
+ static CIDToGIDMap_Identity* instance() {
+ static CIDToGIDMap_Identity* inst = new CIDToGIDMap_Identity();
+ return inst;
+ }
+};
+
+CIDToGIDMap* CIDToGIDMap::fromName(const char* name) {
+ // The only one supported right now is Identity
+ if (strcmp(name, "Identity") == 0) {
+ return CIDToGIDMap_Identity::instance();
+ }
+
+#ifdef PDF_TRACE
+ // TODO(edisonn): warning/report
+ printf("Unknown CIDToGIDMap: %s\n", name);
+#endif
+ return NULL;
+}
+CIDToGIDMap* fCidToGid;
+*/
+
+class SkPdfType3Font : public SkPdfFont {
+ struct Type3FontChar {
+ SkPdfNativeObject* fObj;
+ double fWidth;
+ };
+
+ SkPdfDictionary* fCharProcs;
+ SkPdfEncodingDictionary* fEncodingDict;
+ unsigned int fFirstChar;
+ unsigned int fLastChar;
+
+ SkRect fFontBBox;
+ SkMatrix fFonMatrix;
+
+ Type3FontChar* fChars;
+
+public:
+ SkPdfType3Font(SkPdfNativeDoc* parsed, SkPdfType3FontDictionary* dict) {
+ fBaseFont = fontFromName(parsed, dict, dict->BaseFont(parsed).c_str());
+
+ if (dict->has_Encoding()) {
+ if (dict->isEncodingAName(parsed)) {
+ fEncoding = SkPdfEncoding::fromName(dict->getEncodingAsName(parsed).c_str());
+ } else if (dict->isEncodingAEncodingdictionary(parsed)) {
+ // No encoding.
+ fEncoding = SkPdfDefaultEncoding::instance();
+ fEncodingDict = dict->getEncodingAsEncodingdictionary(parsed);
+ }
+ }
+
+ // null?
+ fCharProcs = dict->CharProcs(parsed);
+
+ fToUnicode = NULL;
+ if (dict->has_ToUnicode()) {
+ fToUnicode = new SkPdfToUnicode(parsed, dict->ToUnicode(parsed));
+ }
+
+ fFirstChar = (unsigned int)dict->FirstChar(parsed);
+ fLastChar = (unsigned int)dict->LastChar(parsed);
+ fFonMatrix = dict->has_FontMatrix() ? dict->FontMatrix(parsed) : SkMatrix::I();
+
+ if (dict->has_FontBBox()) {
+ fFontBBox = dict->FontBBox(parsed);
+ }
+
+ fChars = new Type3FontChar[fLastChar - fFirstChar + 1];
+
+ memset(fChars, 0, sizeof(fChars[0]) * (fLastChar - fFirstChar + 1));
+
+ const SkPdfArray* widths = dict->Widths(parsed);
+ for (unsigned int i = 0 ; i < widths->size(); i++) {
+ if ((fFirstChar + i) >= fFirstChar && (fFirstChar + i) <= fLastChar) {
+ fChars[i].fWidth = (*widths)[i]->numberValue();
+ } else {
+ // TODO(edisonn): report pdf corruption
+ }
+ }
+
+ const SkPdfArray* diffs = fEncodingDict->Differences(parsed);
+ unsigned int j = fFirstChar;
+ for (unsigned int i = 0 ; i < diffs->size(); i++) {
+ if ((*diffs)[i]->isInteger()) {
+ j = (unsigned int)(*diffs)[i]->intValue();
+ } else if ((*diffs)[i]->isName()) {
+ if (j >= fFirstChar && j <= fLastChar) {
+ fChars[j - fFirstChar].fObj = fCharProcs->get((*diffs)[i]);
+ } else {
+ // TODO(edisonn): report pdf corruption
+ }
+ j++;
+ } else {
+ // TODO(edisonn): report bad pdf
+ }
+ }
+ }
+
+public:
+ virtual double drawOneChar(unsigned int ch, SkPaint* paint, SkPdfContext* pdfContext,
+ SkCanvas* canvas) {
+ if (ch < fFirstChar || ch > fLastChar || !fChars[ch - fFirstChar].fObj) {
+ return fBaseFont->drawOneChar(ToUnicode(ch), paint, pdfContext, canvas);
+ }
+
+#ifdef PDF_TRACE
+ printf("Type 3 char to unicode: %c\n", ToUnicode(ch));
+ if (ToUnicode(ch) == 'A') {
+ printf("break;\n");
+ }
+#endif
+
+ // TODO(edisonn): is it better to resolve the reference at load time, or now?
+ doType3Char(pdfContext,
+ canvas,
+ pdfContext->fPdfDoc->resolveReference(fChars[ch - fFirstChar].fObj),
+ fFontBBox,
+ fFonMatrix,
+ pdfContext->fGraphicsState.fCurFontSize);
+
+ // TODO(edisonn): verify/test translate code, not tested yet
+ pdfContext->fGraphicsState.fMatrixTm.preTranslate(
+ SkDoubleToScalar(pdfContext->fGraphicsState.fCurFontSize *
+ fChars[ch - fFirstChar].fWidth),
+ SkDoubleToScalar(0.0));
+ return fChars[ch - fFirstChar].fWidth;
+ }
+
+ virtual void afterWord(SkPaint* paint, SkMatrix* matrix) {}
+};
+
+#endif // SkPdfFont_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/SkPdfGraphicsState.cpp b/chromium/third_party/skia/experimental/PdfViewer/SkPdfGraphicsState.cpp
new file mode 100644
index 00000000000..76c4120fa33
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/SkPdfGraphicsState.cpp
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfGraphicsState.h"
+
+#include "SkDashPathEffect.h"
+
+void SkPdfGraphicsState::applyGraphicsState(SkPaint* paint, bool stroking) {
+ if (stroking) {
+ fStroking.applyGraphicsState(paint);
+ } else {
+ fNonStroking.applyGraphicsState(paint);
+ }
+
+ // TODO(edisonn): Perf, we should load this option from pdfContext->options,
+ // or pdfContext->addPaintOptions(&paint);
+ paint->setAntiAlias(true);
+
+ // TODO(edisonn): miter, ...
+ if (stroking) {
+ paint->setStrokeWidth(SkDoubleToScalar(fLineWidth));
+ // TODO(edisonn): perf, avoid allocs of the intervals
+ if (fDashArrayLength > 0) {
+ paint->setPathEffect(SkDashPathEffect::Create(fDashArray,
+ fDashArrayLength,
+ fDashPhase))->unref();
+ }
+ }
+
+ // TODO(edisonn): NYI multiple blend modes
+ if (fBlendModesLength == 1 && fBlendModes[0] != SkXfermode::kSrc_Mode) {
+ paint->setXfermodeMode(fBlendModes[0]);
+ }
+
+ //paint->setStrokeMiter(SkDoubleToScalar(fMiterLimit));
+ // TODO(edisonn): impl cap and join
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/SkPdfGraphicsState.h b/chromium/third_party/skia/experimental/PdfViewer/SkPdfGraphicsState.h
new file mode 100644
index 00000000000..029633d6e1f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/SkPdfGraphicsState.h
@@ -0,0 +1,354 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfGraphicsState_DEFINED
+#define SkPdfGraphicsState_DEFINED
+
+#include "SkCanvas.h"
+#include "SkPaint.h"
+#include "SkPdfConfig.h"
+#include "SkPdfUtils.h"
+
+class SkPdfFont;
+class SkPdfNativeObject;
+class SkPdfResourceDictionary;
+class SkPdfSoftMaskDictionary;
+
+/** \class SkPdfColorOperator
+ * Operates on stroking or non-stroking properties.
+ */
+class SkPdfColorOperator {
+
+ /*
+ color space name or array The current color space in which color values are to be interpreted
+ (see Section 4.5, “Color Spaces”). There are two separate color space
+ parameters: one for stroking and one for all other painting opera-
+ tions. Initial value: DeviceGray.
+ */
+
+ // TODO(edisonn): implement the array part too
+// TODO(edisonn): remove this public, let fields be private
+public:
+ NotOwnedString fColorSpace;
+ SkPdfNativeObject* fPattern;
+
+ /*
+ color (various) The current color to be used during painting operations (see Section
+ 4.5, “Color Spaces”). The type and interpretation of this parameter
+ depend on the current color space; for most color spaces, a color
+ value consists of one to four numbers. There are two separate color
+ parameters: one for stroking and one for all other painting opera-
+ tions. Initial value: black.
+ */
+
+ SkColor fColor;
+ double fOpacity; // ca or CA
+
+public:
+ void setRGBColor(SkColor color) {
+ // TODO(edisonn): ASSERT DeviceRGB is the color space.
+ fPattern = NULL;
+ fColor = color;
+ }
+
+ // TODO(edisonn): implement the default values for all fields.
+ SkPdfColorOperator() : fPattern(NULL), fColor(SK_ColorBLACK), fOpacity(1) {
+ NotOwnedString::init(&fColorSpace, "DeviceRGB");
+ }
+
+ void setColorSpace(NotOwnedString* colorSpace) {
+ fColorSpace = *colorSpace;
+ fPattern = NULL;
+ }
+
+ void setPatternColorSpace(SkPdfNativeObject* pattern) {
+ fColorSpace.fBuffer = (const unsigned char*)"Pattern";
+ fColorSpace.fBytes = 7; // strlen("Pattern")
+ fPattern = pattern;
+ }
+
+ void applyGraphicsState(SkPaint* paint) {
+ paint->setColor(SkColorSetA(fColor, (U8CPU)(fOpacity * 255)));
+ }
+};
+
+/**
+ * Operates on stroking or non-stroking properties.
+ */
+struct SkPdfGraphicsState {
+ // TODO(edisonn): deprecate and remove these!
+ double fCurPosX;
+ double fCurPosY;
+
+ double fCurFontSize;
+ bool fTextBlock;
+ SkPdfFont* fSkFont;
+ SkPath fPath;
+ bool fPathClosed;
+
+ double fTextLeading;
+ double fWordSpace;
+ double fCharSpace;
+
+ SkPdfResourceDictionary* fResources;
+
+
+ // TODO(edisonn): Can we move most of these in canvas/paint?
+ // Might need to strore some properties in 2 paints (stroking paint and non stroking paint)
+
+// TABLE 4.2 Device-independent graphics state parameters
+/*
+ * CTM array The current transformation matrix, which maps positions from user
+ coordinates to device coordinates (see Section 4.2, “Coordinate Sys-
+ tems”). This matrix is modified by each application of the coordi-
+ nate transformation operator, cm. Initial value: a matrix that
+ transforms default user coordinates to device coordinates.
+ */
+ SkMatrix fCTM;
+
+ SkMatrix fContentStreamMatrix;
+
+/*
+clipping path (internal) The current clipping path, which defines the boundary against
+ which all output is to be cropped (see Section 4.4.3, “Clipping Path
+ Operators”). Initial value: the boundary of the entire imageable
+ portion of the output page.
+ */
+ // Clip that is applied after the drawing is done!!!
+ bool fHasClipPathToApply;
+ SkPath fClipPath;
+
+ SkPdfColorOperator fStroking;
+ SkPdfColorOperator fNonStroking;
+
+/*
+text state (various) A set of nine graphics state parameters that pertain only to the
+ painting of text. These include parameters that select the font, scale
+ the glyphs to an appropriate size, and accomplish other effects. The
+ text state parameters are described in Section 5.2, “Text State
+ Parameters and Operators.”
+ */
+
+ // TODO(edisonn): add SkPdfTextState class. remove these two existing fields
+ SkMatrix fMatrixTm;
+ SkMatrix fMatrixTlm;
+
+
+/*
+line width number The thickness, in user space units, of paths to be stroked (see “Line
+ Width” on page 152). Initial value: 1.0.
+ */
+ double fLineWidth;
+
+
+/*
+line cap integer A code specifying the shape of the endpoints for any open path that
+ is stroked (see “Line Cap Style” on page 153). Initial value: 0, for
+ square butt caps.
+ */
+ // TODO (edisonn): implement defaults - page 153
+ int fLineCap;
+
+/*
+line join integer A code specifying the shape of joints between connected segments
+ of a stroked path (see “Line Join Style” on page 153). Initial value: 0,
+ for mitered joins.
+ */
+ // TODO (edisonn): implement defaults - page 153
+ int fLineJoin;
+
+/*
+miter limit number The maximum length of mitered line joins for stroked paths (see
+ “Miter Limit” on page 153). This parameter limits the length of
+ “spikes” produced when line segments join at sharp angles. Initial
+ value: 10.0, for a miter cutoff below approximately 11.5 degrees.
+ */
+ // TODO (edisonn): implement defaults - page 153
+ double fMiterLimit;
+
+/*
+dash pattern array and A description of the dash pattern to be used when paths are
+ number stroked (see “Line Dash Pattern” on page 155). Initial value: a solid
+ line.
+ */
+ SkScalar fDashArray[256]; // TODO(edisonn): allocate array?
+ int fDashArrayLength;
+ SkScalar fDashPhase;
+
+
+/*
+rendering intent name The rendering intent to be used when converting CIE-based colors
+ to device colors (see “Rendering Intents” on page 197). Default
+ value: RelativeColorimetric.
+ */
+ // TODO(edisonn): seems paper only. Verify.
+
+/*
+stroke adjustment boolean (PDF 1.2) A flag specifying whether to compensate for possible ras-
+ terization effects when stroking a path with a line width that is
+ small relative to the pixel resolution of the output device (see Sec-
+ tion 6.5.4, “Automatic Stroke Adjustment”). Note that this is con-
+ sidered a device-independent parameter, even though the details of
+ its effects are device-dependent. Initial value: false.
+ */
+ // TODO(edisonn): stroke adjustment low priority.
+
+
+/*
+blend mode name or array (PDF 1.4) The current blend mode to be used in the transparent
+ imaging model (see Sections 7.2.4, “Blend Mode,” and 7.5.2, “Spec-
+ ifying Blending Color Space and Blend Mode”). This parameter is
+ implicitly reset to its initial value at the beginning of execution of a
+ transparency group XObject (see Section 7.5.5, “Transparency
+ Group XObjects”). Initial value: Normal.
+ */
+ SkXfermode::Mode fBlendModes[256];
+ int fBlendModesLength;
+
+/*
+soft mask dictionary (PDF 1.4) A soft-mask dictionary (see “Soft-Mask Dictionaries” on
+ or name page 445) specifying the mask shape or mask opacity values to be
+ used in the transparent imaging model (see “Source Shape and
+ Opacity” on page 421 and “Mask Shape and Opacity” on page 443),
+ or the name None if no such mask is specified. This parameter is
+ implicitly reset to its initial value at the beginning of execution of a
+ transparency group XObject (see Section 7.5.5, “Transparency
+ Group XObjects”). Initial value: None.
+ */
+ SkPdfSoftMaskDictionary* fSoftMaskDictionary;
+ // TODO(edisonn): make sMask private, add setter and getter, ref/unref/..., at the moment we most likely leask
+ SkBitmap* fSMask;
+
+
+/*
+alpha constant number (PDF 1.4) The constant shape or constant opacity value to be used
+ in the transparent imaging model (see “Source Shape and Opacity”
+ on page 421 and “Constant Shape and Opacity” on page 444).
+ There are two separate alpha constant parameters: one for stroking
+ and one for all other painting operations. This parameter is implic-
+ itly reset to its initial value at the beginning of execution of a trans-
+ parency group XObject (see Section 7.5.5, “Transparency Group
+ XObjects”). Initial value: 1.0.
+ */
+ double fAphaConstant;
+
+/*
+alpha source boolean (PDF 1.4) A flag specifying whether the current soft mask and alpha
+ constant parameters are to be interpreted as shape values (true) or
+ opacity values (false). This flag also governs the interpretation of
+ the SMask entry, if any, in an image dictionary (see Section 4.8.4,
+ “Image Dictionaries”). Initial value: false.
+ */
+ bool fAlphaSource;
+
+
+// TODO(edisonn): Device-dependent seem to be required only on the actual physical printer?
+// TABLE 4.3 Device-dependent graphics state parameters
+/*
+overprint boolean (PDF 1.2) A flag specifying (on output devices that support the
+ overprint control feature) whether painting in one set of colorants
+ should cause the corresponding areas of other colorants to be
+ erased (false) or left unchanged (true); see Section 4.5.6, “Over-
+ print Control.” In PDF 1.3, there are two separate overprint param-
+ eters: one for stroking and one for all other painting operations.
+ Initial value: false.
+ */
+
+
+/*
+overprint mode number (PDF 1.3) A code specifying whether a color component value of 0
+ in a DeviceCMYK color space should erase that component (0) or
+ leave it unchanged (1) when overprinting (see Section 4.5.6, “Over-
+ print Control”). Initial value: 0.
+ */
+
+
+/*
+black generation function (PDF 1.2) A function that calculates the level of the black color
+ or name component to use when converting RGB colors to CMYK (see Sec-
+ tion 6.2.3, “Conversion from DeviceRGB to DeviceCMYK”). Initial
+ value: installation-dependent.
+ */
+
+
+/*
+undercolor removal function (PDF 1.2) A function that calculates the reduction in the levels of
+ or name the cyan, magenta, and yellow color components to compensate for
+ the amount of black added by black generation (see Section 6.2.3,
+ “Conversion from DeviceRGB to DeviceCMYK”). Initial value: in-
+ stallation-dependent.
+ */
+
+
+/*
+transfer function, (PDF 1.2) A function that adjusts device gray or color component
+ array, or name levels to compensate for nonlinear response in a particular out-
+ put device (see Section 6.3, “Transfer Functions”). Initial value:
+ installation-dependent.
+ */
+
+
+/*
+halftone dictionary, (PDF 1.2) A halftone screen for gray and color rendering, specified
+ stream, or name as a halftone dictionary or stream (see Section 6.4, “Halftones”).
+ Initial value: installation-dependent.
+ */
+
+
+/*
+flatness number The precision with which curves are to be rendered on the output
+ device (see Section 6.5.1, “Flatness Tolerance”). The value of this
+ parameter gives the maximum error tolerance, measured in output
+ device pixels; smaller numbers give smoother curves at the expense
+ of more computation and memory use. Initial value: 1.0.
+ */
+
+
+/*
+smoothness number (PDF 1.3) The precision with which color gradients are to be ren-
+ dered on the output device (see Section 6.5.2, “Smoothness Toler-
+ ance”). The value of this parameter gives the maximum error
+ tolerance, expressed as a fraction of the range of each color compo-
+ nent; smaller numbers give smoother color transitions at the
+ expense of more computation and memory use. Initial value:
+ installation-dependent.
+ */
+
+ // TODO(edisonn): some defaults are contextual, they could on colorspace, pdf version, ...
+ SkPdfGraphicsState() {
+ fCurPosX = 0.0;
+ fCurPosY = 0.0;
+ fCurFontSize = 0.0;
+ fTextBlock = false;
+ fCTM = SkMatrix::I();
+ fMatrixTm = SkMatrix::I();
+ fMatrixTlm = SkMatrix::I();
+ fPathClosed = true;
+ fLineWidth = 0;
+ fTextLeading = 0;
+ fWordSpace = 0;
+ fCharSpace = 0;
+ fHasClipPathToApply = false;
+ fResources = NULL;
+ fSkFont = NULL;
+ fLineCap = 0;
+ fLineJoin = 0;
+ fMiterLimit = 10.0;
+ fAphaConstant = 1.0;
+ fAlphaSource = false;
+ fDashArrayLength = 0;
+ fDashPhase = 0;
+ fBlendModesLength = 1;
+ fBlendModes[0] = SkXfermode::kSrc_Mode; // PDF: Normal Blend mode
+ fSMask = NULL;
+ }
+
+ // TODO(edisonn): make two functions instead, stroking and non stoking, avoid branching
+ void applyGraphicsState(SkPaint* paint, bool stroking);
+};
+
+#endif // SkPdfGraphicsState_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/SkPdfReporter.cpp b/chromium/third_party/skia/experimental/PdfViewer/SkPdfReporter.cpp
new file mode 100644
index 00000000000..7aebc431bfd
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/SkPdfReporter.cpp
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifdef PDF_REPORT
+
+#include "SkPdfReporter.h"
+
+#include "SkTypes.h"
+
+const char* severityName[] = {
+"Info",
+"CodeWarning",
+"Warning",
+"IgnoreError",
+"Error",
+"FatalError",
+};
+
+const char* getSeverityName(SkPdfIssueSeverity sev) {
+ if (0 <= sev && sev < _kCount__SkPdfIssueSeverity) {
+ return severityName[sev];
+ }
+ SkASSERT(false);
+ return "UNKOWN SEVERITY";
+}
+
+// TODO(edisonn): add a flag to set the minimum warning level
+// TODO(edisonn): get the address in the file, and report it.
+// TODO(edisonn): build a html file based on warnings which would showe the original pdf
+// content, with tooltips where warnings/errors were reported.
+
+
+void SkPdfReport(SkPdfIssueSeverity sev, SkPdfIssue issue,
+ const char* context,
+ const SkPdfNativeObject* obj,
+ SkPdfContext* pdfContext) {
+ if (sev >= kIgnoreError_SkPdfIssueSeverity) {
+ printf("%s: %s\n", getSeverityName(sev), context);
+ }
+}
+
+void SkPdfReportIf(bool report,
+ SkPdfIssueSeverity sev, SkPdfIssue issue,
+ const char* context,
+ const SkPdfNativeObject* obj,
+ SkPdfContext* pdfContext) {
+ if (!report) {
+ return;
+ }
+ SkPdfReport(sev, issue, context, obj, pdfContext);
+}
+
+void SkPdfReportUnexpectedType(SkPdfIssueSeverity sev,
+ const char* context,
+ const SkPdfNativeObject* obj,
+ int anyOfTypes, SkPdfContext* pdfContext) {
+ if (sev >= kIgnoreError_SkPdfIssueSeverity) {
+ printf("%s: %s\n", getSeverityName(sev), context);
+ }
+}
+
+#endif // PDF_REPORT
diff --git a/chromium/third_party/skia/experimental/PdfViewer/SkPdfReporter.h b/chromium/third_party/skia/experimental/PdfViewer/SkPdfReporter.h
new file mode 100644
index 00000000000..3718154d843
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/SkPdfReporter.h
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+
+#ifndef SkPdfReporter_DEFINED
+#define SkPdfReporter_DEFINED
+
+#include "SkPdfConfig.h"
+
+class SkPdfNativeObject;
+class SkPdfContext;
+
+// TODO(edisonn): ability to turn on asserts for known good files
+
+// Severity of the issue, if it something interesting info, the result of an NYI feature,
+// sme ignorable defect in pdf or a major issue.
+enum SkPdfIssueSeverity {
+ kInfo_SkPdfIssueSeverity,
+ kCodeWarning_SkPdfIssueSeverity, // e.g. like NYI, PDF file is Ok.
+ kWarning_SkPdfIssueSeverity,
+ kIgnoreError_SkPdfIssueSeverity,
+ kError_SkPdfIssueSeverity,
+ kFatalError_SkPdfIssueSeverity,
+
+ _kCount__SkPdfIssueSeverity
+};
+
+// The type of the issue.
+enum SkPdfIssue {
+ kNoIssue_SkPdfIssue,
+
+ kNullObject_SkPdfIssue,
+ kUnusedObject_SkPdfIssue,
+ kUnexpectedArraySize_SkPdfIssue,
+ kMissingEncoding_SkPdfIssue,
+ kNYI_SkPdfIssue,
+ kIncostistentSizes_SkPdfIssue,
+ kMissingRequiredKey_SkPdfIssue,
+ kRecursiveReferencing_SkPdfIssue,
+ kStackNestingOverflow_SkPdfIssue,
+ kStackOverflow_SkPdfIssue,
+ kIncositentSyntax_SkPdfIssue,
+ kMissingFont_SkPdfIssue,
+ kInvalidFont_SkPdfIssue,
+ kMissingBT_SkPdfIssue,
+ kOutOfRange_SkPdfIssue,
+ kUnknownBlendMode_SkPdfIssue,
+ kMissingExtGState_SkPdfIssue,
+ kMissingXObject_SkPdfIssue,
+ kReadStreamError_SkPdfIssue,
+ kMissingToken_SkPdfIssue,
+ kBadReference_SkPdfIssue,
+ kNoFlateLibrary_SkPdfIssue,
+ kBadStream_SkPdfIssue,
+
+ _kCount__SkPdfIssue
+};
+
+#ifdef PDF_REPORT
+
+// Calls SkPdfReport(...) if report is true.
+void SkPdfReportIf(bool report,
+ SkPdfIssueSeverity sev, SkPdfIssue issue,
+ const char* context,
+ const SkPdfNativeObject* obj,
+ SkPdfContext* pdfContext);
+
+// Reports an issue, along with information where it happened, for example obj can be used to report
+// where exactly in th pdf there is a corruption
+// TODO(edisonn): add ability to report the callstack
+void SkPdfReport(SkPdfIssueSeverity sev, SkPdfIssue issue,
+ const char* context,
+ const SkPdfNativeObject* obj,
+ SkPdfContext* pdfContext);
+
+// Reports that an object does not have the expected type
+// TODO(edisonn): replace with SkPdfReportIfUnexpectedType() to simplify the callers?
+// TODO(edisonn): pass the keyword/operator too which triggers the issue.
+void SkPdfReportUnexpectedType(SkPdfIssueSeverity sev,
+ const char* context,
+ const SkPdfNativeObject* obj, int anyOfTypes,
+ SkPdfContext* pdfContext);
+
+// Code only in builds with reporting turn on.
+#define SkPdfREPORTCODE(code) code
+
+#else // !PDF_REPORT
+
+#define SkPdfReportIf(a,b,c,d,e,f)
+#define SkPdfReport(a,b,c,d,e)
+#define SkPdfReportUnexpectedType(a,b,c,d,e)
+#define SkPdfREPORTCODE(code)
+
+#endif // PDF_REPORT
+
+#endif // SkPdfReporter_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/SkPdfUtils.cpp b/chromium/third_party/skia/experimental/PdfViewer/SkPdfUtils.cpp
new file mode 100644
index 00000000000..c77baf4c91d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/SkPdfUtils.cpp
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfUtils.h"
+
+bool operator !=(const SkString& first, const char* second) {
+ return !first.equals(second);
+}
+
+#ifdef PDF_TRACE
+void SkTraceMatrix(const SkMatrix& matrix, const char* sz) {
+ printf("SkMatrix %s ", sz);
+ for (int i = 0 ; i < 9 ; i++) {
+ printf("%f ", SkScalarToDouble(matrix.get(i)));
+ }
+ printf("\n");
+}
+
+void SkTraceRect(const SkRect& rect, const char* sz) {
+ printf("SkRect %s ", sz);
+ printf("x = %f ", SkScalarToDouble(rect.x()));
+ printf("y = %f ", SkScalarToDouble(rect.y()));
+ printf("w = %f ", SkScalarToDouble(rect.width()));
+ printf("h = %f ", SkScalarToDouble(rect.height()));
+ printf("\n");
+}
+#endif
diff --git a/chromium/third_party/skia/experimental/PdfViewer/SkPdfUtils.h b/chromium/third_party/skia/experimental/PdfViewer/SkPdfUtils.h
new file mode 100644
index 00000000000..87ed4597dc5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/SkPdfUtils.h
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfUtils_DEFINED
+#define SkPdfUtils_DEFINED
+
+#include "SkMatrix.h"
+#include "SkRect.h"
+#include "SkPdfConfig.h"
+#include "SkString.h"
+
+class SkPdfArray;
+class SkPdfContext;
+class SkCanvas;
+class SkPdfNativeObject;
+
+// TODO(edisonn): temporary code, to report how much of the PDF we actually think we rendered.
+enum SkPdfResult {
+ kOK_SkPdfResult,
+ kPartial_SkPdfResult,
+ kNYI_SkPdfResult,
+ kIgnoreError_SkPdfResult,
+ kError_SkPdfResult,
+ kUnsupported_SkPdfResult,
+
+ kCount_SkPdfResult
+};
+
+// In order to operate fast, when we parse the pdf, we try not to allocate many new strings,
+// and if possible we refer the string in the pdf stream.
+struct NotOwnedString {
+ const unsigned char* fBuffer;
+ // TODO(edisonn): clean up, the last two bytes are used to signal if compression is used
+ size_t fBytes;
+
+ static void init(NotOwnedString* str) {
+ str->fBuffer = NULL;
+ str->fBytes = 0;
+ }
+
+ static void init(NotOwnedString* str, const char* sz) {
+ str->fBuffer = (const unsigned char*)sz;
+ str->fBytes = strlen(sz);
+ }
+
+ bool equals(const char* sz) {
+ return strncmp((const char*)fBuffer, sz, fBytes) == 0 && fBytes == strlen(sz);
+
+ }
+};
+
+SkMatrix SkMatrixFromPdfMatrix(double array[6]);
+
+// TODO(edisonn): hack to make code generation simpler. Alternatively we can update the
+// generate_code.py not to rely on != operator
+bool operator !=(const SkString& first, const char* second);
+
+SkMatrix SkMatrixFromPdfArray(SkPdfArray* pdfArray);
+
+SkPdfResult doType3Char(SkPdfContext* pdfContext, SkCanvas* canvas, const SkPdfNativeObject* skobj,
+ SkRect bBox, SkMatrix matrix, double textSize);
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// TRACE functions
+//
+#ifdef PDF_TRACE
+void SkTraceMatrix(const SkMatrix& matrix, const char* sz);
+void SkTraceRect(const SkRect& rect, const char* sz);
+#else
+#define SkTraceMatrix(a,b)
+#define SkTraceRect(a,b)
+#endif
+
+#ifdef PDF_TRACE_TOKENIZER
+
+static void TRACE_COMMENT(char ch) {
+ printf("%c", ch);
+}
+
+static void TRACE_TK(char ch) {
+ printf("%c", ch);
+}
+
+static void TRACE_NAME(const unsigned char* start, const unsigned char* end) {
+ while (start < end) {
+ printf("%c", *start);
+ start++;
+ }
+ printf("\n");
+}
+
+static void TRACE_STRING(const unsigned char* start, const unsigned char* end) {
+ while (start < end) {
+ printf("%c", *start);
+ start++;
+ }
+ printf("\n");
+}
+
+static void TRACE_HEXSTRING(const unsigned char* start, const unsigned char* end) {
+ while (start < end) {
+ printf("%c", *start);
+ start++;
+ }
+ printf("\n");
+}
+
+#else
+#define TRACE_COMMENT(ch)
+#define TRACE_TK(ch)
+#define TRACE_NAME(start,end)
+#define TRACE_STRING(start,end)
+#define TRACE_HEXSTRING(start,end)
+#endif
+
+#endif // SkPdfUtils_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/SkTrackDevice.cpp b/chromium/third_party/skia/experimental/PdfViewer/SkTrackDevice.cpp
new file mode 100644
index 00000000000..5c6dff85c73
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/SkTrackDevice.cpp
@@ -0,0 +1,8 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkTrackDevice.h"
diff --git a/chromium/third_party/skia/experimental/PdfViewer/SkTrackDevice.h b/chromium/third_party/skia/experimental/PdfViewer/SkTrackDevice.h
new file mode 100644
index 00000000000..25857f6635c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/SkTrackDevice.h
@@ -0,0 +1,180 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkTrackDevice_DEFINED
+#define SkTrackDevice_DEFINED
+
+#include "SkBitmapDevice.h"
+#include "SkTracker.h"
+
+/** \class SkTrackDevice
+ *
+ * A Track Device is used to track that callstack of an operation that affected some pixels.
+ * It can be used with SampleApp to investigate bugs (CL not checked in yet).
+ *
+ * every drawFoo is implemented as such:
+ * before(); // - collects state of interesting pixels
+ * INHERITED::drawFoo(...);
+ * after(); // - checks if pixels of interest, and issue a breakpoint.
+ *
+ */
+class SkTrackDevice : public SkBitmapDevice {
+public:
+ SK_DECLARE_INST_COUNT(SkTrackDevice)
+
+ SkTrackDevice(const SkBitmap& bitmap) : SkBitmapDevice(bitmap)
+ , fTracker(NULL) {}
+
+ SkTrackDevice(const SkBitmap& bitmap, const SkDeviceProperties& deviceProperties)
+ : SkBitmapDevice(bitmap, deviceProperties)
+ , fTracker(NULL) {}
+
+ virtual ~SkTrackDevice() {}
+
+ // Install a tracker - we can reuse the tracker between multiple devices, and the state of the
+ // tracker is preserved - number and location of poinbts, ...
+ void installTracker(SkTracker* tracker) {
+ fTracker = tracker;
+ fTracker->newFrame();
+ }
+
+protected:
+ virtual void clear(SkColor color) {
+ before();
+ INHERITED::clear(color);
+ after();
+ }
+
+ virtual void drawPaint(const SkDraw& dummy1, const SkPaint& paint) {
+ before();
+ INHERITED::drawPaint(dummy1, paint);
+ after();
+ }
+
+ virtual void drawPoints(const SkDraw& dummy1, SkCanvas::PointMode mode, size_t count,
+ const SkPoint dummy2[], const SkPaint& paint) {
+ before();
+ INHERITED::drawPoints(dummy1, mode, count, dummy2, paint);
+ after();
+ }
+
+ virtual void drawRect(const SkDraw& dummy1, const SkRect& r,
+ const SkPaint& paint) {
+ before();
+ INHERITED::drawRect(dummy1, r, paint);
+ after();
+ }
+
+
+ virtual void drawOval(const SkDraw& dummy1, const SkRect& oval,
+ const SkPaint& paint) {
+ before();
+ INHERITED::drawOval(dummy1, oval, paint);
+ after();
+ }
+
+ virtual void drawRRect(const SkDraw& dummy1, const SkRRect& rr,
+ const SkPaint& paint) {
+ before();
+ INHERITED::drawRRect(dummy1, rr, paint);
+ after();
+ }
+
+ virtual void drawPath(const SkDraw& dummy1, const SkPath& path,
+ const SkPaint& paint,
+ const SkMatrix* prePathMatrix = NULL,
+ bool pathIsMutable = false) {
+ before();
+ INHERITED::drawPath(dummy1, path, paint, prePathMatrix, pathIsMutable);
+ after();
+ }
+
+ virtual void drawBitmap(const SkDraw& dummy1, const SkBitmap& bitmap,
+ const SkMatrix& matrix, const SkPaint& paint) {
+ before();
+ INHERITED::drawBitmap(dummy1, bitmap, matrix, paint);
+ after();
+ }
+
+ virtual void drawSprite(const SkDraw& dummy1, const SkBitmap& bitmap,
+ int x, int y, const SkPaint& paint) {
+ before();
+ INHERITED::drawSprite(dummy1, bitmap, x, y, paint);
+ after();
+ }
+
+ virtual void drawBitmapRect(const SkDraw& dummy1, const SkBitmap& dummy2,
+ const SkRect* srcOrNull, const SkRect& dst,
+ const SkPaint& paint,
+ SkCanvas::DrawBitmapRectFlags flags) {
+ before();
+ INHERITED::drawBitmapRect(dummy1, dummy2, srcOrNull, dst, paint, flags);
+ after();
+ }
+
+ virtual void drawText(const SkDraw& dummy1, const void* text, size_t len,
+ SkScalar x, SkScalar y, const SkPaint& paint) {
+ before();
+ INHERITED::drawText(dummy1, text, len, x, y, paint);
+ after();
+ }
+
+ virtual void drawPosText(const SkDraw& dummy1, const void* text, size_t len,
+ const SkScalar pos[], SkScalar constY,
+ int scalarsPerPos, const SkPaint& paint) {
+ before();
+ INHERITED::drawPosText(dummy1, text, len, pos, constY, scalarsPerPos, paint);
+ after();
+ }
+
+ virtual void drawTextOnPath(const SkDraw& dummy1, const void* text, size_t len,
+ const SkPath& path, const SkMatrix* matrix,
+ const SkPaint& paint) {
+ before();
+ INHERITED::drawTextOnPath(dummy1, text, len, path, matrix, paint);
+ after();
+ }
+
+ virtual void drawVertices(const SkDraw& dummy1, SkCanvas::VertexMode dummy2, int vertexCount,
+ const SkPoint verts[], const SkPoint texs[],
+ const SkColor colors[], SkXfermode* xmode,
+ const uint16_t indices[], int indexCount,
+ const SkPaint& paint) {
+ before();
+ INHERITED::drawVertices(dummy1, dummy2, vertexCount,verts, texs,colors, xmode, indices,
+ indexCount, paint);
+ after();
+ }
+
+ virtual void drawDevice(const SkDraw& dummy1, SkBaseDevice* dummy2, int x, int y,
+ const SkPaint& dummy3) {
+ before();
+ INHERITED::drawDevice(dummy1, dummy2, x, y, dummy3);
+ after();
+ }
+
+private:
+ void before() {
+ if (fTracker) {
+ fTracker->before(accessBitmap(false));
+ }
+ }
+
+ // any/all of the expected touched has to be changed, and all expected untouched must be intact
+ void after() {
+ if (fTracker) {
+ fTracker->after(accessBitmap(false));
+ }
+ }
+
+private:
+ SkTracker* fTracker;
+
+ typedef SkBitmapDevice INHERITED;
+};
+
+#endif // SkTrackDevice_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/SkTracker.cpp b/chromium/third_party/skia/experimental/PdfViewer/SkTracker.cpp
new file mode 100644
index 00000000000..acc52fe50dc
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/SkTracker.cpp
@@ -0,0 +1,8 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkTracker.h"
diff --git a/chromium/third_party/skia/experimental/PdfViewer/SkTracker.h b/chromium/third_party/skia/experimental/PdfViewer/SkTracker.h
new file mode 100644
index 00000000000..3da24c1ee00
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/SkTracker.h
@@ -0,0 +1,227 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkTracker_DEFINED
+#define SkTracker_DEFINED
+
+#include <stdio.h>
+
+#include "SkBitmap.h"
+#include "SkPoint.h"
+
+// TODO(edisonn): draw plan from point! - list of draw ops of a point, like a tree!
+// TODO(edisonn): Minimal PDF to draw some points - remove everything that it is not needed,
+// save pdf uncompressed
+
+#define MAX_TRACKING_POINTS 100
+
+/** \class SkTracker
+ *
+ * A Tracker can be attached to a SkTrackDevice and it will store the track pixels.
+ * It can be used with SampleApp to investigate bugs (CL not checked in yet).
+ *
+ * The Tracker tracks 2 sets of points
+ * A) one which is expected to issue breackpoints if the pixels are changes
+ * B) one which if changes will disable the breackpoint
+ * For point in A) there are two modes:
+ * A.1) a breackpoint require that any of the points is changed
+ * A.2) a breackpoint require that all of the points is changed
+ * Points in B are allways in "any mode" - chaning the value of any pixel, will disable
+ * the breackpoint
+ *
+ * Point in A) are used to show what are the areas of interest, while poit in B are used to
+ * disable breackpoints which would be issued in background change.
+ *
+ */
+class SkTracker {
+public:
+ SkTracker() : fEnabled(false)
+ , fBreakOnAny(false)
+ , fCntExpectedTouched(0)
+ , fCntExpectedUntouched(0)
+ , fHits(0) {}
+
+ virtual ~SkTracker() {}
+
+ // Clears all the points, but preserves the break mode.
+ void clearPoints() {
+ fCntExpectedTouched = 0;
+ fCntExpectedUntouched = 0;
+ }
+
+ // Enable the breackpoints.
+ void enableTracking(bool b) {
+ fEnabled = b;
+ }
+
+ // Returns true if breackpoints are enabled.
+ bool trackingEnabled() {
+ return fEnabled;
+ }
+
+ // Puts the tracker in Any mode.
+ void any() {
+ fBreakOnAny = true;
+ }
+
+ // Puts the tracker in Any mode.
+ void all() {
+ fBreakOnAny = false;
+ }
+
+ // returns true in in All mode. False for Any mode.
+ bool requireAllExpectedTouched() {
+ return !fBreakOnAny;
+ }
+
+ // Returns the numbers of points in which if touched, would trigger a breackpoint.
+ int cntExpectedTouched() {
+ return fCntExpectedTouched;
+ }
+
+ // Returns the points which if touched, would trigger a breackpoint.
+ // the Tracker owns the array
+ const SkIPoint* expectedTouched() {
+ return fExpectedTouched;
+ }
+
+ // Returns the numbers of points in which if touched, would disable a breackpoint.
+ int cntExpectedUntouched() {
+ return fCntExpectedUntouched;
+ }
+
+ // Returns the points which if touched, would disable a breackpoint.
+ // the Tracker owns the array
+ const SkIPoint* expectedUntouched() {
+ return fExpectedUntouched;
+ }
+
+ // Adds a point which if changes in a drawFoo operation, would trigger a breakpoint.
+ bool addExpectTouch(int x, int y) {
+ if (fCntExpectedTouched >= MAX_TRACKING_POINTS) {
+ return false;
+ }
+ if (found(x, y)) {
+ return false;
+ }
+ fExpectedTouched[fCntExpectedTouched] = SkIPoint::Make(x, y);
+ fCntExpectedTouched++;
+ return true;
+ }
+
+ // Adds a point which if changes in a drawFoo operation, would disable a breakpoint.
+ bool addExpectUntouch(int x, int y) {
+ if (fCntExpectedUntouched >= MAX_TRACKING_POINTS) {
+ return false;
+ }
+ if (found(x, y)) {
+ return false;
+ }
+ fExpectedUntouched[fCntExpectedUntouched] = SkIPoint::Make(x, y);
+ fCntExpectedUntouched++;
+ return true;
+ }
+
+ // Starts a new rendering session - reset the number of hits.
+ void newFrame() {
+ fHits = 0;
+ }
+
+ // returns the number of breackpoints issues in this rendering session.
+ int hits() {
+ return fHits;
+ }
+
+ // Called before drawFoo to store the state of the pixels
+ void before(const SkBitmap& bitmap) {
+ if (fCntExpectedTouched == 0) {
+ return;
+ }
+
+ for (int i = 0 ; i < fCntExpectedTouched; i++) {
+ fBeforeTouched[i] = pickColor(bitmap, fExpectedTouched[i].x(), fExpectedTouched[i].y());
+ }
+ for (int i = 0 ; i < fCntExpectedUntouched; i++) {
+ fBeforeUntouched[i] = pickColor(bitmap, fExpectedUntouched[i].x(),
+ fExpectedUntouched[i].y());
+ }
+ }
+
+ // Called after drawFoo to evaluate what pixels have changed, it could issue a breakpoint.
+ // any/all of the expected touched has to be changed, and all expected untouched must be intact
+ void after(const SkBitmap& bitmap) {
+ if (fCntExpectedTouched == 0) {
+ return;
+ }
+
+ bool doBreak;
+ if (fBreakOnAny) {
+ doBreak = false;
+ for (int i = 0 ; i < fCntExpectedTouched; i++) {
+ doBreak = doBreak || fBeforeTouched[i] != pickColor(bitmap, fExpectedTouched[i].x(),
+ fExpectedTouched[i].y());
+ }
+ } else {
+ doBreak = true;
+ for (int i = 0 ; i < fCntExpectedTouched; i++) {
+ doBreak = doBreak && fBeforeTouched[i] != pickColor(bitmap, fExpectedTouched[i].x(),
+ fExpectedTouched[i].y());
+ }
+ }
+
+ for (int i = 0 ; i < fCntExpectedUntouched; i++) {
+ doBreak = doBreak && fBeforeUntouched[i] == pickColor(bitmap, fExpectedUntouched[i].x(),
+ fExpectedUntouched[i].y());
+ }
+
+ if (doBreak) {
+ fHits++;
+ if (fEnabled) {
+ breakExecution();
+ }
+ }
+ }
+
+private:
+ inline SkColor pickColor(const SkBitmap& bitmap, int x, int y) {
+ return bitmap.getColor(x, y);
+ }
+
+ void breakExecution() {
+ printf("break;\n");
+ }
+
+ inline bool found(int x, int y) {
+ for (int i = 0 ; i < fCntExpectedTouched; i++) {
+ if (x == fExpectedTouched[i].x() && y == fExpectedTouched[i].y()) {
+ return true;
+ }
+ }
+ for (int i = 0 ; i < fCntExpectedUntouched; i++) {
+ if (x == fExpectedUntouched[i].x() && y == fExpectedUntouched[i].y()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ bool fEnabled;
+ // break on any change on expected touched or all.
+ bool fBreakOnAny;
+ SkIPoint fExpectedTouched[MAX_TRACKING_POINTS];
+ SkColor fBeforeTouched[MAX_TRACKING_POINTS];
+ int fCntExpectedTouched;
+
+ SkIPoint fExpectedUntouched[MAX_TRACKING_POINTS];
+ SkColor fBeforeUntouched[MAX_TRACKING_POINTS];
+ int fCntExpectedUntouched;
+
+ int fHits;
+};
+
+#endif // SkTracker_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/chop_transparency_main.cpp b/chromium/third_party/skia/experimental/PdfViewer/chop_transparency_main.cpp
new file mode 100644
index 00000000000..3f4b1fdee2d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/chop_transparency_main.cpp
@@ -0,0 +1,175 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkBitmap.h"
+#include "SkColorPriv.h"
+#include "SkCommandLineFlags.h"
+#include "SkData.h"
+#include "SkForceLinking.h"
+#include "SkGraphics.h"
+#include "SkImageDecoder.h"
+#include "SkImageEncoder.h"
+#include "SkOSFile.h"
+#include "SkRandom.h"
+#include "SkStream.h"
+#include "SkTArray.h"
+#include "SkTemplates.h"
+
+__SK_FORCE_IMAGE_DECODER_LINKING;
+
+DEFINE_string2(readPath, r, "", "Folder(s) and files to decode images. Required.");
+
+struct Format {
+ SkImageEncoder::Type fType;
+ SkImageDecoder::Format fFormat;
+ const char* fSuffix;
+};
+
+/*
+static const Format gFormats[] = {
+ { SkImageEncoder::kBMP_Type, SkImageDecoder::kBMP_Format, ".bmp" },
+ { SkImageEncoder::kGIF_Type, SkImageDecoder::kGIF_Format, ".gif" },
+ { SkImageEncoder::kICO_Type, SkImageDecoder::kICO_Format, ".ico" },
+ { SkImageEncoder::kJPEG_Type, SkImageDecoder::kJPEG_Format, ".jpg" },
+ { SkImageEncoder::kPNG_Type, SkImageDecoder::kPNG_Format, ".png" },
+ { SkImageEncoder::kWBMP_Type, SkImageDecoder::kWBMP_Format, ".wbmp" },
+ { SkImageEncoder::kWEBP_Type, SkImageDecoder::kWEBP_Format, ".webp" }
+};
+*/
+
+static SkISize opaqueSize(const SkBitmap& bm) {
+ int width = 1;
+ int height = 1;
+ for (int y = 0 ; y < bm.height(); y++) {
+ for (int x = 0 ; x < bm.width(); x++) {
+ SkColor color = bm.getColor(x, y);
+ if (SkColorGetA(color) != 0) {
+ height = y + 1;
+ width = width > (x + 1) ? width : x + 1;
+ }
+ }
+ }
+
+ return SkISize::Make(width, height);
+}
+
+static void setup_bitmap(SkBitmap* bitmap, int width, int height) {
+ bitmap->allocN32Pixels(width, height);
+}
+
+
+static bool write_bitmap(const char outName[], const SkBitmap& bm) {
+ SkISize size = opaqueSize(bm);
+ SkBitmap dst;
+ setup_bitmap(&dst, size.width(), size.height());
+
+ for (int y = 0 ; y < dst.height(); y++) {
+ for (int x = 0 ; x < dst.width(); x++) {
+ SkColor color = bm.getColor(x, y);
+ if (SkColorGetA(color) != 0xff) {
+ int a = SkColorGetA(color);
+ int r = SkColorGetR(color);
+ int g = SkColorGetG(color);
+ int b = SkColorGetB(color);
+ if (a == 0) {
+ r = g = b = 0;
+ } else {
+ r = (r * a) / 255;
+ g = (g * a) / 255;
+ b = (b * a) / 255;
+ a = 255;
+ }
+ color = SkColorSetARGB((U8CPU)a, (U8CPU)r, (U8CPU)g, (U8CPU)b);
+ }
+ *dst.getAddr32(x, y) = color;
+ }
+ }
+
+ return SkImageEncoder::EncodeFile(outName, dst, SkImageEncoder::kPNG_Type, 100);
+}
+
+static void decodeFileAndWrite(const char srcPath[]) {
+ SkBitmap bitmap;
+ SkFILEStream stream(srcPath);
+ if (!stream.isValid()) {
+ return;
+ }
+
+ SkImageDecoder* codec = SkImageDecoder::Factory(&stream);
+ if (NULL == codec) {
+ return;
+ }
+
+ SkAutoTDelete<SkImageDecoder> ad(codec);
+
+ stream.rewind();
+
+ if (!codec->decode(&stream, &bitmap, kN32_SkColorType, SkImageDecoder::kDecodePixels_Mode)) {
+ return;
+ }
+
+ write_bitmap(srcPath, bitmap);
+}
+
+/**
+ * Return true if the filename represents an image.
+ */
+static bool is_image_file(const char* filename) {
+ const char* gImageExtensions[] = {
+ ".png", ".PNG", ".jpg", ".JPG", ".jpeg", ".JPEG", ".bmp", ".BMP",
+ ".webp", ".WEBP", ".ico", ".ICO", ".wbmp", ".WBMP", ".gif", ".GIF"
+ };
+ for (size_t i = 0; i < SK_ARRAY_COUNT(gImageExtensions); ++i) {
+ if (SkStrEndsWith(filename, gImageExtensions[i])) {
+ return true;
+ }
+ }
+ return false;
+}
+
+int tool_main(int argc, char** argv);
+int tool_main(int argc, char** argv) {
+ SkCommandLineFlags::SetUsage("Decode files, and optionally write the results to files.");
+ SkCommandLineFlags::Parse(argc, argv);
+
+ if (FLAGS_readPath.count() < 1) {
+ SkDebugf("Folder(s) or image(s) to decode are required.\n");
+ return -1;
+ }
+
+
+ SkAutoGraphics ag;
+
+ for (int i = 0; i < FLAGS_readPath.count(); i++) {
+ const char* readPath = FLAGS_readPath[i];
+ if (strlen(readPath) < 1) {
+ break;
+ }
+ if (sk_isdir(readPath)) {
+ const char* dir = readPath;
+ SkOSFile::Iter iter(dir);
+ SkString filename;
+ while (iter.next(&filename)) {
+ if (!is_image_file(filename.c_str())) {
+ continue;
+ }
+ SkString fullname = SkOSPath::SkPathJoin(dir, filename.c_str());
+ decodeFileAndWrite(fullname.c_str());
+ }
+ } else if (sk_exists(readPath) && is_image_file(readPath)) {
+ decodeFileAndWrite(readPath);
+ }
+ }
+
+ return 0;
+}
+
+#if !defined SK_BUILD_FOR_IOS
+int main(int argc, char * const argv[]) {
+ return tool_main(argc, (char**) argv);
+}
+#endif
diff --git a/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfContext.h b/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfContext.h
new file mode 100644
index 00000000000..cd6eba22097
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfContext.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfContext_DEFINED
+#define SkPdfContext_DEFINED
+
+#include "SkMatrix.h"
+#include "SkPdfGraphicsState.h"
+#include "SkPdfNativeTokenizer.h"
+#include "SkTDStackNester.h"
+#include "SkTypes.h"
+
+class SkCanvas;
+class SkPdfNativeDoc;
+class SkPdfNativeObject;
+
+/**
+ * The context of the drawing. The document we draw from, the current stack of
+ * objects, ...
+ */
+class SkPdfContext : SkNoncopyable {
+public:
+ // FIXME (scroggo): Add functions for accessing these.
+ SkTDStackNester<SkPdfNativeObject*> fObjectStack;
+ SkTDStackNester<SkPdfGraphicsState> fStateStack;
+ SkPdfGraphicsState fGraphicsState;
+ SkPdfNativeDoc* fPdfDoc;
+ SkMatrix fOriginalMatrix;
+
+ // Does not take ownership of the doc.
+ explicit SkPdfContext(SkPdfNativeDoc* doc);
+
+ /**
+ * Parse the stream and draw its commands to the canvas.
+ * FIXME (scroggo): May not be the best place for this, but leaving here
+ * for now, since it uses SkPdfContext's members.
+ */
+ void parseStream(SkPdfNativeObject* stream, SkCanvas* canvas);
+
+private:
+ // FIXME (scroggo): Is this the right place for the allocator?
+ SkPdfAllocator fTmpPageAllocator;
+};
+#endif // SkPdfContext_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfDiffEncoder.h b/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfDiffEncoder.h
new file mode 100644
index 00000000000..9acd82f5690
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfDiffEncoder.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfDiffEncoder_DEFINED
+#define SkPdfDiffEncoder_DEFINED
+
+struct PdfToken;
+
+namespace SkPdfDiffEncoder {
+ /**
+ * If PDF_TRACE_DIFF_IN_PNG is defined, the PDF commands so far are written
+ * to a file with the difference created by using this token highlighted.
+ * The file is named "/tmp/log_step_by_step/step-%i-%s.png", where %i is
+ * the number of the command and %s is the name of the command. If
+ * PDF_TRACE_DIFF_IN_PNG is not defined this function does nothing.
+ * TODO(scroggo): Pass SkPdfContext and SkCanvas for info.
+ */
+ void WriteToFile(PdfToken*);
+};
+
+#endif // SkPdfDiffEncoder_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfRenderer.h b/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfRenderer.h
new file mode 100644
index 00000000000..9fc1ff7c6b3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfRenderer.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+
+#ifndef SkPdfRenderer_DEFINED
+#define SkPdfRenderer_DEFINED
+
+#include "SkTypes.h"
+
+class SkBitmap;
+class SkCanvas;
+class SkPdfNativeDoc;
+struct SkRect;
+class SkStream;
+
+// What kind of content to render.
+// FIXME: Currently unused.
+enum SkPdfContent {
+ kNoForms_SkPdfContent,
+ kAll_SkPdfContent,
+};
+
+/** \class SkPdfRenderer
+ *
+ * The SkPdfRenderer class is used to render a PDF into canvas.
+ *
+ */
+class SkPdfRenderer : SkNoncopyable {
+public:
+ // Create a new renderer from a stream.
+ // TODO(edisonn): replace it with a SkSmartStream which would know to to efficiently
+ // deal with a HTTP stream.
+ // FIXME: Untested.
+ static SkPdfRenderer* CreateFromStream(SkStream*);
+ // Create a new renderer from a file.
+ static SkPdfRenderer* CreateFromFile(const char* filename);
+
+ ~SkPdfRenderer();
+
+ // Render a specific page into the canvas, in a specific rectangle.
+ bool renderPage(int page, SkCanvas* canvas, const SkRect& dst) const;
+
+ // Returns the number of pages in the loaded pdf.
+ int pages() const;
+
+ // Returns the MediaBox of a page. Can be used by client to crate a canvas.
+ SkRect MediaBox(int page) const;
+
+ // TODO(edisonn): for testing only, probably it should be removed, unless some client wants to
+ // let users know how much memory the PDF needs.
+ size_t bytesUsed() const;
+
+private:
+ // Takes ownership of SkPdfNativeDoc.
+ SkPdfRenderer(SkPdfNativeDoc*);
+ SkPdfNativeDoc* fPdfDoc;
+};
+
+// For testing only, reports stats about rendering, like how many operations failed, or are NYI, ...
+void reportPdfRenderStats();
+
+// Renders a page of a pdf in a bitmap.
+bool SkPDFNativeRenderToBitmap(SkStream* stream,
+ SkBitmap* output,
+ int page = 0,
+ SkPdfContent content = kAll_SkPdfContent,
+ double dpi = 72.0);
+
+// TODO(edisonn): add options to render forms, checkboxes, ...
+// TODO(edisonn): Add API for Forms viewing and editing
+// e.g. SkBitmap getPage(int page);
+// int formsCount();
+// SkForm getForm(int formID); // SkForm(SkRect, .. other data)
+// TODO (edisonn): Add intend when loading pdf, for example: for viewing, for parsing content, ...
+
+#endif // SkPdfRenderer_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfTokenLooper.h b/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfTokenLooper.h
new file mode 100644
index 00000000000..f3897cc78f5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/inc/SkPdfTokenLooper.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfTokenLooper_DEFINED
+#define SkPdfTokenLooper_DEFINED
+
+#include "SkPdfNativeTokenizer.h"
+// For SkPdfResult
+#include "SkPdfUtils.h"
+
+class SkCanvas;
+class SkPdfContext;
+
+/**
+ * An object which reads tokens from a tokenizer and draws it to an SkCanvas.
+ * FIXME (scroggo): Can this be an interface? See http://goo.gl/AXQtkH
+ */
+class SkPdfTokenLooper {
+public:
+ /**
+ * Create a looper with no parent.
+ * @param tokenizer SkPdfNativeTokenizer for reading tokens.
+ * @param pdfContext Context for drawing state.
+ * @param canvas Target SkCanvas for drawing.
+ */
+ SkPdfTokenLooper(SkPdfNativeTokenizer* tokenizer,
+ SkPdfContext* pdfContext,
+ SkCanvas* canvas)
+ : fParent(NULL)
+ , fTokenizer(tokenizer)
+ , fPdfContext(pdfContext)
+ , fCanvas(canvas) {}
+
+ /**
+ * Create a looper as a child of parent. It will share the
+ * SkPdfContext, SkPdfTokenizer, and SkCanvas with its parent.
+ */
+ explicit SkPdfTokenLooper(SkPdfTokenLooper* parent)
+ : fParent(parent)
+ , fTokenizer(parent->fTokenizer)
+ , fPdfContext(parent->fPdfContext)
+ , fCanvas(parent->fCanvas) {}
+
+ virtual ~SkPdfTokenLooper() {}
+
+ /**
+ * Consume a token, and draw to fCanvas as directed.
+ */
+ virtual SkPdfResult consumeToken(PdfToken& token) = 0;
+
+ /**
+ * Consume all the tokens this looper can handle.
+ */
+ virtual void loop() = 0;
+
+protected:
+ // All are unowned pointers.
+ SkPdfTokenLooper* fParent;
+ SkPdfNativeTokenizer* fTokenizer;
+ SkPdfContext* fPdfContext;
+ SkCanvas* fCanvas;
+};
+
+#endif // SkPdfTokenLooper_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdf_viewer_main.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdf_viewer_main.cpp
new file mode 100644
index 00000000000..2f1a055e4d6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdf_viewer_main.cpp
@@ -0,0 +1,349 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkBitmapDevice.h"
+#include "SkCanvas.h"
+#include "SkCommandLineFlags.h"
+#include "SkDevice.h"
+#include "SkGraphics.h"
+#include "SkImageDecoder.h"
+#include "SkImageEncoder.h"
+#include "SkOSFile.h"
+#include "SkPdfConfig.h"
+#include "SkPdfRenderer.h"
+#include "SkPicture.h"
+#include "SkStream.h"
+#include "SkTypeface.h"
+#include "SkTArray.h"
+#include "SkNulCanvas.h"
+
+#if SK_SUPPORT_GPU
+#include "GrContextFactory.h"
+#include "GrContext.h"
+#include "SkGpuDevice.h"
+#endif
+
+DEFINE_string2(readPath, r, "", "pdf files or directories of pdf files to process.");
+DEFINE_string2(writePath, w, "", "Directory to write the rendered pages.");
+DEFINE_bool2(noExtensionForOnePagePdf, n, false, "No page extension if only one page.");
+DEFINE_bool2(showMemoryUsage, m, false, "Show Memory usage.");
+DEFINE_string2(pages, p, "all", "What pages to render and how:\n"
+ "\tall - all pages\n"
+ "\treverse - all pages, in reverse order\n"
+ "\tfirst - first page\n"
+ "\tlast - last page\n"
+ "\tnumber - a specific page number\n"
+ );
+DEFINE_double(DPI, 72, "DPI to be used for rendering (scale).");
+DEFINE_int32(benchLoad, 0, "Load the pdf file minimally N times, without any rendering and \n"
+ "\tminimal parsing to ensure correctness. Default 0 (disabled).");
+DEFINE_int32(benchRender, 0, "Render the pdf content N times. Default 0 (disabled)");
+#if SK_SUPPORT_GPU
+DEFINE_string2(config, c, "8888", "Canvas to render:\n"
+ "\t8888 - argb\n"
+ "\tgpu: use the gpu\n"
+ "\tnul - render in null canvas, any draw will just return.\n"
+ );
+#else
+DEFINE_string2(config, c, "8888", "Canvas to render:\n"
+ "\t8888 - argb\n"
+ "\tnul - render in null canvas, any draw will just return.\n"
+ );
+#endif
+DEFINE_bool2(transparentBackground, t, false, "Make background transparent instead of white.");
+
+/**
+ * Given list of directories and files to use as input, expects to find .pdf
+ * files and it will convert them to .png files writing them in the same directory
+ * one file for each page.
+ *
+ * Returns zero exit code if all .pdf files were converted successfully,
+ * otherwise returns error code 1.
+ */
+
+static const char PDF_FILE_EXTENSION[] = "pdf";
+static const char PNG_FILE_EXTENSION[] = "png";
+
+/** Replaces the extension of a file.
+ * @param path File name whose extension will be changed.
+ * @param old_extension The old extension.
+ * @param new_extension The new extension.
+ * @returns false if the file did not has the expected extension.
+ * if false is returned, contents of path are undefined.
+ */
+static bool add_page_and_replace_filename_extension(SkString* path, int page,
+ const char old_extension[],
+ const char new_extension[]) {
+ if (path->endsWith(old_extension)) {
+ path->remove(path->size() - strlen(old_extension),
+ strlen(old_extension));
+ if (!path->endsWith(".")) {
+ return false;
+ }
+ if (page >= 0) {
+ path->appendf("%i.", page);
+ }
+ path->append(new_extension);
+ return true;
+ }
+ return false;
+}
+
+/** Builds the output filename. path = dir/name, and it replaces expected
+ * .skp extension with .pdf extention.
+ * @param path Output filename.
+ * @param name The name of the file.
+ * @returns false if the file did not has the expected extension.
+ * if false is returned, contents of path are undefined.
+ */
+static bool make_output_filepath(SkString* path, const SkString& dir,
+ const SkString& name,
+ int page) {
+ *path = SkOSPath::SkPathJoin(dir.c_str(), name.c_str());
+ return add_page_and_replace_filename_extension(path, page,
+ PDF_FILE_EXTENSION,
+ PNG_FILE_EXTENSION);
+}
+
+static void setup_bitmap(SkBitmap* bitmap, int width, int height, SkColor color) {
+ bitmap->allocN32Pixels(width, height);
+ bitmap->eraseColor(color);
+}
+
+/** Write the output of pdf renderer to a file.
+ * @param outputDir Output dir.
+ * @param inputFilename The skp file that was read.
+ * @param renderer The object responsible to write the pdf file.
+ * @param page -1 means there is only one page (0), and render in a file without page extension
+ */
+
+#ifdef PDF_TRACE_DIFF_IN_PNG
+extern "C" SkBitmap* gDumpBitmap;
+extern "C" SkCanvas* gDumpCanvas;
+#endif
+
+#if SK_SUPPORT_GPU
+GrContextFactory gContextFactory;
+#endif
+
+static bool render_page(const SkString& outputDir,
+ const SkString& inputFilename,
+ const SkPdfRenderer& renderer,
+ int page) {
+ SkRect rect = renderer.MediaBox(page < 0 ? 0 :page);
+
+ // Exercise all pdf codepaths as in normal rendering, but no actual bits are changed.
+ if (!FLAGS_config.isEmpty() && strcmp(FLAGS_config[0], "nul") == 0) {
+ SkBitmap bitmap;
+ SkAutoTUnref<SkBaseDevice> device(SkNEW_ARGS(SkBitmapDevice, (bitmap)));
+ SkNulCanvas canvas(device);
+ renderer.renderPage(page < 0 ? 0 : page, &canvas, rect);
+ } else {
+ // 8888
+ SkRect rect = renderer.MediaBox(page < 0 ? 0 :page);
+
+ SkBitmap bitmap;
+ SkScalar width = SkScalarMul(rect.width(), SkDoubleToScalar(FLAGS_DPI / 72.0));
+ SkScalar height = SkScalarMul(rect.height(), SkDoubleToScalar(FLAGS_DPI / 72.0));
+
+ rect = SkRect::MakeWH(width, height);
+
+ SkColor background = FLAGS_transparentBackground ? SK_ColorTRANSPARENT : SK_ColorWHITE;
+
+#ifdef PDF_DEBUG_3X
+ setup_bitmap(&bitmap, 3 * (int)SkScalarToDouble(width), 3 * (int)SkScalarToDouble(height),
+ background);
+#else
+ setup_bitmap(&bitmap, (int)SkScalarToDouble(width), (int)SkScalarToDouble(height),
+ background);
+#endif
+ SkAutoTUnref<SkBaseDevice> device;
+ if (strcmp(FLAGS_config[0], "8888") == 0) {
+ device.reset(SkNEW_ARGS(SkBitmapDevice, (bitmap)));
+ }
+#if SK_SUPPORT_GPU
+ else if (strcmp(FLAGS_config[0], "gpu") == 0) {
+ SkAutoTUnref<GrSurface> target;
+ GrContext* gr = gContextFactory.get(GrContextFactory::kNative_GLContextType);
+ if (gr) {
+ // create a render target to back the device
+ GrTextureDesc desc;
+ desc.fConfig = kSkia8888_GrPixelConfig;
+ desc.fFlags = kRenderTarget_GrTextureFlagBit;
+ desc.fWidth = SkScalarCeilToInt(width);
+ desc.fHeight = SkScalarCeilToInt(height);
+ desc.fSampleCnt = 0;
+ target.reset(gr->createUncachedTexture(desc, NULL, 0));
+ }
+ if (NULL == target.get()) {
+ SkASSERT(0);
+ return false;
+ }
+
+ device.reset(SkGpuDevice::Create(target));
+ }
+#endif
+ else {
+ SkDebugf("unknown --config: %s\n", FLAGS_config[0]);
+ return false;
+ }
+ SkCanvas canvas(device);
+
+#ifdef PDF_TRACE_DIFF_IN_PNG
+ gDumpBitmap = &bitmap;
+ gDumpCanvas = &canvas;
+#endif
+ renderer.renderPage(page < 0 ? 0 : page, &canvas, rect);
+
+ SkString outputPath;
+ if (!make_output_filepath(&outputPath, outputDir, inputFilename, page)) {
+ return false;
+ }
+ SkImageEncoder::EncodeFile(outputPath.c_str(), bitmap, SkImageEncoder::kPNG_Type, 100);
+
+ if (FLAGS_showMemoryUsage) {
+ SkDebugf("Memory usage after page %i rendered: %u\n",
+ page < 0 ? 0 : page, (unsigned int)renderer.bytesUsed());
+ }
+ }
+ return true;
+}
+
+/** Reads an skp file, renders it to pdf and writes the output to a pdf file
+ * @param inputPath The skp file to be read.
+ * @param outputDir Output dir.
+ */
+static bool process_pdf(const SkString& inputPath, const SkString& outputDir) {
+ SkDebugf("Loading PDF: %s\n", inputPath.c_str());
+
+ SkString inputFilename = SkOSPath::SkBasename(inputPath.c_str());
+
+ SkAutoTDelete<SkPdfRenderer> renderer(SkPdfRenderer::CreateFromFile(inputPath.c_str()));
+ if (NULL == renderer.get()) {
+ SkDebugf("Failure loading file %s\n", inputPath.c_str());
+ return false;
+ }
+
+ if (FLAGS_showMemoryUsage) {
+ SkDebugf("Memory usage after load: %u\n", (unsigned int) renderer->bytesUsed());
+ }
+
+ // TODO(edisonn): bench timers
+ if (FLAGS_benchLoad > 0) {
+ for (int i = 0 ; i < FLAGS_benchLoad; i++) {
+ SkAutoTDelete<SkPdfRenderer> benchRenderer(
+ SkPdfRenderer::CreateFromFile(inputPath.c_str()));
+ if (NULL == benchRenderer.get()) {
+ SkDebugf("Failed to load on %ith attempt\n", i);
+ } else if (FLAGS_showMemoryUsage) {
+ SkDebugf("Memory usage after load %i number : %u\n", i,
+ (unsigned int) benchRenderer->bytesUsed());
+ }
+ }
+ }
+
+ if (!renderer->pages()) {
+ // This should never happen, since CreateFromFile will return NULL if there are no pages.
+ SkASSERT(false);
+ SkDebugf("ERROR: Empty PDF Document %s\n", inputPath.c_str());
+ return false;
+ }
+
+ bool success = true;
+ for (int i = 0; i < FLAGS_benchRender + 1; i++) {
+ // TODO(edisonn) if (i == 1) start timer
+ if (strcmp(FLAGS_pages[0], "all") == 0) {
+ for (int pn = 0; pn < renderer->pages(); ++pn) {
+ success &= render_page(outputDir, inputFilename, *renderer,
+ FLAGS_noExtensionForOnePagePdf && renderer->pages() == 1 ? -1 : pn);
+ }
+ } else if (strcmp(FLAGS_pages[0], "reverse") == 0) {
+ for (int pn = renderer->pages() - 1; pn >= 0; --pn) {
+ success &= render_page(outputDir, inputFilename, *renderer,
+ FLAGS_noExtensionForOnePagePdf && renderer->pages() == 1 ? -1 : pn);
+ }
+ } else if (strcmp(FLAGS_pages[0], "first") == 0) {
+ success &= render_page(outputDir, inputFilename, *renderer,
+ FLAGS_noExtensionForOnePagePdf && renderer->pages() == 1 ? -1 : 0);
+ } else if (strcmp(FLAGS_pages[0], "last") == 0) {
+ success &= render_page(outputDir, inputFilename, *renderer,
+ FLAGS_noExtensionForOnePagePdf && renderer->pages() == 1 ? -1
+ : renderer->pages() - 1);
+ } else {
+ int pn = atoi(FLAGS_pages[0]);
+ success &= render_page(outputDir, inputFilename, *renderer,
+ FLAGS_noExtensionForOnePagePdf && renderer->pages() == 1 ? -1 : pn);
+ }
+ }
+
+ if (!success) {
+ SkDebugf("Failures for file %s\n", inputPath.c_str());
+ }
+
+ return success;
+}
+
+/** For each file in the directory or for the file passed in input, call
+ * parse_pdf.
+ * @param input A directory or an pdf file.
+ * @param outputDir Output dir.
+ */
+static int process_input(const char* input, const SkString& outputDir) {
+ int failures = 0;
+ if (sk_isdir(input)) {
+ SkOSFile::Iter iter(input, PDF_FILE_EXTENSION);
+ SkString inputFilename;
+ while (iter.next(&inputFilename)) {
+ SkString inputPath = SkOSPath::SkPathJoin(input, inputFilename.c_str());
+ if (!process_pdf(inputPath, outputDir)) {
+ ++failures;
+ }
+ }
+ } else {
+ SkString inputPath(input);
+ if (!process_pdf(inputPath, outputDir)) {
+ ++failures;
+ }
+ }
+ return failures;
+}
+
+int tool_main(int argc, char** argv);
+int tool_main(int argc, char** argv) {
+ SkCommandLineFlags::SetUsage("Parse and Render .pdf files (pdf viewer).");
+ SkCommandLineFlags::Parse(argc, argv);
+
+ if (FLAGS_readPath.isEmpty()) {
+ SkDebugf(".pdf files or directories are required.\n");
+ exit(-1);
+ }
+
+ SkString outputDir;
+ if (FLAGS_writePath.count() == 1) {
+ outputDir.set(FLAGS_writePath[0]);
+ }
+
+ int failures = 0;
+ for (int i = 0; i < FLAGS_readPath.count(); i ++) {
+ failures += process_input(FLAGS_readPath[i], outputDir);
+ }
+
+ reportPdfRenderStats();
+
+ if (failures != 0) {
+ SkDebugf("Failed to render %i PDFs.\n", failures);
+ return 1;
+ }
+
+ return 0;
+}
+
+#if !defined SK_BUILD_FOR_IOS
+int main(int argc, char * const argv[]) {
+ return tool_main(argc, (char**) argv);
+}
+#endif
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/SkPdfNYI.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/SkPdfNYI.cpp
new file mode 100644
index 00000000000..988c8cce0c4
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/SkPdfNYI.cpp
@@ -0,0 +1,8 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfNYI.h"
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/SkPdfNYI.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/SkPdfNYI.h
new file mode 100644
index 00000000000..c9b483f5320
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/SkPdfNYI.h
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfNYI_DEFINED
+#define SkPdfNYI_DEFINED
+
+struct SkPdfFileSpec {};
+
+// TODO(edisonn): date is actually a string!
+
+struct SkPdfDate {};
+struct SkPdfTree {};
+struct SkPdfFunction {};
+
+
+#endif // SkPdfNYI_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeDoc.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeDoc.cpp
new file mode 100644
index 00000000000..2f0c18cb60a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeDoc.cpp
@@ -0,0 +1,582 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfNativeDoc.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "SkPdfMapper_autogen.h"
+#include "SkPdfNativeObject.h"
+#include "SkPdfNativeTokenizer.h"
+#include "SkPdfReporter.h"
+#include "SkStream.h"
+
+// TODO(edisonn): for some reason on mac these files are found here, but are found from headers
+//#include "SkPdfFileTrailerDictionary_autogen.h"
+//#include "SkPdfCatalogDictionary_autogen.h"
+//#include "SkPdfPageObjectDictionary_autogen.h"
+//#include "SkPdfPageTreeNodeDictionary_autogen.h"
+#include "SkPdfHeaders_autogen.h"
+
+static long getFileSize(const char* filename)
+{
+ struct stat stat_buf;
+ int rc = stat(filename, &stat_buf);
+ return rc == 0 ? (long)stat_buf.st_size : -1;
+}
+
+static const unsigned char* lineHome(const unsigned char* start, const unsigned char* current) {
+ while (current > start && !isPdfEOL(*(current - 1))) {
+ current--;
+ }
+ return current;
+}
+
+static const unsigned char* previousLineHome(const unsigned char* start,
+ const unsigned char* current) {
+ if (current > start && isPdfEOL(*(current - 1))) {
+ current--;
+ }
+
+ // allows CR+LF, LF+CR but not two CR+CR or LF+LF
+ if (current > start && isPdfEOL(*(current - 1)) && *current != *(current - 1)) {
+ current--;
+ }
+
+ while (current > start && !isPdfEOL(*(current - 1))) {
+ current--;
+ }
+
+ return current;
+}
+
+static const unsigned char* ignoreLine(const unsigned char* current, const unsigned char* end) {
+ while (current < end && !isPdfEOL(*current)) {
+ current++;
+ }
+ current++;
+ if (current < end && isPdfEOL(*current) && *current != *(current - 1)) {
+ current++;
+ }
+ return current;
+}
+
+SkPdfNativeDoc* gDoc = NULL;
+
+SkPdfNativeDoc::SkPdfNativeDoc(SkStream* stream)
+ : fAllocator(new SkPdfAllocator())
+ , fFileContent(NULL)
+ , fContentLength(0)
+ , fRootCatalogRef(NULL)
+ , fRootCatalog(NULL) {
+ size_t size = stream->getLength();
+ void* ptr = sk_malloc_throw(size);
+ stream->read(ptr, size);
+
+ init(ptr, size);
+}
+
+SkPdfNativeDoc::SkPdfNativeDoc(const char* path)
+ : fAllocator(new SkPdfAllocator())
+ , fFileContent(NULL)
+ , fContentLength(0)
+ , fRootCatalogRef(NULL)
+ , fRootCatalog(NULL) {
+ gDoc = this;
+ FILE* file = fopen(path, "r");
+ // TODO(edisonn): put this in a function that can return NULL
+ if (file) {
+ size_t size = getFileSize(path);
+ void* content = sk_malloc_throw(size);
+ bool ok = (0 != fread(content, size, 1, file));
+ fclose(file);
+ if (!ok) {
+ sk_free(content);
+ SkPdfReport(kFatalError_SkPdfIssueSeverity, kReadStreamError_SkPdfIssue,
+ "could not read file", NULL, NULL);
+ // TODO(edisonn): not nice to return like this from constructor, create a static
+ // function that can report NULL for failures.
+ return; // Doc will have 0 pages
+ }
+
+ init(content, size);
+ }
+}
+
+void SkPdfNativeDoc::init(const void* bytes, size_t length) {
+ fFileContent = (const unsigned char*)bytes;
+ fContentLength = length;
+ const unsigned char* eofLine = lineHome(fFileContent, fFileContent + fContentLength - 1);
+ const unsigned char* xrefByteOffsetLine = previousLineHome(fFileContent, eofLine);
+ const unsigned char* xrefstartKeywordLine = previousLineHome(fFileContent, xrefByteOffsetLine);
+
+ if (strcmp((char*)xrefstartKeywordLine, "startxref") != 0) {
+ SkPdfReport(kWarning_SkPdfIssueSeverity, kMissingToken_SkPdfIssue,
+ "Could not find startxref", NULL, NULL);
+ }
+
+ long xrefByteOffset = atol((const char*)xrefByteOffsetLine);
+
+ bool storeCatalog = true;
+ while (xrefByteOffset >= 0) {
+ const unsigned char* trailerStart = this->readCrossReferenceSection(fFileContent + xrefByteOffset,
+ xrefstartKeywordLine);
+ xrefByteOffset = -1;
+ if (trailerStart < xrefstartKeywordLine) {
+ this->readTrailer(trailerStart, xrefstartKeywordLine, storeCatalog, &xrefByteOffset, false);
+ storeCatalog = false;
+ }
+ }
+
+ // TODO(edisonn): warn/error expect fObjects[fRefCatalogId].fGeneration == fRefCatalogGeneration
+ // TODO(edisonn): security, verify that SkPdfCatalogDictionary is indeed using mapper
+
+ if (fRootCatalogRef) {
+ fRootCatalog = (SkPdfCatalogDictionary*)resolveReference(fRootCatalogRef);
+ if (fRootCatalog != NULL && fRootCatalog->isDictionary() && fRootCatalog->valid()) {
+ SkPdfPageTreeNodeDictionary* tree = fRootCatalog->Pages(this);
+ if (tree && tree->isDictionary() && tree->valid()) {
+ fillPages(tree);
+ }
+ }
+ }
+
+ if (pages() == 0) {
+ // TODO(edisonn): probably it would be better to return NULL and make a clean document.
+ loadWithoutXRef();
+ }
+
+ // TODO(edisonn): corrupted pdf, read it from beginning and rebuild
+ // (xref, trailer, or just read all objects)
+}
+
+void SkPdfNativeDoc::loadWithoutXRef() {
+ const unsigned char* current = fFileContent;
+ const unsigned char* end = fFileContent + fContentLength;
+
+ // TODO(edisonn): read pdf version
+ current = ignoreLine(current, end);
+
+ current = skipPdfWhiteSpaces(current, end);
+ while (current < end) {
+ SkPdfNativeObject token;
+ current = nextObject(current, end, &token, NULL, NULL);
+ if (token.isInteger()) {
+ int id = (int)token.intValue();
+
+ token.reset();
+ current = nextObject(current, end, &token, NULL, NULL);
+ // TODO(edisonn): generation ignored for now (used in pdfs with updates)
+ // int generation = (int)token.intValue();
+
+ token.reset();
+ current = nextObject(current, end, &token, NULL, NULL);
+ // TODO(edisonn): keywork must be "obj". Add ability to report error instead ignoring.
+ if (!token.isKeyword("obj")) {
+ SkPdfReport(kWarning_SkPdfIssueSeverity, kMissingToken_SkPdfIssue,
+ "Could not find obj", NULL, NULL);
+ continue;
+ }
+
+ while (fObjects.count() < id + 1) {
+ reset(fObjects.append());
+ }
+
+ fObjects[id].fOffset = current - fFileContent;
+
+ SkPdfNativeObject* obj = fAllocator->allocObject();
+ current = nextObject(current, end, obj, fAllocator, this);
+
+ fObjects[id].fResolvedReference = obj;
+ fObjects[id].fObj = obj;
+ fObjects[id].fIsReferenceResolved = true;
+ } else if (token.isKeyword("trailer")) {
+ long dummy;
+ current = readTrailer(current, end, true, &dummy, true);
+ } else if (token.isKeyword("startxref")) {
+ token.reset();
+ current = nextObject(current, end, &token, NULL, NULL); // ignore startxref
+ }
+
+ current = skipPdfWhiteSpaces(current, end);
+ }
+
+ // TODO(edisonn): quick hack, detect root catalog. When we implement linearized support we
+ // might not need it.
+ if (!fRootCatalogRef) {
+ for (unsigned int i = 0 ; i < objects(); i++) {
+ SkPdfNativeObject* obj = object(i);
+ SkPdfNativeObject* root = (obj && obj->isDictionary()) ? obj->get("Root") : NULL;
+ if (root && root->isReference()) {
+ fRootCatalogRef = root;
+ }
+ }
+ }
+
+ if (fRootCatalogRef) {
+ fRootCatalog = (SkPdfCatalogDictionary*)resolveReference(fRootCatalogRef);
+ if (fRootCatalog != NULL && fRootCatalog->isDictionary() && fRootCatalog->valid()) {
+ SkPdfPageTreeNodeDictionary* tree = fRootCatalog->Pages(this);
+ if (tree && tree->isDictionary() && tree->valid()) {
+ fillPages(tree);
+ }
+ }
+ }
+
+
+}
+
+SkPdfNativeDoc::~SkPdfNativeDoc() {
+ sk_free((void*)fFileContent);
+ delete fAllocator;
+}
+
+const unsigned char* SkPdfNativeDoc::readCrossReferenceSection(const unsigned char* xrefStart,
+ const unsigned char* trailerEnd) {
+ SkPdfNativeObject xref;
+ const unsigned char* current = nextObject(xrefStart, trailerEnd, &xref, NULL, NULL);
+
+ if (!xref.isKeyword("xref")) {
+ SkPdfReport(kWarning_SkPdfIssueSeverity, kMissingToken_SkPdfIssue, "Could not find sref",
+ NULL, NULL);
+ return trailerEnd;
+ }
+
+ SkPdfNativeObject token;
+ while (current < trailerEnd) {
+ token.reset();
+ const unsigned char* previous = current;
+ current = nextObject(current, trailerEnd, &token, NULL, NULL);
+ if (!token.isInteger()) {
+ SkPdfReport(kInfo_SkPdfIssueSeverity, kNoIssue_SkPdfIssue,
+ "Done readCrossReferenceSection", NULL, NULL);
+ return previous;
+ }
+
+ int startId = (int)token.intValue();
+ token.reset();
+ current = nextObject(current, trailerEnd, &token, NULL, NULL);
+
+ if (!token.isInteger()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, "readCrossReferenceSection",
+ &token, SkPdfNativeObject::kInteger_PdfObjectType, NULL);
+ return current;
+ }
+
+ int entries = (int)token.intValue();
+
+ for (int i = 0; i < entries; i++) {
+ token.reset();
+ current = nextObject(current, trailerEnd, &token, NULL, NULL);
+ if (!token.isInteger()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity,
+ "readCrossReferenceSection",
+ &token, SkPdfNativeObject::kInteger_PdfObjectType, NULL);
+ return current;
+ }
+ int offset = (int)token.intValue();
+
+ token.reset();
+ current = nextObject(current, trailerEnd, &token, NULL, NULL);
+ if (!token.isInteger()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity,
+ "readCrossReferenceSection",
+ &token, SkPdfNativeObject::kInteger_PdfObjectType, NULL);
+ return current;
+ }
+ int generation = (int)token.intValue();
+
+ token.reset();
+ current = nextObject(current, trailerEnd, &token, NULL, NULL);
+ if (!token.isKeyword() || token.lenstr() != 1 ||
+ (*token.c_str() != 'f' && *token.c_str() != 'n')) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity,
+ "readCrossReferenceSection: f or n expected",
+ &token, SkPdfNativeObject::kKeyword_PdfObjectType, NULL);
+ return current;
+ }
+
+ this->addCrossSectionInfo(startId + i, generation, offset, *token.c_str() == 'f');
+ }
+ }
+ SkPdfReport(kInfo_SkPdfIssueSeverity, kNoIssue_SkPdfIssue,
+ "Unexpected end of readCrossReferenceSection", NULL, NULL);
+ return current;
+}
+
+const unsigned char* SkPdfNativeDoc::readTrailer(const unsigned char* trailerStart,
+ const unsigned char* trailerEnd,
+ bool storeCatalog, long* prev, bool skipKeyword) {
+ *prev = -1;
+
+ const unsigned char* current = trailerStart;
+ if (!skipKeyword) {
+ SkPdfNativeObject trailerKeyword;
+ // Use null allocator, and let it just fail if memory, it should not crash.
+ current = nextObject(current, trailerEnd, &trailerKeyword, NULL, NULL);
+
+ if (!trailerKeyword.isKeyword() || strlen("trailer") != trailerKeyword.lenstr() ||
+ strncmp(trailerKeyword.c_str(), "trailer", strlen("trailer")) != 0) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity,
+ "readTrailer: trailer keyword expected",
+ &trailerKeyword,
+ SkPdfNativeObject::kKeyword_PdfObjectType, NULL);
+ return current;
+ }
+ }
+
+ SkPdfNativeObject token;
+ current = nextObject(current, trailerEnd, &token, fAllocator, NULL);
+ if (!token.isDictionary()) {
+ return current;
+ }
+ SkPdfFileTrailerDictionary* trailer = (SkPdfFileTrailerDictionary*)&token;
+ if (!trailer->valid()) {
+ return current;
+ }
+
+ if (storeCatalog) {
+ SkPdfNativeObject* ref = trailer->Root(NULL);
+ if (ref == NULL || !ref->isReference()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity,
+ "readTrailer: unexpected root reference",
+ ref, SkPdfNativeObject::kReference_PdfObjectType, NULL);
+ return current;
+ }
+ fRootCatalogRef = ref;
+ }
+
+ if (trailer->has_Prev()) {
+ *prev = (long)trailer->Prev(NULL);
+ }
+
+ return current;
+}
+
+void SkPdfNativeDoc::addCrossSectionInfo(int id, int generation, int offset, bool isFreed) {
+ // TODO(edisonn): security here, verify id
+ while (fObjects.count() < id + 1) {
+ this->reset(fObjects.append());
+ }
+
+ fObjects[id].fOffset = offset;
+ fObjects[id].fObj = NULL;
+ fObjects[id].fResolvedReference = NULL;
+ fObjects[id].fIsReferenceResolved = false;
+}
+
+SkPdfNativeObject* SkPdfNativeDoc::readObject(int id/*, int expectedGeneration*/) {
+ long startOffset = fObjects[id].fOffset;
+ //long endOffset = fObjects[id].fOffsetEnd;
+ // TODO(edisonn): use hinted endOffset
+ const unsigned char* current = fFileContent + startOffset;
+ const unsigned char* end = fFileContent + fContentLength;
+
+ SkPdfNativeTokenizer tokenizer(current, (int) (end - current), fAllocator, this);
+
+ SkPdfNativeObject idObj;
+ SkPdfNativeObject generationObj;
+ SkPdfNativeObject objKeyword;
+ SkPdfNativeObject* dict = fAllocator->allocObject();
+
+ current = nextObject(current, end, &idObj, NULL, NULL);
+ if (current >= end) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kReadStreamError_SkPdfIssue, "reading id",
+ NULL, NULL);
+ return NULL;
+ }
+
+ current = nextObject(current, end, &generationObj, NULL, NULL);
+ if (current >= end) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kReadStreamError_SkPdfIssue,
+ "reading generation", NULL, NULL);
+ return NULL;
+ }
+
+ current = nextObject(current, end, &objKeyword, NULL, NULL);
+ if (current >= end) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kReadStreamError_SkPdfIssue,
+ "reading keyword obj", NULL, NULL);
+ return NULL;
+ }
+
+ if (!idObj.isInteger() || id != idObj.intValue()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, "readObject: unexpected id",
+ &idObj, SkPdfNativeObject::kInteger_PdfObjectType, NULL);
+ }
+
+ // TODO(edisonn): verify that the generation is the right one
+ if (!generationObj.isInteger() /* || generation != generationObj.intValue()*/) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity,
+ "readObject: unexpected generation",
+ &generationObj, SkPdfNativeObject::kInteger_PdfObjectType, NULL);
+ }
+
+ if (!objKeyword.isKeyword() || strcmp(objKeyword.c_str(), "obj") != 0) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity,
+ "readObject: unexpected obj keyword",
+ &objKeyword, SkPdfNativeObject::kKeyword_PdfObjectType, NULL);
+ }
+
+ current = nextObject(current, end, dict, fAllocator, this);
+
+ // TODO(edisonn): report warning/error - verify that the last token is endobj
+
+ return dict;
+}
+
+void SkPdfNativeDoc::fillPages(SkPdfPageTreeNodeDictionary* tree) {
+ SkPdfArray* kids = tree->Kids(this);
+ if (kids == NULL) {
+ *fPages.append() = (SkPdfPageObjectDictionary*)tree;
+ return;
+ }
+
+ int cnt = (int) kids->size();
+ for (int i = 0; i < cnt; i++) {
+ SkPdfNativeObject* obj = resolveReference(kids->objAtAIndex(i));
+ if (fMapper->mapPageObjectDictionary(obj) != kPageObjectDictionary_SkPdfNativeObjectType) {
+ *fPages.append() = (SkPdfPageObjectDictionary*)obj;
+ } else {
+ // TODO(edisonn): verify that it is a page tree indeed
+ fillPages((SkPdfPageTreeNodeDictionary*)obj);
+ }
+ }
+}
+
+int SkPdfNativeDoc::pages() const {
+ return fPages.count();
+}
+
+SkPdfPageObjectDictionary* SkPdfNativeDoc::page(int page) {
+ SkASSERT(page >= 0 && page < fPages.count());
+ return fPages[page];
+}
+
+
+SkPdfResourceDictionary* SkPdfNativeDoc::pageResources(int page) {
+ SkASSERT(page >= 0 && page < fPages.count());
+ return fPages[page]->Resources(this);
+}
+
+// TODO(edisonn): Partial implemented.
+// Move the logics directly in the code generator for inheritable and default values?
+SkRect SkPdfNativeDoc::MediaBox(int page) {
+ SkPdfPageObjectDictionary* current = fPages[page];
+ while (!current->has_MediaBox() && current->has_Parent()) {
+ current = (SkPdfPageObjectDictionary*)current->Parent(this);
+ }
+ if (current) {
+ return current->MediaBox(this);
+ }
+ return SkRect::MakeEmpty();
+}
+
+size_t SkPdfNativeDoc::objects() const {
+ return fObjects.count();
+}
+
+SkPdfNativeObject* SkPdfNativeDoc::object(int i) {
+ SkASSERT(!(i < 0 || i > fObjects.count()));
+
+ if (i < 0 || i > fObjects.count()) {
+ return NULL;
+ }
+
+ if (fObjects[i].fObj == NULL) {
+ fObjects[i].fObj = readObject(i);
+ // TODO(edisonn): For perf, when we read the cross reference sections, we should take
+ // advantage of the boundaries of known objects, to minimize the risk of just parsing a bad
+ // stream, and fail quickly, in case we default to sequential stream read.
+ }
+
+ return fObjects[i].fObj;
+}
+
+const SkPdfMapper* SkPdfNativeDoc::mapper() const {
+ return fMapper;
+}
+
+SkPdfReal* SkPdfNativeDoc::createReal(double value) const {
+ SkPdfNativeObject* obj = fAllocator->allocObject();
+ SkPdfNativeObject::makeReal(value, obj);
+ TRACK_OBJECT_SRC(obj);
+ return (SkPdfReal*)obj;
+}
+
+SkPdfInteger* SkPdfNativeDoc::createInteger(int value) const {
+ SkPdfNativeObject* obj = fAllocator->allocObject();
+ SkPdfNativeObject::makeInteger(value, obj);
+ TRACK_OBJECT_SRC(obj);
+ return (SkPdfInteger*)obj;
+}
+
+SkPdfString* SkPdfNativeDoc::createString(const unsigned char* sz, size_t len) const {
+ SkPdfNativeObject* obj = fAllocator->allocObject();
+ SkPdfNativeObject::makeString(sz, len, obj);
+ TRACK_OBJECT_SRC(obj);
+ return (SkPdfString*)obj;
+}
+
+SkPdfAllocator* SkPdfNativeDoc::allocator() const {
+ return fAllocator;
+}
+
+SkPdfNativeObject* SkPdfNativeDoc::resolveReference(SkPdfNativeObject* ref) {
+ if (ref && ref->isReference()) {
+ int id = ref->referenceId();
+ // TODO(edisonn): generation/updates not supported now
+ //int gen = ref->referenceGeneration();
+
+ // TODO(edisonn): verify id and gen expected
+ if (id < 0 || id >= fObjects.count()) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kReadStreamError_SkPdfIssue,
+ "resolve reference id out of bounds", NULL, NULL);
+ return NULL;
+ }
+
+ if (fObjects[id].fIsReferenceResolved) {
+ SkPdfReportIf(!fObjects[id].fResolvedReference, kIgnoreError_SkPdfIssueSeverity,
+ kBadReference_SkPdfIssue, "ref is NULL", NULL, NULL);
+ return fObjects[id].fResolvedReference;
+ }
+
+ // TODO(edisonn): there are pdfs in the crashing suite that cause a stack overflow
+ // here unless we check for resolved reference on next line.
+ // Determine if the pdf is corrupted, or we have a bug here.
+
+ // Avoids recursive calls
+ fObjects[id].fIsReferenceResolved = true;
+
+ if (fObjects[id].fObj == NULL) {
+ fObjects[id].fObj = readObject(id);
+ }
+
+ if (fObjects[id].fObj != NULL && fObjects[id].fResolvedReference == NULL) {
+ if (!fObjects[id].fObj->isReference()) {
+ fObjects[id].fResolvedReference = fObjects[id].fObj;
+ } else {
+ fObjects[id].fResolvedReference = resolveReference(fObjects[id].fObj);
+ }
+ }
+
+ return fObjects[id].fResolvedReference;
+ }
+
+ return (SkPdfNativeObject*)ref;
+}
+
+size_t SkPdfNativeDoc::bytesUsed() const {
+ return fAllocator->bytesUsed() +
+ fContentLength +
+ fObjects.count() * sizeof(PublicObjectEntry) +
+ fPages.count() * sizeof(SkPdfPageObjectDictionary*) +
+ sizeof(*this);
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeDoc.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeDoc.h
new file mode 100644
index 00000000000..b92c872a41d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeDoc.h
@@ -0,0 +1,159 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfNativeDoc_DEFINED
+#define SkPdfNativeDoc_DEFINED
+
+#include "SkRect.h"
+#include "SkTDArray.h"
+
+class SkCanvas;
+
+class SkPdfAllocator;
+class SkPdfMapper;
+class SkPdfNativeObject;
+class SkPdfReal;
+class SkPdfInteger;
+class SkPdfString;
+class SkPdfResourceDictionary;
+class SkPdfCatalogDictionary;
+class SkPdfPageObjectDictionary;
+class SkPdfPageTreeNodeDictionary;
+
+class SkPdfNativeTokenizer;
+
+class SkStream;
+
+// TODO(edisonn): Implement a smart stream that can seek, and that can also fall back to reading
+// the bytes in order. For example, we can try to read the stream optimistically, but if there
+// are issues in the pdf, we must read the pdf from the beginning, and fix whatever errors we can.
+// This would be useful to show quickly page 100 in a pdf (www.example.com/foo.pdf#page100)
+// But if the pdf is missing the xref, then we will have to read most of pdf to be able to render
+// page 100.
+
+/** \class SkPdfNativeDoc
+ *
+ * The SkPdfNativeDoc class is used to load a PDF in memory and it represents a PDF Document.
+ *
+ */
+class SkPdfNativeDoc {
+private:
+ // Information about public objects in pdf that can be referenced with ID GEN R
+ struct PublicObjectEntry {
+ // Offset in the file where the object starts.
+ long fOffset;
+
+ // Offset in file where the object ends. Could be used to quickly fail if there is a
+ // problem in pdf structure.
+ // long endOffset; // TODO(edisonn): determine the end of the object,
+ // to be used when the doc is corrupted, for fast failure.
+
+ // Refered object.
+ SkPdfNativeObject* fObj;
+
+ // If refered object is a reference, we resolve recursively the reference until we find
+ // the real object.
+ SkPdfNativeObject* fResolvedReference;
+
+ // Used to break a recursive reference to itself.
+ bool fIsReferenceResolved;
+ };
+
+public:
+ // TODO(edisonn) should be deprecated
+ SkPdfNativeDoc(const char* path);
+
+ // TODO(edisonn) should be deprecated
+ // FIXME: Untested.
+ SkPdfNativeDoc(SkStream* stream);
+
+ ~SkPdfNativeDoc();
+
+ // returns the number of pages in the pdf
+ int pages() const;
+
+ // returns the page resources
+ SkPdfResourceDictionary* pageResources(int page);
+
+ // returns the page's mediabox i points - the page physical boundaries.
+ SkRect MediaBox(int page);
+
+ //returns objects that are references and can be queried.
+ size_t objects() const;
+
+ // returns an object.
+ // TODO(edisonn): pdf updates are not supported yet.
+ // add generation parameter to support page updates.
+ SkPdfNativeObject* object(int id /*, int generation*/ );
+
+ // returns the object that holds all the page informnation
+ // TODO(edisonn): pdf updates are not supported yet.
+ // add generation parameter to support page updates.
+ SkPdfPageObjectDictionary* page(int page/*, int generation*/);
+
+ // TODO(edisonn): deprecate the mapper - was used when we supported multiple
+ // parsers (podofo)
+ // The mapper maps allows an object to be mapped to a different dictionary type
+ // and it could verify the integrity of the object.
+ const SkPdfMapper* mapper() const;
+
+ // Allocator of the pdf - this holds all objects that are publicly referenced
+ // and all the objects that they refer
+ SkPdfAllocator* allocator() const;
+
+ // Allows a renderer to create values to be dumped on the stack for operators to process them.
+ SkPdfReal* createReal(double value) const;
+ SkPdfInteger* createInteger(int value) const;
+ // the string does not own the char*
+ SkPdfString* createString(const unsigned char* sz, size_t len) const;
+
+ // Resolve a reference object. Will recursively resolve the reference
+ // until a real object is found
+ SkPdfNativeObject* resolveReference(SkPdfNativeObject* ref);
+
+ // Reports an approximation of all the memory usage.
+ size_t bytesUsed() const;
+
+private:
+
+ // Takes ownership of bytes.
+ void init(const void* bytes, size_t length);
+
+ // loads a pdf that has missing xref
+ void loadWithoutXRef();
+
+ const unsigned char* readCrossReferenceSection(const unsigned char* xrefStart,
+ const unsigned char* trailerEnd);
+ const unsigned char* readTrailer(const unsigned char* trailerStart,
+ const unsigned char* trailerEnd,
+ bool storeCatalog, long* prev, bool skipKeyword);
+
+ // TODO(edisonn): pdfs with updates not supported right now, generation ignored.
+ void addCrossSectionInfo(int id, int generation, int offset, bool isFreed);
+ static void reset(PublicObjectEntry* obj) {
+ obj->fObj = NULL;
+ obj->fResolvedReference = NULL;
+ obj->fOffset = -1;
+ obj->fIsReferenceResolved = false;
+ }
+
+ SkPdfNativeObject* readObject(int id/*, int generation*/);
+
+ void fillPages(SkPdfPageTreeNodeDictionary* tree);
+
+ SkPdfAllocator* fAllocator;
+ SkPdfMapper* fMapper;
+ const unsigned char* fFileContent;
+ size_t fContentLength;
+ SkPdfNativeObject* fRootCatalogRef;
+ SkPdfCatalogDictionary* fRootCatalog;
+
+ mutable SkTDArray<PublicObjectEntry> fObjects;
+ SkTDArray<SkPdfPageObjectDictionary*> fPages;
+};
+
+#endif // SkPdfNativeDoc_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeObject.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeObject.cpp
new file mode 100644
index 00000000000..d9b3c01201e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeObject.cpp
@@ -0,0 +1,134 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfNativeObject.h"
+
+#include "SkBitmap.h"
+#include "SkFlate.h"
+#include "SkPdfFont.h"
+#include "SkPdfNativeTokenizer.h"
+#include "SkPdfReporter.h"
+#include "SkStream.h"
+
+// TODO(edisonn): mac builder does not find the header ... but from headers is ok
+//#include "SkPdfStreamCommonDictionary_autogen.h"
+#include "SkPdfHeaders_autogen.h"
+
+
+SkPdfNativeObject SkPdfNativeObject::kNull = SkPdfNativeObject::makeNull();
+
+bool SkPdfNativeObject::applyFlateDecodeFilter() {
+ if (!SkFlate::HaveFlate()) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kNoFlateLibrary_SkPdfIssue,
+ "forgot to link with flate library?", NULL, NULL);
+ return false;
+ }
+
+ const unsigned char* old = fStr.fBuffer;
+ bool deleteOld = isStreamOwned();
+
+ SkMemoryStream skstream(fStr.fBuffer, fStr.fBytes >> 2, false);
+ SkDynamicMemoryWStream uncompressedData;
+
+ if (SkFlate::Inflate(&skstream, &uncompressedData)) {
+ fStr.fBytes = (uncompressedData.bytesWritten() << 2) + kOwnedStreamBit +
+ kUnfilteredStreamBit;
+ fStr.fBuffer = (const unsigned char*)new unsigned char[uncompressedData.bytesWritten()];
+ uncompressedData.copyTo((void*)fStr.fBuffer);
+
+ if (deleteOld) {
+ delete[] old;
+ }
+
+ return true;
+ } else {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kBadStream_SkPdfIssue, "inflate failed", this, NULL);
+ return false;
+ }
+}
+
+bool SkPdfNativeObject::applyDCTDecodeFilter() {
+ // applyDCTDecodeFilter will fail, and it won't allow any more filters.
+ // technically, it would be possible, but not a real world scenario.
+ // in this way we create the image from the DCT stream directly.
+ return false;
+}
+
+bool SkPdfNativeObject::applyFilter(const char* name) {
+ if (strcmp(name, "FlateDecode") == 0) {
+ return applyFlateDecodeFilter();
+ } else if (strcmp(name, "DCTDecode") == 0) {
+ return applyDCTDecodeFilter();
+ }
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue, "filter not supported", this,
+ NULL);
+ return false;
+}
+
+bool SkPdfNativeObject::filterStream() {
+ SkPdfMarkObjectUsed();
+
+ if (!hasStream()) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kBadStream_SkPdfIssue, "No Stream", this,
+ NULL);
+ return false;
+ }
+
+ if (isStreamFiltered()) {
+ return true;
+ }
+
+ SkPdfStreamCommonDictionary* stream = (SkPdfStreamCommonDictionary*)this;
+
+ if (!stream->has_Filter()) {
+ fStr.fBytes = ((fStr.fBytes >> 1) << 1) + kFilteredStreamBit;
+ } else if (stream->isFilterAName(NULL)) {
+ SkString filterName = stream->getFilterAsName(NULL);
+ applyFilter(filterName.c_str());
+ } else if (stream->isFilterAArray(NULL)) {
+ const SkPdfArray* filters = stream->getFilterAsArray(NULL);
+ int cnt = (int) filters->size();
+ for (int i = cnt - 1; i >= 0; i--) {
+ const SkPdfNativeObject* filterName = filters->objAtAIndex(i);
+ if (filterName != NULL && filterName->isName()) {
+ if (!applyFilter(filterName->nameValue())) {
+ break;
+ }
+ } else {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kIncositentSyntax_SkPdfIssue,
+ "filter name should be a Name", this, NULL);
+ }
+ }
+ }
+
+ return true;
+}
+
+void SkPdfNativeObject::releaseData() {
+#ifdef PDF_TRACK_OBJECT_USAGE
+ SkPdfReportIf(!fUsed, kInfo_SkPdfIssueSeverity, kUnusedObject_SkPdfIssue,
+ "Unused object in rendering", this, NULL);
+#endif // PDF_TRACK_OBJECT_USAGE
+
+ SkPdfMarkObjectUnused();
+
+ if (fData) {
+ switch (fDataType) {
+ case kFont_Data:
+ delete (SkPdfFont*)fData;
+ break;
+ case kBitmap_Data:
+ delete (SkBitmap*)fData;
+ break;
+ default:
+ SkASSERT(false);
+ break;
+ }
+ }
+ fData = NULL;
+ fDataType = kEmpty_Data;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeObject.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeObject.h
new file mode 100644
index 00000000000..22b5a58f7e2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeObject.h
@@ -0,0 +1,1326 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfNativeObject_DEFINED
+#define SkPdfNativeObject_DEFINED
+
+#include <stdint.h>
+#include <string.h>
+
+#include "SkMatrix.h"
+#include "SkPdfConfig.h"
+#include "SkPdfNativeTokenizer.h"
+#include "SkPdfNYI.h"
+#include "SkPdfUtils.h"
+#include "SkRect.h"
+#include "SkString.h"
+#include "SkTDArray.h"
+#include "SkTDict.h"
+
+class SkPdfDictionary;
+class SkPdfStream;
+class SkPdfAllocator;
+
+// TODO(edisonn): remove these constants and clean up the code.
+#define kFilteredStreamBit 0
+#define kUnfilteredStreamBit 1
+#define kOwnedStreamBit 2
+
+/** \class SkPdfNativeObject
+ *
+ * The SkPdfNativeObject class is used to store a pdf object. Classes that inherit it are not
+ * allowed to add fields.
+ *
+ * SkPdfAllocator will allocate them in chunks and will free them in destructor.
+ *
+ * You can allocate one on the stack, as long as you call reset() at the end, and any objects it
+ * points to in an allocator. But if your object is a simple one, like number, then
+ * putting it on stack will be just fine.
+ *
+ */
+class SkPdfNativeObject {
+ public:
+ enum ObjectType {
+ // The type will have only one of these values, but for error reporting, we make it an enum
+ // so it can easily report that something was expected to be one of a few types
+ kInvalid_PdfObjectType = 1 << 1,
+
+ kBoolean_PdfObjectType = 1 << 2,
+ kInteger_PdfObjectType = 1 << 3,
+ kReal_PdfObjectType = 1 << 4,
+ _kNumber_PdfObjectType = kInteger_PdfObjectType | kReal_PdfObjectType,
+ kString_PdfObjectType = 1 << 5,
+ kHexString_PdfObjectType = 1 << 6,
+ _kAnyString_PdfObjectType = kString_PdfObjectType | kHexString_PdfObjectType,
+ kName_PdfObjectType = 1 << 7,
+ kKeyword_PdfObjectType = 1 << 8,
+ _kStream_PdfObjectType = 1 << 9, // attached to a Dictionary, do not use
+ kArray_PdfObjectType = 1 << 10,
+ kDictionary_PdfObjectType = 1 << 11,
+ kNull_PdfObjectType = 1 << 12,
+
+ kReference_PdfObjectType = 1 << 13,
+
+ kUndefined_PdfObjectType = 1 << 14, // per 1.4 spec, if the same key appear twice in the
+ // dictionary, the value is undefined.
+
+ _kObject_PdfObjectType = -1,
+ };
+
+ enum DataType {
+ kEmpty_Data,
+ kFont_Data,
+ kBitmap_Data,
+ };
+
+private:
+ // TODO(edisonn): assert reset operations while in rendering! The objects should be reset
+ // only when rendering is completed.
+ uint32_t fInRendering : 1;
+ uint32_t fUnused : 31;
+
+ struct Reference {
+ unsigned int fId;
+ unsigned int fGen;
+ };
+
+ ObjectType fObjectType;
+
+ union {
+ bool fBooleanValue;
+ int64_t fIntegerValue;
+ // TODO(edisonn): double, float, SkScalar?
+ double fRealValue;
+ NotOwnedString fStr;
+
+ SkTDArray<SkPdfNativeObject*>* fArray;
+ Reference fRef;
+ };
+ SkTDict<SkPdfNativeObject*>* fMap;
+
+ // TODO(edisonn): rename data with cache
+ void* fData;
+ DataType fDataType;
+
+#ifdef PDF_TRACK_OBJECT_USAGE
+ // Records if the object was used during rendering/proccessing. It can be used to track
+ // what features are only partially implemented, by looking at what objects have not been
+ // accessed.
+ mutable bool fUsed;
+#endif // PDF_TRACK_OBJECT_USAGE
+
+#ifdef PDF_TRACK_STREAM_OFFSETS
+public:
+ // TODO(edisonn): replace them with char* start, end - and a mechanism to register streams.
+ int fStreamId;
+ int fOffsetStart;
+ int fOffsetEnd;
+#endif // PDF_TRACK_STREAM_OFFSETS
+
+public:
+
+#ifdef PDF_TRACK_STREAM_OFFSETS
+ // TODO(edisonn): remove these ones.
+ int streamId() const { return fStreamId; }
+ int offsetStart() const { return fOffsetStart; }
+ int offsetEnd() const { return fOffsetEnd; }
+#endif // PDF_TRACK_STREAM_OFFSETS
+
+ SkPdfNativeObject() : fInRendering(0)
+ , fObjectType(kInvalid_PdfObjectType)
+ , fMap(NULL)
+ , fData(NULL)
+ , fDataType(kEmpty_Data)
+#ifdef PDF_TRACK_OBJECT_USAGE
+ , fUsed(false)
+#endif // PDF_TRACK_OBJECT_USAGE
+
+#ifdef PDF_TRACK_STREAM_OFFSETS
+ , fStreamId(-1)
+ , fOffsetStart(-1)
+ , fOffsetEnd(-1)
+#endif // PDF_TRACK_STREAM_OFFSETS
+ {}
+
+ // Used to verify if a form is used in rendering, to check for infinite loops.
+ bool inRendering() const { return fInRendering != 0; }
+ void startRendering() {fInRendering = 1;}
+ void doneRendering() {fInRendering = 0;}
+
+ // Each object can cache one entry associated with it.
+ // for example a SkPdfImage could cache an SkBitmap, of a SkPdfFont, could cache a SkTypeface.
+ inline bool hasData(DataType type) {
+ return type == fDataType;
+ }
+
+ // returns the cached value
+ inline void* data(DataType type) {
+ return type == fDataType ? fData : NULL;
+ }
+
+ // Stores something in the cache
+ inline void setData(void* data, DataType type) {
+ releaseData();
+ fDataType = type;
+ fData = data;
+ }
+
+ // destroys the cache
+ void releaseData();
+
+ // TODO(edisonn): add an assert that reset was called
+// ~SkPdfNativeObject() {
+// //reset(); must be called manually! Normally, will be called by allocator destructor.
+// }
+
+ // Resets a pdf object, deleting all resources directly referenced.
+ // It will not reset/delete indirect resources.
+ // (e.g. it deletes only the array holding pointers to objects, but does not del the objects)
+ void reset() {
+ SkPdfMarkObjectUnused();
+
+ switch (fObjectType) {
+ case kArray_PdfObjectType:
+ delete fArray;
+ break;
+
+ case kDictionary_PdfObjectType:
+ delete fMap;
+ if (isStreamOwned()) {
+ delete[] fStr.fBuffer;
+ fStr.fBuffer = NULL;
+ fStr.fBytes = 0;
+ }
+ break;
+
+ default:
+ break;
+ }
+ fObjectType = kInvalid_PdfObjectType;
+ releaseData();
+ }
+
+ // returns the object type (Null, Integer, String, Dictionary, ... )
+ // It does not specify what type of dictionary we have.
+ ObjectType type() {
+ SkPdfMarkObjectUsed();
+
+ return fObjectType;
+ }
+
+ // Gives quick access to the buffer's address of a string/keyword/name
+ const char* c_str() const {
+ SkPdfMarkObjectUsed();
+
+ switch (fObjectType) {
+ case kString_PdfObjectType:
+ case kHexString_PdfObjectType:
+ case kKeyword_PdfObjectType:
+ case kName_PdfObjectType:
+ return (const char*)fStr.fBuffer;
+
+ default:
+ // TODO(edisonn): report/warning/assert?
+ return NULL;
+ }
+ }
+
+ // Gives quick access to the length of a string/keyword/name
+ size_t lenstr() const {
+ SkPdfMarkObjectUsed();
+
+ switch (fObjectType) {
+ case kString_PdfObjectType:
+ case kHexString_PdfObjectType:
+ case kKeyword_PdfObjectType:
+ case kName_PdfObjectType:
+ return fStr.fBytes;
+
+ default:
+ // TODO(edisonn): report/warning/assert?
+ return 0;
+ }
+ }
+
+
+ // TODO(edisonn): NYI
+ SkPdfDate& dateValue() const {
+ static SkPdfDate nyi;
+ return nyi;
+ }
+
+ // TODO(edisonn): NYI
+ SkPdfFunction& functionValue() const {
+ static SkPdfFunction nyi;
+ return nyi;
+ }
+
+ // TODO(edisonn): NYI
+ SkPdfFileSpec& fileSpecValue() const {
+ static SkPdfFileSpec nyi;
+ return nyi;
+ }
+
+ // TODO(edisonn): NYI
+ SkPdfTree& treeValue() const {
+ static SkPdfTree nyi;
+ return nyi;
+ }
+
+ // Creates a Boolean object. Assumes and asserts that it was never initialized.
+ static void makeBoolean(bool value, SkPdfNativeObject* obj) {
+ SkASSERT(obj->fObjectType == kInvalid_PdfObjectType);
+
+ obj->fObjectType = kBoolean_PdfObjectType;
+ obj->fBooleanValue = value;
+ }
+
+ static SkPdfNativeObject makeBoolean(bool value) {
+ SkPdfNativeObject obj;
+
+ obj.fObjectType = kBoolean_PdfObjectType;
+ obj.fBooleanValue = value;
+ return obj;
+ }
+
+ // Creates an Integer object. Assumes and asserts that it was never initialized.
+ static void makeInteger(int64_t value, SkPdfNativeObject* obj) {
+ SkASSERT(obj->fObjectType == kInvalid_PdfObjectType);
+
+ obj->fObjectType = kInteger_PdfObjectType;
+ obj->fIntegerValue = value;
+ }
+
+ // Creates a Real object. Assumes and asserts that it was never initialized.
+ static void makeReal(double value, SkPdfNativeObject* obj) {
+ SkASSERT(obj->fObjectType == kInvalid_PdfObjectType);
+
+ obj->fObjectType = kReal_PdfObjectType;
+ obj->fRealValue = value;
+ }
+
+ // Creates a Null object. Assumes and asserts that it was never initialized.
+ static void makeNull(SkPdfNativeObject* obj) {
+ SkASSERT(obj->fObjectType == kInvalid_PdfObjectType);
+
+ obj->fObjectType = kNull_PdfObjectType;
+ }
+
+ static SkPdfNativeObject makeNull() {
+ SkPdfNativeObject obj;
+
+ obj.fObjectType = kNull_PdfObjectType;
+ return obj;
+ }
+
+ // TODO(edisonn): this might not woirk well in Chrome
+ static SkPdfNativeObject kNull;
+
+ // Creates a Numeric object from a string. Assumes and asserts that it was never initialized.
+ static void makeNumeric(const unsigned char* start, const unsigned char* end,
+ SkPdfNativeObject* obj) {
+ SkASSERT(obj->fObjectType == kInvalid_PdfObjectType);
+
+ // TODO(edisonn): NYI properly
+ // if has dot (impl), or exceeds max int, is real, otherwise is int
+ bool isInt = true;
+ for (const unsigned char* current = start; current < end; current++) {
+ if (*current == '.') {
+ isInt = false;
+ break;
+ }
+ // TODO(edisonn): report parse issue with numbers like "24asdasd123"
+ }
+ if (isInt) {
+ makeInteger(atol((const char*)start), obj);
+ } else {
+ makeReal(atof((const char*)start), obj);
+ }
+ }
+
+ // Creates a Reference object. Assumes and asserts that it was never initialized.
+ static void makeReference(unsigned int id, unsigned int gen, SkPdfNativeObject* obj) {
+ SkASSERT(obj->fObjectType == kInvalid_PdfObjectType);
+
+ obj->fObjectType = kReference_PdfObjectType;
+ obj->fRef.fId = id;
+ obj->fRef.fGen = gen;
+ }
+
+ // Creates a Reference object. Resets the object before use.
+ static void resetAndMakeReference(unsigned int id, unsigned int gen, SkPdfNativeObject* obj) {
+ obj->reset();
+ makeReference(id, gen, obj);
+ }
+
+ // Creates a String object. Assumes and asserts that it was never initialized.
+ static void makeString(const unsigned char* start, SkPdfNativeObject* obj) {
+ makeStringCore(start, strlen((const char*)start), obj, kString_PdfObjectType);
+ }
+
+ // Creates a String object. Assumes and asserts that it was never initialized.
+ static void makeString(const unsigned char* start, const unsigned char* end,
+ SkPdfNativeObject* obj) {
+ makeStringCore(start, end - start, obj, kString_PdfObjectType);
+ }
+
+ // Creates a String object. Assumes and asserts that it was never initialized.
+ static void makeString(const unsigned char* start, size_t bytes, SkPdfNativeObject* obj) {
+ makeStringCore(start, bytes, obj, kString_PdfObjectType);
+ }
+
+ // Creates a HexString object. Assumes and asserts that it was never initialized.
+ static void makeHexString(const unsigned char* start, SkPdfNativeObject* obj) {
+ makeStringCore(start, strlen((const char*)start), obj, kHexString_PdfObjectType);
+ }
+
+ // Creates a HexString object. Assumes and asserts that it was never initialized.
+ static void makeHexString(const unsigned char* start, const unsigned char* end,
+ SkPdfNativeObject* obj) {
+ makeStringCore(start, end - start, obj, kHexString_PdfObjectType);
+ }
+
+ // Creates a HexString object. Assumes and asserts that it was never initialized.
+ static void makeHexString(const unsigned char* start, size_t bytes, SkPdfNativeObject* obj) {
+ makeStringCore(start, bytes, obj, kHexString_PdfObjectType);
+ }
+
+ // Creates a Name object. Assumes and asserts that it was never initialized.
+ static void makeName(const unsigned char* start, SkPdfNativeObject* obj) {
+ makeStringCore(start, strlen((const char*)start), obj, kName_PdfObjectType);
+ }
+
+ // Creates a Name object. Assumes and asserts that it was never initialized.
+ static void makeName(const unsigned char* start, const unsigned char* end,
+ SkPdfNativeObject* obj) {
+ makeStringCore(start, end - start, obj, kName_PdfObjectType);
+ }
+
+ // Creates a Name object. Assumes and asserts that it was never initialized.
+ static void makeName(const unsigned char* start, size_t bytes, SkPdfNativeObject* obj) {
+ makeStringCore(start, bytes, obj, kName_PdfObjectType);
+ }
+
+ // Creates a Keyword object. Assumes and asserts that it was never initialized.
+ static void makeKeyword(const unsigned char* start, SkPdfNativeObject* obj) {
+ makeStringCore(start, strlen((const char*)start), obj, kKeyword_PdfObjectType);
+ }
+
+ // Creates a Keyword object. Assumes and asserts that it was never initialized.
+ static void makeKeyword(const unsigned char* start, const unsigned char* end,
+ SkPdfNativeObject* obj) {
+ makeStringCore(start, end - start, obj, kKeyword_PdfObjectType);
+ }
+
+ // Creates a Keyword object. Assumes and asserts that it was never initialized.
+ static void makeKeyword(const unsigned char* start, size_t bytes, SkPdfNativeObject* obj) {
+ makeStringCore(start, bytes, obj, kKeyword_PdfObjectType);
+ }
+
+ // Creates an empty Array object. Assumes and asserts that it was never initialized.
+ static void makeEmptyArray(SkPdfNativeObject* obj) {
+ SkASSERT(obj->fObjectType == kInvalid_PdfObjectType);
+
+ obj->fObjectType = kArray_PdfObjectType;
+ obj->fArray = new SkTDArray<SkPdfNativeObject*>();
+ }
+
+ // Appends an object into the array. Assumes <this> is an array.
+ bool appendInArray(SkPdfNativeObject* obj) {
+ SkASSERT(fObjectType == kArray_PdfObjectType);
+ if (fObjectType != kArray_PdfObjectType) {
+ // TODO(edisonn): report/warning/assert?
+ return false;
+ }
+
+ fArray->push(obj);
+ return true;
+ }
+
+ // Returns the size of an array.
+ size_t size() const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kArray_PdfObjectType);
+
+ return fArray->count();
+ }
+
+ // Returns one object of an array, by index.
+ SkPdfNativeObject* objAtAIndex(int i) {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kArray_PdfObjectType);
+
+ return (*fArray)[i];
+ }
+
+ // Returns one object of an array, by index.
+ const SkPdfNativeObject* objAtAIndex(int i) const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kArray_PdfObjectType);
+
+ return (*fArray)[i];
+ }
+
+ // Returns one object of an array, by index.
+ SkPdfNativeObject* operator[](int i) {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kArray_PdfObjectType);
+
+ return (*fArray)[i];
+ }
+
+ const SkPdfNativeObject* operator[](int i) const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kArray_PdfObjectType);
+
+ return (*fArray)[i];
+ }
+
+ // Removes the last object in the array.
+ SkPdfNativeObject* removeLastInArray() {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kArray_PdfObjectType);
+
+ SkPdfNativeObject* ret = NULL;
+ fArray->pop(&ret);
+
+ return ret;
+ }
+
+ // Creates an empty Dictionary object. Assumes and asserts that it was never initialized.
+ static void makeEmptyDictionary(SkPdfNativeObject* obj) {
+ SkASSERT(obj->fObjectType == kInvalid_PdfObjectType);
+
+ obj->fObjectType = kDictionary_PdfObjectType;
+ obj->fMap = new SkTDict<SkPdfNativeObject*>(1);
+ obj->fStr.fBuffer = NULL;
+ obj->fStr.fBytes = 0;
+ }
+
+ // TODO(edisonn): perf: get all the possible names from spec, and compute a hash function
+ // that would create no overlaps in the same dictionary
+ // or build a tree of chars that when followed goes to a unique id/index/hash
+ // TODO(edisonn): generate constants like kDictFoo, kNameDict_name
+ // which will be used in code
+ // add function SkPdfFastNameKey key(const char* key);
+ // TODO(edisonn): setting the same key twice, will make the value undefined!
+
+ // this[key] = value;
+ bool set(const SkPdfNativeObject* key, SkPdfNativeObject* value) {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kDictionary_PdfObjectType);
+ SkASSERT(key->fObjectType == kName_PdfObjectType);
+
+ if (key->fObjectType != kName_PdfObjectType || fObjectType != kDictionary_PdfObjectType) {
+ // TODO(edisonn): report/warn/assert?
+ return false;
+ }
+
+ return set(key->fStr.fBuffer, key->fStr.fBytes, value);
+ }
+
+ // this[key] = value;
+ bool set(const char* key, SkPdfNativeObject* value) {
+ SkPdfMarkObjectUsed();
+
+ return set((const unsigned char*)key, strlen(key), value);
+ }
+
+ // this[key] = value;
+ bool set(const unsigned char* key, size_t len, SkPdfNativeObject* value) {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kDictionary_PdfObjectType);
+
+ if (fObjectType != kDictionary_PdfObjectType) {
+ // TODO(edisonn): report/warn/assert.
+ return false;
+ }
+
+ return fMap->set((const char*)key, len, value);
+ }
+
+ // Returns an object from a Dictionary, identified by it's name.
+ SkPdfNativeObject* get(const SkPdfNativeObject* key) {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kDictionary_PdfObjectType);
+ SkASSERT(key->fObjectType == kName_PdfObjectType);
+
+ if (key->fObjectType != kName_PdfObjectType || fObjectType != kDictionary_PdfObjectType) {
+ // TODO(edisonn): report/warn/assert.
+ return NULL;
+ }
+
+ return get(key->fStr.fBuffer, key->fStr.fBytes);
+ }
+
+ // Returns an object from a Dictionary, identified by it's name.
+ SkPdfNativeObject* get(const char* key) {
+ SkPdfMarkObjectUsed();
+
+ return get((const unsigned char*)key, strlen(key));
+ }
+
+ // Returns an object from a Dictionary, identified by it's name.
+ SkPdfNativeObject* get(const unsigned char* key, size_t len) {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kDictionary_PdfObjectType);
+ SkASSERT(key);
+ if (fObjectType != kDictionary_PdfObjectType) {
+ // TODO(edisonn): report/warn/assert.
+ return NULL;
+ }
+ SkPdfNativeObject* ret = NULL;
+ fMap->find((const char*)key, len, &ret);
+
+#ifdef PDF_TRACE
+ SkString _key;
+ _key.append((const char*)key, len);
+ printf("\nget(/%s) = %s\n", _key.c_str(),
+ ret ? ret->toString(0, len + 9).c_str() : "_NOT_FOUND");
+#endif
+
+ return ret;
+ }
+
+ // Returns an object from a Dictionary, identified by it's name.
+ const SkPdfNativeObject* get(const SkPdfNativeObject* key) const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kDictionary_PdfObjectType);
+ SkASSERT(key->fObjectType == kName_PdfObjectType);
+
+ if (key->fObjectType != kName_PdfObjectType || fObjectType != kDictionary_PdfObjectType) {
+ // TODO(edisonn): report/warn/assert.
+ return NULL;
+ }
+
+ return get(key->fStr.fBuffer, key->fStr.fBytes);
+ }
+
+ // Returns an object from a Dictionary, identified by it's name.
+ const SkPdfNativeObject* get(const char* key) const {
+ SkPdfMarkObjectUsed();
+
+ return get((const unsigned char*)key, strlen(key));
+ }
+
+ // Returns an object from a Dictionary, identified by it's name.
+ const SkPdfNativeObject* get(const unsigned char* key, size_t len) const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kDictionary_PdfObjectType);
+ SkASSERT(key);
+ if (fObjectType != kDictionary_PdfObjectType) {
+ // TODO(edisonn): report/warn/assert.
+ return NULL;
+ }
+ SkPdfNativeObject* ret = NULL;
+ fMap->find((const char*)key, len, &ret);
+
+#ifdef PDF_TRACE
+ SkString _key;
+ _key.append((const char*)key, len);
+ printf("\nget(/%s) = %s\n", _key.c_str(),
+ ret ? ret->toString(0, len + 9).c_str() : "_NOT_FOUND");
+#endif
+
+ return ret;
+ }
+
+ // Returns an object from a Dictionary, identified by it's name.
+ const SkPdfNativeObject* get(const char* key, const char* abr) const {
+ SkPdfMarkObjectUsed();
+
+ const SkPdfNativeObject* ret = get(key);
+ // TODO(edisonn): remove || *abr == '\0' and pass NULL in the _autogen files instead.
+ if (ret != NULL || abr == NULL || *abr == '\0') {
+ return ret;
+ }
+ return get(abr);
+ }
+
+ // Returns an object from a Dictionary, identified by it's name.
+ SkPdfNativeObject* get(const char* key, const char* abr) {
+ SkPdfMarkObjectUsed();
+
+ SkPdfNativeObject* ret = get(key);
+ // TODO(edisonn): remove || *abr == '\0' and pass NULL in the _autogen files instead.
+ if (ret != NULL || abr == NULL || *abr == '\0') {
+ return ret;
+ }
+ return get(abr);
+ }
+
+ // Casts the object to a Dictionary. Asserts if the object is not a Dictionary.
+ SkPdfDictionary* asDictionary() {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(isDictionary());
+ if (!isDictionary()) {
+ return NULL;
+ }
+ return (SkPdfDictionary*) this;
+ }
+
+ // Casts the object to a Dictionary. Asserts if the object is not a Dictionary.
+ const SkPdfDictionary* asDictionary() const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(isDictionary());
+ if (!isDictionary()) {
+ return NULL;
+ }
+ return (SkPdfDictionary*) this;
+ }
+
+
+ // Returns true if the object is a Reference.
+ bool isReference() const {
+ SkPdfMarkObjectUsed();
+
+ return fObjectType == kReference_PdfObjectType;
+ }
+
+ // Returns true if the object is a Boolean.
+ bool isBoolean() const {
+ SkPdfMarkObjectUsed();
+
+ return fObjectType == kBoolean_PdfObjectType;
+ }
+
+ // Returns true if the object is an Integer.
+ bool isInteger() const {
+ SkPdfMarkObjectUsed();
+
+ return fObjectType == kInteger_PdfObjectType;
+ }
+
+private:
+ // Returns true if the object is a Real number.
+ bool isReal() const {
+ SkPdfMarkObjectUsed();
+
+ return fObjectType == kReal_PdfObjectType;
+ }
+
+public:
+ // Returns true if the object is a Number (either Integer or Real).
+ bool isNumber() const {
+ SkPdfMarkObjectUsed();
+
+ return fObjectType == kInteger_PdfObjectType || fObjectType == kReal_PdfObjectType;
+ }
+
+ // Returns true if the object is a R keyword (used to identify references, e.g. "10 3 R".
+ bool isKeywordReference() const {
+ SkPdfMarkObjectUsed();
+
+ return fObjectType == kKeyword_PdfObjectType && fStr.fBytes == 1 && fStr.fBuffer[0] == 'R';
+ }
+
+ // Returns true if the object is a Keyword.
+ bool isKeyword() const {
+ SkPdfMarkObjectUsed();
+
+ return fObjectType == kKeyword_PdfObjectType;
+ }
+
+ // Returns true if the object is a given Keyword.
+ bool isKeyword(const char* keyword) const {
+ SkPdfMarkObjectUsed();
+
+ if (!isKeyword()) {
+ return false;
+ }
+
+ if (strlen(keyword) != fStr.fBytes) {
+ return false;
+ }
+
+ if (strncmp(keyword, (const char*)fStr.fBuffer, fStr.fBytes) != 0) {
+ return false;
+ }
+
+ return true;
+ }
+
+ // Returns true if the object is a Name.
+ bool isName() const {
+ SkPdfMarkObjectUsed();
+
+ return fObjectType == kName_PdfObjectType;
+ }
+
+ // Returns true if the object is a given Name.
+ bool isName(const char* name) const {
+ SkPdfMarkObjectUsed();
+
+ return fObjectType == kName_PdfObjectType &&
+ fStr.fBytes == strlen(name) &&
+ strncmp((const char*)fStr.fBuffer, name, fStr.fBytes) == 0;
+ }
+
+ // Returns true if the object is an Array.
+ bool isArray() const {
+ SkPdfMarkObjectUsed();
+
+ return fObjectType == kArray_PdfObjectType;
+ }
+
+ // Returns true if the object is a Date.
+ // TODO(edisonn): NYI
+ bool isDate() const {
+ SkPdfMarkObjectUsed();
+
+ return fObjectType == kString_PdfObjectType || fObjectType == kHexString_PdfObjectType;
+ }
+
+ // Returns true if the object is a Dictionary.
+ bool isDictionary() const {
+ SkPdfMarkObjectUsed();
+
+ return fObjectType == kDictionary_PdfObjectType;
+ }
+
+ // Returns true if the object is a Date.
+ // TODO(edisonn): NYI
+ bool isFunction() const {
+ SkPdfMarkObjectUsed();
+
+ return false; // NYI
+ }
+
+ // Returns true if the object is a Rectangle.
+ bool isRectangle() const {
+ SkPdfMarkObjectUsed();
+
+ // TODO(edisonn): add also that each of these 4 objects are numbers.
+ return fObjectType == kArray_PdfObjectType && fArray->count() == 4;
+ }
+
+ // TODO(edisonn): Design: decide if we should use hasStream or isStream
+ // Returns true if the object has a stream associated with it.
+ bool hasStream() const {
+ SkPdfMarkObjectUsed();
+
+ return isDictionary() && fStr.fBuffer != NULL;
+ }
+
+ // Returns the stream associated with the dictionary. As of now, it casts this to Stream.
+ const SkPdfStream* getStream() const {
+ SkPdfMarkObjectUsed();
+
+ return hasStream() ? (const SkPdfStream*)this : NULL;
+ }
+
+ // Returns the stream associated with the dictionary. As of now, it casts this to Stream.
+ SkPdfStream* getStream() {
+ SkPdfMarkObjectUsed();
+
+ return hasStream() ? (SkPdfStream*)this : NULL;
+ }
+
+ // Returns true if the object is a String or HexString.
+ bool isAnyString() const {
+ SkPdfMarkObjectUsed();
+
+ return fObjectType == kString_PdfObjectType || fObjectType == kHexString_PdfObjectType;
+ }
+
+ // Returns true if the object is a HexString.
+ bool isHexString() const {
+ SkPdfMarkObjectUsed();
+
+ return fObjectType == kHexString_PdfObjectType;
+ }
+
+ // Returns true if the object is a Matrix.
+ bool isMatrix() const {
+ SkPdfMarkObjectUsed();
+
+ // TODO(edisonn): add also that each of these 6 objects are numbers.
+ return fObjectType == kArray_PdfObjectType && fArray->count() == 6;
+ }
+
+ // Returns the int value stored in the object. Assert if the object is not an Integer.
+ inline int64_t intValue() const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kInteger_PdfObjectType);
+
+ if (fObjectType != kInteger_PdfObjectType) {
+ // TODO(edisonn): report/warn/assert.
+ return 0;
+ }
+ return fIntegerValue;
+ }
+
+private:
+ // Returns the real value stored in the object. Assert if the object is not a Real.
+ inline double realValue() const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kReal_PdfObjectType);
+
+ if (fObjectType != kReal_PdfObjectType) {
+ // TODO(edisonn): report/warn/assert.
+ return 0;
+ }
+ return fRealValue;
+ }
+
+public:
+ // Returns the numeric value stored in the object. Assert if the object is not a Real
+ // or an Integer.
+ inline double numberValue() const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(isNumber());
+
+ if (!isNumber()) {
+ // TODO(edisonn): report/warn/assert.
+ return 0;
+ }
+ return fObjectType == kReal_PdfObjectType ? fRealValue : fIntegerValue;
+ }
+
+ // Returns the numeric value stored in the object as a scalar. Assert if the object is not
+ // a Realor an Integer.
+ inline SkScalar scalarValue() const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(isNumber());
+
+ if (!isNumber()) {
+ // TODO(edisonn): report/warn/assert.
+ return SkIntToScalar(0);
+ }
+ return fObjectType == kReal_PdfObjectType ? SkDoubleToScalar(fRealValue) :
+ SkIntToScalar(fIntegerValue);
+ }
+
+ // Returns the id of the referenced object. Assert if the object is not a Reference.
+ int referenceId() const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kReference_PdfObjectType);
+ return fRef.fId;
+ }
+
+ // Returns the generation of the referenced object. Assert if the object is not a Reference.
+ int referenceGeneration() const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kReference_PdfObjectType);
+ return fRef.fGen;
+ }
+
+ // Returns the buffer of a Name object. Assert if the object is not a Name.
+ inline const char* nameValue() const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kName_PdfObjectType);
+
+ if (fObjectType != kName_PdfObjectType) {
+ // TODO(edisonn): report/warn/assert.
+ return "";
+ }
+ return (const char*)fStr.fBuffer;
+ }
+
+ // Returns the buffer of a (Hex)String object. Assert if the object is not a (Hex)String.
+ inline const char* stringValue() const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kString_PdfObjectType || fObjectType == kHexString_PdfObjectType);
+
+ if (fObjectType != kString_PdfObjectType && fObjectType != kHexString_PdfObjectType) {
+ // TODO(edisonn): report/warn/assert.
+ return "";
+ }
+ return (const char*)fStr.fBuffer;
+ }
+
+ // Returns the storage of any type that can hold a form of string.
+ inline NotOwnedString strRef() {
+ SkPdfMarkObjectUsed();
+
+ switch (fObjectType) {
+ case kString_PdfObjectType:
+ case kHexString_PdfObjectType:
+ case kKeyword_PdfObjectType:
+ case kName_PdfObjectType:
+ return fStr;
+
+ default:
+ // TODO(edisonn): report/warning
+ return NotOwnedString();
+ }
+ }
+
+ // TODO(edisonn): nameValue2 and stringValue2 are used to make code generation easy,
+ // but it is not a performat way to do it, since it will create an extra copy
+ // remove these functions and make code generated faster
+ inline SkString nameValue2() const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kName_PdfObjectType);
+
+ if (fObjectType != kName_PdfObjectType) {
+ // TODO(edisonn): log err
+ return SkString();
+ }
+ return SkString((const char*)fStr.fBuffer, fStr.fBytes);
+ }
+
+ // Returns an SkString with the value of the (Hex)String object.
+ inline SkString stringValue2() const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kString_PdfObjectType || fObjectType == kHexString_PdfObjectType);
+
+ if (fObjectType != kString_PdfObjectType && fObjectType != kHexString_PdfObjectType) {
+ // TODO(edisonn): report/warn/assert.
+ return SkString();
+ }
+ return SkString((const char*)fStr.fBuffer, fStr.fBytes);
+ }
+
+ // Returns the boolean of the Bool object. Assert if the object is not a Bool.
+ inline bool boolValue() const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(fObjectType == kBoolean_PdfObjectType);
+
+ if (fObjectType != kBoolean_PdfObjectType) {
+ // TODO(edisonn): report/warn/assert.
+ return false;
+ }
+ return fBooleanValue;
+ }
+
+ // Returns the rectangle of the Rectangle object. Assert if the object is not a Rectangle.
+ SkRect rectangleValue() const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(isRectangle());
+ if (!isRectangle()) {
+ return SkRect::MakeEmpty();
+ }
+
+ double array[4];
+ for (int i = 0; i < 4; i++) {
+ // TODO(edisonn): version where we could resolve references?
+ const SkPdfNativeObject* elem = objAtAIndex(i);
+ if (elem == NULL || !elem->isNumber()) {
+ // TODO(edisonn): report/warn/assert.
+ return SkRect::MakeEmpty();
+ }
+ array[i] = elem->numberValue();
+ }
+
+ return SkRect::MakeLTRB(SkDoubleToScalar(array[0]),
+ SkDoubleToScalar(array[1]),
+ SkDoubleToScalar(array[2]),
+ SkDoubleToScalar(array[3]));
+ }
+
+ // Returns the matrix of the Matrix object. Assert if the object is not a Matrix.
+ SkMatrix matrixValue() const {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(isMatrix());
+ if (!isMatrix()) {
+ return SkMatrix::I();
+ }
+
+ double array[6];
+ for (int i = 0; i < 6; i++) {
+ // TODO(edisonn): version where we could resolve references?
+ const SkPdfNativeObject* elem = objAtAIndex(i);
+ if (elem == NULL || !elem->isNumber()) {
+ // TODO(edisonn): report/warn/assert.
+ return SkMatrix::I();
+ }
+ array[i] = elem->numberValue();
+ }
+
+ return SkMatrixFromPdfMatrix(array);
+ }
+
+ // Runs all the filters of this stream, except the last one, if it is a DCT.
+ // Returns false on failure.
+ bool filterStream();
+
+ // Runs all the filters of this stream, except the last one, if it is a DCT, a gives back
+ // the buffer and the length. The object continues to own the buffer.
+ // Returns false on failure.
+ bool GetFilteredStreamRef(unsigned char const** buffer, size_t* len) {
+ SkPdfMarkObjectUsed();
+
+ // TODO(edisonn): add params that could let the last filter in place
+ // if it is jpeg or png to fast load images.
+ if (!hasStream()) {
+ return false;
+ }
+
+ filterStream();
+
+ if (buffer) {
+ *buffer = fStr.fBuffer;
+ }
+
+ if (len) {
+ *len = fStr.fBytes >> 2; // last 2 bits - TODO(edisonn): clean up.
+ }
+
+ return true;
+ }
+
+ // Returns true if the stream is already filtered.
+ bool isStreamFiltered() const {
+ SkPdfMarkObjectUsed();
+
+ return hasStream() && ((fStr.fBytes & 1) == kFilteredStreamBit);
+ }
+
+ // Returns true if this object own the buffer, or false if an Allocator own it.
+ bool isStreamOwned() const {
+ SkPdfMarkObjectUsed();
+
+ return hasStream() && ((fStr.fBytes & 2) == kOwnedStreamBit);
+ }
+
+ // Gives back the original buffer and the length. The object continues to own the buffer.
+ // Returns false if the stream is already filtered.
+ bool GetUnfilteredStreamRef(unsigned char const** buffer, size_t* len) const {
+ SkPdfMarkObjectUsed();
+
+ if (isStreamFiltered()) {
+ return false;
+ }
+
+ if (!hasStream()) {
+ return false;
+ }
+
+ if (buffer) {
+ *buffer = fStr.fBuffer;
+ }
+
+ if (len) {
+ *len = fStr.fBytes >> 2; // remove last 2 bits - TODO(edisonn): clean up.
+ }
+
+ return true;
+ }
+
+ // Add a stream to this Dictionarry. Asserts we do not have yet a stream.
+ bool addStream(const unsigned char* buffer, size_t len) {
+ SkPdfMarkObjectUsed();
+
+ SkASSERT(!hasStream());
+ SkASSERT(isDictionary());
+
+ if (!isDictionary() || hasStream()) {
+ return false;
+ }
+
+ fStr.fBuffer = buffer;
+ fStr.fBytes = (len << 2) + kUnfilteredStreamBit;
+
+ return true;
+ }
+
+ static void appendSpaces(SkString* str, int level) {
+ for (int i = 0 ; i < level; i++) {
+ str->append(" ");
+ }
+ }
+
+ static void append(SkString* str, const char* data, size_t len, const char* prefix = "\\x") {
+ for (unsigned int i = 0 ; i < len; i++) {
+ if (data[i] == kNUL_PdfWhiteSpace) {
+ str->append(prefix);
+ str->append("00");
+ } else if (data[i] == kHT_PdfWhiteSpace) {
+ str->append(prefix);
+ str->append("09");
+ } else if (data[i] == kLF_PdfWhiteSpace) {
+ str->append(prefix);
+ str->append("0A");
+ } else if (data[i] == kFF_PdfWhiteSpace) {
+ str->append(prefix);
+ str->append("0C");
+ } else if (data[i] == kCR_PdfWhiteSpace) {
+ str->append(prefix);
+ str->append("0D");
+ } else {
+ str->append(data + i, 1);
+ }
+ }
+ }
+
+ // Returns the string representation of the object value.
+ SkString toString(int firstRowLevel = 0, int level = 0) {
+ SkString str;
+ appendSpaces(&str, firstRowLevel);
+ switch (fObjectType) {
+ case kInvalid_PdfObjectType:
+ str.append("__Invalid");
+ break;
+
+ case kBoolean_PdfObjectType:
+ str.appendf("%s", fBooleanValue ? "true" : "false");
+ break;
+
+ case kInteger_PdfObjectType:
+ str.appendf("%i", (int)fIntegerValue);
+ break;
+
+ case kReal_PdfObjectType:
+ str.appendf("%f", fRealValue);
+ break;
+
+ case kString_PdfObjectType:
+ str.append("\"");
+ append(&str, (const char*)fStr.fBuffer, fStr.fBytes);
+ str.append("\"");
+ break;
+
+ case kHexString_PdfObjectType:
+ str.append("<");
+ for (unsigned int i = 0 ; i < fStr.fBytes; i++) {
+ str.appendf("%02x", (unsigned int)fStr.fBuffer[i]);
+ }
+ str.append(">");
+ break;
+
+ case kName_PdfObjectType:
+ str.append("/");
+ append(&str, (const char*)fStr.fBuffer, fStr.fBytes, "#");
+ break;
+
+ case kKeyword_PdfObjectType:
+ append(&str, (const char*)fStr.fBuffer, fStr.fBytes);
+ break;
+
+ case kArray_PdfObjectType:
+ str.append("[\n");
+ for (unsigned int i = 0; i < size(); i++) {
+ str.append(objAtAIndex(i)->toString(level + 1, level + 1));
+ if (i < size() - 1) {
+ str.append(",");
+ }
+ str.append("\n");
+ }
+ appendSpaces(&str, level);
+ str.append("]");
+ break;
+
+ case kDictionary_PdfObjectType: {
+ SkTDict<SkPdfNativeObject*>::Iter iter(*fMap);
+ SkPdfNativeObject* obj = NULL;
+ const char* key = NULL;
+ str.append("<<\n");
+ while ((key = iter.next(&obj)) != NULL) {
+ appendSpaces(&str, level + 2);
+ str.appendf("/%s %s\n", key,
+ obj->toString(0, level + (int) strlen(key) + 4).c_str());
+ }
+ appendSpaces(&str, level);
+ str.append(">>");
+ if (hasStream()) {
+ const unsigned char* stream = NULL;
+ size_t length = 0;
+ if (GetFilteredStreamRef(&stream, &length)) {
+ str.append("stream\n");
+ append(&str, (const char*)stream, length > 256 ? 256 : length);
+ str.append("\nendstream");
+ } else {
+ str.append("stream STREAM_ERROR endstream");
+ }
+ }
+ }
+ break;
+
+ case kNull_PdfObjectType:
+ str = "NULL";
+ break;
+
+ case kReference_PdfObjectType:
+ str.appendf("%i %i R", fRef.fId, fRef.fGen);
+ break;
+
+ case kUndefined_PdfObjectType:
+ str = "Undefined";
+ break;
+
+ default:
+ str = "Error";
+ break;
+ }
+
+ return str;
+ }
+
+private:
+ static void makeStringCore(const unsigned char* start, SkPdfNativeObject* obj,
+ ObjectType type) {
+ makeStringCore(start, strlen((const char*)start), obj, type);
+ }
+
+ static void makeStringCore(const unsigned char* start, const unsigned char* end,
+ SkPdfNativeObject* obj, ObjectType type) {
+ makeStringCore(start, end - start, obj, type);
+ }
+
+ static void makeStringCore(const unsigned char* start, size_t bytes, SkPdfNativeObject* obj,
+ ObjectType type) {
+ SkASSERT(obj->fObjectType == kInvalid_PdfObjectType);
+
+ obj->fObjectType = type;
+ obj->fStr.fBuffer = start;
+ obj->fStr.fBytes = bytes;
+ }
+
+ bool applyFilter(const char* name);
+ bool applyFlateDecodeFilter();
+ bool applyDCTDecodeFilter();
+};
+
+// These classes are provided for convenience. You still have to make sure an SkPdfInteger
+// is indeed an Integer.
+class SkPdfStream : public SkPdfNativeObject {};
+class SkPdfArray : public SkPdfNativeObject {};
+class SkPdfString : public SkPdfNativeObject {};
+class SkPdfHexString : public SkPdfNativeObject {};
+class SkPdfInteger : public SkPdfNativeObject {};
+class SkPdfReal : public SkPdfNativeObject {};
+class SkPdfNumber : public SkPdfNativeObject {};
+
+class SkPdfName : public SkPdfNativeObject {
+ SkPdfName() : SkPdfNativeObject() {
+ SkPdfNativeObject::makeName((const unsigned char*)"", this);
+ }
+public:
+ SkPdfName(char* name) : SkPdfNativeObject() {
+ this->makeName((const unsigned char*)name, this);
+ }
+};
+
+#endif // SkPdfNativeObject
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp
new file mode 100644
index 00000000000..5dfe14e5fcb
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp
@@ -0,0 +1,1125 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfConfig.h"
+#include "SkPdfDiffEncoder.h"
+#include "SkPdfNativeObject.h"
+#include "SkPdfNativeTokenizer.h"
+#include "SkPdfUtils.h"
+
+// TODO(edisonn): mac builder does not find the header ... but from headers is ok
+//#include "SkPdfStreamCommonDictionary_autogen.h"
+//#include "SkPdfImageDictionary_autogen.h"
+#include "SkPdfHeaders_autogen.h"
+
+
+// TODO(edisonn): Perf, Make this function run faster.
+// There could be 0s between start and end.
+// needle will not contain 0s.
+static char* strrstrk(char* hayStart, char* hayEnd, const char* needle) {
+ int needleLen = strlen(needle);
+ if ((isPdfWhiteSpaceOrPdfDelimiter(*(hayStart+needleLen)) || (hayStart+needleLen == hayEnd)) &&
+ strncmp(hayStart, needle, needleLen) == 0) {
+ return hayStart;
+ }
+
+ hayStart++;
+
+ while (hayStart < hayEnd) {
+ if (isPdfWhiteSpaceOrPdfDelimiter(*(hayStart-1)) &&
+ (isPdfWhiteSpaceOrPdfDelimiter(*(hayStart+needleLen)) ||
+ (hayStart+needleLen == hayEnd)) &&
+ strncmp(hayStart, needle, needleLen) == 0) {
+ return hayStart;
+ }
+ hayStart++;
+ }
+ return NULL;
+}
+
+const unsigned char* skipPdfWhiteSpaces(const unsigned char* start, const unsigned char* end) {
+ while (start < end && (isPdfWhiteSpace(*start) || *start == kComment_PdfDelimiter)) {
+ TRACE_COMMENT(*start);
+ if (*start == kComment_PdfDelimiter) {
+ // skip the comment until end of line
+ while (start < end && !isPdfEOL(*start)) {
+ start++;
+ TRACE_COMMENT(*start);
+ }
+ } else {
+ start++;
+ }
+ }
+ return start;
+}
+
+const unsigned char* endOfPdfToken(const unsigned char* start, const unsigned char* end) {
+ SkASSERT(!isPdfWhiteSpace(*start));
+
+ if (start < end && isPdfDelimiter(*start)) {
+ TRACE_TK(*start);
+ start++;
+ return start;
+ }
+
+ while (start < end && !isPdfWhiteSpaceOrPdfDelimiter(*start)) {
+ TRACE_TK(*start);
+ start++;
+ }
+ return start;
+}
+
+// The parsing should end with a ].
+static const unsigned char* readArray(const unsigned char* start, const unsigned char* end,
+ SkPdfNativeObject* array,
+ SkPdfAllocator* allocator, SkPdfNativeDoc* doc) {
+ SkPdfNativeObject::makeEmptyArray(array);
+ // PUT_TRACK_STREAM(array, start, start)
+
+ if (allocator == NULL) {
+ // TODO(edisonn): report/warning error/assert
+ return end;
+ }
+
+ while (start < end) {
+ // skip white spaces
+ start = skipPdfWhiteSpaces(start, end);
+
+ const unsigned char* endOfToken = endOfPdfToken(start, end);
+
+ if (endOfToken == start) {
+ // TODO(edisonn): report error in pdf file (end of stream with ] for end of aray
+ return start;
+ }
+
+ if (endOfToken == start + 1 && *start == kClosedSquareBracket_PdfDelimiter) {
+ return endOfToken;
+ }
+
+ SkPdfNativeObject* newObj = allocator->allocObject();
+ start = nextObject(start, end, newObj, allocator, doc);
+ // TODO(edisonn): perf/memory: put the variables on the stack, and flush them on the array
+ // only when we are sure they are not references!
+ if (newObj->isKeywordReference() && array->size() >= 2 &&
+ array->objAtAIndex(array->size() - 1)->isInteger() &&
+ array->objAtAIndex(array->size() - 2)->isInteger()) {
+ SkPdfNativeObject* gen = array->removeLastInArray();
+ SkPdfNativeObject* id = array->removeLastInArray();
+
+ SkPdfNativeObject::resetAndMakeReference((unsigned int)id->intValue(),
+ (unsigned int)gen->intValue(), newObj);
+ // newObj PUT_TRACK_PARAMETERS_OBJ2(id, newObj) - store end, as now
+ }
+ array->appendInArray(newObj);
+ }
+ // TODO(edisonn): report not reached, we should never get here
+ // TODO(edisonn): there might be a bug here, enable an assert and run it on files
+ // or it might be that the files were actually corrupted
+ return start;
+}
+
+static const unsigned char* readString(const unsigned char* start, const unsigned char* end,
+ unsigned char* out) {
+ const unsigned char* in = start;
+ bool hasOut = (out != NULL);
+
+ int openRoundBrackets = 1;
+ while (in < end) {
+ openRoundBrackets += ((*in) == kOpenedRoundBracket_PdfDelimiter);
+ openRoundBrackets -= ((*in) == kClosedRoundBracket_PdfDelimiter);
+ if (openRoundBrackets == 0) {
+ in++; // consumed )
+ break;
+ }
+
+ if (*in == kEscape_PdfSpecial) {
+ if (in + 1 < end) {
+ switch (in[1]) {
+ case 'n':
+ if (hasOut) { *out = kLF_PdfWhiteSpace; }
+ out++;
+ in += 2;
+ break;
+
+ case 'r':
+ if (hasOut) { *out = kCR_PdfWhiteSpace; }
+ out++;
+ in += 2;
+ break;
+
+ case 't':
+ if (hasOut) { *out = kHT_PdfWhiteSpace; }
+ out++;
+ in += 2;
+ break;
+
+ case 'b':
+ // TODO(edisonn): any special meaning to backspace?
+ if (hasOut) { *out = kBackspace_PdfSpecial; }
+ out++;
+ in += 2;
+ break;
+
+ case 'f':
+ if (hasOut) { *out = kFF_PdfWhiteSpace; }
+ out++;
+ in += 2;
+ break;
+
+ case kOpenedRoundBracket_PdfDelimiter:
+ if (hasOut) { *out = kOpenedRoundBracket_PdfDelimiter; }
+ out++;
+ in += 2;
+ break;
+
+ case kClosedRoundBracket_PdfDelimiter:
+ if (hasOut) { *out = kClosedRoundBracket_PdfDelimiter; }
+ out++;
+ in += 2;
+ break;
+
+ case kEscape_PdfSpecial:
+ if (hasOut) { *out = kEscape_PdfSpecial; }
+ out++;
+ in += 2;
+ break;
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7': {
+ //read octals
+ in++; // consume backslash
+
+ int code = 0;
+ int i = 0;
+ while (in < end && *in >= '0' && *in < '8') {
+ code = (code << 3) + ((*in) - '0'); // code * 8 + d
+ i++;
+ in++;
+ if (i == 3) {
+ if (hasOut) { *out = code & 0xff; }
+ out++;
+ i = 0;
+ }
+ }
+ if (i > 0) {
+ if (hasOut) { *out = code & 0xff; }
+ out++;
+ }
+ }
+ break;
+
+ default:
+ // Per spec, backslash is ignored if escaped ch is unknown
+ in++;
+ break;
+ }
+ } else {
+ in++;
+ }
+ } else {
+ if (hasOut) { *out = *in; }
+ in++;
+ out++;
+ }
+ }
+
+ if (hasOut) {
+ return in; // consumed already ) at the end of the string
+ } else {
+ // return where the string would end if we reuse the string
+ return start + (out - (const unsigned char*)NULL);
+ }
+}
+
+static int readStringLength(const unsigned char* start, const unsigned char* end) {
+ return readString(start, end, NULL) - start;
+}
+
+static const unsigned char* readString(const unsigned char* start, const unsigned char* end,
+ SkPdfNativeObject* str, SkPdfAllocator* allocator) {
+ if (!allocator) {
+ // TODO(edisonn): report error/warn/assert
+ return end;
+ }
+
+ int outLength = readStringLength(start, end);
+ unsigned char* out = (unsigned char*)allocator->alloc(outLength);
+ const unsigned char* now = readString(start, end, out);
+ SkPdfNativeObject::makeString(out, out + outLength, str);
+ // PUT_TRACK_STREAM(str, start, now)
+ TRACE_STRING(out, out + outLength);
+ return now; // consumed already ) at the end of the string
+}
+
+static const unsigned char* readHexString(const unsigned char* start, const unsigned char* end,
+ unsigned char* out) {
+ bool hasOut = (out != NULL);
+ const unsigned char* in = start;
+
+ unsigned char code = 0;
+
+ while (in < end) {
+ while (in < end && isPdfWhiteSpace(*in)) {
+ in++;
+ }
+
+ if (*in == kClosedInequityBracket_PdfDelimiter) {
+ in++; // consume >
+ // normal exit
+ break;
+ }
+
+ if (in >= end) {
+ // end too soon
+ break;
+ }
+
+ switch (*in) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ code = (*in - '0') << 4;
+ break;
+
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ code = (*in - 'a' + 10) << 4;
+ break;
+
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ code = (*in - 'A' + 10) << 4;
+ break;
+
+ // TODO(edisonn): spec does not say how to handle this error
+ default:
+ break;
+ }
+
+ in++; // advance
+
+ while (in < end && isPdfWhiteSpace(*in)) {
+ in++;
+ }
+
+ // TODO(edisonn): report error
+ if (in >= end) {
+ if (hasOut) { *out = code; }
+ out++;
+ break;
+ }
+
+ if (*in == kClosedInequityBracket_PdfDelimiter) {
+ if (hasOut) { *out = code; }
+ out++;
+ in++;
+ break;
+ }
+
+ switch (*in) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ code += (*in - '0');
+ break;
+
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ code += (*in - 'a' + 10);
+ break;
+
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ code += (*in - 'A' + 10);
+ break;
+
+ // TODO(edisonn): spec does not say how to handle this error
+ default:
+ break;
+ }
+
+ if (hasOut) { *out = code; }
+ out++;
+ in++;
+ }
+
+ if (hasOut) {
+ return in; // consumed already ) at the end of the string
+ } else {
+ // return where the string would end if we reuse the string
+ return start + (out - (const unsigned char*)NULL);
+ }
+}
+
+static int readHexStringLength(const unsigned char* start, const unsigned char* end) {
+ return readHexString(start, end, NULL) - start;
+}
+
+static const unsigned char* readHexString(const unsigned char* start, const unsigned char* end, SkPdfNativeObject* str, SkPdfAllocator* allocator) {
+ if (!allocator) {
+ // TODO(edisonn): report error/warn/assert
+ return end;
+ }
+ int outLength = readHexStringLength(start, end);
+ unsigned char* out = (unsigned char*)allocator->alloc(outLength);
+ const unsigned char* now = readHexString(start, end, out);
+ SkPdfNativeObject::makeHexString(out, out + outLength, str);
+ // str PUT_TRACK_STREAM(start, now)
+ TRACE_HEXSTRING(out, out + outLength);
+ return now; // consumed already > at the end of the string
+}
+
+// TODO(edisonn): add version parameter, before PDF 1.2 name could not have special characters.
+static const unsigned char* readName(const unsigned char* start, const unsigned char* end,
+ unsigned char* out) {
+ bool hasOut = (out != NULL);
+ const unsigned char* in = start;
+
+ unsigned char code = 0;
+
+ while (in < end) {
+ if (isPdfWhiteSpaceOrPdfDelimiter(*in)) {
+ break;
+ }
+
+ if (*in == '#' && in + 2 < end) {
+ in++;
+ switch (*in) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ code = (*in - '0') << 4;
+ break;
+
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ code = (*in - 'a' + 10) << 4;
+ break;
+
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ code = (*in - 'A' + 10) << 4;
+ break;
+
+ // TODO(edisonn): spec does not say how to handle this error
+ default:
+ break;
+ }
+
+ in++; // advance
+
+ switch (*in) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ code += (*in - '0');
+ break;
+
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ code += (*in - 'a' + 10);
+ break;
+
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ code += (*in - 'A' + 10);
+ break;
+
+ // TODO(edisonn): spec does not say how to handle this error
+ default:
+ break;
+ }
+
+ if (hasOut) { *out = code; }
+ out++;
+ in++;
+ } else {
+ if (hasOut) { *out = *in; }
+ out++;
+ in++;
+ }
+ }
+
+ if (hasOut) {
+ return in; // consumed already ) at the end of the string
+ } else {
+ // return where the string would end if we reuse the string
+ return start + (out - (const unsigned char*)NULL);
+ }
+}
+
+static int readNameLength(const unsigned char* start, const unsigned char* end) {
+ return readName(start, end, NULL) - start;
+}
+
+static const unsigned char* readName(const unsigned char* start, const unsigned char* end,
+ SkPdfNativeObject* name, SkPdfAllocator* allocator) {
+ if (!allocator) {
+ // TODO(edisonn): report error/warn/assert
+ return end;
+ }
+ int outLength = readNameLength(start, end);
+ unsigned char* out = (unsigned char*)allocator->alloc(outLength);
+ const unsigned char* now = readName(start, end, out);
+ SkPdfNativeObject::makeName(out, out + outLength, name);
+ //PUT_TRACK_STREAM(start, now)
+ TRACE_NAME(out, out + outLength);
+ return now;
+}
+
+// TODO(edisonn): pdf spec let Length to be an indirect object define after the stream
+// that makes for an interesting scenario, where the stream itself contains endstream, together
+// with a reference object with the length, but the real length object would be somewhere else
+// it could confuse the parser
+/*example:
+
+7 0 obj
+<< /length 8 0 R>>
+stream
+...............
+endstream
+8 0 obj #we are in stream actually, not a real object
+<< 10 >> #we are in stream actually, not a real object
+endobj
+endstream
+8 0 obj #real obj
+<< 100 >> #real obj
+endobj
+and it could get worse, with multiple object like this
+*/
+
+// right now implement the silly algorithm that assumes endstream is finishing the stream
+
+static const unsigned char* readStream(const unsigned char* start, const unsigned char* end,
+ SkPdfNativeObject* dict, SkPdfNativeDoc* doc) {
+ start = skipPdfWhiteSpaces(start, end);
+ if (!( start[0] == 's' &&
+ start[1] == 't' &&
+ start[2] == 'r' &&
+ start[3] == 'e' &&
+ start[4] == 'a' &&
+ start[5] == 'm')) {
+ // no stream. return.
+ return start;
+ }
+
+ start += 6; // strlen("stream")
+ if (start[0] == kCR_PdfWhiteSpace && start[1] == kLF_PdfWhiteSpace) {
+ start += 2;
+ } else if (start[0] == kLF_PdfWhiteSpace) {
+ start += 1;
+ } else if (isPdfWhiteSpace(start[0])) {
+ start += 1;
+ } else {
+ // TODO(edisonn): warn it should be isPdfDelimiter(start[0])) ?
+ }
+
+ SkPdfStreamCommonDictionary* stream = (SkPdfStreamCommonDictionary*) dict;
+ // TODO(edisonn): load Length
+ int64_t length = -1;
+
+ // TODO(edisonn): very basic implementation
+ if (stream->has_Length() && stream->Length(doc) > 0) {
+ length = stream->Length(doc);
+ }
+
+ // TODO(edisonn): load external streams
+ // TODO(edisonn): look at the last filter, to determine how to deal with possible parsing
+ // issues. The last filter can have special rules to terminate a stream, which we could
+ // use to determine end of stream.
+
+ if (length >= 0) {
+ const unsigned char* endstream = start + length;
+
+ if (endstream[0] == kCR_PdfWhiteSpace && endstream[1] == kLF_PdfWhiteSpace) {
+ endstream += 2;
+ } else if (endstream[0] == kLF_PdfWhiteSpace) {
+ endstream += 1;
+ }
+
+ if (strncmp((const char*)endstream, "endstream", strlen("endstream")) != 0) {
+ length = -1;
+ }
+ }
+
+ if (length < 0) {
+ // scan the buffer, until we find first endstream
+ // TODO(edisonn): all buffers must have a 0 at the end now,
+ const unsigned char* endstream = (const unsigned char*)strrstrk((char*)start, (char*)end,
+ "endstream");
+
+ if (endstream) {
+ length = endstream - start;
+ if (*(endstream-1) == kLF_PdfWhiteSpace) length--;
+ if (*(endstream-2) == kCR_PdfWhiteSpace) length--;
+ }
+ }
+ if (length >= 0) {
+ const unsigned char* endstream = start + length;
+
+ if (endstream[0] == kCR_PdfWhiteSpace && endstream[1] == kLF_PdfWhiteSpace) {
+ endstream += 2;
+ } else if (endstream[0] == kLF_PdfWhiteSpace) {
+ endstream += 1;
+ }
+
+ // TODO(edisonn): verify the next bytes are "endstream"
+
+ endstream += strlen("endstream");
+ // TODO(edisonn): Assert? report error/warning?
+ dict->addStream(start, (size_t)length);
+ return endstream;
+ }
+ return start;
+}
+
+static const unsigned char* readInlineImageStream(const unsigned char* start,
+ const unsigned char* end,
+ SkPdfImageDictionary* inlineImage,
+ SkPdfNativeDoc* doc) {
+ // We already processed ID keyword, and we should be positioned immediately after it
+
+ // TODO(edisonn): security: either make all streams to have extra 2 bytes at the end,
+ // instead of this if.
+ //if (end - start <= 2) {
+ // // TODO(edisonn): warning?
+ // return end; // but can we have a pixel image encoded in 1-2 bytes?
+ //}
+
+ if (start[0] == kCR_PdfWhiteSpace && start[1] == kLF_PdfWhiteSpace) {
+ start += 2;
+ } else if (start[0] == kLF_PdfWhiteSpace) {
+ start += 1;
+ } else if (isPdfWhiteSpace(start[0])) {
+ start += 1;
+ } else {
+ SkASSERT(isPdfDelimiter(start[0]));
+ // TODO(edisonn): warning?
+ }
+
+ const unsigned char* endstream = (const unsigned char*)strrstrk((char*)start, (char*)end, "EI");
+ const unsigned char* endEI = endstream ? endstream + 2 : NULL; // 2 == strlen("EI")
+
+ if (endstream) {
+ int length = endstream - start;
+ if (*(endstream-1) == kLF_PdfWhiteSpace) length--;
+ if (*(endstream-2) == kCR_PdfWhiteSpace) length--;
+ inlineImage->addStream(start, (size_t)length);
+ } else {
+ // TODO(edisonn): report error in inline image stream (ID-EI) section
+ // TODO(edisonn): based on filter, try to ignore a missing EI, and read data properly
+ return end;
+ }
+ return endEI;
+}
+
+static const unsigned char* readDictionary(const unsigned char* start, const unsigned char* end,
+ SkPdfNativeObject* dict,
+ SkPdfAllocator* allocator, SkPdfNativeDoc* doc) {
+ if (allocator == NULL) {
+ // TODO(edisonn): report/warning error
+ return end;
+ }
+ SkPdfNativeObject::makeEmptyDictionary(dict);
+ // PUT_TRACK_STREAM(dict, start, start)
+
+ start = skipPdfWhiteSpaces(start, end);
+ SkPdfAllocator tmpStorage; // keys will be stored in dict, we can free them after set.
+
+ while (start < end && *start == kNamed_PdfDelimiter) {
+ SkPdfNativeObject key;
+ //*start = '\0';
+ start++;
+ start = readName(start, end, &key, &tmpStorage);
+ start = skipPdfWhiteSpaces(start, end);
+
+ if (start < end) {
+ SkPdfNativeObject* value = allocator->allocObject();
+ start = nextObject(start, end, value, allocator, doc);
+
+ start = skipPdfWhiteSpaces(start, end);
+
+ if (start < end) {
+ // We should have an indirect reference
+ if (isPdfDigit(*start)) {
+ SkPdfNativeObject generation;
+ start = nextObject(start, end, &generation, allocator, doc);
+
+ SkPdfNativeObject keywordR;
+ start = nextObject(start, end, &keywordR, allocator, doc);
+
+ if (value->isInteger() && generation.isInteger() &&
+ keywordR.isKeywordReference()) {
+ int64_t id = value->intValue();
+ SkPdfNativeObject::resetAndMakeReference(
+ (unsigned int)id,
+ (unsigned int)generation.intValue(),
+ value);
+ // PUT_TRACK_PARAMETERS_OBJ2(value, &generation)
+ dict->set(&key, value);
+ } else {
+ // TODO(edisonn) error?, ignore it for now.
+ dict->set(&key, value);
+ }
+ } else {
+ // next elem is not a digit, but it might not be / either!
+ dict->set(&key, value);
+ }
+ } else {
+ // /key >>
+ dict->set(&key, value);
+ return end;
+ }
+ start = skipPdfWhiteSpaces(start, end);
+ } else {
+ dict->set(&key, &SkPdfNativeObject::kNull);
+ return end;
+ }
+ }
+
+ // now we should expect >>
+ start = skipPdfWhiteSpaces(start, end);
+ if (*start != kClosedInequityBracket_PdfDelimiter) {
+ // TODO(edisonn): report/warning
+ }
+
+ start++; // skip >
+ if (*start != kClosedInequityBracket_PdfDelimiter) {
+ // TODO(edisonn): report/warning
+ }
+
+ start++; // skip >
+
+ //STORE_TRACK_PARAMETER_OFFSET_END(dict,start);
+
+ start = readStream(start, end, dict, doc);
+
+ return start;
+}
+
+const unsigned char* nextObject(const unsigned char* start, const unsigned char* end,
+ SkPdfNativeObject* token,
+ SkPdfAllocator* allocator, SkPdfNativeDoc* doc) {
+ const unsigned char* current;
+
+ // skip white spaces
+ start = skipPdfWhiteSpaces(start, end);
+
+ if (start >= end) {
+ return end;
+ }
+
+ current = endOfPdfToken(start, end);
+
+ // no token, len would be 0
+ if (current == start || current == end) {
+ return end;
+ }
+
+ int tokenLen = current - start;
+
+ if (tokenLen == 1) {
+ // start array
+ switch (*start) {
+ case kOpenedSquareBracket_PdfDelimiter:
+ return readArray(current, end, token, allocator, doc);
+
+ case kOpenedRoundBracket_PdfDelimiter:
+ return readString(start + 1, end, token, allocator);
+
+ case kOpenedInequityBracket_PdfDelimiter:
+ if (end > start + 1 && start[1] == kOpenedInequityBracket_PdfDelimiter) {
+ // TODO(edisonn): pass here the length somehow?
+ return readDictionary(start + 2, end, token, allocator, doc); // skip <<
+ } else {
+ return readHexString(start + 1, end, token, allocator); // skip <
+ }
+
+ case kNamed_PdfDelimiter:
+ return readName(start + 1, end, token, allocator);
+
+ // TODO(edisonn): what to do curly brackets?
+ case kOpenedCurlyBracket_PdfDelimiter:
+ default:
+ break;
+ }
+
+ SkASSERT(!isPdfWhiteSpace(*start));
+ if (isPdfDelimiter(*start)) {
+ // TODO(edisonn): how unexpected stream ] } > ) will be handled?
+ // for now ignore, and it will become a keyword to be ignored
+ }
+ }
+
+ if (tokenLen == 4 && start[0] == 'n' && start[1] == 'u' && start[2] == 'l' && start[3] == 'l') {
+ SkPdfNativeObject::makeNull(token);
+ // PUT_TRACK_STREAM(start, start + 4)
+ return current;
+ }
+
+ if (tokenLen == 4 && start[0] == 't' && start[1] == 'r' && start[2] == 'u' && start[3] == 'e') {
+ SkPdfNativeObject::makeBoolean(true, token);
+ // PUT_TRACK_STREAM(start, start + 4)
+ return current;
+ }
+
+ // TODO(edisonn): again, make all buffers have 5 extra bytes
+ if (tokenLen == 5 && start[0] == 'f' &&
+ start[1] == 'a' &&
+ start[2] == 'l' &&
+ start[3] == 's' &&
+ start[4] == 'e') {
+ SkPdfNativeObject::makeBoolean(false, token);
+ // PUT_TRACK_STREAM(start, start + 5)
+ return current;
+ }
+
+ if (isPdfNumeric(*start)) {
+ SkPdfNativeObject::makeNumeric(start, current, token);
+ // PUT_TRACK_STREAM(start, current)
+ } else {
+ SkPdfNativeObject::makeKeyword(start, current, token);
+ // PUT_TRACK_STREAM(start, current)
+ }
+ return current;
+}
+
+SkPdfNativeObject* SkPdfAllocator::allocBlock() {
+ fSizeInBytes += BUFFER_SIZE * sizeof(SkPdfNativeObject);
+ return new SkPdfNativeObject[BUFFER_SIZE];
+}
+
+SkPdfAllocator::~SkPdfAllocator() {
+ for (int i = 0 ; i < fHandles.count(); i++) {
+ free(fHandles[i]);
+ }
+ for (int i = 0 ; i < fHistory.count(); i++) {
+ for (int j = 0 ; j < BUFFER_SIZE; j++) {
+ fHistory[i][j].reset();
+ }
+ delete[] fHistory[i];
+ }
+ for (int j = 0 ; j < BUFFER_SIZE; j++) {
+ fCurrent[j].reset();
+ }
+ delete[] fCurrent;
+}
+
+SkPdfNativeObject* SkPdfAllocator::allocObject() {
+ if (fCurrentUsed >= BUFFER_SIZE) {
+ fHistory.push(fCurrent);
+ fCurrent = allocBlock();
+ fCurrentUsed = 0;
+ fSizeInBytes += sizeof(SkPdfNativeObject*);
+ }
+ fCurrentUsed++;
+ return &fCurrent[fCurrentUsed - 1];
+}
+
+// TODO(edisonn): perf: do no copy the buffers, but reuse them, and mark cache the result,
+// so there is no need of a second pass
+SkPdfNativeTokenizer::SkPdfNativeTokenizer(SkPdfNativeObject* objWithStream,
+ SkPdfAllocator* allocator,
+ SkPdfNativeDoc* doc)
+ : fDoc(doc)
+ , fAllocator(allocator)
+ , fUncompressedStream(NULL)
+ , fUncompressedStreamEnd(NULL)
+ , fEmpty(false)
+ , fHasPutBack(false) {
+ const unsigned char* buffer = NULL;
+ size_t len = 0;
+ objWithStream->GetFilteredStreamRef(&buffer, &len);
+ // TODO(edisonn): really bad hack, find end of object (endobj might be in a comment!)
+ // we need to do now for perf, and our generated pdfs do not have comments,
+ // but we need to remove this hack for pdfs in the wild
+ char* endobj = strrstrk((char*)buffer, (char*)buffer + len, "endobj");
+ if (endobj) {
+ len = endobj - (char*)buffer + strlen("endobj");
+ }
+ fUncompressedStreamStart = fUncompressedStream = buffer;
+ fUncompressedStreamEnd = fUncompressedStream + len;
+}
+
+SkPdfNativeTokenizer::SkPdfNativeTokenizer(const unsigned char* buffer, int len,
+ SkPdfAllocator* allocator,
+ SkPdfNativeDoc* doc) : fDoc(doc)
+ , fAllocator(allocator)
+ , fEmpty(false)
+ , fHasPutBack(false) {
+ // TODO(edisonn): really bad hack, find end of object (endobj might be in a comment!)
+ // we need to do now for perf, and our generated pdfs do not have comments,
+ // but we need to remove this hack for pdfs in the wild
+ char* endobj = strrstrk((char*)buffer, (char*)buffer + len, "endobj");
+ if (endobj) {
+ len = endobj - (char*)buffer + strlen("endobj");
+ }
+ fUncompressedStreamStart = fUncompressedStream = buffer;
+ fUncompressedStreamEnd = fUncompressedStream + len;
+}
+
+SkPdfNativeTokenizer::~SkPdfNativeTokenizer() {
+}
+
+bool SkPdfNativeTokenizer::readTokenCore(PdfToken* token) {
+#ifdef PDF_TRACE_READ_TOKEN
+ static int read_op = 0;
+#endif
+
+ token->fKeyword = NULL;
+ token->fObject = NULL;
+
+ fUncompressedStream = skipPdfWhiteSpaces(fUncompressedStream, fUncompressedStreamEnd);
+ if (fUncompressedStream >= fUncompressedStreamEnd) {
+ fEmpty = true;
+ return false;
+ }
+
+ SkPdfNativeObject obj;
+ fUncompressedStream = nextObject(fUncompressedStream, fUncompressedStreamEnd, &obj, fAllocator, fDoc);
+ // PUT_TRACK_STREAM_ARGS_EXPL2(fStreamId, fUncompressedStreamStart)
+
+ // If it is a keyword, we will only get the pointer of the string.
+ if (obj.type() == SkPdfNativeObject::kKeyword_PdfObjectType) {
+ token->fKeyword = obj.c_str();
+ token->fKeywordLength = obj.lenstr();
+ token->fType = kKeyword_TokenType;
+ } else {
+ SkPdfNativeObject* pobj = fAllocator->allocObject();
+ *pobj = obj;
+ token->fObject = pobj;
+ token->fType = kObject_TokenType;
+ }
+
+#ifdef PDF_TRACE_READ_TOKEN
+ read_op++;
+#if 0
+ if (548 == read_op) {
+ printf("break;\n");
+ }
+#endif
+ printf("%i READ %s %s\n", read_op, token->fType == kKeyword_TokenType ? "Keyword" : "Object",
+ token->fKeyword ? SkString(token->fKeyword, token->fKeywordLength).c_str() :
+ token->fObject->toString().c_str());
+#endif
+
+ return true;
+}
+
+void SkPdfNativeTokenizer::PutBack(PdfToken token) {
+ SkASSERT(!fHasPutBack);
+ fHasPutBack = true;
+ fPutBack = token;
+#ifdef PDF_TRACE_READ_TOKEN
+ printf("PUT_BACK %s %s\n", token.fType == kKeyword_TokenType ? "Keyword" : "Object",
+ token.fKeyword ? SkString(token.fKeyword, token.fKeywordLength).c_str() :
+ token.fObject->toString().c_str());
+#endif
+}
+
+bool SkPdfNativeTokenizer::readToken(PdfToken* token, bool writeDiff) {
+ if (fHasPutBack) {
+ *token = fPutBack;
+ fHasPutBack = false;
+#ifdef PDF_TRACE_READ_TOKEN
+ printf("READ_BACK %s %s\n", token->fType == kKeyword_TokenType ? "Keyword" : "Object",
+ token->fKeyword ? SkString(token->fKeyword, token->fKeywordLength).c_str() :
+ token->fObject->toString().c_str());
+#endif
+ if (writeDiff) {
+ SkPdfDiffEncoder::WriteToFile(token);
+ }
+ return true;
+ }
+
+ if (fEmpty) {
+#ifdef PDF_TRACE_READ_TOKEN
+ printf("EMPTY TOKENIZER\n");
+#endif
+ return false;
+ }
+
+ const bool result = readTokenCore(token);
+ if (result && writeDiff) {
+ SkPdfDiffEncoder::WriteToFile(token);
+ }
+ return result;
+}
+
+#define DECLARE_PDF_NAME(longName) SkPdfName longName((char*)#longName)
+
+// keys
+DECLARE_PDF_NAME(BitsPerComponent);
+DECLARE_PDF_NAME(ColorSpace);
+DECLARE_PDF_NAME(Decode);
+DECLARE_PDF_NAME(DecodeParms);
+DECLARE_PDF_NAME(Filter);
+DECLARE_PDF_NAME(Height);
+DECLARE_PDF_NAME(ImageMask);
+DECLARE_PDF_NAME(Intent); // PDF 1.1 - the key, or the abBreviations?
+DECLARE_PDF_NAME(Interpolate);
+DECLARE_PDF_NAME(Width);
+
+// values
+DECLARE_PDF_NAME(DeviceGray);
+DECLARE_PDF_NAME(DeviceRGB);
+DECLARE_PDF_NAME(DeviceCMYK);
+DECLARE_PDF_NAME(Indexed);
+DECLARE_PDF_NAME(ASCIIHexDecode);
+DECLARE_PDF_NAME(ASCII85Decode);
+DECLARE_PDF_NAME(LZWDecode);
+DECLARE_PDF_NAME(FlateDecode); // PDF 1.2
+DECLARE_PDF_NAME(RunLengthDecode);
+DECLARE_PDF_NAME(CCITTFaxDecode);
+DECLARE_PDF_NAME(DCTDecode);
+
+#define HANDLE_NAME_ABBR(obj,longName,shortName) if (obj->isName(#shortName)) return &longName;
+
+
+static SkPdfNativeObject* inlineImageKeyAbbreviationExpand(SkPdfNativeObject* key) {
+ if (!key || !key->isName()) {
+ return key;
+ }
+
+ // TODO(edisonn): use autogenerated code!
+ HANDLE_NAME_ABBR(key, BitsPerComponent, BPC);
+ HANDLE_NAME_ABBR(key, ColorSpace, CS);
+ HANDLE_NAME_ABBR(key, Decode, D);
+ HANDLE_NAME_ABBR(key, DecodeParms, DP);
+ HANDLE_NAME_ABBR(key, Filter, F);
+ HANDLE_NAME_ABBR(key, Height, H);
+ HANDLE_NAME_ABBR(key, ImageMask, IM);
+// HANDLE_NAME_ABBR(key, Intent, );
+ HANDLE_NAME_ABBR(key, Interpolate, I);
+ HANDLE_NAME_ABBR(key, Width, W);
+
+ return key;
+}
+
+static SkPdfNativeObject* inlineImageValueAbbreviationExpand(SkPdfNativeObject* value) {
+ if (!value || !value->isName()) {
+ return value;
+ }
+
+ // TODO(edisonn): use autogenerated code!
+ HANDLE_NAME_ABBR(value, DeviceGray, G);
+ HANDLE_NAME_ABBR(value, DeviceRGB, RGB);
+ HANDLE_NAME_ABBR(value, DeviceCMYK, CMYK);
+ HANDLE_NAME_ABBR(value, Indexed, I);
+ HANDLE_NAME_ABBR(value, ASCIIHexDecode, AHx);
+ HANDLE_NAME_ABBR(value, ASCII85Decode, A85);
+ HANDLE_NAME_ABBR(value, LZWDecode, LZW);
+ HANDLE_NAME_ABBR(value, FlateDecode, Fl); // (PDF 1.2)
+ HANDLE_NAME_ABBR(value, RunLengthDecode, RL);
+ HANDLE_NAME_ABBR(value, CCITTFaxDecode, CCF);
+ HANDLE_NAME_ABBR(value, DCTDecode, DCT);
+
+ return value;
+}
+
+SkPdfImageDictionary* SkPdfNativeTokenizer::readInlineImage() {
+ // BI already processed
+ fUncompressedStream = skipPdfWhiteSpaces(fUncompressedStream, fUncompressedStreamEnd);
+ if (fUncompressedStream >= fUncompressedStreamEnd) {
+ return NULL;
+ }
+
+ SkPdfImageDictionary* inlineImage = (SkPdfImageDictionary*)fAllocator->allocObject();
+ SkPdfNativeObject::makeEmptyDictionary(inlineImage);
+ // PUT_TRACK_STREAM_ARGS_EXPL(fStreamId, fUncompressedStream - fUncompressedStreamStart,
+ // fUncompressedStream - fUncompressedStreamStart)
+
+ while (fUncompressedStream < fUncompressedStreamEnd) {
+ SkPdfNativeObject* key = fAllocator->allocObject();
+ fUncompressedStream = nextObject(fUncompressedStream, fUncompressedStreamEnd, key,
+ fAllocator, fDoc);
+ // PUT_TRACK_STREAM_ARGS_EXPL2(fStreamId, fUncompressedStreamStart)s
+
+ if (key->isKeyword() && key->lenstr() == 2 &&
+ key->c_str()[0] == 'I' && key->c_str()[1] == 'D') { // ID
+ fUncompressedStream = readInlineImageStream(fUncompressedStream, fUncompressedStreamEnd,
+ inlineImage, fDoc);
+ return inlineImage;
+ } else {
+ SkPdfNativeObject* obj = fAllocator->allocObject();
+ fUncompressedStream = nextObject(fUncompressedStream, fUncompressedStreamEnd, obj,
+ fAllocator, fDoc);
+ // PUT_TRACK_STREAM_ARGS_EXPL2(fStreamId, fUncompressedStreamStart)s
+ // TODO(edisonn): perf maybe we should not expand abBreviation like this
+ inlineImage->set(inlineImageKeyAbbreviationExpand(key),
+ inlineImageValueAbbreviationExpand(obj));
+ }
+ }
+ // TODO(edisonn): report end of data with inline image without an EI
+ return inlineImage;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h
new file mode 100644
index 00000000000..79b070f12ea
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.h
@@ -0,0 +1,201 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfNativeTokenizer_DEFINED
+#define SkPdfNativeTokenizer_DEFINED
+
+#include <math.h>
+#include <string.h>
+
+#include "SkPdfConfig.h"
+#include "SkTDArray.h"
+#include "SkTDict.h"
+
+// All these constants are defined by the PDF 1.4 Spec.
+
+class SkPdfDictionary;
+class SkPdfImageDictionary;
+class SkPdfNativeDoc;
+class SkPdfNativeObject;
+
+
+// White Spaces
+#define kNUL_PdfWhiteSpace '\x00'
+#define kHT_PdfWhiteSpace '\x09'
+#define kLF_PdfWhiteSpace '\x0A'
+#define kFF_PdfWhiteSpace '\x0C'
+#define kCR_PdfWhiteSpace '\x0D'
+#define kSP_PdfWhiteSpace '\x20'
+
+// PdfDelimiters
+#define kOpenedRoundBracket_PdfDelimiter '('
+#define kClosedRoundBracket_PdfDelimiter ')'
+#define kOpenedInequityBracket_PdfDelimiter '<'
+#define kClosedInequityBracket_PdfDelimiter '>'
+#define kOpenedSquareBracket_PdfDelimiter '['
+#define kClosedSquareBracket_PdfDelimiter ']'
+#define kOpenedCurlyBracket_PdfDelimiter '{'
+#define kClosedCurlyBracket_PdfDelimiter '}'
+#define kNamed_PdfDelimiter '/'
+#define kComment_PdfDelimiter '%'
+
+#define kEscape_PdfSpecial '\\'
+#define kBackspace_PdfSpecial '\x08'
+
+// TODO(edisonn): what is the faster way for compiler/machine type to evaluate this expressions?
+// we should evaluate all options. might be even different from one machine to another
+// 1) expand expression, let compiler optimize it
+// 2) binary search
+// 3) linear search in array
+// 4) vector (e.f. T type[256] .. return type[ch] ...
+// 5) manually build the expression with least number of operators, e.g. for consecutive
+// chars, we can use an binary equal ignoring last bit
+#define isPdfWhiteSpace(ch) (((ch)==kNUL_PdfWhiteSpace)|| \
+ ((ch)==kHT_PdfWhiteSpace)|| \
+ ((ch)==kLF_PdfWhiteSpace)|| \
+ ((ch)==kFF_PdfWhiteSpace)|| \
+ ((ch)==kCR_PdfWhiteSpace)|| \
+ ((ch)==kSP_PdfWhiteSpace))
+
+#define isPdfEOL(ch) (((ch)==kLF_PdfWhiteSpace)||((ch)==kCR_PdfWhiteSpace))
+
+
+#define isPdfDelimiter(ch) (((ch)==kOpenedRoundBracket_PdfDelimiter)||\
+ ((ch)==kClosedRoundBracket_PdfDelimiter)||\
+ ((ch)==kOpenedInequityBracket_PdfDelimiter)||\
+ ((ch)==kClosedInequityBracket_PdfDelimiter)||\
+ ((ch)==kOpenedSquareBracket_PdfDelimiter)||\
+ ((ch)==kClosedSquareBracket_PdfDelimiter)||\
+ ((ch)==kOpenedCurlyBracket_PdfDelimiter)||\
+ ((ch)==kClosedCurlyBracket_PdfDelimiter)||\
+ ((ch)==kNamed_PdfDelimiter)||\
+ ((ch)==kComment_PdfDelimiter))
+
+#define isPdfWhiteSpaceOrPdfDelimiter(ch) (isPdfWhiteSpace(ch)||isPdfDelimiter(ch))
+
+#define isPdfDigit(ch) ((ch)>='0'&&(ch)<='9')
+#define isPdfNumeric(ch) (isPdfDigit(ch)||(ch)=='+'||(ch)=='-'||(ch)=='.')
+
+const unsigned char* skipPdfWhiteSpaces(const unsigned char* buffer, const unsigned char* end);
+const unsigned char* endOfPdfToken(const unsigned char* start, const unsigned char* end);
+
+#define BUFFER_SIZE 1024
+
+/** \class SkPdfAllocator
+ *
+ * An allocator only allocates memory, and it deletes it all when the allocator is destroyed.
+ * This strategy would allow us not to do any garbage collection while we parse and/or render
+ * a pdf.
+ *
+ */
+class SkPdfAllocator {
+public:
+ SkPdfAllocator() {
+ fSizeInBytes = sizeof(*this);
+ fCurrent = allocBlock();
+ fCurrentUsed = 0;
+ }
+
+ ~SkPdfAllocator();
+
+ // Allocates an object. It will be reset automatically when ~SkPdfAllocator() is called.
+ SkPdfNativeObject* allocObject();
+
+ // Allocates a buffer. It will be freed automatically when ~SkPdfAllocator() is called.
+ void* alloc(size_t bytes) {
+ void* data = malloc(bytes);
+ fHandles.push(data);
+ fSizeInBytes += bytes;
+ return data;
+ }
+
+ // Returns the number of bytes used in this allocator.
+ size_t bytesUsed() const {
+ return fSizeInBytes;
+ }
+
+private:
+ SkTDArray<SkPdfNativeObject*> fHistory;
+ SkTDArray<void*> fHandles;
+ SkPdfNativeObject* fCurrent;
+ int fCurrentUsed;
+
+ SkPdfNativeObject* allocBlock();
+ size_t fSizeInBytes;
+};
+
+// Type of a parsed token.
+enum SkPdfTokenType {
+ kKeyword_TokenType,
+ kObject_TokenType,
+};
+
+
+/** \struct PdfToken
+ *
+ * Stores the result of the parsing - a keyword or an object.
+ *
+ */
+struct PdfToken {
+ const char* fKeyword;
+ size_t fKeywordLength;
+ SkPdfNativeObject* fObject;
+ SkPdfTokenType fType;
+
+ PdfToken() : fKeyword(NULL), fKeywordLength(0), fObject(NULL) {}
+};
+
+/** \class SkPdfNativeTokenizer
+ *
+ * Responsible to tokenize a stream in small tokens, eityh a keyword or an object.
+ * A renderer can feed on the tokens and render a pdf.
+ *
+ */
+class SkPdfNativeTokenizer {
+public:
+ SkPdfNativeTokenizer(SkPdfNativeObject* objWithStream,
+ SkPdfAllocator* allocator, SkPdfNativeDoc* doc);
+ SkPdfNativeTokenizer(const unsigned char* buffer, int len,
+ SkPdfAllocator* allocator, SkPdfNativeDoc* doc);
+
+ virtual ~SkPdfNativeTokenizer();
+
+ // Reads one token. Returns false if there are no more tokens.
+ // If writeDiff is true, and a token was read, create a PNG highlighting
+ // the difference caused by this command in /tmp/log_step_by_step.
+ // If PDF_TRACE_DIFF_IN_PNG is not defined, writeDiff does nothing.
+ bool readToken(PdfToken* token, bool writeDiff = false);
+
+ // Put back a token to be read in the nextToken read. Only one token is allowed to be put
+ // back. Must not necesaarely be the last token read.
+ void PutBack(PdfToken token);
+
+ // Reads the inline image that is present in the stream. At this point we just consumed the ID
+ // token already.
+ SkPdfImageDictionary* readInlineImage();
+
+private:
+ bool readTokenCore(PdfToken* token);
+
+ SkPdfNativeDoc* fDoc;
+ SkPdfAllocator* fAllocator;
+
+ const unsigned char* fUncompressedStreamStart;
+ const unsigned char* fUncompressedStream;
+ const unsigned char* fUncompressedStreamEnd;
+
+ bool fEmpty;
+ bool fHasPutBack;
+ PdfToken fPutBack;
+};
+
+const unsigned char* nextObject(const unsigned char* start, const unsigned char* end,
+ SkPdfNativeObject* token,
+ SkPdfAllocator* allocator,
+ SkPdfNativeDoc* doc);
+
+#endif // SkPdfNativeTokenizer_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfALinkAnnotationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfALinkAnnotationDictionary_autogen.cpp
new file mode 100644
index 00000000000..671c64f0a15
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfALinkAnnotationDictionary_autogen.cpp
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfALinkAnnotationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfALinkAnnotationDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfALinkAnnotationDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfALinkAnnotationDictionary::Contents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfALinkAnnotationDictionary::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+bool SkPdfALinkAnnotationDictionary::isDestAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dest", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfALinkAnnotationDictionary::getDestAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dest", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfALinkAnnotationDictionary::isDestAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dest", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfALinkAnnotationDictionary::getDestAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dest", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfALinkAnnotationDictionary::isDestAString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dest", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isAnyString();
+}
+
+SkString SkPdfALinkAnnotationDictionary::getDestAsString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dest", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfALinkAnnotationDictionary::has_Dest() const {
+ return get("Dest", "") != NULL;
+}
+
+SkString SkPdfALinkAnnotationDictionary::H(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("H", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfALinkAnnotationDictionary::has_H() const {
+ return get("H", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfALinkAnnotationDictionary::PA(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("PA", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfALinkAnnotationDictionary::has_PA() const {
+ return get("PA", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfALinkAnnotationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfALinkAnnotationDictionary_autogen.h
new file mode 100644
index 00000000000..680da4a993a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfALinkAnnotationDictionary_autogen.h
@@ -0,0 +1,541 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfALinkAnnotationDictionary_DEFINED
+#define SkPdfALinkAnnotationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a link annotation
+class SkPdfALinkAnnotationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return this;}
+
+private:
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString Contents(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+
+ bool isDestAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getDestAsArray(SkPdfNativeDoc* doc);
+
+ bool isDestAName(SkPdfNativeDoc* doc);
+ SkString getDestAsName(SkPdfNativeDoc* doc);
+
+ bool isDestAString(SkPdfNativeDoc* doc);
+ SkString getDestAsString(SkPdfNativeDoc* doc);
+ bool has_Dest() const;
+ SkString H(SkPdfNativeDoc* doc);
+ bool has_H() const;
+ SkPdfDictionary* PA(SkPdfNativeDoc* doc);
+ bool has_PA() const;
+};
+
+#endif // SkPdfALinkAnnotationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfActionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfActionDictionary_autogen.cpp
new file mode 100644
index 00000000000..eff5e8d63a9
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfActionDictionary_autogen.cpp
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfActionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfActionDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfActionDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfActionDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfActionDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+bool SkPdfActionDictionary::isNextADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Next", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfActionDictionary::getNextAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Next", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfActionDictionary::isNextAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Next", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfActionDictionary::getNextAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Next", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfActionDictionary::has_Next() const {
+ return get("Next", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfActionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfActionDictionary_autogen.h
new file mode 100644
index 00000000000..a83a06552da
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfActionDictionary_autogen.h
@@ -0,0 +1,534 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfActionDictionary_DEFINED
+#define SkPdfActionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries common to all action dictionaries
+class SkPdfActionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfActionDictionary* asActionDictionary() {return this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+
+ bool isNextADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getNextAsDictionary(SkPdfNativeDoc* doc);
+
+ bool isNextAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getNextAsArray(SkPdfNativeDoc* doc);
+ bool has_Next() const;
+};
+
+#endif // SkPdfActionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAlternateImageDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAlternateImageDictionary_autogen.cpp
new file mode 100644
index 00000000000..607eb34f84b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAlternateImageDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfAlternateImageDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfStream* SkPdfAlternateImageDictionary::Image(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Image", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfAlternateImageDictionary::has_Image() const {
+ return get("Image", "") != NULL;
+}
+
+bool SkPdfAlternateImageDictionary::DefaultForPrinting(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DefaultForPrinting", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfAlternateImageDictionary::has_DefaultForPrinting() const {
+ return get("DefaultForPrinting", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAlternateImageDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAlternateImageDictionary_autogen.h
new file mode 100644
index 00000000000..adfe72577a5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAlternateImageDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfAlternateImageDictionary_DEFINED
+#define SkPdfAlternateImageDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in an alternate image dictionary
+class SkPdfAlternateImageDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfStream* Image(SkPdfNativeDoc* doc);
+ bool has_Image() const;
+ bool DefaultForPrinting(SkPdfNativeDoc* doc);
+ bool has_DefaultForPrinting() const;
+};
+
+#endif // SkPdfAlternateImageDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAnnotationActionsDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAnnotationActionsDictionary_autogen.cpp
new file mode 100644
index 00000000000..ecb9eb0486e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAnnotationActionsDictionary_autogen.cpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfAnnotationActionsDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfDictionary* SkPdfAnnotationActionsDictionary::E(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("E", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAnnotationActionsDictionary::has_E() const {
+ return get("E", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfAnnotationActionsDictionary::X(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("X", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAnnotationActionsDictionary::has_X() const {
+ return get("X", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfAnnotationActionsDictionary::D(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAnnotationActionsDictionary::has_D() const {
+ return get("D", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfAnnotationActionsDictionary::U(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("U", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAnnotationActionsDictionary::has_U() const {
+ return get("U", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfAnnotationActionsDictionary::Fo(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Fo", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAnnotationActionsDictionary::has_Fo() const {
+ return get("Fo", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfAnnotationActionsDictionary::Bl(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Bl", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAnnotationActionsDictionary::has_Bl() const {
+ return get("Bl", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAnnotationActionsDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAnnotationActionsDictionary_autogen.h
new file mode 100644
index 00000000000..52f2175ef79
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAnnotationActionsDictionary_autogen.h
@@ -0,0 +1,535 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfAnnotationActionsDictionary_DEFINED
+#define SkPdfAnnotationActionsDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in an annotation's additional-actions dictionary
+class SkPdfAnnotationActionsDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfDictionary* E(SkPdfNativeDoc* doc);
+ bool has_E() const;
+ SkPdfDictionary* X(SkPdfNativeDoc* doc);
+ bool has_X() const;
+ SkPdfDictionary* D(SkPdfNativeDoc* doc);
+ bool has_D() const;
+ SkPdfDictionary* U(SkPdfNativeDoc* doc);
+ bool has_U() const;
+ SkPdfDictionary* Fo(SkPdfNativeDoc* doc);
+ bool has_Fo() const;
+ SkPdfDictionary* Bl(SkPdfNativeDoc* doc);
+ bool has_Bl() const;
+};
+
+#endif // SkPdfAnnotationActionsDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAnnotationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAnnotationDictionary_autogen.cpp
new file mode 100644
index 00000000000..390ed0589aa
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAnnotationDictionary_autogen.cpp
@@ -0,0 +1,249 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfAnnotationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfAnnotationDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfAnnotationDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfAnnotationDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfAnnotationDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfAnnotationDictionary::Contents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfAnnotationDictionary::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfAnnotationDictionary::P(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("P", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAnnotationDictionary::has_P() const {
+ return get("P", "") != NULL;
+}
+
+SkRect SkPdfAnnotationDictionary::Rect(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Rect", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isRectangle()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->rectangleValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkRect::MakeEmpty();
+}
+
+bool SkPdfAnnotationDictionary::has_Rect() const {
+ return get("Rect", "") != NULL;
+}
+
+bool SkPdfAnnotationDictionary::has_NM() const {
+ return get("NM", "") != NULL;
+}
+
+bool SkPdfAnnotationDictionary::isMADate(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("M", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDate();
+}
+
+SkPdfDate SkPdfAnnotationDictionary::getMAsDate(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("M", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDate()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->dateValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfDate();
+}
+
+bool SkPdfAnnotationDictionary::isMAString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("M", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isAnyString();
+}
+
+SkString SkPdfAnnotationDictionary::getMAsString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("M", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfAnnotationDictionary::has_M() const {
+ return get("M", "") != NULL;
+}
+
+int64_t SkPdfAnnotationDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfAnnotationDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfAnnotationDictionary::BS(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAnnotationDictionary::has_BS() const {
+ return get("BS", "") != NULL;
+}
+
+SkPdfArray* SkPdfAnnotationDictionary::Border(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Border", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAnnotationDictionary::has_Border() const {
+ return get("Border", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfAnnotationDictionary::AP(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AP", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAnnotationDictionary::has_AP() const {
+ return get("AP", "") != NULL;
+}
+
+SkString SkPdfAnnotationDictionary::AS(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfAnnotationDictionary::has_AS() const {
+ return get("AS", "") != NULL;
+}
+
+SkPdfArray* SkPdfAnnotationDictionary::C(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("C", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAnnotationDictionary::has_C() const {
+ return get("C", "") != NULL;
+}
+
+double SkPdfAnnotationDictionary::CA(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CA", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfAnnotationDictionary::has_CA() const {
+ return get("CA", "") != NULL;
+}
+
+SkString SkPdfAnnotationDictionary::T(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("T", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfAnnotationDictionary::has_T() const {
+ return get("T", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfAnnotationDictionary::Popup(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Popup", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAnnotationDictionary::has_Popup() const {
+ return get("Popup", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfAnnotationDictionary::A(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("A", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAnnotationDictionary::has_A() const {
+ return get("A", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfAnnotationDictionary::AA(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AA", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAnnotationDictionary::has_AA() const {
+ return get("AA", "") != NULL;
+}
+
+int64_t SkPdfAnnotationDictionary::StructParent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("StructParent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfAnnotationDictionary::has_StructParent() const {
+ return get("StructParent", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAnnotationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAnnotationDictionary_autogen.h
new file mode 100644
index 00000000000..2b544593f52
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAnnotationDictionary_autogen.h
@@ -0,0 +1,565 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfAnnotationDictionary_DEFINED
+#define SkPdfAnnotationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries common to all annotation dictionaries
+class SkPdfAnnotationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString Contents(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+ SkPdfDictionary* P(SkPdfNativeDoc* doc);
+ bool has_P() const;
+ SkRect Rect(SkPdfNativeDoc* doc);
+ bool has_Rect() const;
+ bool has_NM() const;
+
+ bool isMADate(SkPdfNativeDoc* doc);
+ SkPdfDate getMAsDate(SkPdfNativeDoc* doc);
+
+ bool isMAString(SkPdfNativeDoc* doc);
+ SkString getMAsString(SkPdfNativeDoc* doc);
+ bool has_M() const;
+ int64_t F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+ SkPdfDictionary* BS(SkPdfNativeDoc* doc);
+ bool has_BS() const;
+ SkPdfArray* Border(SkPdfNativeDoc* doc);
+ bool has_Border() const;
+ SkPdfDictionary* AP(SkPdfNativeDoc* doc);
+ bool has_AP() const;
+ SkString AS(SkPdfNativeDoc* doc);
+ bool has_AS() const;
+ SkPdfArray* C(SkPdfNativeDoc* doc);
+ bool has_C() const;
+ double CA(SkPdfNativeDoc* doc);
+ bool has_CA() const;
+ SkString T(SkPdfNativeDoc* doc);
+ bool has_T() const;
+ SkPdfDictionary* Popup(SkPdfNativeDoc* doc);
+ bool has_Popup() const;
+ SkPdfDictionary* A(SkPdfNativeDoc* doc);
+ bool has_A() const;
+ SkPdfDictionary* AA(SkPdfNativeDoc* doc);
+ bool has_AA() const;
+ int64_t StructParent(SkPdfNativeDoc* doc);
+ bool has_StructParent() const;
+};
+
+#endif // SkPdfAnnotationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAppearanceCharacteristicsDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAppearanceCharacteristicsDictionary_autogen.cpp
new file mode 100644
index 00000000000..d770e14551e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAppearanceCharacteristicsDictionary_autogen.cpp
@@ -0,0 +1,141 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfAppearanceCharacteristicsDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfAppearanceCharacteristicsDictionary::R(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("R", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfAppearanceCharacteristicsDictionary::has_R() const {
+ return get("R", "") != NULL;
+}
+
+SkPdfArray* SkPdfAppearanceCharacteristicsDictionary::BC(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BC", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAppearanceCharacteristicsDictionary::has_BC() const {
+ return get("BC", "") != NULL;
+}
+
+SkPdfArray* SkPdfAppearanceCharacteristicsDictionary::BG(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BG", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAppearanceCharacteristicsDictionary::has_BG() const {
+ return get("BG", "") != NULL;
+}
+
+SkString SkPdfAppearanceCharacteristicsDictionary::CA(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CA", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfAppearanceCharacteristicsDictionary::has_CA() const {
+ return get("CA", "") != NULL;
+}
+
+SkString SkPdfAppearanceCharacteristicsDictionary::RC(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("RC", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfAppearanceCharacteristicsDictionary::has_RC() const {
+ return get("RC", "") != NULL;
+}
+
+SkString SkPdfAppearanceCharacteristicsDictionary::AC(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AC", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfAppearanceCharacteristicsDictionary::has_AC() const {
+ return get("AC", "") != NULL;
+}
+
+SkPdfStream* SkPdfAppearanceCharacteristicsDictionary::I(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("I", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAppearanceCharacteristicsDictionary::has_I() const {
+ return get("I", "") != NULL;
+}
+
+SkPdfStream* SkPdfAppearanceCharacteristicsDictionary::RI(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("RI", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAppearanceCharacteristicsDictionary::has_RI() const {
+ return get("RI", "") != NULL;
+}
+
+SkPdfStream* SkPdfAppearanceCharacteristicsDictionary::IX(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("IX", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAppearanceCharacteristicsDictionary::has_IX() const {
+ return get("IX", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfAppearanceCharacteristicsDictionary::IF(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("IF", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAppearanceCharacteristicsDictionary::has_IF() const {
+ return get("IF", "") != NULL;
+}
+
+int64_t SkPdfAppearanceCharacteristicsDictionary::TP(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TP", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfAppearanceCharacteristicsDictionary::has_TP() const {
+ return get("TP", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAppearanceCharacteristicsDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAppearanceCharacteristicsDictionary_autogen.h
new file mode 100644
index 00000000000..ae551b6cf4e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAppearanceCharacteristicsDictionary_autogen.h
@@ -0,0 +1,545 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfAppearanceCharacteristicsDictionary_DEFINED
+#define SkPdfAppearanceCharacteristicsDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in an appearance characteristics dictionary
+class SkPdfAppearanceCharacteristicsDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t R(SkPdfNativeDoc* doc);
+ bool has_R() const;
+ SkPdfArray* BC(SkPdfNativeDoc* doc);
+ bool has_BC() const;
+ SkPdfArray* BG(SkPdfNativeDoc* doc);
+ bool has_BG() const;
+ SkString CA(SkPdfNativeDoc* doc);
+ bool has_CA() const;
+ SkString RC(SkPdfNativeDoc* doc);
+ bool has_RC() const;
+ SkString AC(SkPdfNativeDoc* doc);
+ bool has_AC() const;
+ SkPdfStream* I(SkPdfNativeDoc* doc);
+ bool has_I() const;
+ SkPdfStream* RI(SkPdfNativeDoc* doc);
+ bool has_RI() const;
+ SkPdfStream* IX(SkPdfNativeDoc* doc);
+ bool has_IX() const;
+ SkPdfDictionary* IF(SkPdfNativeDoc* doc);
+ bool has_IF() const;
+ int64_t TP(SkPdfNativeDoc* doc);
+ bool has_TP() const;
+};
+
+#endif // SkPdfAppearanceCharacteristicsDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAppearanceDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAppearanceDictionary_autogen.cpp
new file mode 100644
index 00000000000..1007391c400
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAppearanceDictionary_autogen.cpp
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfAppearanceDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+bool SkPdfAppearanceDictionary::isNAStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("N", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfAppearanceDictionary::getNAsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("N", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfAppearanceDictionary::isNADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("N", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfAppearanceDictionary::getNAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("N", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfAppearanceDictionary::has_N() const {
+ return get("N", "") != NULL;
+}
+
+bool SkPdfAppearanceDictionary::isRAStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("R", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfAppearanceDictionary::getRAsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("R", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAppearanceDictionary::isRADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("R", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfAppearanceDictionary::getRAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("R", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAppearanceDictionary::has_R() const {
+ return get("R", "") != NULL;
+}
+
+bool SkPdfAppearanceDictionary::isDAStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfAppearanceDictionary::getDAsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAppearanceDictionary::isDADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfAppearanceDictionary::getDAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfAppearanceDictionary::has_D() const {
+ return get("D", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAppearanceDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAppearanceDictionary_autogen.h
new file mode 100644
index 00000000000..2e8cb9b32fa
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAppearanceDictionary_autogen.h
@@ -0,0 +1,544 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfAppearanceDictionary_DEFINED
+#define SkPdfAppearanceDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in an appearance dictionary
+class SkPdfAppearanceDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+
+ bool isNAStream(SkPdfNativeDoc* doc);
+ SkPdfStream* getNAsStream(SkPdfNativeDoc* doc);
+
+ bool isNADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getNAsDictionary(SkPdfNativeDoc* doc);
+ bool has_N() const;
+
+ bool isRAStream(SkPdfNativeDoc* doc);
+ SkPdfStream* getRAsStream(SkPdfNativeDoc* doc);
+
+ bool isRADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getRAsDictionary(SkPdfNativeDoc* doc);
+ bool has_R() const;
+
+ bool isDAStream(SkPdfNativeDoc* doc);
+ SkPdfStream* getDAsStream(SkPdfNativeDoc* doc);
+
+ bool isDADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getDAsDictionary(SkPdfNativeDoc* doc);
+ bool has_D() const;
+};
+
+#endif // SkPdfAppearanceDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfApplicationDataDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfApplicationDataDictionary_autogen.cpp
new file mode 100644
index 00000000000..f8ce7c63638
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfApplicationDataDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfApplicationDataDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfDate SkPdfApplicationDataDictionary::LastModified(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("LastModified", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDate()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->dateValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkPdfDate();
+}
+
+bool SkPdfApplicationDataDictionary::has_LastModified() const {
+ return get("LastModified", "") != NULL;
+}
+
+SkPdfNativeObject* SkPdfApplicationDataDictionary::Private(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Private", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && true) || (doc == NULL && ret != NULL && ret->isReference())) return ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfApplicationDataDictionary::has_Private() const {
+ return get("Private", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfApplicationDataDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfApplicationDataDictionary_autogen.h
new file mode 100644
index 00000000000..8e32827d21e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfApplicationDataDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfApplicationDataDictionary_DEFINED
+#define SkPdfApplicationDataDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in an application data dictionary
+class SkPdfApplicationDataDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfDate LastModified(SkPdfNativeDoc* doc);
+ bool has_LastModified() const;
+ SkPdfNativeObject* Private(SkPdfNativeDoc* doc);
+ bool has_Private() const;
+};
+
+#endif // SkPdfApplicationDataDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfArtifactsDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfArtifactsDictionary_autogen.cpp
new file mode 100644
index 00000000000..e46b9931337
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfArtifactsDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfArtifactsDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfArtifactsDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfArtifactsDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkRect SkPdfArtifactsDictionary::BBox(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BBox", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isRectangle()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->rectangleValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkRect::MakeEmpty();
+}
+
+bool SkPdfArtifactsDictionary::has_BBox() const {
+ return get("BBox", "") != NULL;
+}
+
+SkPdfArray* SkPdfArtifactsDictionary::Attached(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Attached", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfArtifactsDictionary::has_Attached() const {
+ return get("Attached", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfArtifactsDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfArtifactsDictionary_autogen.h
new file mode 100644
index 00000000000..f91e6756b57
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfArtifactsDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfArtifactsDictionary_DEFINED
+#define SkPdfArtifactsDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Property list entries for artifacts
+class SkPdfArtifactsDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkRect BBox(SkPdfNativeDoc* doc);
+ bool has_BBox() const;
+ SkPdfArray* Attached(SkPdfNativeDoc* doc);
+ bool has_Attached() const;
+};
+
+#endif // SkPdfArtifactsDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAttributeObjectDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAttributeObjectDictionary_autogen.cpp
new file mode 100644
index 00000000000..740906c2917
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAttributeObjectDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfAttributeObjectDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfAttributeObjectDictionary::O(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("O", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfAttributeObjectDictionary::has_O() const {
+ return get("O", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAttributeObjectDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAttributeObjectDictionary_autogen.h
new file mode 100644
index 00000000000..ef8ce23aa2b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfAttributeObjectDictionary_autogen.h
@@ -0,0 +1,525 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfAttributeObjectDictionary_DEFINED
+#define SkPdfAttributeObjectDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entry common to all attribute objects
+class SkPdfAttributeObjectDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString O(SkPdfNativeDoc* doc);
+ bool has_O() const;
+};
+
+#endif // SkPdfAttributeObjectDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBeadDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBeadDictionary_autogen.cpp
new file mode 100644
index 00000000000..68c634948f6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBeadDictionary_autogen.cpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfBeadDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfBeadDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfBeadDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfBeadDictionary::T(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("T", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfBeadDictionary::has_T() const {
+ return get("T", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfBeadDictionary::N(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("N", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfBeadDictionary::has_N() const {
+ return get("N", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfBeadDictionary::V(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("V", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfBeadDictionary::has_V() const {
+ return get("V", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfBeadDictionary::P(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("P", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfBeadDictionary::has_P() const {
+ return get("P", "") != NULL;
+}
+
+SkRect SkPdfBeadDictionary::R(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("R", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isRectangle()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->rectangleValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkRect::MakeEmpty();
+}
+
+bool SkPdfBeadDictionary::has_R() const {
+ return get("R", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBeadDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBeadDictionary_autogen.h
new file mode 100644
index 00000000000..4103eff87f7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBeadDictionary_autogen.h
@@ -0,0 +1,535 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfBeadDictionary_DEFINED
+#define SkPdfBeadDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a bead dictionary
+class SkPdfBeadDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfBeadDictionary* asBeadDictionary() {return this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkPdfDictionary* T(SkPdfNativeDoc* doc);
+ bool has_T() const;
+ SkPdfDictionary* N(SkPdfNativeDoc* doc);
+ bool has_N() const;
+ SkPdfDictionary* V(SkPdfNativeDoc* doc);
+ bool has_V() const;
+ SkPdfDictionary* P(SkPdfNativeDoc* doc);
+ bool has_P() const;
+ SkRect R(SkPdfNativeDoc* doc);
+ bool has_R() const;
+};
+
+#endif // SkPdfBeadDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBlockLevelStructureElementsDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBlockLevelStructureElementsDictionary_autogen.cpp
new file mode 100644
index 00000000000..496d91dd433
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBlockLevelStructureElementsDictionary_autogen.cpp
@@ -0,0 +1,181 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfBlockLevelStructureElementsDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+double SkPdfBlockLevelStructureElementsDictionary::SpaceBefore(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SpaceBefore", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfBlockLevelStructureElementsDictionary::has_SpaceBefore() const {
+ return get("SpaceBefore", "") != NULL;
+}
+
+double SkPdfBlockLevelStructureElementsDictionary::SpaceAfter(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SpaceAfter", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfBlockLevelStructureElementsDictionary::has_SpaceAfter() const {
+ return get("SpaceAfter", "") != NULL;
+}
+
+double SkPdfBlockLevelStructureElementsDictionary::StartIndent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("StartIndent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfBlockLevelStructureElementsDictionary::has_StartIndent() const {
+ return get("StartIndent", "") != NULL;
+}
+
+double SkPdfBlockLevelStructureElementsDictionary::EndIndent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("EndIndent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfBlockLevelStructureElementsDictionary::has_EndIndent() const {
+ return get("EndIndent", "") != NULL;
+}
+
+double SkPdfBlockLevelStructureElementsDictionary::TextIndent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TextIndent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfBlockLevelStructureElementsDictionary::has_TextIndent() const {
+ return get("TextIndent", "") != NULL;
+}
+
+SkString SkPdfBlockLevelStructureElementsDictionary::TextAlign(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TextAlign", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfBlockLevelStructureElementsDictionary::has_TextAlign() const {
+ return get("TextAlign", "") != NULL;
+}
+
+SkRect SkPdfBlockLevelStructureElementsDictionary::BBox(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BBox", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isRectangle()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->rectangleValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkRect::MakeEmpty();
+}
+
+bool SkPdfBlockLevelStructureElementsDictionary::has_BBox() const {
+ return get("BBox", "") != NULL;
+}
+
+bool SkPdfBlockLevelStructureElementsDictionary::isWidthANumber(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Width", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isNumber();
+}
+
+double SkPdfBlockLevelStructureElementsDictionary::getWidthAsNumber(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Width", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfBlockLevelStructureElementsDictionary::isWidthAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Width", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfBlockLevelStructureElementsDictionary::getWidthAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Width", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfBlockLevelStructureElementsDictionary::has_Width() const {
+ return get("Width", "") != NULL;
+}
+
+bool SkPdfBlockLevelStructureElementsDictionary::isHeightANumber(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Height", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isNumber();
+}
+
+double SkPdfBlockLevelStructureElementsDictionary::getHeightAsNumber(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Height", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfBlockLevelStructureElementsDictionary::isHeightAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Height", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfBlockLevelStructureElementsDictionary::getHeightAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Height", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfBlockLevelStructureElementsDictionary::has_Height() const {
+ return get("Height", "") != NULL;
+}
+
+SkString SkPdfBlockLevelStructureElementsDictionary::BlockAlign(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BlockAlign", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfBlockLevelStructureElementsDictionary::has_BlockAlign() const {
+ return get("BlockAlign", "") != NULL;
+}
+
+SkString SkPdfBlockLevelStructureElementsDictionary::InlineAlign(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("InlineAlign", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfBlockLevelStructureElementsDictionary::has_InlineAlign() const {
+ return get("InlineAlign", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBlockLevelStructureElementsDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBlockLevelStructureElementsDictionary_autogen.h
new file mode 100644
index 00000000000..f320731c891
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBlockLevelStructureElementsDictionary_autogen.h
@@ -0,0 +1,555 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfBlockLevelStructureElementsDictionary_DEFINED
+#define SkPdfBlockLevelStructureElementsDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional standard layout attributes specific to block-level structure elements
+class SkPdfBlockLevelStructureElementsDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ double SpaceBefore(SkPdfNativeDoc* doc);
+ bool has_SpaceBefore() const;
+ double SpaceAfter(SkPdfNativeDoc* doc);
+ bool has_SpaceAfter() const;
+ double StartIndent(SkPdfNativeDoc* doc);
+ bool has_StartIndent() const;
+ double EndIndent(SkPdfNativeDoc* doc);
+ bool has_EndIndent() const;
+ double TextIndent(SkPdfNativeDoc* doc);
+ bool has_TextIndent() const;
+ SkString TextAlign(SkPdfNativeDoc* doc);
+ bool has_TextAlign() const;
+ SkRect BBox(SkPdfNativeDoc* doc);
+ bool has_BBox() const;
+
+ bool isWidthANumber(SkPdfNativeDoc* doc);
+ double getWidthAsNumber(SkPdfNativeDoc* doc);
+
+ bool isWidthAName(SkPdfNativeDoc* doc);
+ SkString getWidthAsName(SkPdfNativeDoc* doc);
+ bool has_Width() const;
+
+ bool isHeightANumber(SkPdfNativeDoc* doc);
+ double getHeightAsNumber(SkPdfNativeDoc* doc);
+
+ bool isHeightAName(SkPdfNativeDoc* doc);
+ SkString getHeightAsName(SkPdfNativeDoc* doc);
+ bool has_Height() const;
+ SkString BlockAlign(SkPdfNativeDoc* doc);
+ bool has_BlockAlign() const;
+ SkString InlineAlign(SkPdfNativeDoc* doc);
+ bool has_InlineAlign() const;
+};
+
+#endif // SkPdfBlockLevelStructureElementsDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBorderStyleDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBorderStyleDictionary_autogen.cpp
new file mode 100644
index 00000000000..728f88ba642
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBorderStyleDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfBorderStyleDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfBorderStyleDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfBorderStyleDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+double SkPdfBorderStyleDictionary::W(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("W", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfBorderStyleDictionary::has_W() const {
+ return get("W", "") != NULL;
+}
+
+SkString SkPdfBorderStyleDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfBorderStyleDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkPdfArray* SkPdfBorderStyleDictionary::D(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfBorderStyleDictionary::has_D() const {
+ return get("D", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBorderStyleDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBorderStyleDictionary_autogen.h
new file mode 100644
index 00000000000..d3a6e3383ee
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBorderStyleDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfBorderStyleDictionary_DEFINED
+#define SkPdfBorderStyleDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a border style dictionary
+class SkPdfBorderStyleDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ double W(SkPdfNativeDoc* doc);
+ bool has_W() const;
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkPdfArray* D(SkPdfNativeDoc* doc);
+ bool has_D() const;
+};
+
+#endif // SkPdfBorderStyleDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBoxColorInformationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBoxColorInformationDictionary_autogen.cpp
new file mode 100644
index 00000000000..d2970fd7aa3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBoxColorInformationDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfBoxColorInformationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfDictionary* SkPdfBoxColorInformationDictionary::CropBox(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CropBox", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfBoxColorInformationDictionary::has_CropBox() const {
+ return get("CropBox", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfBoxColorInformationDictionary::BleedBox(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BleedBox", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfBoxColorInformationDictionary::has_BleedBox() const {
+ return get("BleedBox", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfBoxColorInformationDictionary::TrimBox(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TrimBox", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfBoxColorInformationDictionary::has_TrimBox() const {
+ return get("TrimBox", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfBoxColorInformationDictionary::ArtBox(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ArtBox", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfBoxColorInformationDictionary::has_ArtBox() const {
+ return get("ArtBox", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBoxColorInformationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBoxColorInformationDictionary_autogen.h
new file mode 100644
index 00000000000..633dd5553d1
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBoxColorInformationDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfBoxColorInformationDictionary_DEFINED
+#define SkPdfBoxColorInformationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a box color information dictionary
+class SkPdfBoxColorInformationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfDictionary* CropBox(SkPdfNativeDoc* doc);
+ bool has_CropBox() const;
+ SkPdfDictionary* BleedBox(SkPdfNativeDoc* doc);
+ bool has_BleedBox() const;
+ SkPdfDictionary* TrimBox(SkPdfNativeDoc* doc);
+ bool has_TrimBox() const;
+ SkPdfDictionary* ArtBox(SkPdfNativeDoc* doc);
+ bool has_ArtBox() const;
+};
+
+#endif // SkPdfBoxColorInformationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBoxStyleDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBoxStyleDictionary_autogen.cpp
new file mode 100644
index 00000000000..9b44a4ef284
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBoxStyleDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfBoxStyleDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfBoxStyleDictionary::C(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("C", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfBoxStyleDictionary::has_C() const {
+ return get("C", "") != NULL;
+}
+
+double SkPdfBoxStyleDictionary::W(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("W", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfBoxStyleDictionary::has_W() const {
+ return get("W", "") != NULL;
+}
+
+SkString SkPdfBoxStyleDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfBoxStyleDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkPdfArray* SkPdfBoxStyleDictionary::D(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfBoxStyleDictionary::has_D() const {
+ return get("D", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBoxStyleDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBoxStyleDictionary_autogen.h
new file mode 100644
index 00000000000..e9b22cf34d4
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfBoxStyleDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfBoxStyleDictionary_DEFINED
+#define SkPdfBoxStyleDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a box style dictionary
+class SkPdfBoxStyleDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* C(SkPdfNativeDoc* doc);
+ bool has_C() const;
+ double W(SkPdfNativeDoc* doc);
+ bool has_W() const;
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkPdfArray* D(SkPdfNativeDoc* doc);
+ bool has_D() const;
+};
+
+#endif // SkPdfBoxStyleDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDFontDescriptorDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDFontDescriptorDictionary_autogen.cpp
new file mode 100644
index 00000000000..0d652e7e2e4
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDFontDescriptorDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfCIDFontDescriptorDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfDictionary* SkPdfCIDFontDescriptorDictionary::Style(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Style", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCIDFontDescriptorDictionary::has_Style() const {
+ return get("Style", "") != NULL;
+}
+
+SkString SkPdfCIDFontDescriptorDictionary::Lang(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Lang", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfCIDFontDescriptorDictionary::has_Lang() const {
+ return get("Lang", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfCIDFontDescriptorDictionary::FD(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FD", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCIDFontDescriptorDictionary::has_FD() const {
+ return get("FD", "") != NULL;
+}
+
+SkPdfStream* SkPdfCIDFontDescriptorDictionary::CIDSet(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CIDSet", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCIDFontDescriptorDictionary::has_CIDSet() const {
+ return get("CIDSet", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDFontDescriptorDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDFontDescriptorDictionary_autogen.h
new file mode 100644
index 00000000000..0885f81d434
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDFontDescriptorDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfCIDFontDescriptorDictionary_DEFINED
+#define SkPdfCIDFontDescriptorDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional font descriptor entries for CIDFonts
+class SkPdfCIDFontDescriptorDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfDictionary* Style(SkPdfNativeDoc* doc);
+ bool has_Style() const;
+ SkString Lang(SkPdfNativeDoc* doc);
+ bool has_Lang() const;
+ SkPdfDictionary* FD(SkPdfNativeDoc* doc);
+ bool has_FD() const;
+ SkPdfStream* CIDSet(SkPdfNativeDoc* doc);
+ bool has_CIDSet() const;
+};
+
+#endif // SkPdfCIDFontDescriptorDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDFontDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDFontDictionary_autogen.cpp
new file mode 100644
index 00000000000..2b25099d31d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDFontDictionary_autogen.cpp
@@ -0,0 +1,149 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfCIDFontDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfCIDFontDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfCIDFontDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfCIDFontDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfCIDFontDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfCIDFontDictionary::BaseFont(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BaseFont", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfCIDFontDictionary::has_BaseFont() const {
+ return get("BaseFont", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfCIDFontDictionary::CIDSystemInfo(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CIDSystemInfo", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfCIDFontDictionary::has_CIDSystemInfo() const {
+ return get("CIDSystemInfo", "") != NULL;
+}
+
+SkPdfFontDescriptorDictionary* SkPdfCIDFontDictionary::FontDescriptor(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FontDescriptor", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary() && ((SkPdfFontDescriptorDictionary*)ret)->valid()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfFontDescriptorDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCIDFontDictionary::has_FontDescriptor() const {
+ return get("FontDescriptor", "") != NULL;
+}
+
+int64_t SkPdfCIDFontDictionary::DW(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DW", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfCIDFontDictionary::has_DW() const {
+ return get("DW", "") != NULL;
+}
+
+SkPdfArray* SkPdfCIDFontDictionary::W(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("W", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCIDFontDictionary::has_W() const {
+ return get("W", "") != NULL;
+}
+
+SkPdfArray* SkPdfCIDFontDictionary::DW2(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DW2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCIDFontDictionary::has_DW2() const {
+ return get("DW2", "") != NULL;
+}
+
+SkPdfArray* SkPdfCIDFontDictionary::W2(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("W2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCIDFontDictionary::has_W2() const {
+ return get("W2", "") != NULL;
+}
+
+bool SkPdfCIDFontDictionary::isCIDToGIDMapAStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CIDToGIDMap", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfCIDFontDictionary::getCIDToGIDMapAsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CIDToGIDMap", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCIDFontDictionary::isCIDToGIDMapAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CIDToGIDMap", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfCIDFontDictionary::getCIDToGIDMapAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CIDToGIDMap", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfCIDFontDictionary::has_CIDToGIDMap() const {
+ return get("CIDToGIDMap", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDFontDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDFontDictionary_autogen.h
new file mode 100644
index 00000000000..028cbf0b539
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDFontDictionary_autogen.h
@@ -0,0 +1,548 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfCIDFontDictionary_DEFINED
+#define SkPdfCIDFontDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a CIDFont dictionary
+class SkPdfCIDFontDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString BaseFont(SkPdfNativeDoc* doc);
+ bool has_BaseFont() const;
+ SkPdfDictionary* CIDSystemInfo(SkPdfNativeDoc* doc);
+ bool has_CIDSystemInfo() const;
+ SkPdfFontDescriptorDictionary* FontDescriptor(SkPdfNativeDoc* doc);
+ bool has_FontDescriptor() const;
+ int64_t DW(SkPdfNativeDoc* doc);
+ bool has_DW() const;
+ SkPdfArray* W(SkPdfNativeDoc* doc);
+ bool has_W() const;
+ SkPdfArray* DW2(SkPdfNativeDoc* doc);
+ bool has_DW2() const;
+ SkPdfArray* W2(SkPdfNativeDoc* doc);
+ bool has_W2() const;
+
+ bool isCIDToGIDMapAStream(SkPdfNativeDoc* doc);
+ SkPdfStream* getCIDToGIDMapAsStream(SkPdfNativeDoc* doc);
+
+ bool isCIDToGIDMapAName(SkPdfNativeDoc* doc);
+ SkString getCIDToGIDMapAsName(SkPdfNativeDoc* doc);
+ bool has_CIDToGIDMap() const;
+};
+
+#endif // SkPdfCIDFontDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDSystemInfoDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDSystemInfoDictionary_autogen.cpp
new file mode 100644
index 00000000000..7a8e6209c77
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDSystemInfoDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfCIDSystemInfoDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfCIDSystemInfoDictionary::Registry(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Registry", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfCIDSystemInfoDictionary::has_Registry() const {
+ return get("Registry", "") != NULL;
+}
+
+SkString SkPdfCIDSystemInfoDictionary::Ordering(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Ordering", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfCIDSystemInfoDictionary::has_Ordering() const {
+ return get("Ordering", "") != NULL;
+}
+
+int64_t SkPdfCIDSystemInfoDictionary::Supplement(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Supplement", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfCIDSystemInfoDictionary::has_Supplement() const {
+ return get("Supplement", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDSystemInfoDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDSystemInfoDictionary_autogen.h
new file mode 100644
index 00000000000..e757bda42fe
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCIDSystemInfoDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfCIDSystemInfoDictionary_DEFINED
+#define SkPdfCIDSystemInfoDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a CIDSystemInfo dictionary
+class SkPdfCIDSystemInfoDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Registry(SkPdfNativeDoc* doc);
+ bool has_Registry() const;
+ SkString Ordering(SkPdfNativeDoc* doc);
+ bool has_Ordering() const;
+ int64_t Supplement(SkPdfNativeDoc* doc);
+ bool has_Supplement() const;
+};
+
+#endif // SkPdfCIDSystemInfoDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCMapDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCMapDictionary_autogen.cpp
new file mode 100644
index 00000000000..b7ca8660e27
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCMapDictionary_autogen.cpp
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfCMapDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfCMapDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfCMapDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfCMapDictionary::CMapName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CMapName", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfCMapDictionary::has_CMapName() const {
+ return get("CMapName", "") != NULL;
+}
+
+bool SkPdfCMapDictionary::isCIDSystemInfoADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CIDSystemInfo", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfCMapDictionary::getCIDSystemInfoAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CIDSystemInfo", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfCMapDictionary::isCIDSystemInfoAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CIDSystemInfo", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfCMapDictionary::getCIDSystemInfoAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CIDSystemInfo", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfCMapDictionary::has_CIDSystemInfo() const {
+ return get("CIDSystemInfo", "") != NULL;
+}
+
+int64_t SkPdfCMapDictionary::WMode(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("WMode", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfCMapDictionary::has_WMode() const {
+ return get("WMode", "") != NULL;
+}
+
+bool SkPdfCMapDictionary::isUseCMapAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("UseCMap", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfCMapDictionary::getUseCMapAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("UseCMap", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfCMapDictionary::isUseCMapAStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("UseCMap", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfCMapDictionary::getUseCMapAsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("UseCMap", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCMapDictionary::has_UseCMap() const {
+ return get("UseCMap", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCMapDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCMapDictionary_autogen.h
new file mode 100644
index 00000000000..88f89c24a69
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCMapDictionary_autogen.h
@@ -0,0 +1,543 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfCMapDictionary_DEFINED
+#define SkPdfCMapDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries in a CMap dictionary
+class SkPdfCMapDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfCMapDictionary* asCMapDictionary() {return this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString CMapName(SkPdfNativeDoc* doc);
+ bool has_CMapName() const;
+
+ bool isCIDSystemInfoADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getCIDSystemInfoAsDictionary(SkPdfNativeDoc* doc);
+
+ bool isCIDSystemInfoAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getCIDSystemInfoAsArray(SkPdfNativeDoc* doc);
+ bool has_CIDSystemInfo() const;
+ int64_t WMode(SkPdfNativeDoc* doc);
+ bool has_WMode() const;
+
+ bool isUseCMapAName(SkPdfNativeDoc* doc);
+ SkString getUseCMapAsName(SkPdfNativeDoc* doc);
+
+ bool isUseCMapAStream(SkPdfNativeDoc* doc);
+ SkPdfStream* getUseCMapAsStream(SkPdfNativeDoc* doc);
+ bool has_UseCMap() const;
+};
+
+#endif // SkPdfCMapDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCalgrayColorSpaceDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCalgrayColorSpaceDictionary_autogen.cpp
new file mode 100644
index 00000000000..e8c28a9f899
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCalgrayColorSpaceDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfCalgrayColorSpaceDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfCalgrayColorSpaceDictionary::WhitePoint(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("WhitePoint", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfCalgrayColorSpaceDictionary::has_WhitePoint() const {
+ return get("WhitePoint", "") != NULL;
+}
+
+SkPdfArray* SkPdfCalgrayColorSpaceDictionary::BlackPoint(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BlackPoint", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCalgrayColorSpaceDictionary::has_BlackPoint() const {
+ return get("BlackPoint", "") != NULL;
+}
+
+double SkPdfCalgrayColorSpaceDictionary::Gamma(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Gamma", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfCalgrayColorSpaceDictionary::has_Gamma() const {
+ return get("Gamma", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCalgrayColorSpaceDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCalgrayColorSpaceDictionary_autogen.h
new file mode 100644
index 00000000000..37c2b67b609
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCalgrayColorSpaceDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfCalgrayColorSpaceDictionary_DEFINED
+#define SkPdfCalgrayColorSpaceDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a CalGray color space dictionary
+class SkPdfCalgrayColorSpaceDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* WhitePoint(SkPdfNativeDoc* doc);
+ bool has_WhitePoint() const;
+ SkPdfArray* BlackPoint(SkPdfNativeDoc* doc);
+ bool has_BlackPoint() const;
+ double Gamma(SkPdfNativeDoc* doc);
+ bool has_Gamma() const;
+};
+
+#endif // SkPdfCalgrayColorSpaceDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCalrgbColorSpaceDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCalrgbColorSpaceDictionary_autogen.cpp
new file mode 100644
index 00000000000..85834695661
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCalrgbColorSpaceDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfCalrgbColorSpaceDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfCalrgbColorSpaceDictionary::WhitePoint(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("WhitePoint", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfCalrgbColorSpaceDictionary::has_WhitePoint() const {
+ return get("WhitePoint", "") != NULL;
+}
+
+SkPdfArray* SkPdfCalrgbColorSpaceDictionary::BlackPoint(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BlackPoint", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCalrgbColorSpaceDictionary::has_BlackPoint() const {
+ return get("BlackPoint", "") != NULL;
+}
+
+SkPdfArray* SkPdfCalrgbColorSpaceDictionary::Gamma(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Gamma", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCalrgbColorSpaceDictionary::has_Gamma() const {
+ return get("Gamma", "") != NULL;
+}
+
+SkPdfArray* SkPdfCalrgbColorSpaceDictionary::Matrix(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Matrix", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCalrgbColorSpaceDictionary::has_Matrix() const {
+ return get("Matrix", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCalrgbColorSpaceDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCalrgbColorSpaceDictionary_autogen.h
new file mode 100644
index 00000000000..57d72cdd106
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCalrgbColorSpaceDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfCalrgbColorSpaceDictionary_DEFINED
+#define SkPdfCalrgbColorSpaceDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a CalRGB color space dictionary
+class SkPdfCalrgbColorSpaceDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* WhitePoint(SkPdfNativeDoc* doc);
+ bool has_WhitePoint() const;
+ SkPdfArray* BlackPoint(SkPdfNativeDoc* doc);
+ bool has_BlackPoint() const;
+ SkPdfArray* Gamma(SkPdfNativeDoc* doc);
+ bool has_Gamma() const;
+ SkPdfArray* Matrix(SkPdfNativeDoc* doc);
+ bool has_Matrix() const;
+};
+
+#endif // SkPdfCalrgbColorSpaceDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCatalogDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCatalogDictionary_autogen.cpp
new file mode 100644
index 00000000000..d2261b9d053
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCatalogDictionary_autogen.cpp
@@ -0,0 +1,301 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfCatalogDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfCatalogDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfCatalogDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfCatalogDictionary::Version(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Version", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfCatalogDictionary::has_Version() const {
+ return get("Version", "") != NULL;
+}
+
+SkPdfPageTreeNodeDictionary* SkPdfCatalogDictionary::Pages(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Pages", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary() && ((SkPdfPageTreeNodeDictionary*)ret)->valid()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfPageTreeNodeDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCatalogDictionary::has_Pages() const {
+ return get("Pages", "") != NULL;
+}
+
+bool SkPdfCatalogDictionary::isPageLabelsANumber(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("PageLabels", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isNumber();
+}
+
+double SkPdfCatalogDictionary::getPageLabelsAsNumber(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("PageLabels", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfCatalogDictionary::isPageLabelsATree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("PageLabels", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && false;
+}
+
+SkPdfTree SkPdfCatalogDictionary::getPageLabelsAsTree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("PageLabels", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->treeValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfTree();
+}
+
+bool SkPdfCatalogDictionary::has_PageLabels() const {
+ return get("PageLabels", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfCatalogDictionary::Names(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Names", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCatalogDictionary::has_Names() const {
+ return get("Names", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfCatalogDictionary::Dests(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dests", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCatalogDictionary::has_Dests() const {
+ return get("Dests", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfCatalogDictionary::ViewerPreferences(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ViewerPreferences", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCatalogDictionary::has_ViewerPreferences() const {
+ return get("ViewerPreferences", "") != NULL;
+}
+
+SkString SkPdfCatalogDictionary::PageLayout(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("PageLayout", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfCatalogDictionary::has_PageLayout() const {
+ return get("PageLayout", "") != NULL;
+}
+
+SkString SkPdfCatalogDictionary::PageMode(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("PageMode", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfCatalogDictionary::has_PageMode() const {
+ return get("PageMode", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfCatalogDictionary::Outlines(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Outlines", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCatalogDictionary::has_Outlines() const {
+ return get("Outlines", "") != NULL;
+}
+
+SkPdfArray* SkPdfCatalogDictionary::Threads(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Threads", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCatalogDictionary::has_Threads() const {
+ return get("Threads", "") != NULL;
+}
+
+bool SkPdfCatalogDictionary::isOpenActionAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("OpenAction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfCatalogDictionary::getOpenActionAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("OpenAction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCatalogDictionary::isOpenActionADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("OpenAction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfCatalogDictionary::getOpenActionAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("OpenAction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCatalogDictionary::has_OpenAction() const {
+ return get("OpenAction", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfCatalogDictionary::AA(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AA", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCatalogDictionary::has_AA() const {
+ return get("AA", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfCatalogDictionary::URI(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("URI", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCatalogDictionary::has_URI() const {
+ return get("URI", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfCatalogDictionary::AcroForm(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AcroForm", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCatalogDictionary::has_AcroForm() const {
+ return get("AcroForm", "") != NULL;
+}
+
+SkPdfStream* SkPdfCatalogDictionary::Metadata(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Metadata", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCatalogDictionary::has_Metadata() const {
+ return get("Metadata", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfCatalogDictionary::StructTreeRoot(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("StructTreeRoot", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCatalogDictionary::has_StructTreeRoot() const {
+ return get("StructTreeRoot", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfCatalogDictionary::MarkInfo(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("MarkInfo", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCatalogDictionary::has_MarkInfo() const {
+ return get("MarkInfo", "") != NULL;
+}
+
+SkString SkPdfCatalogDictionary::Lang(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Lang", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfCatalogDictionary::has_Lang() const {
+ return get("Lang", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfCatalogDictionary::SpiderInfo(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SpiderInfo", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCatalogDictionary::has_SpiderInfo() const {
+ return get("SpiderInfo", "") != NULL;
+}
+
+SkPdfArray* SkPdfCatalogDictionary::OutputIntents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("OutputIntents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfCatalogDictionary::has_OutputIntents() const {
+ return get("OutputIntents", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCatalogDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCatalogDictionary_autogen.h
new file mode 100644
index 00000000000..6f7e07dcfc2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCatalogDictionary_autogen.h
@@ -0,0 +1,575 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfCatalogDictionary_DEFINED
+#define SkPdfCatalogDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in the catalog dictionary
+class SkPdfCatalogDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfCatalogDictionary* asCatalogDictionary() {return this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString Version(SkPdfNativeDoc* doc);
+ bool has_Version() const;
+ SkPdfPageTreeNodeDictionary* Pages(SkPdfNativeDoc* doc);
+ bool has_Pages() const;
+
+ bool isPageLabelsANumber(SkPdfNativeDoc* doc);
+ double getPageLabelsAsNumber(SkPdfNativeDoc* doc);
+
+ bool isPageLabelsATree(SkPdfNativeDoc* doc);
+ SkPdfTree getPageLabelsAsTree(SkPdfNativeDoc* doc);
+ bool has_PageLabels() const;
+ SkPdfDictionary* Names(SkPdfNativeDoc* doc);
+ bool has_Names() const;
+ SkPdfDictionary* Dests(SkPdfNativeDoc* doc);
+ bool has_Dests() const;
+ SkPdfDictionary* ViewerPreferences(SkPdfNativeDoc* doc);
+ bool has_ViewerPreferences() const;
+ SkString PageLayout(SkPdfNativeDoc* doc);
+ bool has_PageLayout() const;
+ SkString PageMode(SkPdfNativeDoc* doc);
+ bool has_PageMode() const;
+ SkPdfDictionary* Outlines(SkPdfNativeDoc* doc);
+ bool has_Outlines() const;
+ SkPdfArray* Threads(SkPdfNativeDoc* doc);
+ bool has_Threads() const;
+
+ bool isOpenActionAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getOpenActionAsArray(SkPdfNativeDoc* doc);
+
+ bool isOpenActionADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getOpenActionAsDictionary(SkPdfNativeDoc* doc);
+ bool has_OpenAction() const;
+ SkPdfDictionary* AA(SkPdfNativeDoc* doc);
+ bool has_AA() const;
+ SkPdfDictionary* URI(SkPdfNativeDoc* doc);
+ bool has_URI() const;
+ SkPdfDictionary* AcroForm(SkPdfNativeDoc* doc);
+ bool has_AcroForm() const;
+ SkPdfStream* Metadata(SkPdfNativeDoc* doc);
+ bool has_Metadata() const;
+ SkPdfDictionary* StructTreeRoot(SkPdfNativeDoc* doc);
+ bool has_StructTreeRoot() const;
+ SkPdfDictionary* MarkInfo(SkPdfNativeDoc* doc);
+ bool has_MarkInfo() const;
+ SkString Lang(SkPdfNativeDoc* doc);
+ bool has_Lang() const;
+ SkPdfDictionary* SpiderInfo(SkPdfNativeDoc* doc);
+ bool has_SpiderInfo() const;
+ SkPdfArray* OutputIntents(SkPdfNativeDoc* doc);
+ bool has_OutputIntents() const;
+};
+
+#endif // SkPdfCatalogDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCcittfaxdecodeFilterDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCcittfaxdecodeFilterDictionary_autogen.cpp
new file mode 100644
index 00000000000..14a742f4731
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCcittfaxdecodeFilterDictionary_autogen.cpp
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfCcittfaxdecodeFilterDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfCcittfaxdecodeFilterDictionary::K(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("K", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfCcittfaxdecodeFilterDictionary::has_K() const {
+ return get("K", "") != NULL;
+}
+
+bool SkPdfCcittfaxdecodeFilterDictionary::EndOfLine(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("EndOfLine", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfCcittfaxdecodeFilterDictionary::has_EndOfLine() const {
+ return get("EndOfLine", "") != NULL;
+}
+
+bool SkPdfCcittfaxdecodeFilterDictionary::EncodedByteAlign(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("EncodedByteAlign", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfCcittfaxdecodeFilterDictionary::has_EncodedByteAlign() const {
+ return get("EncodedByteAlign", "") != NULL;
+}
+
+int64_t SkPdfCcittfaxdecodeFilterDictionary::Columns(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Columns", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfCcittfaxdecodeFilterDictionary::has_Columns() const {
+ return get("Columns", "") != NULL;
+}
+
+int64_t SkPdfCcittfaxdecodeFilterDictionary::Rows(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Rows", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfCcittfaxdecodeFilterDictionary::has_Rows() const {
+ return get("Rows", "") != NULL;
+}
+
+bool SkPdfCcittfaxdecodeFilterDictionary::EndOfBlock(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("EndOfBlock", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfCcittfaxdecodeFilterDictionary::has_EndOfBlock() const {
+ return get("EndOfBlock", "") != NULL;
+}
+
+bool SkPdfCcittfaxdecodeFilterDictionary::BlackIs1(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BlackIs1", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfCcittfaxdecodeFilterDictionary::has_BlackIs1() const {
+ return get("BlackIs1", "") != NULL;
+}
+
+int64_t SkPdfCcittfaxdecodeFilterDictionary::DamagedRowsBeforeError(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DamagedRowsBeforeError", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfCcittfaxdecodeFilterDictionary::has_DamagedRowsBeforeError() const {
+ return get("DamagedRowsBeforeError", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCcittfaxdecodeFilterDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCcittfaxdecodeFilterDictionary_autogen.h
new file mode 100644
index 00000000000..c0e8d815036
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCcittfaxdecodeFilterDictionary_autogen.h
@@ -0,0 +1,539 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfCcittfaxdecodeFilterDictionary_DEFINED
+#define SkPdfCcittfaxdecodeFilterDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Optional parameters for the CCITTFaxDecode filter
+class SkPdfCcittfaxdecodeFilterDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t K(SkPdfNativeDoc* doc);
+ bool has_K() const;
+ bool EndOfLine(SkPdfNativeDoc* doc);
+ bool has_EndOfLine() const;
+ bool EncodedByteAlign(SkPdfNativeDoc* doc);
+ bool has_EncodedByteAlign() const;
+ int64_t Columns(SkPdfNativeDoc* doc);
+ bool has_Columns() const;
+ int64_t Rows(SkPdfNativeDoc* doc);
+ bool has_Rows() const;
+ bool EndOfBlock(SkPdfNativeDoc* doc);
+ bool has_EndOfBlock() const;
+ bool BlackIs1(SkPdfNativeDoc* doc);
+ bool has_BlackIs1() const;
+ int64_t DamagedRowsBeforeError(SkPdfNativeDoc* doc);
+ bool has_DamagedRowsBeforeError() const;
+};
+
+#endif // SkPdfCcittfaxdecodeFilterDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCheckboxFieldDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCheckboxFieldDictionary_autogen.cpp
new file mode 100644
index 00000000000..94bbfd10223
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCheckboxFieldDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfCheckboxFieldDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfCheckboxFieldDictionary::Opt(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Opt", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfCheckboxFieldDictionary::has_Opt() const {
+ return get("Opt", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCheckboxFieldDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCheckboxFieldDictionary_autogen.h
new file mode 100644
index 00000000000..40544ee26ba
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfCheckboxFieldDictionary_autogen.h
@@ -0,0 +1,525 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfCheckboxFieldDictionary_DEFINED
+#define SkPdfCheckboxFieldDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entry specific to a checkbox field
+class SkPdfCheckboxFieldDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Opt(SkPdfNativeDoc* doc);
+ bool has_Opt() const;
+};
+
+#endif // SkPdfCheckboxFieldDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfChoiceFieldDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfChoiceFieldDictionary_autogen.cpp
new file mode 100644
index 00000000000..7b940eed686
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfChoiceFieldDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfChoiceFieldDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfChoiceFieldDictionary::Opt(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Opt", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfChoiceFieldDictionary::has_Opt() const {
+ return get("Opt", "") != NULL;
+}
+
+int64_t SkPdfChoiceFieldDictionary::TI(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TI", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfChoiceFieldDictionary::has_TI() const {
+ return get("TI", "") != NULL;
+}
+
+SkPdfArray* SkPdfChoiceFieldDictionary::I(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("I", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfChoiceFieldDictionary::has_I() const {
+ return get("I", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfChoiceFieldDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfChoiceFieldDictionary_autogen.h
new file mode 100644
index 00000000000..24c269a90f5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfChoiceFieldDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfChoiceFieldDictionary_DEFINED
+#define SkPdfChoiceFieldDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a choice field
+class SkPdfChoiceFieldDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* Opt(SkPdfNativeDoc* doc);
+ bool has_Opt() const;
+ int64_t TI(SkPdfNativeDoc* doc);
+ bool has_TI() const;
+ SkPdfArray* I(SkPdfNativeDoc* doc);
+ bool has_I() const;
+};
+
+#endif // SkPdfChoiceFieldDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfComponentsWithMetadataDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfComponentsWithMetadataDictionary_autogen.cpp
new file mode 100644
index 00000000000..e41c666c3d1
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfComponentsWithMetadataDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfComponentsWithMetadataDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfStream* SkPdfComponentsWithMetadataDictionary::Metadata(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Metadata", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfComponentsWithMetadataDictionary::has_Metadata() const {
+ return get("Metadata", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfComponentsWithMetadataDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfComponentsWithMetadataDictionary_autogen.h
new file mode 100644
index 00000000000..4eadaec0b92
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfComponentsWithMetadataDictionary_autogen.h
@@ -0,0 +1,525 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfComponentsWithMetadataDictionary_DEFINED
+#define SkPdfComponentsWithMetadataDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entry for components having metadata
+class SkPdfComponentsWithMetadataDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfStream* Metadata(SkPdfNativeDoc* doc);
+ bool has_Metadata() const;
+};
+
+#endif // SkPdfComponentsWithMetadataDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDctdecodeFilterDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDctdecodeFilterDictionary_autogen.cpp
new file mode 100644
index 00000000000..ffc9dd14dc0
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDctdecodeFilterDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfDctdecodeFilterDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfDctdecodeFilterDictionary::ColorTransform(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ColorTransform", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfDctdecodeFilterDictionary::has_ColorTransform() const {
+ return get("ColorTransform", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDctdecodeFilterDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDctdecodeFilterDictionary_autogen.h
new file mode 100644
index 00000000000..d7f6509886a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDctdecodeFilterDictionary_autogen.h
@@ -0,0 +1,525 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfDctdecodeFilterDictionary_DEFINED
+#define SkPdfDctdecodeFilterDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Optional parameter for the DCTDecode filter
+class SkPdfDctdecodeFilterDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t ColorTransform(SkPdfNativeDoc* doc);
+ bool has_ColorTransform() const;
+};
+
+#endif // SkPdfDctdecodeFilterDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDeviceNColorSpaceDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDeviceNColorSpaceDictionary_autogen.cpp
new file mode 100644
index 00000000000..6b1c421b63b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDeviceNColorSpaceDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfDeviceNColorSpaceDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfDictionary* SkPdfDeviceNColorSpaceDictionary::Colorants(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Colorants", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfDeviceNColorSpaceDictionary::has_Colorants() const {
+ return get("Colorants", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDeviceNColorSpaceDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDeviceNColorSpaceDictionary_autogen.h
new file mode 100644
index 00000000000..d48eebea92b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDeviceNColorSpaceDictionary_autogen.h
@@ -0,0 +1,525 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfDeviceNColorSpaceDictionary_DEFINED
+#define SkPdfDeviceNColorSpaceDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entry in a DeviceN color space attributes dictionary
+class SkPdfDeviceNColorSpaceDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfDictionary* Colorants(SkPdfNativeDoc* doc);
+ bool has_Colorants() const;
+};
+
+#endif // SkPdfDeviceNColorSpaceDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDictionary_autogen.cpp
new file mode 100644
index 00000000000..837a10dc793
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDictionary_autogen.cpp
@@ -0,0 +1,9 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDictionary_autogen.h
new file mode 100644
index 00000000000..022aff00e7d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfDictionary_DEFINED
+#define SkPdfDictionary_DEFINED
+
+#include "stddef.h"
+#include "SkPdfEnums_autogen.h"
+#include "SkPdfNYI.h"
+#include "SkPdfNativeObject.h"
+class SkPdfNativeDoc;
+
+class SkPdfDictionary : public SkPdfNativeObject {
+public:
+public:
+ SkPdfDictionary* asDictionary() {return this;}
+ const SkPdfDictionary* asDictionary() const {return this;}
+
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+public:
+ bool valid() const {return true;}
+};
+
+#endif // SkPdfDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDocumentCatalogActionsDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDocumentCatalogActionsDictionary_autogen.cpp
new file mode 100644
index 00000000000..cedc91cb560
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDocumentCatalogActionsDictionary_autogen.cpp
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfDocumentCatalogActionsDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfDictionary* SkPdfDocumentCatalogActionsDictionary::DC(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DC", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfDocumentCatalogActionsDictionary::has_DC() const {
+ return get("DC", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfDocumentCatalogActionsDictionary::WS(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("WS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfDocumentCatalogActionsDictionary::has_WS() const {
+ return get("WS", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfDocumentCatalogActionsDictionary::DS(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfDocumentCatalogActionsDictionary::has_DS() const {
+ return get("DS", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfDocumentCatalogActionsDictionary::WP(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("WP", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfDocumentCatalogActionsDictionary::has_WP() const {
+ return get("WP", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfDocumentCatalogActionsDictionary::DP(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DP", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfDocumentCatalogActionsDictionary::has_DP() const {
+ return get("DP", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDocumentCatalogActionsDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDocumentCatalogActionsDictionary_autogen.h
new file mode 100644
index 00000000000..5be9d76a682
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDocumentCatalogActionsDictionary_autogen.h
@@ -0,0 +1,533 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfDocumentCatalogActionsDictionary_DEFINED
+#define SkPdfDocumentCatalogActionsDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in the document catalog's additional-actions dictionary
+class SkPdfDocumentCatalogActionsDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfDictionary* DC(SkPdfNativeDoc* doc);
+ bool has_DC() const;
+ SkPdfDictionary* WS(SkPdfNativeDoc* doc);
+ bool has_WS() const;
+ SkPdfDictionary* DS(SkPdfNativeDoc* doc);
+ bool has_DS() const;
+ SkPdfDictionary* WP(SkPdfNativeDoc* doc);
+ bool has_WP() const;
+ SkPdfDictionary* DP(SkPdfNativeDoc* doc);
+ bool has_DP() const;
+};
+
+#endif // SkPdfDocumentCatalogActionsDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDocumentInformationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDocumentInformationDictionary_autogen.cpp
new file mode 100644
index 00000000000..99e27969edc
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDocumentInformationDictionary_autogen.cpp
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfDocumentInformationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfDocumentInformationDictionary::Title(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Title", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfDocumentInformationDictionary::has_Title() const {
+ return get("Title", "") != NULL;
+}
+
+SkString SkPdfDocumentInformationDictionary::Author(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Author", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfDocumentInformationDictionary::has_Author() const {
+ return get("Author", "") != NULL;
+}
+
+SkString SkPdfDocumentInformationDictionary::Subject(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subject", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfDocumentInformationDictionary::has_Subject() const {
+ return get("Subject", "") != NULL;
+}
+
+SkString SkPdfDocumentInformationDictionary::Keywords(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Keywords", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfDocumentInformationDictionary::has_Keywords() const {
+ return get("Keywords", "") != NULL;
+}
+
+SkString SkPdfDocumentInformationDictionary::Creator(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Creator", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfDocumentInformationDictionary::has_Creator() const {
+ return get("Creator", "") != NULL;
+}
+
+SkString SkPdfDocumentInformationDictionary::Producer(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Producer", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfDocumentInformationDictionary::has_Producer() const {
+ return get("Producer", "") != NULL;
+}
+
+SkPdfDate SkPdfDocumentInformationDictionary::CreationDate(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CreationDate", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDate()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->dateValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfDate();
+}
+
+bool SkPdfDocumentInformationDictionary::has_CreationDate() const {
+ return get("CreationDate", "") != NULL;
+}
+
+SkPdfDate SkPdfDocumentInformationDictionary::ModDate(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ModDate", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDate()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->dateValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfDate();
+}
+
+bool SkPdfDocumentInformationDictionary::has_ModDate() const {
+ return get("ModDate", "") != NULL;
+}
+
+SkString SkPdfDocumentInformationDictionary::Trapped(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Trapped", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfDocumentInformationDictionary::has_Trapped() const {
+ return get("Trapped", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDocumentInformationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDocumentInformationDictionary_autogen.h
new file mode 100644
index 00000000000..db05330e2ad
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfDocumentInformationDictionary_autogen.h
@@ -0,0 +1,541 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfDocumentInformationDictionary_DEFINED
+#define SkPdfDocumentInformationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in the document information dictionary
+class SkPdfDocumentInformationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Title(SkPdfNativeDoc* doc);
+ bool has_Title() const;
+ SkString Author(SkPdfNativeDoc* doc);
+ bool has_Author() const;
+ SkString Subject(SkPdfNativeDoc* doc);
+ bool has_Subject() const;
+ SkString Keywords(SkPdfNativeDoc* doc);
+ bool has_Keywords() const;
+ SkString Creator(SkPdfNativeDoc* doc);
+ bool has_Creator() const;
+ SkString Producer(SkPdfNativeDoc* doc);
+ bool has_Producer() const;
+ SkPdfDate CreationDate(SkPdfNativeDoc* doc);
+ bool has_CreationDate() const;
+ SkPdfDate ModDate(SkPdfNativeDoc* doc);
+ bool has_ModDate() const;
+ SkString Trapped(SkPdfNativeDoc* doc);
+ bool has_Trapped() const;
+};
+
+#endif // SkPdfDocumentInformationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFileParameterDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFileParameterDictionary_autogen.cpp
new file mode 100644
index 00000000000..de573b841d9
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFileParameterDictionary_autogen.cpp
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfEmbeddedFileParameterDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfEmbeddedFileParameterDictionary::Size(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Size", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfEmbeddedFileParameterDictionary::has_Size() const {
+ return get("Size", "") != NULL;
+}
+
+SkPdfDate SkPdfEmbeddedFileParameterDictionary::CreationDate(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CreationDate", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDate()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->dateValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfDate();
+}
+
+bool SkPdfEmbeddedFileParameterDictionary::has_CreationDate() const {
+ return get("CreationDate", "") != NULL;
+}
+
+SkPdfDate SkPdfEmbeddedFileParameterDictionary::ModDate(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ModDate", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDate()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->dateValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfDate();
+}
+
+bool SkPdfEmbeddedFileParameterDictionary::has_ModDate() const {
+ return get("ModDate", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfEmbeddedFileParameterDictionary::Mac(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Mac", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfEmbeddedFileParameterDictionary::has_Mac() const {
+ return get("Mac", "") != NULL;
+}
+
+SkString SkPdfEmbeddedFileParameterDictionary::CheckSum(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CheckSum", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfEmbeddedFileParameterDictionary::has_CheckSum() const {
+ return get("CheckSum", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFileParameterDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFileParameterDictionary_autogen.h
new file mode 100644
index 00000000000..5efd334dfa2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFileParameterDictionary_autogen.h
@@ -0,0 +1,533 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfEmbeddedFileParameterDictionary_DEFINED
+#define SkPdfEmbeddedFileParameterDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in an embedded file parameter dictionary
+class SkPdfEmbeddedFileParameterDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t Size(SkPdfNativeDoc* doc);
+ bool has_Size() const;
+ SkPdfDate CreationDate(SkPdfNativeDoc* doc);
+ bool has_CreationDate() const;
+ SkPdfDate ModDate(SkPdfNativeDoc* doc);
+ bool has_ModDate() const;
+ SkPdfDictionary* Mac(SkPdfNativeDoc* doc);
+ bool has_Mac() const;
+ SkString CheckSum(SkPdfNativeDoc* doc);
+ bool has_CheckSum() const;
+};
+
+#endif // SkPdfEmbeddedFileParameterDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFileStreamDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFileStreamDictionary_autogen.cpp
new file mode 100644
index 00000000000..91263ef8182
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFileStreamDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfEmbeddedFileStreamDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfEmbeddedFileStreamDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfEmbeddedFileStreamDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfEmbeddedFileStreamDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfEmbeddedFileStreamDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfEmbeddedFileStreamDictionary::Params(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Params", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfEmbeddedFileStreamDictionary::has_Params() const {
+ return get("Params", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFileStreamDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFileStreamDictionary_autogen.h
new file mode 100644
index 00000000000..05da2325948
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFileStreamDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfEmbeddedFileStreamDictionary_DEFINED
+#define SkPdfEmbeddedFileStreamDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries in an embedded file stream dictionary
+class SkPdfEmbeddedFileStreamDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkPdfDictionary* Params(SkPdfNativeDoc* doc);
+ bool has_Params() const;
+};
+
+#endif // SkPdfEmbeddedFileStreamDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFontStreamDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFontStreamDictionary_autogen.cpp
new file mode 100644
index 00000000000..bfa2c0f7170
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFontStreamDictionary_autogen.cpp
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfEmbeddedFontStreamDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfEmbeddedFontStreamDictionary::Length1(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Length1", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfEmbeddedFontStreamDictionary::has_Length1() const {
+ return get("Length1", "") != NULL;
+}
+
+int64_t SkPdfEmbeddedFontStreamDictionary::Length2(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Length2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfEmbeddedFontStreamDictionary::has_Length2() const {
+ return get("Length2", "") != NULL;
+}
+
+int64_t SkPdfEmbeddedFontStreamDictionary::Length3(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Length3", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfEmbeddedFontStreamDictionary::has_Length3() const {
+ return get("Length3", "") != NULL;
+}
+
+SkString SkPdfEmbeddedFontStreamDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfEmbeddedFontStreamDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkPdfStream* SkPdfEmbeddedFontStreamDictionary::Metadata(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Metadata", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfEmbeddedFontStreamDictionary::has_Metadata() const {
+ return get("Metadata", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFontStreamDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFontStreamDictionary_autogen.h
new file mode 100644
index 00000000000..58822dea3e7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEmbeddedFontStreamDictionary_autogen.h
@@ -0,0 +1,533 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfEmbeddedFontStreamDictionary_DEFINED
+#define SkPdfEmbeddedFontStreamDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries in an embedded font stream dictionary
+class SkPdfEmbeddedFontStreamDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t Length1(SkPdfNativeDoc* doc);
+ bool has_Length1() const;
+ int64_t Length2(SkPdfNativeDoc* doc);
+ bool has_Length2() const;
+ int64_t Length3(SkPdfNativeDoc* doc);
+ bool has_Length3() const;
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkPdfStream* Metadata(SkPdfNativeDoc* doc);
+ bool has_Metadata() const;
+};
+
+#endif // SkPdfEmbeddedFontStreamDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncodingDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncodingDictionary_autogen.cpp
new file mode 100644
index 00000000000..d1874089fae
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncodingDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfEncodingDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfEncodingDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfEncodingDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfEncodingDictionary::BaseEncoding(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BaseEncoding", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfEncodingDictionary::has_BaseEncoding() const {
+ return get("BaseEncoding", "") != NULL;
+}
+
+SkPdfArray* SkPdfEncodingDictionary::Differences(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Differences", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfEncodingDictionary::has_Differences() const {
+ return get("Differences", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncodingDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncodingDictionary_autogen.h
new file mode 100644
index 00000000000..807009ca9c1
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncodingDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfEncodingDictionary_DEFINED
+#define SkPdfEncodingDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in an encoding dictionary
+class SkPdfEncodingDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfEncodingDictionary* asEncodingDictionary() {return this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString BaseEncoding(SkPdfNativeDoc* doc);
+ bool has_BaseEncoding() const;
+ SkPdfArray* Differences(SkPdfNativeDoc* doc);
+ bool has_Differences() const;
+};
+
+#endif // SkPdfEncodingDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncryptedEmbeddedFileStreamDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncryptedEmbeddedFileStreamDictionary_autogen.cpp
new file mode 100644
index 00000000000..99c5dbbb01f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncryptedEmbeddedFileStreamDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfEncryptedEmbeddedFileStreamDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfEncryptedEmbeddedFileStreamDictionary::EncryptionRevision(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("EncryptionRevision", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfEncryptedEmbeddedFileStreamDictionary::has_EncryptionRevision() const {
+ return get("EncryptionRevision", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncryptedEmbeddedFileStreamDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncryptedEmbeddedFileStreamDictionary_autogen.h
new file mode 100644
index 00000000000..214c87afdb6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncryptedEmbeddedFileStreamDictionary_autogen.h
@@ -0,0 +1,525 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfEncryptedEmbeddedFileStreamDictionary_DEFINED
+#define SkPdfEncryptedEmbeddedFileStreamDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entry in an embedded file stream dictionary for an encrypted FDF file
+class SkPdfEncryptedEmbeddedFileStreamDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t EncryptionRevision(SkPdfNativeDoc* doc);
+ bool has_EncryptionRevision() const;
+};
+
+#endif // SkPdfEncryptedEmbeddedFileStreamDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncryptionCommonDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncryptionCommonDictionary_autogen.cpp
new file mode 100644
index 00000000000..e3cb001d507
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncryptionCommonDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfEncryptionCommonDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfEncryptionCommonDictionary::Filter(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Filter", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfEncryptionCommonDictionary::has_Filter() const {
+ return get("Filter", "") != NULL;
+}
+
+double SkPdfEncryptionCommonDictionary::V(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("V", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfEncryptionCommonDictionary::has_V() const {
+ return get("V", "") != NULL;
+}
+
+int64_t SkPdfEncryptionCommonDictionary::Length(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Length", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfEncryptionCommonDictionary::has_Length() const {
+ return get("Length", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncryptionCommonDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncryptionCommonDictionary_autogen.h
new file mode 100644
index 00000000000..330dd59ee8e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEncryptionCommonDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfEncryptionCommonDictionary_DEFINED
+#define SkPdfEncryptionCommonDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries common to all encryption dictionaries
+class SkPdfEncryptionCommonDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Filter(SkPdfNativeDoc* doc);
+ bool has_Filter() const;
+ double V(SkPdfNativeDoc* doc);
+ bool has_V() const;
+ int64_t Length(SkPdfNativeDoc* doc);
+ bool has_Length() const;
+};
+
+#endif // SkPdfEncryptionCommonDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEnums_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEnums_autogen.h
new file mode 100644
index 00000000000..fa2d095bb5b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfEnums_autogen.h
@@ -0,0 +1,358 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfEnums_DEFINED
+#define SkPdfEnums_DEFINED
+
+enum SkPdfNativeObjectType {
+ kNone_SkPdfNativeObjectType = 0,
+ kDictionary_SkPdfNativeObjectType,
+ kALinkAnnotationDictionary_SkPdfNativeObjectType,
+ kActionDictionary_SkPdfNativeObjectType,
+ kAlternateImageDictionary_SkPdfNativeObjectType,
+ kAnnotationActionsDictionary_SkPdfNativeObjectType,
+ kAnnotationDictionary_SkPdfNativeObjectType,
+ kAppearanceCharacteristicsDictionary_SkPdfNativeObjectType,
+ kAppearanceDictionary_SkPdfNativeObjectType,
+ kApplicationDataDictionary_SkPdfNativeObjectType,
+ kArtifactsDictionary_SkPdfNativeObjectType,
+ kAttributeObjectDictionary_SkPdfNativeObjectType,
+ kBeadDictionary_SkPdfNativeObjectType,
+ kBlockLevelStructureElementsDictionary_SkPdfNativeObjectType,
+ kBorderStyleDictionary_SkPdfNativeObjectType,
+ kBoxColorInformationDictionary_SkPdfNativeObjectType,
+ kBoxStyleDictionary_SkPdfNativeObjectType,
+ kCIDFontDescriptorDictionary_SkPdfNativeObjectType,
+ kCIDFontDictionary_SkPdfNativeObjectType,
+ kCIDSystemInfoDictionary_SkPdfNativeObjectType,
+ kCMapDictionary_SkPdfNativeObjectType,
+ kCalgrayColorSpaceDictionary_SkPdfNativeObjectType,
+ kCalrgbColorSpaceDictionary_SkPdfNativeObjectType,
+ kCatalogDictionary_SkPdfNativeObjectType,
+ kCcittfaxdecodeFilterDictionary_SkPdfNativeObjectType,
+ kCheckboxFieldDictionary_SkPdfNativeObjectType,
+ kChoiceFieldDictionary_SkPdfNativeObjectType,
+ kComponentsWithMetadataDictionary_SkPdfNativeObjectType,
+ kDctdecodeFilterDictionary_SkPdfNativeObjectType,
+ kDeviceNColorSpaceDictionary_SkPdfNativeObjectType,
+ kDocumentCatalogActionsDictionary_SkPdfNativeObjectType,
+ kDocumentInformationDictionary_SkPdfNativeObjectType,
+ kEmbeddedFileParameterDictionary_SkPdfNativeObjectType,
+ kEmbeddedFileStreamDictionary_SkPdfNativeObjectType,
+ kEmbeddedFontStreamDictionary_SkPdfNativeObjectType,
+ kEncodingDictionary_SkPdfNativeObjectType,
+ kEncryptedEmbeddedFileStreamDictionary_SkPdfNativeObjectType,
+ kEncryptionCommonDictionary_SkPdfNativeObjectType,
+ kFDFCatalogDictionary_SkPdfNativeObjectType,
+ kFDFDictionary_SkPdfNativeObjectType,
+ kFDFFieldDictionary_SkPdfNativeObjectType,
+ kFDFFileAnnotationDictionary_SkPdfNativeObjectType,
+ kFDFNamedPageReferenceDictionary_SkPdfNativeObjectType,
+ kFDFPageDictionary_SkPdfNativeObjectType,
+ kFDFTemplateDictionary_SkPdfNativeObjectType,
+ kFDFTrailerDictionary_SkPdfNativeObjectType,
+ kFieldDictionary_SkPdfNativeObjectType,
+ kFileAttachmentAnnotationDictionary_SkPdfNativeObjectType,
+ kFileSpecificationDictionary_SkPdfNativeObjectType,
+ kFileTrailerDictionary_SkPdfNativeObjectType,
+ kFontDescriptorDictionary_SkPdfNativeObjectType,
+ kFontDictionary_SkPdfNativeObjectType,
+ kType0FontDictionary_SkPdfNativeObjectType,
+ kType1FontDictionary_SkPdfNativeObjectType,
+ kMultiMasterFontDictionary_SkPdfNativeObjectType,
+ kTrueTypeFontDictionary_SkPdfNativeObjectType,
+ kType3FontDictionary_SkPdfNativeObjectType,
+ kType1FontDictionary__End_SkPdfNativeObjectType,
+ kFontDictionary__End_SkPdfNativeObjectType,
+ kFormFieldActionsDictionary_SkPdfNativeObjectType,
+ kFreeTextAnnotationDictionary_SkPdfNativeObjectType,
+ kFunctionCommonDictionary_SkPdfNativeObjectType,
+ kGoToActionDictionary_SkPdfNativeObjectType,
+ kGraphicsStateDictionary_SkPdfNativeObjectType,
+ kGroupAttributesDictionary_SkPdfNativeObjectType,
+ kHideActionDictionary_SkPdfNativeObjectType,
+ kIccProfileStreamDictionary_SkPdfNativeObjectType,
+ kIconFitDictionary_SkPdfNativeObjectType,
+ kImportDataActionDictionary_SkPdfNativeObjectType,
+ kInkAnnotationDictionary_SkPdfNativeObjectType,
+ kInlineLevelStructureElementsDictionary_SkPdfNativeObjectType,
+ kInteractiveFormDictionary_SkPdfNativeObjectType,
+ kJavascriptActionDictionary_SkPdfNativeObjectType,
+ kJavascriptDictionary_SkPdfNativeObjectType,
+ kJbig2DecodeFilterDictionary_SkPdfNativeObjectType,
+ kLabColorSpaceDictionary_SkPdfNativeObjectType,
+ kLaunchActionDictionary_SkPdfNativeObjectType,
+ kLineAnnotationDictionary_SkPdfNativeObjectType,
+ kListAttributeDictionary_SkPdfNativeObjectType,
+ kLzwdecodeAndFlatedecodeFiltersDictionary_SkPdfNativeObjectType,
+ kMacOsFileInformationDictionary_SkPdfNativeObjectType,
+ kMarkInformationDictionary_SkPdfNativeObjectType,
+ kMarkedContentReferenceDictionary_SkPdfNativeObjectType,
+ kMarkupAnnotationsDictionary_SkPdfNativeObjectType,
+ kMetadataStreamDictionary_SkPdfNativeObjectType,
+ kMovieActionDictionary_SkPdfNativeObjectType,
+ kMovieActivationDictionary_SkPdfNativeObjectType,
+ kMovieAnnotationDictionary_SkPdfNativeObjectType,
+ kMovieDictionary_SkPdfNativeObjectType,
+ kNameDictionary_SkPdfNativeObjectType,
+ kNameTreeNodeDictionary_SkPdfNativeObjectType,
+ kNamedActionsDictionary_SkPdfNativeObjectType,
+ kNumberTreeNodeDictionary_SkPdfNativeObjectType,
+ kObjectReferenceDictionary_SkPdfNativeObjectType,
+ kOpiVersionDictionary_SkPdfNativeObjectType,
+ kOutlineDictionary_SkPdfNativeObjectType,
+ kOutlineItemDictionary_SkPdfNativeObjectType,
+ kPDF_XOutputIntentDictionary_SkPdfNativeObjectType,
+ kPSXobjectDictionary_SkPdfNativeObjectType,
+ kPageLabelDictionary_SkPdfNativeObjectType,
+ kPageObjectActionsDictionary_SkPdfNativeObjectType,
+ kPageObjectDictionary_SkPdfNativeObjectType,
+ kPagePieceDictionary_SkPdfNativeObjectType,
+ kPageTreeNodeDictionary_SkPdfNativeObjectType,
+ kPopUpAnnotationDictionary_SkPdfNativeObjectType,
+ kPrinterMarkAnnotationDictionary_SkPdfNativeObjectType,
+ kPrinterMarkFormDictionary_SkPdfNativeObjectType,
+ kRadioButtonFieldDictionary_SkPdfNativeObjectType,
+ kReferenceDictionary_SkPdfNativeObjectType,
+ kRemoteGoToActionDictionary_SkPdfNativeObjectType,
+ kResetFormActionDictionary_SkPdfNativeObjectType,
+ kResourceDictionary_SkPdfNativeObjectType,
+ kRubberStampAnnotationDictionary_SkPdfNativeObjectType,
+ kSeparationDictionary_SkPdfNativeObjectType,
+ kShadingDictionary_SkPdfNativeObjectType,
+ kType1ShadingDictionary_SkPdfNativeObjectType,
+ kType2ShadingDictionary_SkPdfNativeObjectType,
+ kType3ShadingDictionary_SkPdfNativeObjectType,
+ kType4ShadingDictionary_SkPdfNativeObjectType,
+ kType5ShadingDictionary_SkPdfNativeObjectType,
+ kType6ShadingDictionary_SkPdfNativeObjectType,
+ kShadingDictionary__End_SkPdfNativeObjectType,
+ kSignatureDictionary_SkPdfNativeObjectType,
+ kSoftMaskDictionary_SkPdfNativeObjectType,
+ kSoundActionDictionary_SkPdfNativeObjectType,
+ kSoundAnnotationDictionary_SkPdfNativeObjectType,
+ kSoundObjectDictionary_SkPdfNativeObjectType,
+ kSourceInformationDictionary_SkPdfNativeObjectType,
+ kSquareOrCircleAnnotation_SkPdfNativeObjectType,
+ kStandardSecurityHandlerDictionary_SkPdfNativeObjectType,
+ kStandardStructureDictionary_SkPdfNativeObjectType,
+ kStreamCommonDictionary_SkPdfNativeObjectType,
+ kStructureElementAccessDictionary_SkPdfNativeObjectType,
+ kStructureElementDictionary_SkPdfNativeObjectType,
+ kStructureTreeRootDictionary_SkPdfNativeObjectType,
+ kSubmitFormActionDictionary_SkPdfNativeObjectType,
+ kTableAttributesDictionary_SkPdfNativeObjectType,
+ kTextAnnotationDictionary_SkPdfNativeObjectType,
+ kTextFieldDictionary_SkPdfNativeObjectType,
+ kThreadActionDictionary_SkPdfNativeObjectType,
+ kThreadDictionary_SkPdfNativeObjectType,
+ kTransitionDictionary_SkPdfNativeObjectType,
+ kTransparencyGroupDictionary_SkPdfNativeObjectType,
+ kTrapNetworkAnnotationDictionary_SkPdfNativeObjectType,
+ kTrapNetworkAppearanceStreamDictionary_SkPdfNativeObjectType,
+ kType0FunctionDictionary_SkPdfNativeObjectType,
+ kType10HalftoneDictionary_SkPdfNativeObjectType,
+ kType16HalftoneDictionary_SkPdfNativeObjectType,
+ kType1HalftoneDictionary_SkPdfNativeObjectType,
+ kType1PatternDictionary_SkPdfNativeObjectType,
+ kType2FunctionDictionary_SkPdfNativeObjectType,
+ kType2PatternDictionary_SkPdfNativeObjectType,
+ kType3FunctionDictionary_SkPdfNativeObjectType,
+ kType5HalftoneDictionary_SkPdfNativeObjectType,
+ kType6HalftoneDictionary_SkPdfNativeObjectType,
+ kURIActionDictionary_SkPdfNativeObjectType,
+ kURIDictionary_SkPdfNativeObjectType,
+ kURLAliasDictionary_SkPdfNativeObjectType,
+ kVariableTextFieldDictionary_SkPdfNativeObjectType,
+ kViewerPreferencesDictionary_SkPdfNativeObjectType,
+ kWebCaptureCommandDictionary_SkPdfNativeObjectType,
+ kWebCaptureCommandSettingsDictionary_SkPdfNativeObjectType,
+ kWebCaptureDictionary_SkPdfNativeObjectType,
+ kWebCaptureImageSetDictionary_SkPdfNativeObjectType,
+ kWebCaptureInformationDictionary_SkPdfNativeObjectType,
+ kWebCapturePageSetDictionary_SkPdfNativeObjectType,
+ kWidgetAnnotationDictionary_SkPdfNativeObjectType,
+ kWindowsLaunchActionDictionary_SkPdfNativeObjectType,
+ kXObjectDictionary_SkPdfNativeObjectType,
+ kImageDictionary_SkPdfNativeObjectType,
+ kSoftMaskImageDictionary_SkPdfNativeObjectType,
+ kImageDictionary__End_SkPdfNativeObjectType,
+ kType1FormDictionary_SkPdfNativeObjectType,
+ kXObjectDictionary__End_SkPdfNativeObjectType,
+ kDictionary__End_SkPdfNativeObjectType,
+};
+
+class SkPdfDictionary;
+class SkPdfXObjectDictionary;
+class SkPdfFontDictionary;
+class SkPdfTrueTypeFontDictionary;
+class SkPdfStreamCommonDictionary;
+class SkPdfLzwdecodeAndFlatedecodeFiltersDictionary;
+class SkPdfCcittfaxdecodeFilterDictionary;
+class SkPdfJbig2DecodeFilterDictionary;
+class SkPdfDctdecodeFilterDictionary;
+class SkPdfFileTrailerDictionary;
+class SkPdfEncryptionCommonDictionary;
+class SkPdfStandardSecurityHandlerDictionary;
+class SkPdfCatalogDictionary;
+class SkPdfPageTreeNodeDictionary;
+class SkPdfPageObjectDictionary;
+class SkPdfNameDictionary;
+class SkPdfResourceDictionary;
+class SkPdfNameTreeNodeDictionary;
+class SkPdfNumberTreeNodeDictionary;
+class SkPdfFunctionCommonDictionary;
+class SkPdfType0FunctionDictionary;
+class SkPdfType2FunctionDictionary;
+class SkPdfType3FunctionDictionary;
+class SkPdfFileSpecificationDictionary;
+class SkPdfEmbeddedFileStreamDictionary;
+class SkPdfEmbeddedFileParameterDictionary;
+class SkPdfMacOsFileInformationDictionary;
+class SkPdfGraphicsStateDictionary;
+class SkPdfCalgrayColorSpaceDictionary;
+class SkPdfCalrgbColorSpaceDictionary;
+class SkPdfLabColorSpaceDictionary;
+class SkPdfIccProfileStreamDictionary;
+class SkPdfDeviceNColorSpaceDictionary;
+class SkPdfType1PatternDictionary;
+class SkPdfType2PatternDictionary;
+class SkPdfShadingDictionary;
+class SkPdfType1ShadingDictionary;
+class SkPdfType2ShadingDictionary;
+class SkPdfType3ShadingDictionary;
+class SkPdfType4ShadingDictionary;
+class SkPdfType5ShadingDictionary;
+class SkPdfType6ShadingDictionary;
+class SkPdfImageDictionary;
+class SkPdfAlternateImageDictionary;
+class SkPdfType1FormDictionary;
+class SkPdfGroupAttributesDictionary;
+class SkPdfReferenceDictionary;
+class SkPdfPSXobjectDictionary;
+class SkPdfType1FontDictionary;
+class SkPdfType3FontDictionary;
+class SkPdfEncodingDictionary;
+class SkPdfCIDSystemInfoDictionary;
+class SkPdfCIDFontDictionary;
+class SkPdfCMapDictionary;
+class SkPdfType0FontDictionary;
+class SkPdfFontDescriptorDictionary;
+class SkPdfCIDFontDescriptorDictionary;
+class SkPdfEmbeddedFontStreamDictionary;
+class SkPdfType1HalftoneDictionary;
+class SkPdfType6HalftoneDictionary;
+class SkPdfType10HalftoneDictionary;
+class SkPdfType16HalftoneDictionary;
+class SkPdfType5HalftoneDictionary;
+class SkPdfSoftMaskDictionary;
+class SkPdfSoftMaskImageDictionary;
+class SkPdfTransparencyGroupDictionary;
+class SkPdfViewerPreferencesDictionary;
+class SkPdfOutlineDictionary;
+class SkPdfOutlineItemDictionary;
+class SkPdfPageLabelDictionary;
+class SkPdfThreadDictionary;
+class SkPdfBeadDictionary;
+class SkPdfTransitionDictionary;
+class SkPdfAnnotationDictionary;
+class SkPdfBorderStyleDictionary;
+class SkPdfAppearanceDictionary;
+class SkPdfTextAnnotationDictionary;
+class SkPdfALinkAnnotationDictionary;
+class SkPdfFreeTextAnnotationDictionary;
+class SkPdfLineAnnotationDictionary;
+class SkPdfSquareOrCircleAnnotation;
+class SkPdfMarkupAnnotationsDictionary;
+class SkPdfRubberStampAnnotationDictionary;
+class SkPdfInkAnnotationDictionary;
+class SkPdfPopUpAnnotationDictionary;
+class SkPdfFileAttachmentAnnotationDictionary;
+class SkPdfSoundAnnotationDictionary;
+class SkPdfMovieAnnotationDictionary;
+class SkPdfWidgetAnnotationDictionary;
+class SkPdfActionDictionary;
+class SkPdfAnnotationActionsDictionary;
+class SkPdfPageObjectActionsDictionary;
+class SkPdfFormFieldActionsDictionary;
+class SkPdfDocumentCatalogActionsDictionary;
+class SkPdfGoToActionDictionary;
+class SkPdfRemoteGoToActionDictionary;
+class SkPdfLaunchActionDictionary;
+class SkPdfWindowsLaunchActionDictionary;
+class SkPdfThreadActionDictionary;
+class SkPdfURIActionDictionary;
+class SkPdfURIDictionary;
+class SkPdfSoundActionDictionary;
+class SkPdfMovieActionDictionary;
+class SkPdfHideActionDictionary;
+class SkPdfNamedActionsDictionary;
+class SkPdfInteractiveFormDictionary;
+class SkPdfFieldDictionary;
+class SkPdfVariableTextFieldDictionary;
+class SkPdfAppearanceCharacteristicsDictionary;
+class SkPdfCheckboxFieldDictionary;
+class SkPdfRadioButtonFieldDictionary;
+class SkPdfTextFieldDictionary;
+class SkPdfChoiceFieldDictionary;
+class SkPdfSignatureDictionary;
+class SkPdfSubmitFormActionDictionary;
+class SkPdfResetFormActionDictionary;
+class SkPdfImportDataActionDictionary;
+class SkPdfJavascriptActionDictionary;
+class SkPdfFDFTrailerDictionary;
+class SkPdfFDFCatalogDictionary;
+class SkPdfFDFDictionary;
+class SkPdfEncryptedEmbeddedFileStreamDictionary;
+class SkPdfJavascriptDictionary;
+class SkPdfFDFFieldDictionary;
+class SkPdfIconFitDictionary;
+class SkPdfFDFPageDictionary;
+class SkPdfFDFTemplateDictionary;
+class SkPdfFDFNamedPageReferenceDictionary;
+class SkPdfFDFFileAnnotationDictionary;
+class SkPdfSoundObjectDictionary;
+class SkPdfMovieDictionary;
+class SkPdfMovieActivationDictionary;
+class SkPdfDocumentInformationDictionary;
+class SkPdfMetadataStreamDictionary;
+class SkPdfComponentsWithMetadataDictionary;
+class SkPdfPagePieceDictionary;
+class SkPdfApplicationDataDictionary;
+class SkPdfStructureTreeRootDictionary;
+class SkPdfStructureElementDictionary;
+class SkPdfMarkedContentReferenceDictionary;
+class SkPdfObjectReferenceDictionary;
+class SkPdfStructureElementAccessDictionary;
+class SkPdfAttributeObjectDictionary;
+class SkPdfMarkInformationDictionary;
+class SkPdfArtifactsDictionary;
+class SkPdfStandardStructureDictionary;
+class SkPdfBlockLevelStructureElementsDictionary;
+class SkPdfInlineLevelStructureElementsDictionary;
+class SkPdfListAttributeDictionary;
+class SkPdfTableAttributesDictionary;
+class SkPdfWebCaptureInformationDictionary;
+class SkPdfWebCaptureDictionary;
+class SkPdfWebCapturePageSetDictionary;
+class SkPdfWebCaptureImageSetDictionary;
+class SkPdfSourceInformationDictionary;
+class SkPdfURLAliasDictionary;
+class SkPdfWebCaptureCommandDictionary;
+class SkPdfWebCaptureCommandSettingsDictionary;
+class SkPdfBoxColorInformationDictionary;
+class SkPdfBoxStyleDictionary;
+class SkPdfPrinterMarkAnnotationDictionary;
+class SkPdfPrinterMarkFormDictionary;
+class SkPdfSeparationDictionary;
+class SkPdfPDF_XOutputIntentDictionary;
+class SkPdfTrapNetworkAnnotationDictionary;
+class SkPdfTrapNetworkAppearanceStreamDictionary;
+class SkPdfOpiVersionDictionary;
+class SkPdfMultiMasterFontDictionary;
+
+#endif // SkPdfEnums_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFCatalogDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFCatalogDictionary_autogen.cpp
new file mode 100644
index 00000000000..9dc97795763
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFCatalogDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFDFCatalogDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfFDFCatalogDictionary::Version(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Version", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfFDFCatalogDictionary::has_Version() const {
+ return get("Version", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFDFCatalogDictionary::FDF(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FDF", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfFDFCatalogDictionary::has_FDF() const {
+ return get("FDF", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFCatalogDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFCatalogDictionary_autogen.h
new file mode 100644
index 00000000000..0d8e27b03ba
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFCatalogDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFDFCatalogDictionary_DEFINED
+#define SkPdfFDFCatalogDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in the FDF catalog dictionary
+class SkPdfFDFCatalogDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Version(SkPdfNativeDoc* doc);
+ bool has_Version() const;
+ SkPdfDictionary* FDF(SkPdfNativeDoc* doc);
+ bool has_FDF() const;
+};
+
+#endif // SkPdfFDFCatalogDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFDictionary_autogen.cpp
new file mode 100644
index 00000000000..9ecab695404
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFDictionary_autogen.cpp
@@ -0,0 +1,141 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFDFDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfFileSpec SkPdfFDFDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->fileSpecValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFileSpec();
+}
+
+bool SkPdfFDFDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
+
+SkPdfArray* SkPdfFDFDictionary::ID(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ID", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFDictionary::has_ID() const {
+ return get("ID", "") != NULL;
+}
+
+SkPdfArray* SkPdfFDFDictionary::Fields(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Fields", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFDictionary::has_Fields() const {
+ return get("Fields", "") != NULL;
+}
+
+SkString SkPdfFDFDictionary::Status(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Status", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfFDFDictionary::has_Status() const {
+ return get("Status", "") != NULL;
+}
+
+SkPdfArray* SkPdfFDFDictionary::Pages(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Pages", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFDictionary::has_Pages() const {
+ return get("Pages", "") != NULL;
+}
+
+SkString SkPdfFDFDictionary::Encoding(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Encoding", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfFDFDictionary::has_Encoding() const {
+ return get("Encoding", "") != NULL;
+}
+
+SkPdfArray* SkPdfFDFDictionary::Annots(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Annots", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFDictionary::has_Annots() const {
+ return get("Annots", "") != NULL;
+}
+
+SkPdfStream* SkPdfFDFDictionary::Differences(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Differences", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFDictionary::has_Differences() const {
+ return get("Differences", "") != NULL;
+}
+
+SkString SkPdfFDFDictionary::Target(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Target", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfFDFDictionary::has_Target() const {
+ return get("Target", "") != NULL;
+}
+
+SkPdfArray* SkPdfFDFDictionary::EmbeddedFDFs(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("EmbeddedFDFs", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFDictionary::has_EmbeddedFDFs() const {
+ return get("EmbeddedFDFs", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFDFDictionary::JavaScript(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("JavaScript", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFDictionary::has_JavaScript() const {
+ return get("JavaScript", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFDictionary_autogen.h
new file mode 100644
index 00000000000..1b7a36e87b5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFDictionary_autogen.h
@@ -0,0 +1,545 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFDFDictionary_DEFINED
+#define SkPdfFDFDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in the FDF dictionary
+class SkPdfFDFDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFDFDictionary* asFDFDictionary() {return this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfFileSpec F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+ SkPdfArray* ID(SkPdfNativeDoc* doc);
+ bool has_ID() const;
+ SkPdfArray* Fields(SkPdfNativeDoc* doc);
+ bool has_Fields() const;
+ SkString Status(SkPdfNativeDoc* doc);
+ bool has_Status() const;
+ SkPdfArray* Pages(SkPdfNativeDoc* doc);
+ bool has_Pages() const;
+ SkString Encoding(SkPdfNativeDoc* doc);
+ bool has_Encoding() const;
+ SkPdfArray* Annots(SkPdfNativeDoc* doc);
+ bool has_Annots() const;
+ SkPdfStream* Differences(SkPdfNativeDoc* doc);
+ bool has_Differences() const;
+ SkString Target(SkPdfNativeDoc* doc);
+ bool has_Target() const;
+ SkPdfArray* EmbeddedFDFs(SkPdfNativeDoc* doc);
+ bool has_EmbeddedFDFs() const;
+ SkPdfDictionary* JavaScript(SkPdfNativeDoc* doc);
+ bool has_JavaScript() const;
+};
+
+#endif // SkPdfFDFDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFFieldDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFFieldDictionary_autogen.cpp
new file mode 100644
index 00000000000..6428c042ea6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFFieldDictionary_autogen.cpp
@@ -0,0 +1,189 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFDFFieldDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfFDFFieldDictionary::Kids(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Kids", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFFieldDictionary::has_Kids() const {
+ return get("Kids", "") != NULL;
+}
+
+SkString SkPdfFDFFieldDictionary::T(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("T", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfFDFFieldDictionary::has_T() const {
+ return get("T", "") != NULL;
+}
+
+SkPdfNativeObject* SkPdfFDFFieldDictionary::V(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("V", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && true) || (doc == NULL && ret != NULL && ret->isReference())) return ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFFieldDictionary::has_V() const {
+ return get("V", "") != NULL;
+}
+
+int64_t SkPdfFDFFieldDictionary::Ff(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Ff", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfFDFFieldDictionary::has_Ff() const {
+ return get("Ff", "") != NULL;
+}
+
+int64_t SkPdfFDFFieldDictionary::SetFf(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SetFf", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfFDFFieldDictionary::has_SetFf() const {
+ return get("SetFf", "") != NULL;
+}
+
+int64_t SkPdfFDFFieldDictionary::ClrFf(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ClrFf", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfFDFFieldDictionary::has_ClrFf() const {
+ return get("ClrFf", "") != NULL;
+}
+
+int64_t SkPdfFDFFieldDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfFDFFieldDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
+
+int64_t SkPdfFDFFieldDictionary::SetF(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SetF", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfFDFFieldDictionary::has_SetF() const {
+ return get("SetF", "") != NULL;
+}
+
+int64_t SkPdfFDFFieldDictionary::ClrF(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ClrF", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfFDFFieldDictionary::has_ClrF() const {
+ return get("ClrF", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFDFFieldDictionary::AP(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AP", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFFieldDictionary::has_AP() const {
+ return get("AP", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFDFFieldDictionary::APRef(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("APRef", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFFieldDictionary::has_APRef() const {
+ return get("APRef", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFDFFieldDictionary::IF(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("IF", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFFieldDictionary::has_IF() const {
+ return get("IF", "") != NULL;
+}
+
+SkPdfArray* SkPdfFDFFieldDictionary::Opt(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Opt", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFFieldDictionary::has_Opt() const {
+ return get("Opt", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFDFFieldDictionary::A(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("A", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFFieldDictionary::has_A() const {
+ return get("A", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFDFFieldDictionary::AA(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AA", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFFieldDictionary::has_AA() const {
+ return get("AA", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFFieldDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFFieldDictionary_autogen.h
new file mode 100644
index 00000000000..b7f84e5ec67
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFFieldDictionary_autogen.h
@@ -0,0 +1,553 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFDFFieldDictionary_DEFINED
+#define SkPdfFDFFieldDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in an FDF field dictionary
+class SkPdfFDFFieldDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* Kids(SkPdfNativeDoc* doc);
+ bool has_Kids() const;
+ SkString T(SkPdfNativeDoc* doc);
+ bool has_T() const;
+ SkPdfNativeObject* V(SkPdfNativeDoc* doc);
+ bool has_V() const;
+ int64_t Ff(SkPdfNativeDoc* doc);
+ bool has_Ff() const;
+ int64_t SetFf(SkPdfNativeDoc* doc);
+ bool has_SetFf() const;
+ int64_t ClrFf(SkPdfNativeDoc* doc);
+ bool has_ClrFf() const;
+ int64_t F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+ int64_t SetF(SkPdfNativeDoc* doc);
+ bool has_SetF() const;
+ int64_t ClrF(SkPdfNativeDoc* doc);
+ bool has_ClrF() const;
+ SkPdfDictionary* AP(SkPdfNativeDoc* doc);
+ bool has_AP() const;
+ SkPdfDictionary* APRef(SkPdfNativeDoc* doc);
+ bool has_APRef() const;
+ SkPdfDictionary* IF(SkPdfNativeDoc* doc);
+ bool has_IF() const;
+ SkPdfArray* Opt(SkPdfNativeDoc* doc);
+ bool has_Opt() const;
+ SkPdfDictionary* A(SkPdfNativeDoc* doc);
+ bool has_A() const;
+ SkPdfDictionary* AA(SkPdfNativeDoc* doc);
+ bool has_AA() const;
+};
+
+#endif // SkPdfFDFFieldDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFFileAnnotationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFFileAnnotationDictionary_autogen.cpp
new file mode 100644
index 00000000000..f326d1261ed
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFFileAnnotationDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFDFFileAnnotationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfFDFFileAnnotationDictionary::Page(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Page", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfFDFFileAnnotationDictionary::has_Page() const {
+ return get("Page", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFFileAnnotationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFFileAnnotationDictionary_autogen.h
new file mode 100644
index 00000000000..de2a8e8788d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFFileAnnotationDictionary_autogen.h
@@ -0,0 +1,525 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFDFFileAnnotationDictionary_DEFINED
+#define SkPdfFDFFileAnnotationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entry for annotation dictionaries in an FDF file
+class SkPdfFDFFileAnnotationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t Page(SkPdfNativeDoc* doc);
+ bool has_Page() const;
+};
+
+#endif // SkPdfFDFFileAnnotationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFNamedPageReferenceDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFNamedPageReferenceDictionary_autogen.cpp
new file mode 100644
index 00000000000..2fd62f5e498
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFNamedPageReferenceDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFDFNamedPageReferenceDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfFDFNamedPageReferenceDictionary::Name(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Name", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfFDFNamedPageReferenceDictionary::has_Name() const {
+ return get("Name", "") != NULL;
+}
+
+SkPdfFileSpec SkPdfFDFNamedPageReferenceDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->fileSpecValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFileSpec();
+}
+
+bool SkPdfFDFNamedPageReferenceDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFNamedPageReferenceDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFNamedPageReferenceDictionary_autogen.h
new file mode 100644
index 00000000000..8090886286f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFNamedPageReferenceDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFDFNamedPageReferenceDictionary_DEFINED
+#define SkPdfFDFNamedPageReferenceDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in an FDF named page reference dictionary
+class SkPdfFDFNamedPageReferenceDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Name(SkPdfNativeDoc* doc);
+ bool has_Name() const;
+ SkPdfFileSpec F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+};
+
+#endif // SkPdfFDFNamedPageReferenceDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFPageDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFPageDictionary_autogen.cpp
new file mode 100644
index 00000000000..c5061d9fe9c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFPageDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFDFPageDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfFDFPageDictionary::Templates(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Templates", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfFDFPageDictionary::has_Templates() const {
+ return get("Templates", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFDFPageDictionary::Info(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Info", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFPageDictionary::has_Info() const {
+ return get("Info", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFPageDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFPageDictionary_autogen.h
new file mode 100644
index 00000000000..991a006b623
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFPageDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFDFPageDictionary_DEFINED
+#define SkPdfFDFPageDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in an FDF page dictionary
+class SkPdfFDFPageDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* Templates(SkPdfNativeDoc* doc);
+ bool has_Templates() const;
+ SkPdfDictionary* Info(SkPdfNativeDoc* doc);
+ bool has_Info() const;
+};
+
+#endif // SkPdfFDFPageDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFTemplateDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFTemplateDictionary_autogen.cpp
new file mode 100644
index 00000000000..b49a1eb79d3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFTemplateDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFDFTemplateDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfDictionary* SkPdfFDFTemplateDictionary::TRef(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TRef", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfFDFTemplateDictionary::has_TRef() const {
+ return get("TRef", "") != NULL;
+}
+
+SkPdfArray* SkPdfFDFTemplateDictionary::Fields(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Fields", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFTemplateDictionary::has_Fields() const {
+ return get("Fields", "") != NULL;
+}
+
+bool SkPdfFDFTemplateDictionary::Rename(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Rename", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfFDFTemplateDictionary::has_Rename() const {
+ return get("Rename", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFTemplateDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFTemplateDictionary_autogen.h
new file mode 100644
index 00000000000..bf54d29fef9
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFTemplateDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFDFTemplateDictionary_DEFINED
+#define SkPdfFDFTemplateDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in an FDF template dictionary
+class SkPdfFDFTemplateDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfDictionary* TRef(SkPdfNativeDoc* doc);
+ bool has_TRef() const;
+ SkPdfArray* Fields(SkPdfNativeDoc* doc);
+ bool has_Fields() const;
+ bool Rename(SkPdfNativeDoc* doc);
+ bool has_Rename() const;
+};
+
+#endif // SkPdfFDFTemplateDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFTrailerDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFTrailerDictionary_autogen.cpp
new file mode 100644
index 00000000000..fb93d25302e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFTrailerDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFDFTrailerDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfDictionary* SkPdfFDFTrailerDictionary::Root(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Root", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFDFTrailerDictionary::has_Root() const {
+ return get("Root", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFTrailerDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFTrailerDictionary_autogen.h
new file mode 100644
index 00000000000..cfbdc3dd6f8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFDFTrailerDictionary_autogen.h
@@ -0,0 +1,525 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFDFTrailerDictionary_DEFINED
+#define SkPdfFDFTrailerDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entry in the FDF trailer dictionary
+class SkPdfFDFTrailerDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfDictionary* Root(SkPdfNativeDoc* doc);
+ bool has_Root() const;
+};
+
+#endif // SkPdfFDFTrailerDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFieldDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFieldDictionary_autogen.cpp
new file mode 100644
index 00000000000..f9c42b6ad0f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFieldDictionary_autogen.cpp
@@ -0,0 +1,129 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFieldDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfFieldDictionary::FT(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FT", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfFieldDictionary::has_FT() const {
+ return get("FT", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFieldDictionary::Parent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Parent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFieldDictionary::has_Parent() const {
+ return get("Parent", "") != NULL;
+}
+
+SkPdfArray* SkPdfFieldDictionary::Kids(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Kids", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFieldDictionary::has_Kids() const {
+ return get("Kids", "") != NULL;
+}
+
+SkString SkPdfFieldDictionary::T(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("T", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfFieldDictionary::has_T() const {
+ return get("T", "") != NULL;
+}
+
+SkString SkPdfFieldDictionary::TU(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TU", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfFieldDictionary::has_TU() const {
+ return get("TU", "") != NULL;
+}
+
+SkString SkPdfFieldDictionary::TM(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TM", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfFieldDictionary::has_TM() const {
+ return get("TM", "") != NULL;
+}
+
+int64_t SkPdfFieldDictionary::Ff(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Ff", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfFieldDictionary::has_Ff() const {
+ return get("Ff", "") != NULL;
+}
+
+SkPdfNativeObject* SkPdfFieldDictionary::V(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("V", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && true) || (doc == NULL && ret != NULL && ret->isReference())) return ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFieldDictionary::has_V() const {
+ return get("V", "") != NULL;
+}
+
+SkPdfNativeObject* SkPdfFieldDictionary::DV(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DV", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && true) || (doc == NULL && ret != NULL && ret->isReference())) return ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFieldDictionary::has_DV() const {
+ return get("DV", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFieldDictionary::AA(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AA", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFieldDictionary::has_AA() const {
+ return get("AA", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFieldDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFieldDictionary_autogen.h
new file mode 100644
index 00000000000..5ac03a2a782
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFieldDictionary_autogen.h
@@ -0,0 +1,543 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFieldDictionary_DEFINED
+#define SkPdfFieldDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries common to all field dictionaries
+class SkPdfFieldDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFieldDictionary* asFieldDictionary() {return this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString FT(SkPdfNativeDoc* doc);
+ bool has_FT() const;
+ SkPdfDictionary* Parent(SkPdfNativeDoc* doc);
+ bool has_Parent() const;
+ SkPdfArray* Kids(SkPdfNativeDoc* doc);
+ bool has_Kids() const;
+ SkString T(SkPdfNativeDoc* doc);
+ bool has_T() const;
+ SkString TU(SkPdfNativeDoc* doc);
+ bool has_TU() const;
+ SkString TM(SkPdfNativeDoc* doc);
+ bool has_TM() const;
+ int64_t Ff(SkPdfNativeDoc* doc);
+ bool has_Ff() const;
+ SkPdfNativeObject* V(SkPdfNativeDoc* doc);
+ bool has_V() const;
+ SkPdfNativeObject* DV(SkPdfNativeDoc* doc);
+ bool has_DV() const;
+ SkPdfDictionary* AA(SkPdfNativeDoc* doc);
+ bool has_AA() const;
+};
+
+#endif // SkPdfFieldDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileAttachmentAnnotationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileAttachmentAnnotationDictionary_autogen.cpp
new file mode 100644
index 00000000000..e274e140b0f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileAttachmentAnnotationDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFileAttachmentAnnotationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfFileAttachmentAnnotationDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfFileAttachmentAnnotationDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkPdfFileSpec SkPdfFileAttachmentAnnotationDictionary::FS(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->fileSpecValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkPdfFileSpec();
+}
+
+bool SkPdfFileAttachmentAnnotationDictionary::has_FS() const {
+ return get("FS", "") != NULL;
+}
+
+SkString SkPdfFileAttachmentAnnotationDictionary::Contents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfFileAttachmentAnnotationDictionary::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+SkString SkPdfFileAttachmentAnnotationDictionary::Name(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Name", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfFileAttachmentAnnotationDictionary::has_Name() const {
+ return get("Name", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileAttachmentAnnotationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileAttachmentAnnotationDictionary_autogen.h
new file mode 100644
index 00000000000..031136f9625
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileAttachmentAnnotationDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFileAttachmentAnnotationDictionary_DEFINED
+#define SkPdfFileAttachmentAnnotationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a file attachment annotation
+class SkPdfFileAttachmentAnnotationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkPdfFileSpec FS(SkPdfNativeDoc* doc);
+ bool has_FS() const;
+ SkString Contents(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+ SkString Name(SkPdfNativeDoc* doc);
+ bool has_Name() const;
+};
+
+#endif // SkPdfFileAttachmentAnnotationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileSpecificationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileSpecificationDictionary_autogen.cpp
new file mode 100644
index 00000000000..d321dd43ffe
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileSpecificationDictionary_autogen.cpp
@@ -0,0 +1,129 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFileSpecificationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfFileSpecificationDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfFileSpecificationDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfFileSpecificationDictionary::FS(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfFileSpecificationDictionary::has_FS() const {
+ return get("FS", "") != NULL;
+}
+
+SkString SkPdfFileSpecificationDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfFileSpecificationDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
+
+SkString SkPdfFileSpecificationDictionary::DOS(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DOS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfFileSpecificationDictionary::has_DOS() const {
+ return get("DOS", "") != NULL;
+}
+
+SkString SkPdfFileSpecificationDictionary::Mac(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Mac", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfFileSpecificationDictionary::has_Mac() const {
+ return get("Mac", "") != NULL;
+}
+
+SkString SkPdfFileSpecificationDictionary::Unix(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Unix", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfFileSpecificationDictionary::has_Unix() const {
+ return get("Unix", "") != NULL;
+}
+
+SkPdfArray* SkPdfFileSpecificationDictionary::ID(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ID", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFileSpecificationDictionary::has_ID() const {
+ return get("ID", "") != NULL;
+}
+
+bool SkPdfFileSpecificationDictionary::V(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("V", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfFileSpecificationDictionary::has_V() const {
+ return get("V", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFileSpecificationDictionary::EF(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("EF", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFileSpecificationDictionary::has_EF() const {
+ return get("EF", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFileSpecificationDictionary::RF(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("RF", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFileSpecificationDictionary::has_RF() const {
+ return get("RF", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileSpecificationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileSpecificationDictionary_autogen.h
new file mode 100644
index 00000000000..f0401160682
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileSpecificationDictionary_autogen.h
@@ -0,0 +1,543 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFileSpecificationDictionary_DEFINED
+#define SkPdfFileSpecificationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a file specification dictionary
+class SkPdfFileSpecificationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString FS(SkPdfNativeDoc* doc);
+ bool has_FS() const;
+ SkString F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+ SkString DOS(SkPdfNativeDoc* doc);
+ bool has_DOS() const;
+ SkString Mac(SkPdfNativeDoc* doc);
+ bool has_Mac() const;
+ SkString Unix(SkPdfNativeDoc* doc);
+ bool has_Unix() const;
+ SkPdfArray* ID(SkPdfNativeDoc* doc);
+ bool has_ID() const;
+ bool V(SkPdfNativeDoc* doc);
+ bool has_V() const;
+ SkPdfDictionary* EF(SkPdfNativeDoc* doc);
+ bool has_EF() const;
+ SkPdfDictionary* RF(SkPdfNativeDoc* doc);
+ bool has_RF() const;
+};
+
+#endif // SkPdfFileSpecificationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileTrailerDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileTrailerDictionary_autogen.cpp
new file mode 100644
index 00000000000..a74d0569ae1
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileTrailerDictionary_autogen.cpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFileTrailerDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfFileTrailerDictionary::Size(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Size", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfFileTrailerDictionary::has_Size() const {
+ return get("Size", "") != NULL;
+}
+
+int64_t SkPdfFileTrailerDictionary::Prev(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Prev", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfFileTrailerDictionary::has_Prev() const {
+ return get("Prev", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFileTrailerDictionary::Root(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Root", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFileTrailerDictionary::has_Root() const {
+ return get("Root", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFileTrailerDictionary::Encrypt(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Encrypt", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFileTrailerDictionary::has_Encrypt() const {
+ return get("Encrypt", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFileTrailerDictionary::Info(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Info", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFileTrailerDictionary::has_Info() const {
+ return get("Info", "") != NULL;
+}
+
+SkPdfArray* SkPdfFileTrailerDictionary::ID(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ID", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFileTrailerDictionary::has_ID() const {
+ return get("ID", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileTrailerDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileTrailerDictionary_autogen.h
new file mode 100644
index 00000000000..4e9fd6718e8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFileTrailerDictionary_autogen.h
@@ -0,0 +1,535 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFileTrailerDictionary_DEFINED
+#define SkPdfFileTrailerDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in the file trailer dictionary
+class SkPdfFileTrailerDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t Size(SkPdfNativeDoc* doc);
+ bool has_Size() const;
+ int64_t Prev(SkPdfNativeDoc* doc);
+ bool has_Prev() const;
+ SkPdfDictionary* Root(SkPdfNativeDoc* doc);
+ bool has_Root() const;
+ SkPdfDictionary* Encrypt(SkPdfNativeDoc* doc);
+ bool has_Encrypt() const;
+ SkPdfDictionary* Info(SkPdfNativeDoc* doc);
+ bool has_Info() const;
+ SkPdfArray* ID(SkPdfNativeDoc* doc);
+ bool has_ID() const;
+};
+
+#endif // SkPdfFileTrailerDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFontDescriptorDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFontDescriptorDictionary_autogen.cpp
new file mode 100644
index 00000000000..0d657845497
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFontDescriptorDictionary_autogen.cpp
@@ -0,0 +1,237 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFontDescriptorDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfFontDescriptorDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfFontDescriptorDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfFontDescriptorDictionary::FontName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FontName", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfFontDescriptorDictionary::has_FontName() const {
+ return get("FontName", "") != NULL;
+}
+
+int64_t SkPdfFontDescriptorDictionary::Flags(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Flags", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfFontDescriptorDictionary::has_Flags() const {
+ return get("Flags", "") != NULL;
+}
+
+SkRect SkPdfFontDescriptorDictionary::FontBBox(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FontBBox", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isRectangle()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->rectangleValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkRect::MakeEmpty();
+}
+
+bool SkPdfFontDescriptorDictionary::has_FontBBox() const {
+ return get("FontBBox", "") != NULL;
+}
+
+double SkPdfFontDescriptorDictionary::ItalicAngle(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ItalicAngle", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfFontDescriptorDictionary::has_ItalicAngle() const {
+ return get("ItalicAngle", "") != NULL;
+}
+
+double SkPdfFontDescriptorDictionary::Ascent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Ascent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfFontDescriptorDictionary::has_Ascent() const {
+ return get("Ascent", "") != NULL;
+}
+
+double SkPdfFontDescriptorDictionary::Descent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Descent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfFontDescriptorDictionary::has_Descent() const {
+ return get("Descent", "") != NULL;
+}
+
+double SkPdfFontDescriptorDictionary::Leading(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Leading", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfFontDescriptorDictionary::has_Leading() const {
+ return get("Leading", "") != NULL;
+}
+
+double SkPdfFontDescriptorDictionary::CapHeight(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CapHeight", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfFontDescriptorDictionary::has_CapHeight() const {
+ return get("CapHeight", "") != NULL;
+}
+
+double SkPdfFontDescriptorDictionary::XHeight(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("XHeight", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfFontDescriptorDictionary::has_XHeight() const {
+ return get("XHeight", "") != NULL;
+}
+
+double SkPdfFontDescriptorDictionary::StemV(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("StemV", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfFontDescriptorDictionary::has_StemV() const {
+ return get("StemV", "") != NULL;
+}
+
+double SkPdfFontDescriptorDictionary::StemH(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("StemH", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfFontDescriptorDictionary::has_StemH() const {
+ return get("StemH", "") != NULL;
+}
+
+double SkPdfFontDescriptorDictionary::AvgWidth(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AvgWidth", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfFontDescriptorDictionary::has_AvgWidth() const {
+ return get("AvgWidth", "") != NULL;
+}
+
+double SkPdfFontDescriptorDictionary::MaxWidth(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("MaxWidth", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfFontDescriptorDictionary::has_MaxWidth() const {
+ return get("MaxWidth", "") != NULL;
+}
+
+double SkPdfFontDescriptorDictionary::MissingWidth(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("MissingWidth", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfFontDescriptorDictionary::has_MissingWidth() const {
+ return get("MissingWidth", "") != NULL;
+}
+
+SkPdfStream* SkPdfFontDescriptorDictionary::FontFile(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FontFile", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFontDescriptorDictionary::has_FontFile() const {
+ return get("FontFile", "") != NULL;
+}
+
+SkPdfStream* SkPdfFontDescriptorDictionary::FontFile2(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FontFile2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFontDescriptorDictionary::has_FontFile2() const {
+ return get("FontFile2", "") != NULL;
+}
+
+SkPdfStream* SkPdfFontDescriptorDictionary::FontFile3(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FontFile3", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFontDescriptorDictionary::has_FontFile3() const {
+ return get("FontFile3", "") != NULL;
+}
+
+SkString SkPdfFontDescriptorDictionary::CharSet(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CharSet", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfFontDescriptorDictionary::has_CharSet() const {
+ return get("CharSet", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFontDescriptorDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFontDescriptorDictionary_autogen.h
new file mode 100644
index 00000000000..7225f8bdf04
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFontDescriptorDictionary_autogen.h
@@ -0,0 +1,561 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFontDescriptorDictionary_DEFINED
+#define SkPdfFontDescriptorDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries common to all font descriptors
+class SkPdfFontDescriptorDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString FontName(SkPdfNativeDoc* doc);
+ bool has_FontName() const;
+ int64_t Flags(SkPdfNativeDoc* doc);
+ bool has_Flags() const;
+ SkRect FontBBox(SkPdfNativeDoc* doc);
+ bool has_FontBBox() const;
+ double ItalicAngle(SkPdfNativeDoc* doc);
+ bool has_ItalicAngle() const;
+ double Ascent(SkPdfNativeDoc* doc);
+ bool has_Ascent() const;
+ double Descent(SkPdfNativeDoc* doc);
+ bool has_Descent() const;
+ double Leading(SkPdfNativeDoc* doc);
+ bool has_Leading() const;
+ double CapHeight(SkPdfNativeDoc* doc);
+ bool has_CapHeight() const;
+ double XHeight(SkPdfNativeDoc* doc);
+ bool has_XHeight() const;
+ double StemV(SkPdfNativeDoc* doc);
+ bool has_StemV() const;
+ double StemH(SkPdfNativeDoc* doc);
+ bool has_StemH() const;
+ double AvgWidth(SkPdfNativeDoc* doc);
+ bool has_AvgWidth() const;
+ double MaxWidth(SkPdfNativeDoc* doc);
+ bool has_MaxWidth() const;
+ double MissingWidth(SkPdfNativeDoc* doc);
+ bool has_MissingWidth() const;
+ SkPdfStream* FontFile(SkPdfNativeDoc* doc);
+ bool has_FontFile() const;
+ SkPdfStream* FontFile2(SkPdfNativeDoc* doc);
+ bool has_FontFile2() const;
+ SkPdfStream* FontFile3(SkPdfNativeDoc* doc);
+ bool has_FontFile3() const;
+ SkString CharSet(SkPdfNativeDoc* doc);
+ bool has_CharSet() const;
+};
+
+#endif // SkPdfFontDescriptorDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFontDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFontDictionary_autogen.cpp
new file mode 100644
index 00000000000..45963b0e1c7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFontDictionary_autogen.cpp
@@ -0,0 +1,9 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFontDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFontDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFontDictionary_autogen.h
new file mode 100644
index 00000000000..5247378a4e6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFontDictionary_autogen.h
@@ -0,0 +1,507 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFontDictionary_DEFINED
+#define SkPdfFontDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+class SkPdfFontDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFontDictionary* asFontDictionary() {return this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+};
+
+#endif // SkPdfFontDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFormFieldActionsDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFormFieldActionsDictionary_autogen.cpp
new file mode 100644
index 00000000000..86b89c71bb2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFormFieldActionsDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFormFieldActionsDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfDictionary* SkPdfFormFieldActionsDictionary::K(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("K", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFormFieldActionsDictionary::has_K() const {
+ return get("K", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFormFieldActionsDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFormFieldActionsDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFormFieldActionsDictionary::V(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("V", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFormFieldActionsDictionary::has_V() const {
+ return get("V", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfFormFieldActionsDictionary::C(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("C", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFormFieldActionsDictionary::has_C() const {
+ return get("C", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFormFieldActionsDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFormFieldActionsDictionary_autogen.h
new file mode 100644
index 00000000000..bf1effbe9bf
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFormFieldActionsDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFormFieldActionsDictionary_DEFINED
+#define SkPdfFormFieldActionsDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a form field's additional-actions dictionary
+class SkPdfFormFieldActionsDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfDictionary* K(SkPdfNativeDoc* doc);
+ bool has_K() const;
+ SkPdfDictionary* F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+ SkPdfDictionary* V(SkPdfNativeDoc* doc);
+ bool has_V() const;
+ SkPdfDictionary* C(SkPdfNativeDoc* doc);
+ bool has_C() const;
+};
+
+#endif // SkPdfFormFieldActionsDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFreeTextAnnotationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFreeTextAnnotationDictionary_autogen.cpp
new file mode 100644
index 00000000000..db5fefdda13
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFreeTextAnnotationDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFreeTextAnnotationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfFreeTextAnnotationDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfFreeTextAnnotationDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfFreeTextAnnotationDictionary::Contents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfFreeTextAnnotationDictionary::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+SkString SkPdfFreeTextAnnotationDictionary::DA(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DA", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfFreeTextAnnotationDictionary::has_DA() const {
+ return get("DA", "") != NULL;
+}
+
+int64_t SkPdfFreeTextAnnotationDictionary::Q(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Q", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfFreeTextAnnotationDictionary::has_Q() const {
+ return get("Q", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFreeTextAnnotationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFreeTextAnnotationDictionary_autogen.h
new file mode 100644
index 00000000000..ff36b94c270
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFreeTextAnnotationDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFreeTextAnnotationDictionary_DEFINED
+#define SkPdfFreeTextAnnotationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a free text annotation
+class SkPdfFreeTextAnnotationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString Contents(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+ SkString DA(SkPdfNativeDoc* doc);
+ bool has_DA() const;
+ int64_t Q(SkPdfNativeDoc* doc);
+ bool has_Q() const;
+};
+
+#endif // SkPdfFreeTextAnnotationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFunctionCommonDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFunctionCommonDictionary_autogen.cpp
new file mode 100644
index 00000000000..50368fa0493
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFunctionCommonDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfFunctionCommonDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfFunctionCommonDictionary::FunctionType(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FunctionType", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfFunctionCommonDictionary::has_FunctionType() const {
+ return get("FunctionType", "") != NULL;
+}
+
+SkPdfArray* SkPdfFunctionCommonDictionary::Domain(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Domain", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfFunctionCommonDictionary::has_Domain() const {
+ return get("Domain", "") != NULL;
+}
+
+SkPdfArray* SkPdfFunctionCommonDictionary::Range(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Range", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfFunctionCommonDictionary::has_Range() const {
+ return get("Range", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFunctionCommonDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFunctionCommonDictionary_autogen.h
new file mode 100644
index 00000000000..f4458a3f26f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfFunctionCommonDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfFunctionCommonDictionary_DEFINED
+#define SkPdfFunctionCommonDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries common to all function dictionaries
+class SkPdfFunctionCommonDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t FunctionType(SkPdfNativeDoc* doc);
+ bool has_FunctionType() const;
+ SkPdfArray* Domain(SkPdfNativeDoc* doc);
+ bool has_Domain() const;
+ SkPdfArray* Range(SkPdfNativeDoc* doc);
+ bool has_Range() const;
+};
+
+#endif // SkPdfFunctionCommonDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGoToActionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGoToActionDictionary_autogen.cpp
new file mode 100644
index 00000000000..f35b061691d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGoToActionDictionary_autogen.cpp
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfGoToActionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfGoToActionDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfGoToActionDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+bool SkPdfGoToActionDictionary::isDAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfGoToActionDictionary::getDAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfGoToActionDictionary::isDAString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isAnyString();
+}
+
+SkString SkPdfGoToActionDictionary::getDAsString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfGoToActionDictionary::isDAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfGoToActionDictionary::getDAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfGoToActionDictionary::has_D() const {
+ return get("D", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGoToActionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGoToActionDictionary_autogen.h
new file mode 100644
index 00000000000..ced391817fa
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGoToActionDictionary_autogen.h
@@ -0,0 +1,535 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfGoToActionDictionary_DEFINED
+#define SkPdfGoToActionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a go-to action
+class SkPdfGoToActionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+
+ bool isDAName(SkPdfNativeDoc* doc);
+ SkString getDAsName(SkPdfNativeDoc* doc);
+
+ bool isDAString(SkPdfNativeDoc* doc);
+ SkString getDAsString(SkPdfNativeDoc* doc);
+
+ bool isDAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getDAsArray(SkPdfNativeDoc* doc);
+ bool has_D() const;
+};
+
+#endif // SkPdfGoToActionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGraphicsStateDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGraphicsStateDictionary_autogen.cpp
new file mode 100644
index 00000000000..de5c8c16d1d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGraphicsStateDictionary_autogen.cpp
@@ -0,0 +1,515 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfGraphicsStateDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfGraphicsStateDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfGraphicsStateDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+double SkPdfGraphicsStateDictionary::LW(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("LW", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfGraphicsStateDictionary::has_LW() const {
+ return get("LW", "") != NULL;
+}
+
+int64_t SkPdfGraphicsStateDictionary::LC(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("LC", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfGraphicsStateDictionary::has_LC() const {
+ return get("LC", "") != NULL;
+}
+
+int64_t SkPdfGraphicsStateDictionary::LJ(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("LJ", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfGraphicsStateDictionary::has_LJ() const {
+ return get("LJ", "") != NULL;
+}
+
+double SkPdfGraphicsStateDictionary::ML(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ML", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfGraphicsStateDictionary::has_ML() const {
+ return get("ML", "") != NULL;
+}
+
+SkPdfArray* SkPdfGraphicsStateDictionary::D(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::has_D() const {
+ return get("D", "") != NULL;
+}
+
+SkString SkPdfGraphicsStateDictionary::RI(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("RI", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfGraphicsStateDictionary::has_RI() const {
+ return get("RI", "") != NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::OP(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("OP", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfGraphicsStateDictionary::has_OP() const {
+ return get("OP", "") != NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::op(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("op", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfGraphicsStateDictionary::has_op() const {
+ return get("op", "") != NULL;
+}
+
+int64_t SkPdfGraphicsStateDictionary::OPM(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("OPM", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfGraphicsStateDictionary::has_OPM() const {
+ return get("OPM", "") != NULL;
+}
+
+SkPdfArray* SkPdfGraphicsStateDictionary::Font(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Font", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::has_Font() const {
+ return get("Font", "") != NULL;
+}
+
+SkPdfFunction SkPdfGraphicsStateDictionary::BG(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BG", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFunction();
+}
+
+bool SkPdfGraphicsStateDictionary::has_BG() const {
+ return get("BG", "") != NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::isBG2AFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BG2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isFunction();
+}
+
+SkPdfFunction SkPdfGraphicsStateDictionary::getBG2AsFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BG2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFunction();
+}
+
+bool SkPdfGraphicsStateDictionary::isBG2AName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BG2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfGraphicsStateDictionary::getBG2AsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BG2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfGraphicsStateDictionary::has_BG2() const {
+ return get("BG2", "") != NULL;
+}
+
+SkPdfFunction SkPdfGraphicsStateDictionary::UCR(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("UCR", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFunction();
+}
+
+bool SkPdfGraphicsStateDictionary::has_UCR() const {
+ return get("UCR", "") != NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::isUCR2AFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("UCR2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isFunction();
+}
+
+SkPdfFunction SkPdfGraphicsStateDictionary::getUCR2AsFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("UCR2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFunction();
+}
+
+bool SkPdfGraphicsStateDictionary::isUCR2AName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("UCR2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfGraphicsStateDictionary::getUCR2AsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("UCR2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfGraphicsStateDictionary::has_UCR2() const {
+ return get("UCR2", "") != NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::isTRAFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TR", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isFunction();
+}
+
+SkPdfFunction SkPdfGraphicsStateDictionary::getTRAsFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TR", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFunction();
+}
+
+bool SkPdfGraphicsStateDictionary::isTRAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TR", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfGraphicsStateDictionary::getTRAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TR", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::isTRAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TR", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfGraphicsStateDictionary::getTRAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TR", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfGraphicsStateDictionary::has_TR() const {
+ return get("TR", "") != NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::isTR2AFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TR2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isFunction();
+}
+
+SkPdfFunction SkPdfGraphicsStateDictionary::getTR2AsFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TR2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFunction();
+}
+
+bool SkPdfGraphicsStateDictionary::isTR2AArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TR2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfGraphicsStateDictionary::getTR2AsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TR2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::isTR2AName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TR2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfGraphicsStateDictionary::getTR2AsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TR2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfGraphicsStateDictionary::has_TR2() const {
+ return get("TR2", "") != NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::isHTADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HT", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfGraphicsStateDictionary::getHTAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HT", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::isHTAStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HT", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfGraphicsStateDictionary::getHTAsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HT", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::isHTAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HT", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfGraphicsStateDictionary::getHTAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HT", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfGraphicsStateDictionary::has_HT() const {
+ return get("HT", "") != NULL;
+}
+
+double SkPdfGraphicsStateDictionary::FL(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FL", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfGraphicsStateDictionary::has_FL() const {
+ return get("FL", "") != NULL;
+}
+
+double SkPdfGraphicsStateDictionary::SM(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SM", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfGraphicsStateDictionary::has_SM() const {
+ return get("SM", "") != NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::SA(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SA", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfGraphicsStateDictionary::has_SA() const {
+ return get("SA", "") != NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::isBMAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BM", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfGraphicsStateDictionary::getBMAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BM", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfGraphicsStateDictionary::isBMAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BM", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfGraphicsStateDictionary::getBMAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BM", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::has_BM() const {
+ return get("BM", "") != NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::isSMaskADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SMask", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfGraphicsStateDictionary::getSMaskAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SMask", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::isSMaskAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SMask", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfGraphicsStateDictionary::getSMaskAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SMask", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfGraphicsStateDictionary::has_SMask() const {
+ return get("SMask", "") != NULL;
+}
+
+double SkPdfGraphicsStateDictionary::CA(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CA", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfGraphicsStateDictionary::has_CA() const {
+ return get("CA", "") != NULL;
+}
+
+double SkPdfGraphicsStateDictionary::ca(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ca", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfGraphicsStateDictionary::has_ca() const {
+ return get("ca", "") != NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::AIS(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AIS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfGraphicsStateDictionary::has_AIS() const {
+ return get("AIS", "") != NULL;
+}
+
+bool SkPdfGraphicsStateDictionary::TK(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TK", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfGraphicsStateDictionary::has_TK() const {
+ return get("TK", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGraphicsStateDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGraphicsStateDictionary_autogen.h
new file mode 100644
index 00000000000..091ef40b64e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGraphicsStateDictionary_autogen.h
@@ -0,0 +1,621 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfGraphicsStateDictionary_DEFINED
+#define SkPdfGraphicsStateDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a graphics state parameter dictionary
+class SkPdfGraphicsStateDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ double LW(SkPdfNativeDoc* doc);
+ bool has_LW() const;
+ int64_t LC(SkPdfNativeDoc* doc);
+ bool has_LC() const;
+ int64_t LJ(SkPdfNativeDoc* doc);
+ bool has_LJ() const;
+ double ML(SkPdfNativeDoc* doc);
+ bool has_ML() const;
+ SkPdfArray* D(SkPdfNativeDoc* doc);
+ bool has_D() const;
+ SkString RI(SkPdfNativeDoc* doc);
+ bool has_RI() const;
+ bool OP(SkPdfNativeDoc* doc);
+ bool has_OP() const;
+ bool op(SkPdfNativeDoc* doc);
+ bool has_op() const;
+ int64_t OPM(SkPdfNativeDoc* doc);
+ bool has_OPM() const;
+ SkPdfArray* Font(SkPdfNativeDoc* doc);
+ bool has_Font() const;
+ SkPdfFunction BG(SkPdfNativeDoc* doc);
+ bool has_BG() const;
+
+ bool isBG2AFunction(SkPdfNativeDoc* doc);
+ SkPdfFunction getBG2AsFunction(SkPdfNativeDoc* doc);
+
+ bool isBG2AName(SkPdfNativeDoc* doc);
+ SkString getBG2AsName(SkPdfNativeDoc* doc);
+ bool has_BG2() const;
+ SkPdfFunction UCR(SkPdfNativeDoc* doc);
+ bool has_UCR() const;
+
+ bool isUCR2AFunction(SkPdfNativeDoc* doc);
+ SkPdfFunction getUCR2AsFunction(SkPdfNativeDoc* doc);
+
+ bool isUCR2AName(SkPdfNativeDoc* doc);
+ SkString getUCR2AsName(SkPdfNativeDoc* doc);
+ bool has_UCR2() const;
+
+ bool isTRAFunction(SkPdfNativeDoc* doc);
+ SkPdfFunction getTRAsFunction(SkPdfNativeDoc* doc);
+
+ bool isTRAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getTRAsArray(SkPdfNativeDoc* doc);
+
+ bool isTRAName(SkPdfNativeDoc* doc);
+ SkString getTRAsName(SkPdfNativeDoc* doc);
+ bool has_TR() const;
+
+ bool isTR2AFunction(SkPdfNativeDoc* doc);
+ SkPdfFunction getTR2AsFunction(SkPdfNativeDoc* doc);
+
+ bool isTR2AArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getTR2AsArray(SkPdfNativeDoc* doc);
+
+ bool isTR2AName(SkPdfNativeDoc* doc);
+ SkString getTR2AsName(SkPdfNativeDoc* doc);
+ bool has_TR2() const;
+
+ bool isHTADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getHTAsDictionary(SkPdfNativeDoc* doc);
+
+ bool isHTAStream(SkPdfNativeDoc* doc);
+ SkPdfStream* getHTAsStream(SkPdfNativeDoc* doc);
+
+ bool isHTAName(SkPdfNativeDoc* doc);
+ SkString getHTAsName(SkPdfNativeDoc* doc);
+ bool has_HT() const;
+ double FL(SkPdfNativeDoc* doc);
+ bool has_FL() const;
+ double SM(SkPdfNativeDoc* doc);
+ bool has_SM() const;
+ bool SA(SkPdfNativeDoc* doc);
+ bool has_SA() const;
+
+ bool isBMAName(SkPdfNativeDoc* doc);
+ SkString getBMAsName(SkPdfNativeDoc* doc);
+
+ bool isBMAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getBMAsArray(SkPdfNativeDoc* doc);
+ bool has_BM() const;
+
+ bool isSMaskADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getSMaskAsDictionary(SkPdfNativeDoc* doc);
+
+ bool isSMaskAName(SkPdfNativeDoc* doc);
+ SkString getSMaskAsName(SkPdfNativeDoc* doc);
+ bool has_SMask() const;
+ double CA(SkPdfNativeDoc* doc);
+ bool has_CA() const;
+ double ca(SkPdfNativeDoc* doc);
+ bool has_ca() const;
+ bool AIS(SkPdfNativeDoc* doc);
+ bool has_AIS() const;
+ bool TK(SkPdfNativeDoc* doc);
+ bool has_TK() const;
+};
+
+#endif // SkPdfGraphicsStateDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGroupAttributesDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGroupAttributesDictionary_autogen.cpp
new file mode 100644
index 00000000000..e7cbcdbdbe7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGroupAttributesDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfGroupAttributesDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfGroupAttributesDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfGroupAttributesDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfGroupAttributesDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfGroupAttributesDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGroupAttributesDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGroupAttributesDictionary_autogen.h
new file mode 100644
index 00000000000..a402a91421f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfGroupAttributesDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfGroupAttributesDictionary_DEFINED
+#define SkPdfGroupAttributesDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries common to all group attributes dictionaries
+class SkPdfGroupAttributesDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+};
+
+#endif // SkPdfGroupAttributesDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfHeaders_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfHeaders_autogen.cpp
new file mode 100644
index 00000000000..aeece4bf86b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfHeaders_autogen.cpp
@@ -0,0 +1,176 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfHeaders_autogen.h"
+#include "SkPdfJavascriptActionDictionary_autogen.cpp"
+#include "SkPdfMovieAnnotationDictionary_autogen.cpp"
+#include "SkPdfMetadataStreamDictionary_autogen.cpp"
+#include "SkPdfPageTreeNodeDictionary_autogen.cpp"
+#include "SkPdfWebCaptureCommandDictionary_autogen.cpp"
+#include "SkPdfAnnotationActionsDictionary_autogen.cpp"
+#include "SkPdfInkAnnotationDictionary_autogen.cpp"
+#include "SkPdfWindowsLaunchActionDictionary_autogen.cpp"
+#include "SkPdfBeadDictionary_autogen.cpp"
+#include "SkPdfPageObjectDictionary_autogen.cpp"
+#include "SkPdfType16HalftoneDictionary_autogen.cpp"
+#include "SkPdfWebCaptureCommandSettingsDictionary_autogen.cpp"
+#include "SkPdfFontDescriptorDictionary_autogen.cpp"
+#include "SkPdfLaunchActionDictionary_autogen.cpp"
+#include "SkPdfType3FontDictionary_autogen.cpp"
+#include "SkPdfMovieActionDictionary_autogen.cpp"
+#include "SkPdfBorderStyleDictionary_autogen.cpp"
+#include "SkPdfNamedActionsDictionary_autogen.cpp"
+#include "SkPdfLzwdecodeAndFlatedecodeFiltersDictionary_autogen.cpp"
+#include "SkPdfTrueTypeFontDictionary_autogen.cpp"
+#include "SkPdfJavascriptDictionary_autogen.cpp"
+#include "SkPdfFDFTrailerDictionary_autogen.cpp"
+#include "SkPdfMultiMasterFontDictionary_autogen.cpp"
+#include "SkPdfEmbeddedFileStreamDictionary_autogen.cpp"
+#include "SkPdfAppearanceDictionary_autogen.cpp"
+#include "SkPdfRadioButtonFieldDictionary_autogen.cpp"
+#include "SkPdfType6HalftoneDictionary_autogen.cpp"
+#include "SkPdfFDFNamedPageReferenceDictionary_autogen.cpp"
+#include "SkPdfWebCaptureImageSetDictionary_autogen.cpp"
+#include "SkPdfBlockLevelStructureElementsDictionary_autogen.cpp"
+#include "SkPdfViewerPreferencesDictionary_autogen.cpp"
+#include "SkPdfType3FunctionDictionary_autogen.cpp"
+#include "SkPdfFieldDictionary_autogen.cpp"
+#include "SkPdfAnnotationDictionary_autogen.cpp"
+#include "SkPdfSoftMaskDictionary_autogen.cpp"
+#include "SkPdfType1HalftoneDictionary_autogen.cpp"
+#include "SkPdfActionDictionary_autogen.cpp"
+#include "SkPdfDocumentInformationDictionary_autogen.cpp"
+#include "SkPdfStructureElementDictionary_autogen.cpp"
+#include "SkPdfIccProfileStreamDictionary_autogen.cpp"
+#include "SkPdfType1FontDictionary_autogen.cpp"
+#include "SkPdfTextFieldDictionary_autogen.cpp"
+#include "SkPdfGroupAttributesDictionary_autogen.cpp"
+#include "SkPdfFileSpecificationDictionary_autogen.cpp"
+#include "SkPdfRubberStampAnnotationDictionary_autogen.cpp"
+#include "SkPdfSoftMaskImageDictionary_autogen.cpp"
+#include "SkPdfTrapNetworkAnnotationDictionary_autogen.cpp"
+#include "SkPdfRemoteGoToActionDictionary_autogen.cpp"
+#include "SkPdfMarkInformationDictionary_autogen.cpp"
+#include "SkPdfComponentsWithMetadataDictionary_autogen.cpp"
+#include "SkPdfAlternateImageDictionary_autogen.cpp"
+#include "SkPdfArtifactsDictionary_autogen.cpp"
+#include "SkPdfPrinterMarkFormDictionary_autogen.cpp"
+#include "SkPdfFreeTextAnnotationDictionary_autogen.cpp"
+#include "SkPdfLineAnnotationDictionary_autogen.cpp"
+#include "SkPdfFDFFileAnnotationDictionary_autogen.cpp"
+#include "SkPdfWebCaptureDictionary_autogen.cpp"
+#include "SkPdfPageObjectActionsDictionary_autogen.cpp"
+#include "SkPdfSeparationDictionary_autogen.cpp"
+#include "SkPdfTextAnnotationDictionary_autogen.cpp"
+#include "SkPdfType3ShadingDictionary_autogen.cpp"
+#include "SkPdfURLAliasDictionary_autogen.cpp"
+#include "SkPdfListAttributeDictionary_autogen.cpp"
+#include "SkPdfResourceDictionary_autogen.cpp"
+#include "SkPdfNameTreeNodeDictionary_autogen.cpp"
+#include "SkPdfIconFitDictionary_autogen.cpp"
+#include "SkPdfImportDataActionDictionary_autogen.cpp"
+#include "SkPdfTransparencyGroupDictionary_autogen.cpp"
+#include "SkPdfInteractiveFormDictionary_autogen.cpp"
+#include "SkPdfMovieActivationDictionary_autogen.cpp"
+#include "SkPdfPageLabelDictionary_autogen.cpp"
+#include "SkPdfLabColorSpaceDictionary_autogen.cpp"
+#include "SkPdfFDFCatalogDictionary_autogen.cpp"
+#include "SkPdfALinkAnnotationDictionary_autogen.cpp"
+#include "SkPdfAppearanceCharacteristicsDictionary_autogen.cpp"
+#include "SkPdfTransitionDictionary_autogen.cpp"
+#include "SkPdfApplicationDataDictionary_autogen.cpp"
+#include "SkPdfFileAttachmentAnnotationDictionary_autogen.cpp"
+#include "SkPdfGraphicsStateDictionary_autogen.cpp"
+#include "SkPdfType0FontDictionary_autogen.cpp"
+#include "SkPdfMacOsFileInformationDictionary_autogen.cpp"
+#include "SkPdfWebCapturePageSetDictionary_autogen.cpp"
+#include "SkPdfNumberTreeNodeDictionary_autogen.cpp"
+#include "SkPdfURIActionDictionary_autogen.cpp"
+#include "SkPdfVariableTextFieldDictionary_autogen.cpp"
+#include "SkPdfJbig2DecodeFilterDictionary_autogen.cpp"
+#include "SkPdfSourceInformationDictionary_autogen.cpp"
+#include "SkPdfFDFDictionary_autogen.cpp"
+#include "SkPdfThreadActionDictionary_autogen.cpp"
+#include "SkPdfReferenceDictionary_autogen.cpp"
+#include "SkPdfEncodingDictionary_autogen.cpp"
+#include "SkPdfFDFFieldDictionary_autogen.cpp"
+#include "SkPdfAttributeObjectDictionary_autogen.cpp"
+#include "SkPdfCIDSystemInfoDictionary_autogen.cpp"
+#include "SkPdfMarkedContentReferenceDictionary_autogen.cpp"
+#include "SkPdfResetFormActionDictionary_autogen.cpp"
+#include "SkPdfDictionary_autogen.cpp"
+#include "SkPdfCalgrayColorSpaceDictionary_autogen.cpp"
+#include "SkPdfSquareOrCircleAnnotation_autogen.cpp"
+#include "SkPdfTableAttributesDictionary_autogen.cpp"
+#include "SkPdfSubmitFormActionDictionary_autogen.cpp"
+#include "SkPdfType2FunctionDictionary_autogen.cpp"
+#include "SkPdfCheckboxFieldDictionary_autogen.cpp"
+#include "SkPdfBoxStyleDictionary_autogen.cpp"
+#include "SkPdfType1PatternDictionary_autogen.cpp"
+#include "SkPdfPagePieceDictionary_autogen.cpp"
+#include "SkPdfEncryptedEmbeddedFileStreamDictionary_autogen.cpp"
+#include "SkPdfType2ShadingDictionary_autogen.cpp"
+#include "SkPdfMarkupAnnotationsDictionary_autogen.cpp"
+#include "SkPdfPopUpAnnotationDictionary_autogen.cpp"
+#include "SkPdfFormFieldActionsDictionary_autogen.cpp"
+#include "SkPdfTrapNetworkAppearanceStreamDictionary_autogen.cpp"
+#include "SkPdfSoundObjectDictionary_autogen.cpp"
+#include "SkPdfOutlineItemDictionary_autogen.cpp"
+#include "SkPdfCIDFontDescriptorDictionary_autogen.cpp"
+#include "SkPdfCMapDictionary_autogen.cpp"
+#include "SkPdfType2PatternDictionary_autogen.cpp"
+#include "SkPdfPSXobjectDictionary_autogen.cpp"
+#include "SkPdfOutlineDictionary_autogen.cpp"
+#include "SkPdfThreadDictionary_autogen.cpp"
+#include "SkPdfImageDictionary_autogen.cpp"
+#include "SkPdfCIDFontDictionary_autogen.cpp"
+#include "SkPdfType5ShadingDictionary_autogen.cpp"
+#include "SkPdfType5HalftoneDictionary_autogen.cpp"
+#include "SkPdfOpiVersionDictionary_autogen.cpp"
+#include "SkPdfStructureElementAccessDictionary_autogen.cpp"
+#include "SkPdfDocumentCatalogActionsDictionary_autogen.cpp"
+#include "SkPdfDeviceNColorSpaceDictionary_autogen.cpp"
+#include "SkPdfMovieDictionary_autogen.cpp"
+#include "SkPdfWidgetAnnotationDictionary_autogen.cpp"
+#include "SkPdfShadingDictionary_autogen.cpp"
+#include "SkPdfCatalogDictionary_autogen.cpp"
+#include "SkPdfStructureTreeRootDictionary_autogen.cpp"
+#include "SkPdfType6ShadingDictionary_autogen.cpp"
+#include "SkPdfFileTrailerDictionary_autogen.cpp"
+#include "SkPdfFDFTemplateDictionary_autogen.cpp"
+#include "SkPdfEmbeddedFileParameterDictionary_autogen.cpp"
+#include "SkPdfBoxColorInformationDictionary_autogen.cpp"
+#include "SkPdfXObjectDictionary_autogen.cpp"
+#include "SkPdfGoToActionDictionary_autogen.cpp"
+#include "SkPdfObjectReferenceDictionary_autogen.cpp"
+#include "SkPdfNameDictionary_autogen.cpp"
+#include "SkPdfWebCaptureInformationDictionary_autogen.cpp"
+#include "SkPdfStreamCommonDictionary_autogen.cpp"
+#include "SkPdfDctdecodeFilterDictionary_autogen.cpp"
+#include "SkPdfPrinterMarkAnnotationDictionary_autogen.cpp"
+#include "SkPdfStandardStructureDictionary_autogen.cpp"
+#include "SkPdfEncryptionCommonDictionary_autogen.cpp"
+#include "SkPdfStandardSecurityHandlerDictionary_autogen.cpp"
+#include "SkPdfSoundAnnotationDictionary_autogen.cpp"
+#include "SkPdfPDF_XOutputIntentDictionary_autogen.cpp"
+#include "SkPdfType4ShadingDictionary_autogen.cpp"
+#include "SkPdfSoundActionDictionary_autogen.cpp"
+#include "SkPdfInlineLevelStructureElementsDictionary_autogen.cpp"
+#include "SkPdfType10HalftoneDictionary_autogen.cpp"
+#include "SkPdfEmbeddedFontStreamDictionary_autogen.cpp"
+#include "SkPdfType1ShadingDictionary_autogen.cpp"
+#include "SkPdfChoiceFieldDictionary_autogen.cpp"
+#include "SkPdfCcittfaxdecodeFilterDictionary_autogen.cpp"
+#include "SkPdfType1FormDictionary_autogen.cpp"
+#include "SkPdfFontDictionary_autogen.cpp"
+#include "SkPdfFunctionCommonDictionary_autogen.cpp"
+#include "SkPdfHideActionDictionary_autogen.cpp"
+#include "SkPdfURIDictionary_autogen.cpp"
+#include "SkPdfSignatureDictionary_autogen.cpp"
+#include "SkPdfType0FunctionDictionary_autogen.cpp"
+#include "SkPdfFDFPageDictionary_autogen.cpp"
+#include "SkPdfCalrgbColorSpaceDictionary_autogen.cpp"
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfHeaders_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfHeaders_autogen.h
new file mode 100644
index 00000000000..7ddfc096cb3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfHeaders_autogen.h
@@ -0,0 +1,179 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfHeaders_DEFINED
+#define SkPdfHeaders_DEFINED
+
+#include "SkPdfJavascriptActionDictionary_autogen.h"
+#include "SkPdfMovieAnnotationDictionary_autogen.h"
+#include "SkPdfMetadataStreamDictionary_autogen.h"
+#include "SkPdfPageTreeNodeDictionary_autogen.h"
+#include "SkPdfWebCaptureCommandDictionary_autogen.h"
+#include "SkPdfAnnotationActionsDictionary_autogen.h"
+#include "SkPdfInkAnnotationDictionary_autogen.h"
+#include "SkPdfWindowsLaunchActionDictionary_autogen.h"
+#include "SkPdfBeadDictionary_autogen.h"
+#include "SkPdfPageObjectDictionary_autogen.h"
+#include "SkPdfType16HalftoneDictionary_autogen.h"
+#include "SkPdfWebCaptureCommandSettingsDictionary_autogen.h"
+#include "SkPdfFontDescriptorDictionary_autogen.h"
+#include "SkPdfLaunchActionDictionary_autogen.h"
+#include "SkPdfType3FontDictionary_autogen.h"
+#include "SkPdfMovieActionDictionary_autogen.h"
+#include "SkPdfBorderStyleDictionary_autogen.h"
+#include "SkPdfNamedActionsDictionary_autogen.h"
+#include "SkPdfLzwdecodeAndFlatedecodeFiltersDictionary_autogen.h"
+#include "SkPdfTrueTypeFontDictionary_autogen.h"
+#include "SkPdfJavascriptDictionary_autogen.h"
+#include "SkPdfFDFTrailerDictionary_autogen.h"
+#include "SkPdfMultiMasterFontDictionary_autogen.h"
+#include "SkPdfEmbeddedFileStreamDictionary_autogen.h"
+#include "SkPdfAppearanceDictionary_autogen.h"
+#include "SkPdfRadioButtonFieldDictionary_autogen.h"
+#include "SkPdfType6HalftoneDictionary_autogen.h"
+#include "SkPdfFDFNamedPageReferenceDictionary_autogen.h"
+#include "SkPdfWebCaptureImageSetDictionary_autogen.h"
+#include "SkPdfBlockLevelStructureElementsDictionary_autogen.h"
+#include "SkPdfViewerPreferencesDictionary_autogen.h"
+#include "SkPdfType3FunctionDictionary_autogen.h"
+#include "SkPdfFieldDictionary_autogen.h"
+#include "SkPdfAnnotationDictionary_autogen.h"
+#include "SkPdfSoftMaskDictionary_autogen.h"
+#include "SkPdfType1HalftoneDictionary_autogen.h"
+#include "SkPdfActionDictionary_autogen.h"
+#include "SkPdfDocumentInformationDictionary_autogen.h"
+#include "SkPdfStructureElementDictionary_autogen.h"
+#include "SkPdfIccProfileStreamDictionary_autogen.h"
+#include "SkPdfType1FontDictionary_autogen.h"
+#include "SkPdfTextFieldDictionary_autogen.h"
+#include "SkPdfGroupAttributesDictionary_autogen.h"
+#include "SkPdfFileSpecificationDictionary_autogen.h"
+#include "SkPdfRubberStampAnnotationDictionary_autogen.h"
+#include "SkPdfSoftMaskImageDictionary_autogen.h"
+#include "SkPdfTrapNetworkAnnotationDictionary_autogen.h"
+#include "SkPdfRemoteGoToActionDictionary_autogen.h"
+#include "SkPdfMarkInformationDictionary_autogen.h"
+#include "SkPdfComponentsWithMetadataDictionary_autogen.h"
+#include "SkPdfAlternateImageDictionary_autogen.h"
+#include "SkPdfArtifactsDictionary_autogen.h"
+#include "SkPdfPrinterMarkFormDictionary_autogen.h"
+#include "SkPdfFreeTextAnnotationDictionary_autogen.h"
+#include "SkPdfLineAnnotationDictionary_autogen.h"
+#include "SkPdfFDFFileAnnotationDictionary_autogen.h"
+#include "SkPdfWebCaptureDictionary_autogen.h"
+#include "SkPdfPageObjectActionsDictionary_autogen.h"
+#include "SkPdfSeparationDictionary_autogen.h"
+#include "SkPdfTextAnnotationDictionary_autogen.h"
+#include "SkPdfType3ShadingDictionary_autogen.h"
+#include "SkPdfURLAliasDictionary_autogen.h"
+#include "SkPdfListAttributeDictionary_autogen.h"
+#include "SkPdfResourceDictionary_autogen.h"
+#include "SkPdfNameTreeNodeDictionary_autogen.h"
+#include "SkPdfIconFitDictionary_autogen.h"
+#include "SkPdfImportDataActionDictionary_autogen.h"
+#include "SkPdfTransparencyGroupDictionary_autogen.h"
+#include "SkPdfInteractiveFormDictionary_autogen.h"
+#include "SkPdfMovieActivationDictionary_autogen.h"
+#include "SkPdfPageLabelDictionary_autogen.h"
+#include "SkPdfLabColorSpaceDictionary_autogen.h"
+#include "SkPdfFDFCatalogDictionary_autogen.h"
+#include "SkPdfALinkAnnotationDictionary_autogen.h"
+#include "SkPdfAppearanceCharacteristicsDictionary_autogen.h"
+#include "SkPdfTransitionDictionary_autogen.h"
+#include "SkPdfApplicationDataDictionary_autogen.h"
+#include "SkPdfFileAttachmentAnnotationDictionary_autogen.h"
+#include "SkPdfGraphicsStateDictionary_autogen.h"
+#include "SkPdfType0FontDictionary_autogen.h"
+#include "SkPdfMacOsFileInformationDictionary_autogen.h"
+#include "SkPdfWebCapturePageSetDictionary_autogen.h"
+#include "SkPdfNumberTreeNodeDictionary_autogen.h"
+#include "SkPdfURIActionDictionary_autogen.h"
+#include "SkPdfVariableTextFieldDictionary_autogen.h"
+#include "SkPdfJbig2DecodeFilterDictionary_autogen.h"
+#include "SkPdfSourceInformationDictionary_autogen.h"
+#include "SkPdfFDFDictionary_autogen.h"
+#include "SkPdfThreadActionDictionary_autogen.h"
+#include "SkPdfReferenceDictionary_autogen.h"
+#include "SkPdfEncodingDictionary_autogen.h"
+#include "SkPdfFDFFieldDictionary_autogen.h"
+#include "SkPdfAttributeObjectDictionary_autogen.h"
+#include "SkPdfCIDSystemInfoDictionary_autogen.h"
+#include "SkPdfMarkedContentReferenceDictionary_autogen.h"
+#include "SkPdfResetFormActionDictionary_autogen.h"
+#include "SkPdfDictionary_autogen.h"
+#include "SkPdfCalgrayColorSpaceDictionary_autogen.h"
+#include "SkPdfSquareOrCircleAnnotation_autogen.h"
+#include "SkPdfTableAttributesDictionary_autogen.h"
+#include "SkPdfSubmitFormActionDictionary_autogen.h"
+#include "SkPdfType2FunctionDictionary_autogen.h"
+#include "SkPdfCheckboxFieldDictionary_autogen.h"
+#include "SkPdfBoxStyleDictionary_autogen.h"
+#include "SkPdfType1PatternDictionary_autogen.h"
+#include "SkPdfPagePieceDictionary_autogen.h"
+#include "SkPdfEncryptedEmbeddedFileStreamDictionary_autogen.h"
+#include "SkPdfType2ShadingDictionary_autogen.h"
+#include "SkPdfMarkupAnnotationsDictionary_autogen.h"
+#include "SkPdfPopUpAnnotationDictionary_autogen.h"
+#include "SkPdfFormFieldActionsDictionary_autogen.h"
+#include "SkPdfTrapNetworkAppearanceStreamDictionary_autogen.h"
+#include "SkPdfSoundObjectDictionary_autogen.h"
+#include "SkPdfOutlineItemDictionary_autogen.h"
+#include "SkPdfCIDFontDescriptorDictionary_autogen.h"
+#include "SkPdfCMapDictionary_autogen.h"
+#include "SkPdfType2PatternDictionary_autogen.h"
+#include "SkPdfPSXobjectDictionary_autogen.h"
+#include "SkPdfOutlineDictionary_autogen.h"
+#include "SkPdfThreadDictionary_autogen.h"
+#include "SkPdfImageDictionary_autogen.h"
+#include "SkPdfCIDFontDictionary_autogen.h"
+#include "SkPdfType5ShadingDictionary_autogen.h"
+#include "SkPdfType5HalftoneDictionary_autogen.h"
+#include "SkPdfOpiVersionDictionary_autogen.h"
+#include "SkPdfStructureElementAccessDictionary_autogen.h"
+#include "SkPdfDocumentCatalogActionsDictionary_autogen.h"
+#include "SkPdfDeviceNColorSpaceDictionary_autogen.h"
+#include "SkPdfMovieDictionary_autogen.h"
+#include "SkPdfWidgetAnnotationDictionary_autogen.h"
+#include "SkPdfShadingDictionary_autogen.h"
+#include "SkPdfCatalogDictionary_autogen.h"
+#include "SkPdfStructureTreeRootDictionary_autogen.h"
+#include "SkPdfType6ShadingDictionary_autogen.h"
+#include "SkPdfFileTrailerDictionary_autogen.h"
+#include "SkPdfFDFTemplateDictionary_autogen.h"
+#include "SkPdfEmbeddedFileParameterDictionary_autogen.h"
+#include "SkPdfBoxColorInformationDictionary_autogen.h"
+#include "SkPdfXObjectDictionary_autogen.h"
+#include "SkPdfGoToActionDictionary_autogen.h"
+#include "SkPdfObjectReferenceDictionary_autogen.h"
+#include "SkPdfNameDictionary_autogen.h"
+#include "SkPdfWebCaptureInformationDictionary_autogen.h"
+#include "SkPdfStreamCommonDictionary_autogen.h"
+#include "SkPdfDctdecodeFilterDictionary_autogen.h"
+#include "SkPdfPrinterMarkAnnotationDictionary_autogen.h"
+#include "SkPdfStandardStructureDictionary_autogen.h"
+#include "SkPdfEncryptionCommonDictionary_autogen.h"
+#include "SkPdfStandardSecurityHandlerDictionary_autogen.h"
+#include "SkPdfSoundAnnotationDictionary_autogen.h"
+#include "SkPdfPDF_XOutputIntentDictionary_autogen.h"
+#include "SkPdfType4ShadingDictionary_autogen.h"
+#include "SkPdfSoundActionDictionary_autogen.h"
+#include "SkPdfInlineLevelStructureElementsDictionary_autogen.h"
+#include "SkPdfType10HalftoneDictionary_autogen.h"
+#include "SkPdfEmbeddedFontStreamDictionary_autogen.h"
+#include "SkPdfType1ShadingDictionary_autogen.h"
+#include "SkPdfChoiceFieldDictionary_autogen.h"
+#include "SkPdfCcittfaxdecodeFilterDictionary_autogen.h"
+#include "SkPdfType1FormDictionary_autogen.h"
+#include "SkPdfFontDictionary_autogen.h"
+#include "SkPdfFunctionCommonDictionary_autogen.h"
+#include "SkPdfHideActionDictionary_autogen.h"
+#include "SkPdfURIDictionary_autogen.h"
+#include "SkPdfSignatureDictionary_autogen.h"
+#include "SkPdfType0FunctionDictionary_autogen.h"
+#include "SkPdfFDFPageDictionary_autogen.h"
+#include "SkPdfCalrgbColorSpaceDictionary_autogen.h"
+#endif // SkPdfHeaders_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfHideActionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfHideActionDictionary_autogen.cpp
new file mode 100644
index 00000000000..a03ca3b8afc
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfHideActionDictionary_autogen.cpp
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfHideActionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfHideActionDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfHideActionDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+bool SkPdfHideActionDictionary::isTADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("T", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfHideActionDictionary::getTAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("T", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfHideActionDictionary::isTAString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("T", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isAnyString();
+}
+
+SkString SkPdfHideActionDictionary::getTAsString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("T", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfHideActionDictionary::isTAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("T", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfHideActionDictionary::getTAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("T", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfHideActionDictionary::has_T() const {
+ return get("T", "") != NULL;
+}
+
+bool SkPdfHideActionDictionary::H(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("H", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfHideActionDictionary::has_H() const {
+ return get("H", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfHideActionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfHideActionDictionary_autogen.h
new file mode 100644
index 00000000000..832e42e51d0
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfHideActionDictionary_autogen.h
@@ -0,0 +1,537 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfHideActionDictionary_DEFINED
+#define SkPdfHideActionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a hide action
+class SkPdfHideActionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfHideActionDictionary* asHideActionDictionary() {return this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+
+ bool isTADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getTAsDictionary(SkPdfNativeDoc* doc);
+
+ bool isTAString(SkPdfNativeDoc* doc);
+ SkString getTAsString(SkPdfNativeDoc* doc);
+
+ bool isTAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getTAsArray(SkPdfNativeDoc* doc);
+ bool has_T() const;
+ bool H(SkPdfNativeDoc* doc);
+ bool has_H() const;
+};
+
+#endif // SkPdfHideActionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfIccProfileStreamDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfIccProfileStreamDictionary_autogen.cpp
new file mode 100644
index 00000000000..5fc21542965
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfIccProfileStreamDictionary_autogen.cpp
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfIccProfileStreamDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfIccProfileStreamDictionary::N(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("N", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfIccProfileStreamDictionary::has_N() const {
+ return get("N", "") != NULL;
+}
+
+bool SkPdfIccProfileStreamDictionary::isAlternateAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Alternate", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfIccProfileStreamDictionary::getAlternateAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Alternate", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfIccProfileStreamDictionary::isAlternateAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Alternate", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfIccProfileStreamDictionary::getAlternateAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Alternate", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfIccProfileStreamDictionary::has_Alternate() const {
+ return get("Alternate", "") != NULL;
+}
+
+SkPdfArray* SkPdfIccProfileStreamDictionary::Range(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Range", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfIccProfileStreamDictionary::has_Range() const {
+ return get("Range", "") != NULL;
+}
+
+SkPdfStream* SkPdfIccProfileStreamDictionary::Metadata(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Metadata", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfIccProfileStreamDictionary::has_Metadata() const {
+ return get("Metadata", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfIccProfileStreamDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfIccProfileStreamDictionary_autogen.h
new file mode 100644
index 00000000000..c6a23399a61
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfIccProfileStreamDictionary_autogen.h
@@ -0,0 +1,536 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfIccProfileStreamDictionary_DEFINED
+#define SkPdfIccProfileStreamDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to an ICC profile stream dictionary
+class SkPdfIccProfileStreamDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t N(SkPdfNativeDoc* doc);
+ bool has_N() const;
+
+ bool isAlternateAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getAlternateAsArray(SkPdfNativeDoc* doc);
+
+ bool isAlternateAName(SkPdfNativeDoc* doc);
+ SkString getAlternateAsName(SkPdfNativeDoc* doc);
+ bool has_Alternate() const;
+ SkPdfArray* Range(SkPdfNativeDoc* doc);
+ bool has_Range() const;
+ SkPdfStream* Metadata(SkPdfNativeDoc* doc);
+ bool has_Metadata() const;
+};
+
+#endif // SkPdfIccProfileStreamDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfIconFitDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfIconFitDictionary_autogen.cpp
new file mode 100644
index 00000000000..75def3199a3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfIconFitDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfIconFitDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfIconFitDictionary::SW(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SW", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfIconFitDictionary::has_SW() const {
+ return get("SW", "") != NULL;
+}
+
+SkString SkPdfIconFitDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfIconFitDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkPdfArray* SkPdfIconFitDictionary::A(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("A", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfIconFitDictionary::has_A() const {
+ return get("A", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfIconFitDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfIconFitDictionary_autogen.h
new file mode 100644
index 00000000000..d9fab7b7c3f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfIconFitDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfIconFitDictionary_DEFINED
+#define SkPdfIconFitDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in an icon fit dictionary
+class SkPdfIconFitDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfIconFitDictionary* asIconFitDictionary() {return this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString SW(SkPdfNativeDoc* doc);
+ bool has_SW() const;
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkPdfArray* A(SkPdfNativeDoc* doc);
+ bool has_A() const;
+};
+
+#endif // SkPdfIconFitDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfImageDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfImageDictionary_autogen.cpp
new file mode 100644
index 00000000000..e142a78aa88
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfImageDictionary_autogen.cpp
@@ -0,0 +1,265 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfImageDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfImageDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfImageDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfImageDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfImageDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+int64_t SkPdfImageDictionary::Width(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Width", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfImageDictionary::has_Width() const {
+ return get("Width", "") != NULL;
+}
+
+int64_t SkPdfImageDictionary::Height(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Height", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfImageDictionary::has_Height() const {
+ return get("Height", "") != NULL;
+}
+
+bool SkPdfImageDictionary::isColorSpaceAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ColorSpace", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfImageDictionary::getColorSpaceAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ColorSpace", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfImageDictionary::isColorSpaceAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ColorSpace", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfImageDictionary::getColorSpaceAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ColorSpace", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfImageDictionary::has_ColorSpace() const {
+ return get("ColorSpace", "") != NULL;
+}
+
+int64_t SkPdfImageDictionary::BitsPerComponent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BitsPerComponent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfImageDictionary::has_BitsPerComponent() const {
+ return get("BitsPerComponent", "") != NULL;
+}
+
+SkString SkPdfImageDictionary::Intent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Intent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfImageDictionary::has_Intent() const {
+ return get("Intent", "") != NULL;
+}
+
+bool SkPdfImageDictionary::ImageMask(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ImageMask", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfImageDictionary::has_ImageMask() const {
+ return get("ImageMask", "") != NULL;
+}
+
+bool SkPdfImageDictionary::isMaskAStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Mask", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfImageDictionary::getMaskAsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Mask", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfImageDictionary::isMaskAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Mask", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfImageDictionary::getMaskAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Mask", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfImageDictionary::has_Mask() const {
+ return get("Mask", "") != NULL;
+}
+
+SkPdfImageDictionary* SkPdfImageDictionary::SMask(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SMask", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary() && ((SkPdfImageDictionary*)ret)->valid()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfImageDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfImageDictionary::has_SMask() const {
+ return get("SMask", "") != NULL;
+}
+
+SkPdfArray* SkPdfImageDictionary::Decode(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Decode", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfImageDictionary::has_Decode() const {
+ return get("Decode", "") != NULL;
+}
+
+bool SkPdfImageDictionary::Interpolate(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Interpolate", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfImageDictionary::has_Interpolate() const {
+ return get("Interpolate", "") != NULL;
+}
+
+SkPdfArray* SkPdfImageDictionary::Alternates(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Alternates", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfImageDictionary::has_Alternates() const {
+ return get("Alternates", "") != NULL;
+}
+
+SkString SkPdfImageDictionary::Name(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Name", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfImageDictionary::has_Name() const {
+ return get("Name", "") != NULL;
+}
+
+int64_t SkPdfImageDictionary::StructParent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("StructParent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfImageDictionary::has_StructParent() const {
+ return get("StructParent", "") != NULL;
+}
+
+SkString SkPdfImageDictionary::ID(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ID", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfImageDictionary::has_ID() const {
+ return get("ID", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfImageDictionary::OPI(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("OPI", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfImageDictionary::has_OPI() const {
+ return get("OPI", "") != NULL;
+}
+
+SkPdfStream* SkPdfImageDictionary::Metadata(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Metadata", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfImageDictionary::has_Metadata() const {
+ return get("Metadata", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfImageDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfImageDictionary_autogen.h
new file mode 100644
index 00000000000..322ca018fea
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfImageDictionary_autogen.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfImageDictionary_DEFINED
+#define SkPdfImageDictionary_DEFINED
+
+#include "SkPdfXObjectDictionary_autogen.h"
+
+// Additional entries specific to an image dictionary
+class SkPdfImageDictionary : public SkPdfXObjectDictionary {
+public:
+public:
+ SkPdfImageDictionary* asImageDictionary() {return this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return this;}
+
+private:
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ int64_t Width(SkPdfNativeDoc* doc);
+ bool has_Width() const;
+ int64_t Height(SkPdfNativeDoc* doc);
+ bool has_Height() const;
+
+ bool isColorSpaceAName(SkPdfNativeDoc* doc);
+ SkString getColorSpaceAsName(SkPdfNativeDoc* doc);
+
+ bool isColorSpaceAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getColorSpaceAsArray(SkPdfNativeDoc* doc);
+ bool has_ColorSpace() const;
+ int64_t BitsPerComponent(SkPdfNativeDoc* doc);
+ bool has_BitsPerComponent() const;
+ SkString Intent(SkPdfNativeDoc* doc);
+ bool has_Intent() const;
+ bool ImageMask(SkPdfNativeDoc* doc);
+ bool has_ImageMask() const;
+
+ bool isMaskAStream(SkPdfNativeDoc* doc);
+ SkPdfStream* getMaskAsStream(SkPdfNativeDoc* doc);
+
+ bool isMaskAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getMaskAsArray(SkPdfNativeDoc* doc);
+ bool has_Mask() const;
+ SkPdfImageDictionary* SMask(SkPdfNativeDoc* doc);
+ bool has_SMask() const;
+ SkPdfArray* Decode(SkPdfNativeDoc* doc);
+ bool has_Decode() const;
+ bool Interpolate(SkPdfNativeDoc* doc);
+ bool has_Interpolate() const;
+ SkPdfArray* Alternates(SkPdfNativeDoc* doc);
+ bool has_Alternates() const;
+ SkString Name(SkPdfNativeDoc* doc);
+ bool has_Name() const;
+ int64_t StructParent(SkPdfNativeDoc* doc);
+ bool has_StructParent() const;
+ SkString ID(SkPdfNativeDoc* doc);
+ bool has_ID() const;
+ SkPdfDictionary* OPI(SkPdfNativeDoc* doc);
+ bool has_OPI() const;
+ SkPdfStream* Metadata(SkPdfNativeDoc* doc);
+ bool has_Metadata() const;
+};
+
+#endif // SkPdfImageDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfImportDataActionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfImportDataActionDictionary_autogen.cpp
new file mode 100644
index 00000000000..3f47eb8a541
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfImportDataActionDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfImportDataActionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfImportDataActionDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfImportDataActionDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkPdfFileSpec SkPdfImportDataActionDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->fileSpecValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkPdfFileSpec();
+}
+
+bool SkPdfImportDataActionDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfImportDataActionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfImportDataActionDictionary_autogen.h
new file mode 100644
index 00000000000..88f2e5719a6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfImportDataActionDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfImportDataActionDictionary_DEFINED
+#define SkPdfImportDataActionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to an import-data action
+class SkPdfImportDataActionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkPdfFileSpec F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+};
+
+#endif // SkPdfImportDataActionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInkAnnotationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInkAnnotationDictionary_autogen.cpp
new file mode 100644
index 00000000000..069ac29e489
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInkAnnotationDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfInkAnnotationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfInkAnnotationDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfInkAnnotationDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfInkAnnotationDictionary::Contents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfInkAnnotationDictionary::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+SkPdfArray* SkPdfInkAnnotationDictionary::InkList(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("InkList", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfInkAnnotationDictionary::has_InkList() const {
+ return get("InkList", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfInkAnnotationDictionary::BS(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfInkAnnotationDictionary::has_BS() const {
+ return get("BS", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInkAnnotationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInkAnnotationDictionary_autogen.h
new file mode 100644
index 00000000000..e3b1b850374
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInkAnnotationDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfInkAnnotationDictionary_DEFINED
+#define SkPdfInkAnnotationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to an ink annotation
+class SkPdfInkAnnotationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString Contents(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+ SkPdfArray* InkList(SkPdfNativeDoc* doc);
+ bool has_InkList() const;
+ SkPdfDictionary* BS(SkPdfNativeDoc* doc);
+ bool has_BS() const;
+};
+
+#endif // SkPdfInkAnnotationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInlineLevelStructureElementsDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInlineLevelStructureElementsDictionary_autogen.cpp
new file mode 100644
index 00000000000..788459dfc8b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInlineLevelStructureElementsDictionary_autogen.cpp
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfInlineLevelStructureElementsDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+bool SkPdfInlineLevelStructureElementsDictionary::isLineHeightANumber(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("LineHeight", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isNumber();
+}
+
+double SkPdfInlineLevelStructureElementsDictionary::getLineHeightAsNumber(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("LineHeight", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfInlineLevelStructureElementsDictionary::isLineHeightAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("LineHeight", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfInlineLevelStructureElementsDictionary::getLineHeightAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("LineHeight", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfInlineLevelStructureElementsDictionary::has_LineHeight() const {
+ return get("LineHeight", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInlineLevelStructureElementsDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInlineLevelStructureElementsDictionary_autogen.h
new file mode 100644
index 00000000000..13770c03b18
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInlineLevelStructureElementsDictionary_autogen.h
@@ -0,0 +1,530 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfInlineLevelStructureElementsDictionary_DEFINED
+#define SkPdfInlineLevelStructureElementsDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Standard layout attributes specific to inline-level structure elements
+class SkPdfInlineLevelStructureElementsDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+
+ bool isLineHeightANumber(SkPdfNativeDoc* doc);
+ double getLineHeightAsNumber(SkPdfNativeDoc* doc);
+
+ bool isLineHeightAName(SkPdfNativeDoc* doc);
+ SkString getLineHeightAsName(SkPdfNativeDoc* doc);
+ bool has_LineHeight() const;
+};
+
+#endif // SkPdfInlineLevelStructureElementsDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInteractiveFormDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInteractiveFormDictionary_autogen.cpp
new file mode 100644
index 00000000000..880355e19c0
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInteractiveFormDictionary_autogen.cpp
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfInteractiveFormDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfInteractiveFormDictionary::Fields(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Fields", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfInteractiveFormDictionary::has_Fields() const {
+ return get("Fields", "") != NULL;
+}
+
+bool SkPdfInteractiveFormDictionary::NeedAppearances(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("NeedAppearances", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfInteractiveFormDictionary::has_NeedAppearances() const {
+ return get("NeedAppearances", "") != NULL;
+}
+
+int64_t SkPdfInteractiveFormDictionary::SigFlags(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SigFlags", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfInteractiveFormDictionary::has_SigFlags() const {
+ return get("SigFlags", "") != NULL;
+}
+
+SkPdfArray* SkPdfInteractiveFormDictionary::CO(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CO", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfInteractiveFormDictionary::has_CO() const {
+ return get("CO", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfInteractiveFormDictionary::DR(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DR", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfInteractiveFormDictionary::has_DR() const {
+ return get("DR", "") != NULL;
+}
+
+SkString SkPdfInteractiveFormDictionary::DA(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DA", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfInteractiveFormDictionary::has_DA() const {
+ return get("DA", "") != NULL;
+}
+
+int64_t SkPdfInteractiveFormDictionary::Q(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Q", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfInteractiveFormDictionary::has_Q() const {
+ return get("Q", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInteractiveFormDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInteractiveFormDictionary_autogen.h
new file mode 100644
index 00000000000..0e3a536a776
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfInteractiveFormDictionary_autogen.h
@@ -0,0 +1,537 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfInteractiveFormDictionary_DEFINED
+#define SkPdfInteractiveFormDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in the interactive form dictionary
+class SkPdfInteractiveFormDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* Fields(SkPdfNativeDoc* doc);
+ bool has_Fields() const;
+ bool NeedAppearances(SkPdfNativeDoc* doc);
+ bool has_NeedAppearances() const;
+ int64_t SigFlags(SkPdfNativeDoc* doc);
+ bool has_SigFlags() const;
+ SkPdfArray* CO(SkPdfNativeDoc* doc);
+ bool has_CO() const;
+ SkPdfDictionary* DR(SkPdfNativeDoc* doc);
+ bool has_DR() const;
+ SkString DA(SkPdfNativeDoc* doc);
+ bool has_DA() const;
+ int64_t Q(SkPdfNativeDoc* doc);
+ bool has_Q() const;
+};
+
+#endif // SkPdfInteractiveFormDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJavascriptActionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJavascriptActionDictionary_autogen.cpp
new file mode 100644
index 00000000000..7ec85679da0
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJavascriptActionDictionary_autogen.cpp
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfJavascriptActionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfJavascriptActionDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfJavascriptActionDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+bool SkPdfJavascriptActionDictionary::isJSAString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("JS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isAnyString();
+}
+
+SkString SkPdfJavascriptActionDictionary::getJSAsString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("JS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfJavascriptActionDictionary::isJSAStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("JS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfJavascriptActionDictionary::getJSAsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("JS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfJavascriptActionDictionary::has_JS() const {
+ return get("JS", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJavascriptActionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJavascriptActionDictionary_autogen.h
new file mode 100644
index 00000000000..5c32412fbb7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJavascriptActionDictionary_autogen.h
@@ -0,0 +1,532 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfJavascriptActionDictionary_DEFINED
+#define SkPdfJavascriptActionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a JavaScript action
+class SkPdfJavascriptActionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+
+ bool isJSAString(SkPdfNativeDoc* doc);
+ SkString getJSAsString(SkPdfNativeDoc* doc);
+
+ bool isJSAStream(SkPdfNativeDoc* doc);
+ SkPdfStream* getJSAsStream(SkPdfNativeDoc* doc);
+ bool has_JS() const;
+};
+
+#endif // SkPdfJavascriptActionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJavascriptDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJavascriptDictionary_autogen.cpp
new file mode 100644
index 00000000000..c90c44d3a11
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJavascriptDictionary_autogen.cpp
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfJavascriptDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+bool SkPdfJavascriptDictionary::isBeforeAString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Before", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isAnyString();
+}
+
+SkString SkPdfJavascriptDictionary::getBeforeAsString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Before", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfJavascriptDictionary::isBeforeAStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Before", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfJavascriptDictionary::getBeforeAsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Before", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfJavascriptDictionary::has_Before() const {
+ return get("Before", "") != NULL;
+}
+
+bool SkPdfJavascriptDictionary::isAfterAString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("After", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isAnyString();
+}
+
+SkString SkPdfJavascriptDictionary::getAfterAsString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("After", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfJavascriptDictionary::isAfterAStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("After", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfJavascriptDictionary::getAfterAsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("After", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfJavascriptDictionary::has_After() const {
+ return get("After", "") != NULL;
+}
+
+SkPdfArray* SkPdfJavascriptDictionary::Doc(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Doc", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfJavascriptDictionary::has_Doc() const {
+ return get("Doc", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJavascriptDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJavascriptDictionary_autogen.h
new file mode 100644
index 00000000000..a53363f0236
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJavascriptDictionary_autogen.h
@@ -0,0 +1,539 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfJavascriptDictionary_DEFINED
+#define SkPdfJavascriptDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in the JavaScript dictionary
+class SkPdfJavascriptDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+
+ bool isBeforeAString(SkPdfNativeDoc* doc);
+ SkString getBeforeAsString(SkPdfNativeDoc* doc);
+
+ bool isBeforeAStream(SkPdfNativeDoc* doc);
+ SkPdfStream* getBeforeAsStream(SkPdfNativeDoc* doc);
+ bool has_Before() const;
+
+ bool isAfterAString(SkPdfNativeDoc* doc);
+ SkString getAfterAsString(SkPdfNativeDoc* doc);
+
+ bool isAfterAStream(SkPdfNativeDoc* doc);
+ SkPdfStream* getAfterAsStream(SkPdfNativeDoc* doc);
+ bool has_After() const;
+ SkPdfArray* Doc(SkPdfNativeDoc* doc);
+ bool has_Doc() const;
+};
+
+#endif // SkPdfJavascriptDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJbig2DecodeFilterDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJbig2DecodeFilterDictionary_autogen.cpp
new file mode 100644
index 00000000000..8239e3a01bc
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJbig2DecodeFilterDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfJbig2DecodeFilterDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfStream* SkPdfJbig2DecodeFilterDictionary::JBIG2Globals(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("JBIG2Globals", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfJbig2DecodeFilterDictionary::has_JBIG2Globals() const {
+ return get("JBIG2Globals", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJbig2DecodeFilterDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJbig2DecodeFilterDictionary_autogen.h
new file mode 100644
index 00000000000..9630832bbb8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfJbig2DecodeFilterDictionary_autogen.h
@@ -0,0 +1,525 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfJbig2DecodeFilterDictionary_DEFINED
+#define SkPdfJbig2DecodeFilterDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Optional parameter for the JBIG2Decode filter
+class SkPdfJbig2DecodeFilterDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfStream* JBIG2Globals(SkPdfNativeDoc* doc);
+ bool has_JBIG2Globals() const;
+};
+
+#endif // SkPdfJbig2DecodeFilterDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLabColorSpaceDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLabColorSpaceDictionary_autogen.cpp
new file mode 100644
index 00000000000..9cf09ec2297
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLabColorSpaceDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfLabColorSpaceDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfLabColorSpaceDictionary::WhitePoint(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("WhitePoint", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfLabColorSpaceDictionary::has_WhitePoint() const {
+ return get("WhitePoint", "") != NULL;
+}
+
+SkPdfArray* SkPdfLabColorSpaceDictionary::BlackPoint(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BlackPoint", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfLabColorSpaceDictionary::has_BlackPoint() const {
+ return get("BlackPoint", "") != NULL;
+}
+
+SkPdfArray* SkPdfLabColorSpaceDictionary::Range(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Range", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfLabColorSpaceDictionary::has_Range() const {
+ return get("Range", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLabColorSpaceDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLabColorSpaceDictionary_autogen.h
new file mode 100644
index 00000000000..abc6451adf7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLabColorSpaceDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfLabColorSpaceDictionary_DEFINED
+#define SkPdfLabColorSpaceDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a Lab color space dictionary
+class SkPdfLabColorSpaceDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* WhitePoint(SkPdfNativeDoc* doc);
+ bool has_WhitePoint() const;
+ SkPdfArray* BlackPoint(SkPdfNativeDoc* doc);
+ bool has_BlackPoint() const;
+ SkPdfArray* Range(SkPdfNativeDoc* doc);
+ bool has_Range() const;
+};
+
+#endif // SkPdfLabColorSpaceDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLaunchActionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLaunchActionDictionary_autogen.cpp
new file mode 100644
index 00000000000..5bd2701453e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLaunchActionDictionary_autogen.cpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfLaunchActionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfLaunchActionDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfLaunchActionDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkPdfFileSpec SkPdfLaunchActionDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->fileSpecValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFileSpec();
+}
+
+bool SkPdfLaunchActionDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfLaunchActionDictionary::Win(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Win", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfLaunchActionDictionary::has_Win() const {
+ return get("Win", "") != NULL;
+}
+
+SkPdfNativeObject* SkPdfLaunchActionDictionary::Mac(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Mac", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && true) || (doc == NULL && ret != NULL && ret->isReference())) return ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfLaunchActionDictionary::has_Mac() const {
+ return get("Mac", "") != NULL;
+}
+
+SkPdfNativeObject* SkPdfLaunchActionDictionary::Unix(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Unix", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && true) || (doc == NULL && ret != NULL && ret->isReference())) return ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfLaunchActionDictionary::has_Unix() const {
+ return get("Unix", "") != NULL;
+}
+
+bool SkPdfLaunchActionDictionary::NewWindow(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("NewWindow", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfLaunchActionDictionary::has_NewWindow() const {
+ return get("NewWindow", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLaunchActionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLaunchActionDictionary_autogen.h
new file mode 100644
index 00000000000..61a80e84b2e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLaunchActionDictionary_autogen.h
@@ -0,0 +1,535 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfLaunchActionDictionary_DEFINED
+#define SkPdfLaunchActionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a launch action
+class SkPdfLaunchActionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkPdfFileSpec F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+ SkPdfDictionary* Win(SkPdfNativeDoc* doc);
+ bool has_Win() const;
+ SkPdfNativeObject* Mac(SkPdfNativeDoc* doc);
+ bool has_Mac() const;
+ SkPdfNativeObject* Unix(SkPdfNativeDoc* doc);
+ bool has_Unix() const;
+ bool NewWindow(SkPdfNativeDoc* doc);
+ bool has_NewWindow() const;
+};
+
+#endif // SkPdfLaunchActionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLineAnnotationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLineAnnotationDictionary_autogen.cpp
new file mode 100644
index 00000000000..8d710ad67e8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLineAnnotationDictionary_autogen.cpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfLineAnnotationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfLineAnnotationDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfLineAnnotationDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfLineAnnotationDictionary::Contents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfLineAnnotationDictionary::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+SkPdfArray* SkPdfLineAnnotationDictionary::L(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("L", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfLineAnnotationDictionary::has_L() const {
+ return get("L", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfLineAnnotationDictionary::BS(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfLineAnnotationDictionary::has_BS() const {
+ return get("BS", "") != NULL;
+}
+
+SkPdfArray* SkPdfLineAnnotationDictionary::LE(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("LE", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfLineAnnotationDictionary::has_LE() const {
+ return get("LE", "") != NULL;
+}
+
+SkPdfArray* SkPdfLineAnnotationDictionary::IC(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("IC", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfLineAnnotationDictionary::has_IC() const {
+ return get("IC", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLineAnnotationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLineAnnotationDictionary_autogen.h
new file mode 100644
index 00000000000..61a860eec68
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLineAnnotationDictionary_autogen.h
@@ -0,0 +1,535 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfLineAnnotationDictionary_DEFINED
+#define SkPdfLineAnnotationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a line annotation
+class SkPdfLineAnnotationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString Contents(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+ SkPdfArray* L(SkPdfNativeDoc* doc);
+ bool has_L() const;
+ SkPdfDictionary* BS(SkPdfNativeDoc* doc);
+ bool has_BS() const;
+ SkPdfArray* LE(SkPdfNativeDoc* doc);
+ bool has_LE() const;
+ SkPdfArray* IC(SkPdfNativeDoc* doc);
+ bool has_IC() const;
+};
+
+#endif // SkPdfLineAnnotationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfListAttributeDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfListAttributeDictionary_autogen.cpp
new file mode 100644
index 00000000000..1e4ff0eb119
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfListAttributeDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfListAttributeDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfListAttributeDictionary::ListNumbering(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ListNumbering", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfListAttributeDictionary::has_ListNumbering() const {
+ return get("ListNumbering", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfListAttributeDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfListAttributeDictionary_autogen.h
new file mode 100644
index 00000000000..18fbe57c65b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfListAttributeDictionary_autogen.h
@@ -0,0 +1,525 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfListAttributeDictionary_DEFINED
+#define SkPdfListAttributeDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Standard list attribute
+class SkPdfListAttributeDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString ListNumbering(SkPdfNativeDoc* doc);
+ bool has_ListNumbering() const;
+};
+
+#endif // SkPdfListAttributeDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLzwdecodeAndFlatedecodeFiltersDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLzwdecodeAndFlatedecodeFiltersDictionary_autogen.cpp
new file mode 100644
index 00000000000..35f4c44389b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLzwdecodeAndFlatedecodeFiltersDictionary_autogen.cpp
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfLzwdecodeAndFlatedecodeFiltersDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfLzwdecodeAndFlatedecodeFiltersDictionary::Predictor(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Predictor", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfLzwdecodeAndFlatedecodeFiltersDictionary::has_Predictor() const {
+ return get("Predictor", "") != NULL;
+}
+
+int64_t SkPdfLzwdecodeAndFlatedecodeFiltersDictionary::Colors(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Colors", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfLzwdecodeAndFlatedecodeFiltersDictionary::has_Colors() const {
+ return get("Colors", "") != NULL;
+}
+
+int64_t SkPdfLzwdecodeAndFlatedecodeFiltersDictionary::BitsPerComponent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BitsPerComponent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfLzwdecodeAndFlatedecodeFiltersDictionary::has_BitsPerComponent() const {
+ return get("BitsPerComponent", "") != NULL;
+}
+
+int64_t SkPdfLzwdecodeAndFlatedecodeFiltersDictionary::Columns(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Columns", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfLzwdecodeAndFlatedecodeFiltersDictionary::has_Columns() const {
+ return get("Columns", "") != NULL;
+}
+
+int64_t SkPdfLzwdecodeAndFlatedecodeFiltersDictionary::EarlyChange(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("EarlyChange", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfLzwdecodeAndFlatedecodeFiltersDictionary::has_EarlyChange() const {
+ return get("EarlyChange", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLzwdecodeAndFlatedecodeFiltersDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLzwdecodeAndFlatedecodeFiltersDictionary_autogen.h
new file mode 100644
index 00000000000..d66d7a2dd8f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfLzwdecodeAndFlatedecodeFiltersDictionary_autogen.h
@@ -0,0 +1,533 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfLzwdecodeAndFlatedecodeFiltersDictionary_DEFINED
+#define SkPdfLzwdecodeAndFlatedecodeFiltersDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Optional parameters for LZWDecode and FlateDecode filters
+class SkPdfLzwdecodeAndFlatedecodeFiltersDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t Predictor(SkPdfNativeDoc* doc);
+ bool has_Predictor() const;
+ int64_t Colors(SkPdfNativeDoc* doc);
+ bool has_Colors() const;
+ int64_t BitsPerComponent(SkPdfNativeDoc* doc);
+ bool has_BitsPerComponent() const;
+ int64_t Columns(SkPdfNativeDoc* doc);
+ bool has_Columns() const;
+ int64_t EarlyChange(SkPdfNativeDoc* doc);
+ bool has_EarlyChange() const;
+};
+
+#endif // SkPdfLzwdecodeAndFlatedecodeFiltersDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMacOsFileInformationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMacOsFileInformationDictionary_autogen.cpp
new file mode 100644
index 00000000000..e6903c970fd
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMacOsFileInformationDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfMacOsFileInformationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfMacOsFileInformationDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfMacOsFileInformationDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfMacOsFileInformationDictionary::Creator(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Creator", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfMacOsFileInformationDictionary::has_Creator() const {
+ return get("Creator", "") != NULL;
+}
+
+SkPdfStream* SkPdfMacOsFileInformationDictionary::ResFork(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ResFork", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfMacOsFileInformationDictionary::has_ResFork() const {
+ return get("ResFork", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMacOsFileInformationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMacOsFileInformationDictionary_autogen.h
new file mode 100644
index 00000000000..99aad27b144
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMacOsFileInformationDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfMacOsFileInformationDictionary_DEFINED
+#define SkPdfMacOsFileInformationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a Mac OS file information dictionary
+class SkPdfMacOsFileInformationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString Creator(SkPdfNativeDoc* doc);
+ bool has_Creator() const;
+ SkPdfStream* ResFork(SkPdfNativeDoc* doc);
+ bool has_ResFork() const;
+};
+
+#endif // SkPdfMacOsFileInformationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMapper_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMapper_autogen.cpp
new file mode 100644
index 00000000000..006b1b21c47
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMapper_autogen.cpp
@@ -0,0 +1,4634 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfMapper_autogen.h"
+#include "SkPdfUtils.h"
+#include "SkPdfNativeObject.h"
+
+SkPdfNativeObjectType SkPdfMapper::mapDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+ SkPdfNativeObjectType ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapALinkAnnotationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapActionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapAlternateImageDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapAnnotationActionsDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapAnnotationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapAppearanceCharacteristicsDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapAppearanceDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapApplicationDataDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapArtifactsDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapAttributeObjectDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapBeadDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapBlockLevelStructureElementsDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapBorderStyleDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapBoxColorInformationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapBoxStyleDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapCIDFontDescriptorDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapCIDFontDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapCIDSystemInfoDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapCMapDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapCalgrayColorSpaceDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapCalrgbColorSpaceDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapCatalogDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapCcittfaxdecodeFilterDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapCheckboxFieldDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapChoiceFieldDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapComponentsWithMetadataDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapDctdecodeFilterDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapDeviceNColorSpaceDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapDocumentCatalogActionsDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapDocumentInformationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapEmbeddedFileParameterDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapEmbeddedFileStreamDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapEmbeddedFontStreamDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapEncodingDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapEncryptedEmbeddedFileStreamDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapEncryptionCommonDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFDFCatalogDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFDFDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFDFFieldDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFDFFileAnnotationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFDFNamedPageReferenceDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFDFPageDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFDFTemplateDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFDFTrailerDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFieldDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFileAttachmentAnnotationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFileSpecificationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFileTrailerDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFontDescriptorDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFontDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFormFieldActionsDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFreeTextAnnotationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapFunctionCommonDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapGoToActionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapGraphicsStateDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapGroupAttributesDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapHideActionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapIccProfileStreamDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapIconFitDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapImportDataActionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapInkAnnotationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapInlineLevelStructureElementsDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapInteractiveFormDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapJavascriptActionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapJavascriptDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapJbig2DecodeFilterDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapLabColorSpaceDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapLaunchActionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapLineAnnotationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapListAttributeDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapLzwdecodeAndFlatedecodeFiltersDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapMacOsFileInformationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapMarkInformationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapMarkedContentReferenceDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapMarkupAnnotationsDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapMetadataStreamDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapMovieActionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapMovieActivationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapMovieAnnotationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapMovieDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapNameDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapNameTreeNodeDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapNamedActionsDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapNumberTreeNodeDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapObjectReferenceDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapOpiVersionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapOutlineDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapOutlineItemDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapPDF_XOutputIntentDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapPSXobjectDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapPageLabelDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapPageObjectActionsDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapPageObjectDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapPagePieceDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapPageTreeNodeDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapPopUpAnnotationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapPrinterMarkAnnotationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapPrinterMarkFormDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapRadioButtonFieldDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapReferenceDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapRemoteGoToActionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapResetFormActionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapResourceDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapRubberStampAnnotationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapSeparationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapShadingDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapSignatureDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapSoftMaskDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapSoundActionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapSoundAnnotationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapSoundObjectDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapSourceInformationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapSquareOrCircleAnnotation(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapStandardSecurityHandlerDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapStandardStructureDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapStreamCommonDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapStructureElementAccessDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapStructureElementDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapStructureTreeRootDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapSubmitFormActionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapTableAttributesDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapTextAnnotationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapTextFieldDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapThreadActionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapThreadDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapTransitionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapTransparencyGroupDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapTrapNetworkAnnotationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapTrapNetworkAppearanceStreamDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType0FunctionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType10HalftoneDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType16HalftoneDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType1HalftoneDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType1PatternDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType2FunctionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType2PatternDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType3FunctionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType5HalftoneDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType6HalftoneDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapURIActionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapURIDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapURLAliasDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapVariableTextFieldDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapViewerPreferencesDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapWebCaptureCommandDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapWebCaptureCommandSettingsDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapWebCaptureDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapWebCaptureImageSetDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapWebCaptureInformationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapWebCapturePageSetDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapWidgetAnnotationDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapWindowsLaunchActionDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapXObjectDictionary(in))) return ret;
+
+ return kDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapXObjectDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isXObjectDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+ SkPdfNativeObjectType ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapImageDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType1FormDictionary(in))) return ret;
+
+ return kXObjectDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFontDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFontDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+ SkPdfNativeObjectType ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType0FontDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType1FontDictionary(in))) return ret;
+
+ return kFontDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapTrueTypeFontDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isTrueTypeFontDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kTrueTypeFontDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapStreamCommonDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isStreamCommonDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kStreamCommonDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapLzwdecodeAndFlatedecodeFiltersDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isLzwdecodeAndFlatedecodeFiltersDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kLzwdecodeAndFlatedecodeFiltersDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapCcittfaxdecodeFilterDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isCcittfaxdecodeFilterDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kCcittfaxdecodeFilterDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapJbig2DecodeFilterDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isJbig2DecodeFilterDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kJbig2DecodeFilterDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapDctdecodeFilterDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isDctdecodeFilterDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kDctdecodeFilterDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFileTrailerDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFileTrailerDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kFileTrailerDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapEncryptionCommonDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isEncryptionCommonDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kEncryptionCommonDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapStandardSecurityHandlerDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isStandardSecurityHandlerDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kStandardSecurityHandlerDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapCatalogDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isCatalogDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kCatalogDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapPageTreeNodeDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isPageTreeNodeDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kPageTreeNodeDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapPageObjectDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isPageObjectDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kPageObjectDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapNameDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isNameDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kNameDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapResourceDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isResourceDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kResourceDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapNameTreeNodeDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isNameTreeNodeDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kNameTreeNodeDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapNumberTreeNodeDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isNumberTreeNodeDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kNumberTreeNodeDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFunctionCommonDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFunctionCommonDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kFunctionCommonDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType0FunctionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType0FunctionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType0FunctionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType2FunctionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType2FunctionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType2FunctionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType3FunctionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType3FunctionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType3FunctionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFileSpecificationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFileSpecificationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kFileSpecificationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapEmbeddedFileStreamDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isEmbeddedFileStreamDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kEmbeddedFileStreamDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapEmbeddedFileParameterDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isEmbeddedFileParameterDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kEmbeddedFileParameterDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapMacOsFileInformationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isMacOsFileInformationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kMacOsFileInformationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapGraphicsStateDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isGraphicsStateDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kGraphicsStateDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapCalgrayColorSpaceDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isCalgrayColorSpaceDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kCalgrayColorSpaceDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapCalrgbColorSpaceDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isCalrgbColorSpaceDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kCalrgbColorSpaceDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapLabColorSpaceDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isLabColorSpaceDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kLabColorSpaceDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapIccProfileStreamDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isIccProfileStreamDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kIccProfileStreamDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapDeviceNColorSpaceDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isDeviceNColorSpaceDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kDeviceNColorSpaceDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType1PatternDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType1PatternDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType1PatternDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType2PatternDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType2PatternDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType2PatternDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapShadingDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isShadingDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+ SkPdfNativeObjectType ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType1ShadingDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType2ShadingDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType3ShadingDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType4ShadingDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType5ShadingDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType6ShadingDictionary(in))) return ret;
+
+ return kShadingDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType1ShadingDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType1ShadingDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType1ShadingDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType2ShadingDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType2ShadingDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType2ShadingDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType3ShadingDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType3ShadingDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType3ShadingDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType4ShadingDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType4ShadingDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType4ShadingDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType5ShadingDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType5ShadingDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType5ShadingDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType6ShadingDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType6ShadingDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType6ShadingDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapImageDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isImageDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+ SkPdfNativeObjectType ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapSoftMaskImageDictionary(in))) return ret;
+
+ return kImageDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapAlternateImageDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isAlternateImageDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kAlternateImageDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType1FormDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType1FormDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType1FormDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapGroupAttributesDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isGroupAttributesDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kGroupAttributesDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapReferenceDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isReferenceDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kReferenceDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapPSXobjectDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isPSXobjectDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kPSXobjectDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType1FontDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType1FontDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+ SkPdfNativeObjectType ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapMultiMasterFontDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapTrueTypeFontDictionary(in))) return ret;
+ if (kNone_SkPdfNativeObjectType != (ret = mapType3FontDictionary(in))) return ret;
+
+ return kType1FontDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType3FontDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType3FontDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType3FontDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapEncodingDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isEncodingDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kEncodingDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapCIDSystemInfoDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isCIDSystemInfoDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kCIDSystemInfoDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapCIDFontDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isCIDFontDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kCIDFontDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapCMapDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isCMapDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kCMapDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType0FontDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType0FontDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType0FontDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFontDescriptorDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFontDescriptorDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kFontDescriptorDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapCIDFontDescriptorDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isCIDFontDescriptorDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kCIDFontDescriptorDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapEmbeddedFontStreamDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isEmbeddedFontStreamDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kEmbeddedFontStreamDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType1HalftoneDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType1HalftoneDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType1HalftoneDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType6HalftoneDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType6HalftoneDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType6HalftoneDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType10HalftoneDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType10HalftoneDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType10HalftoneDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType16HalftoneDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType16HalftoneDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType16HalftoneDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapType5HalftoneDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isType5HalftoneDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kType5HalftoneDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapSoftMaskDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isSoftMaskDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kSoftMaskDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapSoftMaskImageDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isSoftMaskImageDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kSoftMaskImageDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapTransparencyGroupDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isTransparencyGroupDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kTransparencyGroupDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapViewerPreferencesDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isViewerPreferencesDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kViewerPreferencesDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapOutlineDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isOutlineDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kOutlineDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapOutlineItemDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isOutlineItemDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kOutlineItemDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapPageLabelDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isPageLabelDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kPageLabelDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapThreadDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isThreadDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kThreadDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapBeadDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isBeadDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kBeadDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapTransitionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isTransitionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kTransitionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapAnnotationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isAnnotationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kAnnotationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapBorderStyleDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isBorderStyleDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kBorderStyleDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapAppearanceDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isAppearanceDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kAppearanceDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapTextAnnotationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isTextAnnotationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kTextAnnotationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapALinkAnnotationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isALinkAnnotationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kALinkAnnotationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFreeTextAnnotationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFreeTextAnnotationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kFreeTextAnnotationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapLineAnnotationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isLineAnnotationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kLineAnnotationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapSquareOrCircleAnnotation(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isSquareOrCircleAnnotation(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kSquareOrCircleAnnotation_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapMarkupAnnotationsDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isMarkupAnnotationsDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kMarkupAnnotationsDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapRubberStampAnnotationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isRubberStampAnnotationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kRubberStampAnnotationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapInkAnnotationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isInkAnnotationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kInkAnnotationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapPopUpAnnotationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isPopUpAnnotationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kPopUpAnnotationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFileAttachmentAnnotationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFileAttachmentAnnotationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kFileAttachmentAnnotationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapSoundAnnotationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isSoundAnnotationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kSoundAnnotationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapMovieAnnotationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isMovieAnnotationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kMovieAnnotationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapWidgetAnnotationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isWidgetAnnotationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kWidgetAnnotationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapActionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isActionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kActionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapAnnotationActionsDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isAnnotationActionsDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kAnnotationActionsDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapPageObjectActionsDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isPageObjectActionsDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kPageObjectActionsDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFormFieldActionsDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFormFieldActionsDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kFormFieldActionsDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapDocumentCatalogActionsDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isDocumentCatalogActionsDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kDocumentCatalogActionsDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapGoToActionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isGoToActionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kGoToActionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapRemoteGoToActionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isRemoteGoToActionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kRemoteGoToActionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapLaunchActionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isLaunchActionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kLaunchActionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapWindowsLaunchActionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isWindowsLaunchActionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kWindowsLaunchActionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapThreadActionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isThreadActionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kThreadActionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapURIActionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isURIActionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kURIActionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapURIDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isURIDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kURIDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapSoundActionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isSoundActionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kSoundActionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapMovieActionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isMovieActionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kMovieActionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapHideActionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isHideActionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kHideActionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapNamedActionsDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isNamedActionsDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kNamedActionsDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapInteractiveFormDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isInteractiveFormDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kInteractiveFormDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFieldDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFieldDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kFieldDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapVariableTextFieldDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isVariableTextFieldDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kVariableTextFieldDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapAppearanceCharacteristicsDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isAppearanceCharacteristicsDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kAppearanceCharacteristicsDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapCheckboxFieldDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isCheckboxFieldDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kCheckboxFieldDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapRadioButtonFieldDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isRadioButtonFieldDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kRadioButtonFieldDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapTextFieldDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isTextFieldDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kTextFieldDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapChoiceFieldDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isChoiceFieldDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kChoiceFieldDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapSignatureDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isSignatureDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kSignatureDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapSubmitFormActionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isSubmitFormActionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kSubmitFormActionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapResetFormActionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isResetFormActionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kResetFormActionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapImportDataActionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isImportDataActionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kImportDataActionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapJavascriptActionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isJavascriptActionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kJavascriptActionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFDFTrailerDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFDFTrailerDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kFDFTrailerDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFDFCatalogDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFDFCatalogDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kFDFCatalogDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFDFDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFDFDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kFDFDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapEncryptedEmbeddedFileStreamDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isEncryptedEmbeddedFileStreamDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kEncryptedEmbeddedFileStreamDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapJavascriptDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isJavascriptDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kJavascriptDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFDFFieldDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFDFFieldDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kFDFFieldDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapIconFitDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isIconFitDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kIconFitDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFDFPageDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFDFPageDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kFDFPageDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFDFTemplateDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFDFTemplateDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kFDFTemplateDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFDFNamedPageReferenceDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFDFNamedPageReferenceDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kFDFNamedPageReferenceDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapFDFFileAnnotationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isFDFFileAnnotationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kFDFFileAnnotationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapSoundObjectDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isSoundObjectDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kSoundObjectDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapMovieDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isMovieDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kMovieDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapMovieActivationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isMovieActivationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kMovieActivationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapDocumentInformationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isDocumentInformationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kDocumentInformationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapMetadataStreamDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isMetadataStreamDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kMetadataStreamDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapComponentsWithMetadataDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isComponentsWithMetadataDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kComponentsWithMetadataDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapPagePieceDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isPagePieceDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kPagePieceDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapApplicationDataDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isApplicationDataDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kApplicationDataDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapStructureTreeRootDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isStructureTreeRootDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kStructureTreeRootDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapStructureElementDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isStructureElementDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kStructureElementDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapMarkedContentReferenceDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isMarkedContentReferenceDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kMarkedContentReferenceDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapObjectReferenceDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isObjectReferenceDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kObjectReferenceDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapStructureElementAccessDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isStructureElementAccessDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kStructureElementAccessDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapAttributeObjectDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isAttributeObjectDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kAttributeObjectDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapMarkInformationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isMarkInformationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kMarkInformationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapArtifactsDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isArtifactsDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kArtifactsDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapStandardStructureDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isStandardStructureDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kStandardStructureDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapBlockLevelStructureElementsDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isBlockLevelStructureElementsDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kBlockLevelStructureElementsDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapInlineLevelStructureElementsDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isInlineLevelStructureElementsDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kInlineLevelStructureElementsDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapListAttributeDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isListAttributeDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kListAttributeDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapTableAttributesDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isTableAttributesDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kTableAttributesDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapWebCaptureInformationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isWebCaptureInformationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kWebCaptureInformationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapWebCaptureDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isWebCaptureDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kWebCaptureDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapWebCapturePageSetDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isWebCapturePageSetDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kWebCapturePageSetDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapWebCaptureImageSetDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isWebCaptureImageSetDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kWebCaptureImageSetDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapSourceInformationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isSourceInformationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kSourceInformationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapURLAliasDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isURLAliasDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kURLAliasDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapWebCaptureCommandDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isWebCaptureCommandDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kWebCaptureCommandDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapWebCaptureCommandSettingsDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isWebCaptureCommandSettingsDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kWebCaptureCommandSettingsDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapBoxColorInformationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isBoxColorInformationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kBoxColorInformationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapBoxStyleDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isBoxStyleDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kBoxStyleDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapPrinterMarkAnnotationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isPrinterMarkAnnotationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kPrinterMarkAnnotationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapPrinterMarkFormDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isPrinterMarkFormDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kPrinterMarkFormDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapSeparationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isSeparationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kSeparationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapPDF_XOutputIntentDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isPDF_XOutputIntentDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kPDF_XOutputIntentDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapTrapNetworkAnnotationDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isTrapNetworkAnnotationDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kTrapNetworkAnnotationDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapTrapNetworkAppearanceStreamDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isTrapNetworkAppearanceStreamDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kTrapNetworkAppearanceStreamDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapOpiVersionDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isOpiVersionDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kOpiVersionDictionary_SkPdfNativeObjectType;
+}
+
+SkPdfNativeObjectType SkPdfMapper::mapMultiMasterFontDictionary(const SkPdfNativeObject* in) const {
+ if (in == NULL || !isMultiMasterFontDictionary(in)) return kNone_SkPdfNativeObjectType;
+
+
+ return kMultiMasterFontDictionary_SkPdfNativeObjectType;
+}
+
+bool SkPdfMapper::isDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapDictionary(value)) return false;
+ *data = (SkPdfDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfDictionary** data) const {
+ if (SkPdfDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isXObjectDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfXObjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfXObjectDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapXObjectDictionary(value)) return false;
+ *data = (SkPdfXObjectDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfXObjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfXObjectDictionary** data) const {
+ if (SkPdfXObjectDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfXObjectDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFontDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFontDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFontDictionary(value)) return false;
+ *data = (SkPdfFontDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFontDictionary** data) const {
+ if (SkPdfFontDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFontDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isTrueTypeFontDictionary(const SkPdfNativeObject* nativeObj) const {
+ const SkPdfNativeObject* ret = NULL;
+ if (!nativeObj->isDictionary()) return false;
+ ret = nativeObj->get("Subtype", "");
+ if (ret == NULL || !ret->isName()) return false;
+ if ((ret->nameValue2() != "TrueType")) return false;
+
+ return true;
+}
+
+bool SkPdfMapper::SkPdfTrueTypeFontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfTrueTypeFontDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapTrueTypeFontDictionary(value)) return false;
+ *data = (SkPdfTrueTypeFontDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfTrueTypeFontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfTrueTypeFontDictionary** data) const {
+ if (SkPdfTrueTypeFontDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfTrueTypeFontDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isStreamCommonDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfStreamCommonDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfStreamCommonDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapStreamCommonDictionary(value)) return false;
+ *data = (SkPdfStreamCommonDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfStreamCommonDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfStreamCommonDictionary** data) const {
+ if (SkPdfStreamCommonDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfStreamCommonDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isLzwdecodeAndFlatedecodeFiltersDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfLzwdecodeAndFlatedecodeFiltersDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfLzwdecodeAndFlatedecodeFiltersDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapLzwdecodeAndFlatedecodeFiltersDictionary(value)) return false;
+ *data = (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfLzwdecodeAndFlatedecodeFiltersDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfLzwdecodeAndFlatedecodeFiltersDictionary** data) const {
+ if (SkPdfLzwdecodeAndFlatedecodeFiltersDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfLzwdecodeAndFlatedecodeFiltersDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isCcittfaxdecodeFilterDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCcittfaxdecodeFilterDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCcittfaxdecodeFilterDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapCcittfaxdecodeFilterDictionary(value)) return false;
+ *data = (SkPdfCcittfaxdecodeFilterDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCcittfaxdecodeFilterDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCcittfaxdecodeFilterDictionary** data) const {
+ if (SkPdfCcittfaxdecodeFilterDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfCcittfaxdecodeFilterDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isJbig2DecodeFilterDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfJbig2DecodeFilterDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfJbig2DecodeFilterDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapJbig2DecodeFilterDictionary(value)) return false;
+ *data = (SkPdfJbig2DecodeFilterDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfJbig2DecodeFilterDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfJbig2DecodeFilterDictionary** data) const {
+ if (SkPdfJbig2DecodeFilterDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfJbig2DecodeFilterDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isDctdecodeFilterDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfDctdecodeFilterDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfDctdecodeFilterDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapDctdecodeFilterDictionary(value)) return false;
+ *data = (SkPdfDctdecodeFilterDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfDctdecodeFilterDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfDctdecodeFilterDictionary** data) const {
+ if (SkPdfDctdecodeFilterDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfDctdecodeFilterDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFileTrailerDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFileTrailerDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFileTrailerDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFileTrailerDictionary(value)) return false;
+ *data = (SkPdfFileTrailerDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFileTrailerDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFileTrailerDictionary** data) const {
+ if (SkPdfFileTrailerDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFileTrailerDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isEncryptionCommonDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfEncryptionCommonDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfEncryptionCommonDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapEncryptionCommonDictionary(value)) return false;
+ *data = (SkPdfEncryptionCommonDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfEncryptionCommonDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfEncryptionCommonDictionary** data) const {
+ if (SkPdfEncryptionCommonDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfEncryptionCommonDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isStandardSecurityHandlerDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfStandardSecurityHandlerDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfStandardSecurityHandlerDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapStandardSecurityHandlerDictionary(value)) return false;
+ *data = (SkPdfStandardSecurityHandlerDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfStandardSecurityHandlerDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfStandardSecurityHandlerDictionary** data) const {
+ if (SkPdfStandardSecurityHandlerDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfStandardSecurityHandlerDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isCatalogDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCatalogDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCatalogDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapCatalogDictionary(value)) return false;
+ *data = (SkPdfCatalogDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCatalogDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCatalogDictionary** data) const {
+ if (SkPdfCatalogDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfCatalogDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isPageTreeNodeDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPageTreeNodeDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPageTreeNodeDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapPageTreeNodeDictionary(value)) return false;
+ *data = (SkPdfPageTreeNodeDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPageTreeNodeDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPageTreeNodeDictionary** data) const {
+ if (SkPdfPageTreeNodeDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfPageTreeNodeDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isPageObjectDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPageObjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPageObjectDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapPageObjectDictionary(value)) return false;
+ *data = (SkPdfPageObjectDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPageObjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPageObjectDictionary** data) const {
+ if (SkPdfPageObjectDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfPageObjectDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isNameDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfNameDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfNameDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapNameDictionary(value)) return false;
+ *data = (SkPdfNameDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfNameDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfNameDictionary** data) const {
+ if (SkPdfNameDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfNameDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isResourceDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfResourceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfResourceDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapResourceDictionary(value)) return false;
+ *data = (SkPdfResourceDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfResourceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfResourceDictionary** data) const {
+ if (SkPdfResourceDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfResourceDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isNameTreeNodeDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfNameTreeNodeDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfNameTreeNodeDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapNameTreeNodeDictionary(value)) return false;
+ *data = (SkPdfNameTreeNodeDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfNameTreeNodeDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfNameTreeNodeDictionary** data) const {
+ if (SkPdfNameTreeNodeDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfNameTreeNodeDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isNumberTreeNodeDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfNumberTreeNodeDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfNumberTreeNodeDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapNumberTreeNodeDictionary(value)) return false;
+ *data = (SkPdfNumberTreeNodeDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfNumberTreeNodeDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfNumberTreeNodeDictionary** data) const {
+ if (SkPdfNumberTreeNodeDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfNumberTreeNodeDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFunctionCommonDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFunctionCommonDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFunctionCommonDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFunctionCommonDictionary(value)) return false;
+ *data = (SkPdfFunctionCommonDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFunctionCommonDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFunctionCommonDictionary** data) const {
+ if (SkPdfFunctionCommonDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFunctionCommonDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType0FunctionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType0FunctionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType0FunctionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType0FunctionDictionary(value)) return false;
+ *data = (SkPdfType0FunctionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType0FunctionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType0FunctionDictionary** data) const {
+ if (SkPdfType0FunctionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType0FunctionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType2FunctionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType2FunctionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType2FunctionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType2FunctionDictionary(value)) return false;
+ *data = (SkPdfType2FunctionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType2FunctionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType2FunctionDictionary** data) const {
+ if (SkPdfType2FunctionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType2FunctionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType3FunctionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType3FunctionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType3FunctionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType3FunctionDictionary(value)) return false;
+ *data = (SkPdfType3FunctionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType3FunctionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType3FunctionDictionary** data) const {
+ if (SkPdfType3FunctionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType3FunctionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFileSpecificationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFileSpecificationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFileSpecificationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFileSpecificationDictionary(value)) return false;
+ *data = (SkPdfFileSpecificationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFileSpecificationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFileSpecificationDictionary** data) const {
+ if (SkPdfFileSpecificationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFileSpecificationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isEmbeddedFileStreamDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfEmbeddedFileStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfEmbeddedFileStreamDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapEmbeddedFileStreamDictionary(value)) return false;
+ *data = (SkPdfEmbeddedFileStreamDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfEmbeddedFileStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfEmbeddedFileStreamDictionary** data) const {
+ if (SkPdfEmbeddedFileStreamDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfEmbeddedFileStreamDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isEmbeddedFileParameterDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfEmbeddedFileParameterDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfEmbeddedFileParameterDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapEmbeddedFileParameterDictionary(value)) return false;
+ *data = (SkPdfEmbeddedFileParameterDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfEmbeddedFileParameterDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfEmbeddedFileParameterDictionary** data) const {
+ if (SkPdfEmbeddedFileParameterDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfEmbeddedFileParameterDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isMacOsFileInformationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMacOsFileInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMacOsFileInformationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapMacOsFileInformationDictionary(value)) return false;
+ *data = (SkPdfMacOsFileInformationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMacOsFileInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMacOsFileInformationDictionary** data) const {
+ if (SkPdfMacOsFileInformationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfMacOsFileInformationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isGraphicsStateDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfGraphicsStateDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfGraphicsStateDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapGraphicsStateDictionary(value)) return false;
+ *data = (SkPdfGraphicsStateDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfGraphicsStateDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfGraphicsStateDictionary** data) const {
+ if (SkPdfGraphicsStateDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfGraphicsStateDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isCalgrayColorSpaceDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCalgrayColorSpaceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCalgrayColorSpaceDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapCalgrayColorSpaceDictionary(value)) return false;
+ *data = (SkPdfCalgrayColorSpaceDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCalgrayColorSpaceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCalgrayColorSpaceDictionary** data) const {
+ if (SkPdfCalgrayColorSpaceDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfCalgrayColorSpaceDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isCalrgbColorSpaceDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCalrgbColorSpaceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCalrgbColorSpaceDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapCalrgbColorSpaceDictionary(value)) return false;
+ *data = (SkPdfCalrgbColorSpaceDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCalrgbColorSpaceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCalrgbColorSpaceDictionary** data) const {
+ if (SkPdfCalrgbColorSpaceDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfCalrgbColorSpaceDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isLabColorSpaceDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfLabColorSpaceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfLabColorSpaceDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapLabColorSpaceDictionary(value)) return false;
+ *data = (SkPdfLabColorSpaceDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfLabColorSpaceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfLabColorSpaceDictionary** data) const {
+ if (SkPdfLabColorSpaceDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfLabColorSpaceDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isIccProfileStreamDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfIccProfileStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfIccProfileStreamDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapIccProfileStreamDictionary(value)) return false;
+ *data = (SkPdfIccProfileStreamDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfIccProfileStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfIccProfileStreamDictionary** data) const {
+ if (SkPdfIccProfileStreamDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfIccProfileStreamDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isDeviceNColorSpaceDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfDeviceNColorSpaceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfDeviceNColorSpaceDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapDeviceNColorSpaceDictionary(value)) return false;
+ *data = (SkPdfDeviceNColorSpaceDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfDeviceNColorSpaceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfDeviceNColorSpaceDictionary** data) const {
+ if (SkPdfDeviceNColorSpaceDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfDeviceNColorSpaceDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType1PatternDictionary(const SkPdfNativeObject* nativeObj) const {
+ const SkPdfNativeObject* ret = NULL;
+ if (!nativeObj->isDictionary()) return false;
+ ret = nativeObj->get("PatternType", "");
+ if (ret == NULL || !ret->isInteger()) return false;
+ if ((ret->intValue() != 1)) return false;
+
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType1PatternDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType1PatternDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType1PatternDictionary(value)) return false;
+ *data = (SkPdfType1PatternDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType1PatternDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType1PatternDictionary** data) const {
+ if (SkPdfType1PatternDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType1PatternDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType2PatternDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType2PatternDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType2PatternDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType2PatternDictionary(value)) return false;
+ *data = (SkPdfType2PatternDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType2PatternDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType2PatternDictionary** data) const {
+ if (SkPdfType2PatternDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType2PatternDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isShadingDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfShadingDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapShadingDictionary(value)) return false;
+ *data = (SkPdfShadingDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfShadingDictionary** data) const {
+ if (SkPdfShadingDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfShadingDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType1ShadingDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType1ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType1ShadingDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType1ShadingDictionary(value)) return false;
+ *data = (SkPdfType1ShadingDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType1ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType1ShadingDictionary** data) const {
+ if (SkPdfType1ShadingDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType1ShadingDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType2ShadingDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType2ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType2ShadingDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType2ShadingDictionary(value)) return false;
+ *data = (SkPdfType2ShadingDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType2ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType2ShadingDictionary** data) const {
+ if (SkPdfType2ShadingDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType2ShadingDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType3ShadingDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType3ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType3ShadingDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType3ShadingDictionary(value)) return false;
+ *data = (SkPdfType3ShadingDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType3ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType3ShadingDictionary** data) const {
+ if (SkPdfType3ShadingDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType3ShadingDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType4ShadingDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType4ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType4ShadingDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType4ShadingDictionary(value)) return false;
+ *data = (SkPdfType4ShadingDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType4ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType4ShadingDictionary** data) const {
+ if (SkPdfType4ShadingDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType4ShadingDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType5ShadingDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType5ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType5ShadingDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType5ShadingDictionary(value)) return false;
+ *data = (SkPdfType5ShadingDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType5ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType5ShadingDictionary** data) const {
+ if (SkPdfType5ShadingDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType5ShadingDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType6ShadingDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType6ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType6ShadingDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType6ShadingDictionary(value)) return false;
+ *data = (SkPdfType6ShadingDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType6ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType6ShadingDictionary** data) const {
+ if (SkPdfType6ShadingDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType6ShadingDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isImageDictionary(const SkPdfNativeObject* nativeObj) const {
+ const SkPdfNativeObject* ret = NULL;
+ if (!nativeObj->isDictionary()) return false;
+ ret = nativeObj->get("Subtype", "");
+ if (ret == NULL || !ret->isName()) return false;
+ if ((ret->nameValue2() != "Image") && (ret->nameValue2() != "Image")) return false;
+
+ return true;
+}
+
+bool SkPdfMapper::SkPdfImageDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfImageDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapImageDictionary(value)) return false;
+ *data = (SkPdfImageDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfImageDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfImageDictionary** data) const {
+ if (SkPdfImageDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfImageDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isAlternateImageDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfAlternateImageDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfAlternateImageDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapAlternateImageDictionary(value)) return false;
+ *data = (SkPdfAlternateImageDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfAlternateImageDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfAlternateImageDictionary** data) const {
+ if (SkPdfAlternateImageDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfAlternateImageDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType1FormDictionary(const SkPdfNativeObject* nativeObj) const {
+ const SkPdfNativeObject* ret = NULL;
+ if (!nativeObj->isDictionary()) return false;
+ ret = nativeObj->get("Subtype", "");
+ if (ret == NULL || !ret->isName()) return false;
+ if ((ret->nameValue2() != "Form")) return false;
+
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType1FormDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType1FormDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType1FormDictionary(value)) return false;
+ *data = (SkPdfType1FormDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType1FormDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType1FormDictionary** data) const {
+ if (SkPdfType1FormDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType1FormDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isGroupAttributesDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfGroupAttributesDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfGroupAttributesDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapGroupAttributesDictionary(value)) return false;
+ *data = (SkPdfGroupAttributesDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfGroupAttributesDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfGroupAttributesDictionary** data) const {
+ if (SkPdfGroupAttributesDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfGroupAttributesDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isReferenceDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfReferenceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfReferenceDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapReferenceDictionary(value)) return false;
+ *data = (SkPdfReferenceDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfReferenceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfReferenceDictionary** data) const {
+ if (SkPdfReferenceDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfReferenceDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isPSXobjectDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPSXobjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPSXobjectDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapPSXobjectDictionary(value)) return false;
+ *data = (SkPdfPSXobjectDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPSXobjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPSXobjectDictionary** data) const {
+ if (SkPdfPSXobjectDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfPSXobjectDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType1FontDictionary(const SkPdfNativeObject* nativeObj) const {
+ const SkPdfNativeObject* ret = NULL;
+ if (!nativeObj->isDictionary()) return false;
+ ret = nativeObj->get("Subtype", "");
+ if (ret == NULL || !ret->isName()) return false;
+ if ((ret->nameValue2() != "MMType1") && (ret->nameValue2() != "TrueType") && (ret->nameValue2() != "Type3") && (ret->nameValue2() != "Type1")) return false;
+
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType1FontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType1FontDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType1FontDictionary(value)) return false;
+ *data = (SkPdfType1FontDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType1FontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType1FontDictionary** data) const {
+ if (SkPdfType1FontDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType1FontDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType3FontDictionary(const SkPdfNativeObject* nativeObj) const {
+ const SkPdfNativeObject* ret = NULL;
+ if (!nativeObj->isDictionary()) return false;
+ ret = nativeObj->get("Subtype", "");
+ if (ret == NULL || !ret->isName()) return false;
+ if ((ret->nameValue2() != "Type3")) return false;
+
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType3FontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType3FontDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType3FontDictionary(value)) return false;
+ *data = (SkPdfType3FontDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType3FontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType3FontDictionary** data) const {
+ if (SkPdfType3FontDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType3FontDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isEncodingDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfEncodingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfEncodingDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapEncodingDictionary(value)) return false;
+ *data = (SkPdfEncodingDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfEncodingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfEncodingDictionary** data) const {
+ if (SkPdfEncodingDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfEncodingDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isCIDSystemInfoDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCIDSystemInfoDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCIDSystemInfoDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapCIDSystemInfoDictionary(value)) return false;
+ *data = (SkPdfCIDSystemInfoDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCIDSystemInfoDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCIDSystemInfoDictionary** data) const {
+ if (SkPdfCIDSystemInfoDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfCIDSystemInfoDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isCIDFontDictionary(const SkPdfNativeObject* nativeObj) const {
+ const SkPdfNativeObject* ret = NULL;
+ if (!nativeObj->isDictionary()) return false;
+ ret = nativeObj->get("Subtype", "");
+ if (ret == NULL || !ret->isName()) return false;
+ if ((ret->nameValue2() != "CIDFontType0") && (ret->nameValue2() != "CIDFontType2")) return false;
+
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCIDFontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCIDFontDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapCIDFontDictionary(value)) return false;
+ *data = (SkPdfCIDFontDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCIDFontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCIDFontDictionary** data) const {
+ if (SkPdfCIDFontDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfCIDFontDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isCMapDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCMapDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCMapDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapCMapDictionary(value)) return false;
+ *data = (SkPdfCMapDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCMapDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCMapDictionary** data) const {
+ if (SkPdfCMapDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfCMapDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType0FontDictionary(const SkPdfNativeObject* nativeObj) const {
+ const SkPdfNativeObject* ret = NULL;
+ if (!nativeObj->isDictionary()) return false;
+ ret = nativeObj->get("Subtype", "");
+ if (ret == NULL || !ret->isName()) return false;
+ if ((ret->nameValue2() != "Type0")) return false;
+
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType0FontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType0FontDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType0FontDictionary(value)) return false;
+ *data = (SkPdfType0FontDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType0FontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType0FontDictionary** data) const {
+ if (SkPdfType0FontDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType0FontDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFontDescriptorDictionary(const SkPdfNativeObject* nativeObj) const {
+ const SkPdfNativeObject* ret = NULL;
+ if (!nativeObj->isDictionary()) return false;
+ ret = nativeObj->get("Type", "");
+ if (ret == NULL || !ret->isName()) return false;
+ if ((ret->nameValue2() != "FontDescriptor")) return false;
+
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFontDescriptorDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFontDescriptorDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFontDescriptorDictionary(value)) return false;
+ *data = (SkPdfFontDescriptorDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFontDescriptorDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFontDescriptorDictionary** data) const {
+ if (SkPdfFontDescriptorDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFontDescriptorDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isCIDFontDescriptorDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCIDFontDescriptorDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCIDFontDescriptorDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapCIDFontDescriptorDictionary(value)) return false;
+ *data = (SkPdfCIDFontDescriptorDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCIDFontDescriptorDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCIDFontDescriptorDictionary** data) const {
+ if (SkPdfCIDFontDescriptorDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfCIDFontDescriptorDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isEmbeddedFontStreamDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfEmbeddedFontStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfEmbeddedFontStreamDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapEmbeddedFontStreamDictionary(value)) return false;
+ *data = (SkPdfEmbeddedFontStreamDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfEmbeddedFontStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfEmbeddedFontStreamDictionary** data) const {
+ if (SkPdfEmbeddedFontStreamDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfEmbeddedFontStreamDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType1HalftoneDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType1HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType1HalftoneDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType1HalftoneDictionary(value)) return false;
+ *data = (SkPdfType1HalftoneDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType1HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType1HalftoneDictionary** data) const {
+ if (SkPdfType1HalftoneDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType1HalftoneDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType6HalftoneDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType6HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType6HalftoneDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType6HalftoneDictionary(value)) return false;
+ *data = (SkPdfType6HalftoneDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType6HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType6HalftoneDictionary** data) const {
+ if (SkPdfType6HalftoneDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType6HalftoneDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType10HalftoneDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType10HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType10HalftoneDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType10HalftoneDictionary(value)) return false;
+ *data = (SkPdfType10HalftoneDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType10HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType10HalftoneDictionary** data) const {
+ if (SkPdfType10HalftoneDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType10HalftoneDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType16HalftoneDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType16HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType16HalftoneDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType16HalftoneDictionary(value)) return false;
+ *data = (SkPdfType16HalftoneDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType16HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType16HalftoneDictionary** data) const {
+ if (SkPdfType16HalftoneDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType16HalftoneDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isType5HalftoneDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType5HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType5HalftoneDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapType5HalftoneDictionary(value)) return false;
+ *data = (SkPdfType5HalftoneDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfType5HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType5HalftoneDictionary** data) const {
+ if (SkPdfType5HalftoneDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfType5HalftoneDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isSoftMaskDictionary(const SkPdfNativeObject* nativeObj) const {
+ const SkPdfNativeObject* ret = NULL;
+ if (!nativeObj->isDictionary()) return false;
+ ret = nativeObj->get("S", "");
+ if (ret == NULL || !ret->isName()) return false;
+ if ((ret->nameValue2() != "Alpha") && (ret->nameValue2() != "Luminosity")) return false;
+
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSoftMaskDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSoftMaskDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapSoftMaskDictionary(value)) return false;
+ *data = (SkPdfSoftMaskDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSoftMaskDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSoftMaskDictionary** data) const {
+ if (SkPdfSoftMaskDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfSoftMaskDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isSoftMaskImageDictionary(const SkPdfNativeObject* nativeObj) const {
+ const SkPdfNativeObject* ret = NULL;
+ if (!nativeObj->isDictionary()) return false;
+ ret = nativeObj->get("Subtype", "");
+ if (ret == NULL || !ret->isName()) return false;
+ if ((ret->nameValue2() != "Image")) return false;
+
+ if (!nativeObj->isDictionary()) return false;
+ ret = nativeObj->get("ColorSpace", "");
+ if (ret == NULL || !ret->isName()) return false;
+ if ((ret->nameValue2() != "DeviceGray") && (ret->nameValue2() != "Gray")) return false;
+
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSoftMaskImageDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSoftMaskImageDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapSoftMaskImageDictionary(value)) return false;
+ *data = (SkPdfSoftMaskImageDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSoftMaskImageDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSoftMaskImageDictionary** data) const {
+ if (SkPdfSoftMaskImageDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfSoftMaskImageDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isTransparencyGroupDictionary(const SkPdfNativeObject* nativeObj) const {
+ const SkPdfNativeObject* ret = NULL;
+ if (!nativeObj->isDictionary()) return false;
+ ret = nativeObj->get("S", "");
+ if (ret == NULL || !ret->isName()) return false;
+ if ((ret->nameValue2() != "Transparency")) return false;
+
+ return true;
+}
+
+bool SkPdfMapper::SkPdfTransparencyGroupDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfTransparencyGroupDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapTransparencyGroupDictionary(value)) return false;
+ *data = (SkPdfTransparencyGroupDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfTransparencyGroupDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfTransparencyGroupDictionary** data) const {
+ if (SkPdfTransparencyGroupDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfTransparencyGroupDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isViewerPreferencesDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfViewerPreferencesDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfViewerPreferencesDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapViewerPreferencesDictionary(value)) return false;
+ *data = (SkPdfViewerPreferencesDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfViewerPreferencesDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfViewerPreferencesDictionary** data) const {
+ if (SkPdfViewerPreferencesDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfViewerPreferencesDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isOutlineDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfOutlineDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfOutlineDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapOutlineDictionary(value)) return false;
+ *data = (SkPdfOutlineDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfOutlineDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfOutlineDictionary** data) const {
+ if (SkPdfOutlineDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfOutlineDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isOutlineItemDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfOutlineItemDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfOutlineItemDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapOutlineItemDictionary(value)) return false;
+ *data = (SkPdfOutlineItemDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfOutlineItemDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfOutlineItemDictionary** data) const {
+ if (SkPdfOutlineItemDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfOutlineItemDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isPageLabelDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPageLabelDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPageLabelDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapPageLabelDictionary(value)) return false;
+ *data = (SkPdfPageLabelDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPageLabelDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPageLabelDictionary** data) const {
+ if (SkPdfPageLabelDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfPageLabelDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isThreadDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfThreadDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfThreadDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapThreadDictionary(value)) return false;
+ *data = (SkPdfThreadDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfThreadDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfThreadDictionary** data) const {
+ if (SkPdfThreadDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfThreadDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isBeadDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfBeadDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfBeadDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapBeadDictionary(value)) return false;
+ *data = (SkPdfBeadDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfBeadDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfBeadDictionary** data) const {
+ if (SkPdfBeadDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfBeadDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isTransitionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfTransitionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfTransitionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapTransitionDictionary(value)) return false;
+ *data = (SkPdfTransitionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfTransitionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfTransitionDictionary** data) const {
+ if (SkPdfTransitionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfTransitionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isAnnotationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfAnnotationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapAnnotationDictionary(value)) return false;
+ *data = (SkPdfAnnotationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfAnnotationDictionary** data) const {
+ if (SkPdfAnnotationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfAnnotationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isBorderStyleDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfBorderStyleDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfBorderStyleDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapBorderStyleDictionary(value)) return false;
+ *data = (SkPdfBorderStyleDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfBorderStyleDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfBorderStyleDictionary** data) const {
+ if (SkPdfBorderStyleDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfBorderStyleDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isAppearanceDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfAppearanceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfAppearanceDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapAppearanceDictionary(value)) return false;
+ *data = (SkPdfAppearanceDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfAppearanceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfAppearanceDictionary** data) const {
+ if (SkPdfAppearanceDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfAppearanceDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isTextAnnotationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfTextAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfTextAnnotationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapTextAnnotationDictionary(value)) return false;
+ *data = (SkPdfTextAnnotationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfTextAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfTextAnnotationDictionary** data) const {
+ if (SkPdfTextAnnotationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfTextAnnotationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isALinkAnnotationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfALinkAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfALinkAnnotationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapALinkAnnotationDictionary(value)) return false;
+ *data = (SkPdfALinkAnnotationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfALinkAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfALinkAnnotationDictionary** data) const {
+ if (SkPdfALinkAnnotationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfALinkAnnotationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFreeTextAnnotationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFreeTextAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFreeTextAnnotationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFreeTextAnnotationDictionary(value)) return false;
+ *data = (SkPdfFreeTextAnnotationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFreeTextAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFreeTextAnnotationDictionary** data) const {
+ if (SkPdfFreeTextAnnotationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFreeTextAnnotationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isLineAnnotationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfLineAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfLineAnnotationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapLineAnnotationDictionary(value)) return false;
+ *data = (SkPdfLineAnnotationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfLineAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfLineAnnotationDictionary** data) const {
+ if (SkPdfLineAnnotationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfLineAnnotationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isSquareOrCircleAnnotation(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSquareOrCircleAnnotationFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSquareOrCircleAnnotation** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapSquareOrCircleAnnotation(value)) return false;
+ *data = (SkPdfSquareOrCircleAnnotation*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSquareOrCircleAnnotationFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSquareOrCircleAnnotation** data) const {
+ if (SkPdfSquareOrCircleAnnotationFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfSquareOrCircleAnnotationFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isMarkupAnnotationsDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMarkupAnnotationsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMarkupAnnotationsDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapMarkupAnnotationsDictionary(value)) return false;
+ *data = (SkPdfMarkupAnnotationsDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMarkupAnnotationsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMarkupAnnotationsDictionary** data) const {
+ if (SkPdfMarkupAnnotationsDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfMarkupAnnotationsDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isRubberStampAnnotationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfRubberStampAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfRubberStampAnnotationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapRubberStampAnnotationDictionary(value)) return false;
+ *data = (SkPdfRubberStampAnnotationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfRubberStampAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfRubberStampAnnotationDictionary** data) const {
+ if (SkPdfRubberStampAnnotationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfRubberStampAnnotationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isInkAnnotationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfInkAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfInkAnnotationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapInkAnnotationDictionary(value)) return false;
+ *data = (SkPdfInkAnnotationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfInkAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfInkAnnotationDictionary** data) const {
+ if (SkPdfInkAnnotationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfInkAnnotationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isPopUpAnnotationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPopUpAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPopUpAnnotationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapPopUpAnnotationDictionary(value)) return false;
+ *data = (SkPdfPopUpAnnotationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPopUpAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPopUpAnnotationDictionary** data) const {
+ if (SkPdfPopUpAnnotationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfPopUpAnnotationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFileAttachmentAnnotationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFileAttachmentAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFileAttachmentAnnotationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFileAttachmentAnnotationDictionary(value)) return false;
+ *data = (SkPdfFileAttachmentAnnotationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFileAttachmentAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFileAttachmentAnnotationDictionary** data) const {
+ if (SkPdfFileAttachmentAnnotationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFileAttachmentAnnotationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isSoundAnnotationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSoundAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSoundAnnotationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapSoundAnnotationDictionary(value)) return false;
+ *data = (SkPdfSoundAnnotationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSoundAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSoundAnnotationDictionary** data) const {
+ if (SkPdfSoundAnnotationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfSoundAnnotationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isMovieAnnotationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMovieAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMovieAnnotationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapMovieAnnotationDictionary(value)) return false;
+ *data = (SkPdfMovieAnnotationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMovieAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMovieAnnotationDictionary** data) const {
+ if (SkPdfMovieAnnotationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfMovieAnnotationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isWidgetAnnotationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfWidgetAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfWidgetAnnotationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapWidgetAnnotationDictionary(value)) return false;
+ *data = (SkPdfWidgetAnnotationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfWidgetAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfWidgetAnnotationDictionary** data) const {
+ if (SkPdfWidgetAnnotationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfWidgetAnnotationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isActionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfActionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapActionDictionary(value)) return false;
+ *data = (SkPdfActionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfActionDictionary** data) const {
+ if (SkPdfActionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfActionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isAnnotationActionsDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfAnnotationActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfAnnotationActionsDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapAnnotationActionsDictionary(value)) return false;
+ *data = (SkPdfAnnotationActionsDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfAnnotationActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfAnnotationActionsDictionary** data) const {
+ if (SkPdfAnnotationActionsDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfAnnotationActionsDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isPageObjectActionsDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPageObjectActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPageObjectActionsDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapPageObjectActionsDictionary(value)) return false;
+ *data = (SkPdfPageObjectActionsDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPageObjectActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPageObjectActionsDictionary** data) const {
+ if (SkPdfPageObjectActionsDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfPageObjectActionsDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFormFieldActionsDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFormFieldActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFormFieldActionsDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFormFieldActionsDictionary(value)) return false;
+ *data = (SkPdfFormFieldActionsDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFormFieldActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFormFieldActionsDictionary** data) const {
+ if (SkPdfFormFieldActionsDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFormFieldActionsDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isDocumentCatalogActionsDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfDocumentCatalogActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfDocumentCatalogActionsDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapDocumentCatalogActionsDictionary(value)) return false;
+ *data = (SkPdfDocumentCatalogActionsDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfDocumentCatalogActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfDocumentCatalogActionsDictionary** data) const {
+ if (SkPdfDocumentCatalogActionsDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfDocumentCatalogActionsDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isGoToActionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfGoToActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfGoToActionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapGoToActionDictionary(value)) return false;
+ *data = (SkPdfGoToActionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfGoToActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfGoToActionDictionary** data) const {
+ if (SkPdfGoToActionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfGoToActionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isRemoteGoToActionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfRemoteGoToActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfRemoteGoToActionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapRemoteGoToActionDictionary(value)) return false;
+ *data = (SkPdfRemoteGoToActionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfRemoteGoToActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfRemoteGoToActionDictionary** data) const {
+ if (SkPdfRemoteGoToActionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfRemoteGoToActionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isLaunchActionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfLaunchActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfLaunchActionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapLaunchActionDictionary(value)) return false;
+ *data = (SkPdfLaunchActionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfLaunchActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfLaunchActionDictionary** data) const {
+ if (SkPdfLaunchActionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfLaunchActionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isWindowsLaunchActionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfWindowsLaunchActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfWindowsLaunchActionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapWindowsLaunchActionDictionary(value)) return false;
+ *data = (SkPdfWindowsLaunchActionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfWindowsLaunchActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfWindowsLaunchActionDictionary** data) const {
+ if (SkPdfWindowsLaunchActionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfWindowsLaunchActionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isThreadActionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfThreadActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfThreadActionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapThreadActionDictionary(value)) return false;
+ *data = (SkPdfThreadActionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfThreadActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfThreadActionDictionary** data) const {
+ if (SkPdfThreadActionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfThreadActionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isURIActionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfURIActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfURIActionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapURIActionDictionary(value)) return false;
+ *data = (SkPdfURIActionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfURIActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfURIActionDictionary** data) const {
+ if (SkPdfURIActionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfURIActionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isURIDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfURIDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfURIDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapURIDictionary(value)) return false;
+ *data = (SkPdfURIDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfURIDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfURIDictionary** data) const {
+ if (SkPdfURIDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfURIDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isSoundActionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSoundActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSoundActionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapSoundActionDictionary(value)) return false;
+ *data = (SkPdfSoundActionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSoundActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSoundActionDictionary** data) const {
+ if (SkPdfSoundActionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfSoundActionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isMovieActionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMovieActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMovieActionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapMovieActionDictionary(value)) return false;
+ *data = (SkPdfMovieActionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMovieActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMovieActionDictionary** data) const {
+ if (SkPdfMovieActionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfMovieActionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isHideActionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfHideActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfHideActionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapHideActionDictionary(value)) return false;
+ *data = (SkPdfHideActionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfHideActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfHideActionDictionary** data) const {
+ if (SkPdfHideActionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfHideActionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isNamedActionsDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfNamedActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfNamedActionsDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapNamedActionsDictionary(value)) return false;
+ *data = (SkPdfNamedActionsDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfNamedActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfNamedActionsDictionary** data) const {
+ if (SkPdfNamedActionsDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfNamedActionsDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isInteractiveFormDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfInteractiveFormDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfInteractiveFormDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapInteractiveFormDictionary(value)) return false;
+ *data = (SkPdfInteractiveFormDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfInteractiveFormDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfInteractiveFormDictionary** data) const {
+ if (SkPdfInteractiveFormDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfInteractiveFormDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFieldDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFieldDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFieldDictionary(value)) return false;
+ *data = (SkPdfFieldDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFieldDictionary** data) const {
+ if (SkPdfFieldDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFieldDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isVariableTextFieldDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfVariableTextFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfVariableTextFieldDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapVariableTextFieldDictionary(value)) return false;
+ *data = (SkPdfVariableTextFieldDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfVariableTextFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfVariableTextFieldDictionary** data) const {
+ if (SkPdfVariableTextFieldDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfVariableTextFieldDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isAppearanceCharacteristicsDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfAppearanceCharacteristicsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfAppearanceCharacteristicsDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapAppearanceCharacteristicsDictionary(value)) return false;
+ *data = (SkPdfAppearanceCharacteristicsDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfAppearanceCharacteristicsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfAppearanceCharacteristicsDictionary** data) const {
+ if (SkPdfAppearanceCharacteristicsDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfAppearanceCharacteristicsDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isCheckboxFieldDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCheckboxFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCheckboxFieldDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapCheckboxFieldDictionary(value)) return false;
+ *data = (SkPdfCheckboxFieldDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfCheckboxFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCheckboxFieldDictionary** data) const {
+ if (SkPdfCheckboxFieldDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfCheckboxFieldDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isRadioButtonFieldDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfRadioButtonFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfRadioButtonFieldDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapRadioButtonFieldDictionary(value)) return false;
+ *data = (SkPdfRadioButtonFieldDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfRadioButtonFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfRadioButtonFieldDictionary** data) const {
+ if (SkPdfRadioButtonFieldDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfRadioButtonFieldDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isTextFieldDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfTextFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfTextFieldDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapTextFieldDictionary(value)) return false;
+ *data = (SkPdfTextFieldDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfTextFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfTextFieldDictionary** data) const {
+ if (SkPdfTextFieldDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfTextFieldDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isChoiceFieldDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfChoiceFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfChoiceFieldDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapChoiceFieldDictionary(value)) return false;
+ *data = (SkPdfChoiceFieldDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfChoiceFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfChoiceFieldDictionary** data) const {
+ if (SkPdfChoiceFieldDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfChoiceFieldDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isSignatureDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSignatureDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSignatureDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapSignatureDictionary(value)) return false;
+ *data = (SkPdfSignatureDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSignatureDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSignatureDictionary** data) const {
+ if (SkPdfSignatureDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfSignatureDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isSubmitFormActionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSubmitFormActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSubmitFormActionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapSubmitFormActionDictionary(value)) return false;
+ *data = (SkPdfSubmitFormActionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSubmitFormActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSubmitFormActionDictionary** data) const {
+ if (SkPdfSubmitFormActionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfSubmitFormActionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isResetFormActionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfResetFormActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfResetFormActionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapResetFormActionDictionary(value)) return false;
+ *data = (SkPdfResetFormActionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfResetFormActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfResetFormActionDictionary** data) const {
+ if (SkPdfResetFormActionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfResetFormActionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isImportDataActionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfImportDataActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfImportDataActionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapImportDataActionDictionary(value)) return false;
+ *data = (SkPdfImportDataActionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfImportDataActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfImportDataActionDictionary** data) const {
+ if (SkPdfImportDataActionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfImportDataActionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isJavascriptActionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfJavascriptActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfJavascriptActionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapJavascriptActionDictionary(value)) return false;
+ *data = (SkPdfJavascriptActionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfJavascriptActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfJavascriptActionDictionary** data) const {
+ if (SkPdfJavascriptActionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfJavascriptActionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFDFTrailerDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFDFTrailerDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFDFTrailerDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFDFTrailerDictionary(value)) return false;
+ *data = (SkPdfFDFTrailerDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFDFTrailerDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFDFTrailerDictionary** data) const {
+ if (SkPdfFDFTrailerDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFDFTrailerDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFDFCatalogDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFDFCatalogDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFDFCatalogDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFDFCatalogDictionary(value)) return false;
+ *data = (SkPdfFDFCatalogDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFDFCatalogDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFDFCatalogDictionary** data) const {
+ if (SkPdfFDFCatalogDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFDFCatalogDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFDFDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFDFDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFDFDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFDFDictionary(value)) return false;
+ *data = (SkPdfFDFDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFDFDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFDFDictionary** data) const {
+ if (SkPdfFDFDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFDFDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isEncryptedEmbeddedFileStreamDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfEncryptedEmbeddedFileStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfEncryptedEmbeddedFileStreamDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapEncryptedEmbeddedFileStreamDictionary(value)) return false;
+ *data = (SkPdfEncryptedEmbeddedFileStreamDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfEncryptedEmbeddedFileStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfEncryptedEmbeddedFileStreamDictionary** data) const {
+ if (SkPdfEncryptedEmbeddedFileStreamDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfEncryptedEmbeddedFileStreamDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isJavascriptDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfJavascriptDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfJavascriptDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapJavascriptDictionary(value)) return false;
+ *data = (SkPdfJavascriptDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfJavascriptDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfJavascriptDictionary** data) const {
+ if (SkPdfJavascriptDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfJavascriptDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFDFFieldDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFDFFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFDFFieldDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFDFFieldDictionary(value)) return false;
+ *data = (SkPdfFDFFieldDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFDFFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFDFFieldDictionary** data) const {
+ if (SkPdfFDFFieldDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFDFFieldDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isIconFitDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfIconFitDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfIconFitDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapIconFitDictionary(value)) return false;
+ *data = (SkPdfIconFitDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfIconFitDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfIconFitDictionary** data) const {
+ if (SkPdfIconFitDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfIconFitDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFDFPageDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFDFPageDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFDFPageDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFDFPageDictionary(value)) return false;
+ *data = (SkPdfFDFPageDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFDFPageDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFDFPageDictionary** data) const {
+ if (SkPdfFDFPageDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFDFPageDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFDFTemplateDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFDFTemplateDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFDFTemplateDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFDFTemplateDictionary(value)) return false;
+ *data = (SkPdfFDFTemplateDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFDFTemplateDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFDFTemplateDictionary** data) const {
+ if (SkPdfFDFTemplateDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFDFTemplateDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFDFNamedPageReferenceDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFDFNamedPageReferenceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFDFNamedPageReferenceDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFDFNamedPageReferenceDictionary(value)) return false;
+ *data = (SkPdfFDFNamedPageReferenceDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFDFNamedPageReferenceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFDFNamedPageReferenceDictionary** data) const {
+ if (SkPdfFDFNamedPageReferenceDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFDFNamedPageReferenceDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isFDFFileAnnotationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFDFFileAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFDFFileAnnotationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapFDFFileAnnotationDictionary(value)) return false;
+ *data = (SkPdfFDFFileAnnotationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfFDFFileAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFDFFileAnnotationDictionary** data) const {
+ if (SkPdfFDFFileAnnotationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfFDFFileAnnotationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isSoundObjectDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSoundObjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSoundObjectDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapSoundObjectDictionary(value)) return false;
+ *data = (SkPdfSoundObjectDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSoundObjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSoundObjectDictionary** data) const {
+ if (SkPdfSoundObjectDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfSoundObjectDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isMovieDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMovieDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMovieDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapMovieDictionary(value)) return false;
+ *data = (SkPdfMovieDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMovieDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMovieDictionary** data) const {
+ if (SkPdfMovieDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfMovieDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isMovieActivationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMovieActivationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMovieActivationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapMovieActivationDictionary(value)) return false;
+ *data = (SkPdfMovieActivationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMovieActivationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMovieActivationDictionary** data) const {
+ if (SkPdfMovieActivationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfMovieActivationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isDocumentInformationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfDocumentInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfDocumentInformationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapDocumentInformationDictionary(value)) return false;
+ *data = (SkPdfDocumentInformationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfDocumentInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfDocumentInformationDictionary** data) const {
+ if (SkPdfDocumentInformationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfDocumentInformationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isMetadataStreamDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMetadataStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMetadataStreamDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapMetadataStreamDictionary(value)) return false;
+ *data = (SkPdfMetadataStreamDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMetadataStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMetadataStreamDictionary** data) const {
+ if (SkPdfMetadataStreamDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfMetadataStreamDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isComponentsWithMetadataDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfComponentsWithMetadataDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfComponentsWithMetadataDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapComponentsWithMetadataDictionary(value)) return false;
+ *data = (SkPdfComponentsWithMetadataDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfComponentsWithMetadataDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfComponentsWithMetadataDictionary** data) const {
+ if (SkPdfComponentsWithMetadataDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfComponentsWithMetadataDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isPagePieceDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPagePieceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPagePieceDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapPagePieceDictionary(value)) return false;
+ *data = (SkPdfPagePieceDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPagePieceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPagePieceDictionary** data) const {
+ if (SkPdfPagePieceDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfPagePieceDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isApplicationDataDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfApplicationDataDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfApplicationDataDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapApplicationDataDictionary(value)) return false;
+ *data = (SkPdfApplicationDataDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfApplicationDataDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfApplicationDataDictionary** data) const {
+ if (SkPdfApplicationDataDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfApplicationDataDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isStructureTreeRootDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfStructureTreeRootDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfStructureTreeRootDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapStructureTreeRootDictionary(value)) return false;
+ *data = (SkPdfStructureTreeRootDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfStructureTreeRootDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfStructureTreeRootDictionary** data) const {
+ if (SkPdfStructureTreeRootDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfStructureTreeRootDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isStructureElementDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfStructureElementDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfStructureElementDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapStructureElementDictionary(value)) return false;
+ *data = (SkPdfStructureElementDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfStructureElementDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfStructureElementDictionary** data) const {
+ if (SkPdfStructureElementDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfStructureElementDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isMarkedContentReferenceDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMarkedContentReferenceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMarkedContentReferenceDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapMarkedContentReferenceDictionary(value)) return false;
+ *data = (SkPdfMarkedContentReferenceDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMarkedContentReferenceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMarkedContentReferenceDictionary** data) const {
+ if (SkPdfMarkedContentReferenceDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfMarkedContentReferenceDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isObjectReferenceDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfObjectReferenceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfObjectReferenceDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapObjectReferenceDictionary(value)) return false;
+ *data = (SkPdfObjectReferenceDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfObjectReferenceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfObjectReferenceDictionary** data) const {
+ if (SkPdfObjectReferenceDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfObjectReferenceDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isStructureElementAccessDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfStructureElementAccessDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfStructureElementAccessDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapStructureElementAccessDictionary(value)) return false;
+ *data = (SkPdfStructureElementAccessDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfStructureElementAccessDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfStructureElementAccessDictionary** data) const {
+ if (SkPdfStructureElementAccessDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfStructureElementAccessDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isAttributeObjectDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfAttributeObjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfAttributeObjectDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapAttributeObjectDictionary(value)) return false;
+ *data = (SkPdfAttributeObjectDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfAttributeObjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfAttributeObjectDictionary** data) const {
+ if (SkPdfAttributeObjectDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfAttributeObjectDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isMarkInformationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMarkInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMarkInformationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapMarkInformationDictionary(value)) return false;
+ *data = (SkPdfMarkInformationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMarkInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMarkInformationDictionary** data) const {
+ if (SkPdfMarkInformationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfMarkInformationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isArtifactsDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfArtifactsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfArtifactsDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapArtifactsDictionary(value)) return false;
+ *data = (SkPdfArtifactsDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfArtifactsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfArtifactsDictionary** data) const {
+ if (SkPdfArtifactsDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfArtifactsDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isStandardStructureDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfStandardStructureDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfStandardStructureDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapStandardStructureDictionary(value)) return false;
+ *data = (SkPdfStandardStructureDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfStandardStructureDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfStandardStructureDictionary** data) const {
+ if (SkPdfStandardStructureDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfStandardStructureDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isBlockLevelStructureElementsDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfBlockLevelStructureElementsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfBlockLevelStructureElementsDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapBlockLevelStructureElementsDictionary(value)) return false;
+ *data = (SkPdfBlockLevelStructureElementsDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfBlockLevelStructureElementsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfBlockLevelStructureElementsDictionary** data) const {
+ if (SkPdfBlockLevelStructureElementsDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfBlockLevelStructureElementsDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isInlineLevelStructureElementsDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfInlineLevelStructureElementsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfInlineLevelStructureElementsDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapInlineLevelStructureElementsDictionary(value)) return false;
+ *data = (SkPdfInlineLevelStructureElementsDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfInlineLevelStructureElementsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfInlineLevelStructureElementsDictionary** data) const {
+ if (SkPdfInlineLevelStructureElementsDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfInlineLevelStructureElementsDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isListAttributeDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfListAttributeDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfListAttributeDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapListAttributeDictionary(value)) return false;
+ *data = (SkPdfListAttributeDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfListAttributeDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfListAttributeDictionary** data) const {
+ if (SkPdfListAttributeDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfListAttributeDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isTableAttributesDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfTableAttributesDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfTableAttributesDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapTableAttributesDictionary(value)) return false;
+ *data = (SkPdfTableAttributesDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfTableAttributesDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfTableAttributesDictionary** data) const {
+ if (SkPdfTableAttributesDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfTableAttributesDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isWebCaptureInformationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfWebCaptureInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfWebCaptureInformationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapWebCaptureInformationDictionary(value)) return false;
+ *data = (SkPdfWebCaptureInformationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfWebCaptureInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfWebCaptureInformationDictionary** data) const {
+ if (SkPdfWebCaptureInformationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfWebCaptureInformationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isWebCaptureDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfWebCaptureDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfWebCaptureDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapWebCaptureDictionary(value)) return false;
+ *data = (SkPdfWebCaptureDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfWebCaptureDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfWebCaptureDictionary** data) const {
+ if (SkPdfWebCaptureDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfWebCaptureDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isWebCapturePageSetDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfWebCapturePageSetDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfWebCapturePageSetDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapWebCapturePageSetDictionary(value)) return false;
+ *data = (SkPdfWebCapturePageSetDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfWebCapturePageSetDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfWebCapturePageSetDictionary** data) const {
+ if (SkPdfWebCapturePageSetDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfWebCapturePageSetDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isWebCaptureImageSetDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfWebCaptureImageSetDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfWebCaptureImageSetDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapWebCaptureImageSetDictionary(value)) return false;
+ *data = (SkPdfWebCaptureImageSetDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfWebCaptureImageSetDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfWebCaptureImageSetDictionary** data) const {
+ if (SkPdfWebCaptureImageSetDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfWebCaptureImageSetDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isSourceInformationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSourceInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSourceInformationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapSourceInformationDictionary(value)) return false;
+ *data = (SkPdfSourceInformationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSourceInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSourceInformationDictionary** data) const {
+ if (SkPdfSourceInformationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfSourceInformationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isURLAliasDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfURLAliasDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfURLAliasDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapURLAliasDictionary(value)) return false;
+ *data = (SkPdfURLAliasDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfURLAliasDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfURLAliasDictionary** data) const {
+ if (SkPdfURLAliasDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfURLAliasDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isWebCaptureCommandDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfWebCaptureCommandDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfWebCaptureCommandDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapWebCaptureCommandDictionary(value)) return false;
+ *data = (SkPdfWebCaptureCommandDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfWebCaptureCommandDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfWebCaptureCommandDictionary** data) const {
+ if (SkPdfWebCaptureCommandDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfWebCaptureCommandDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isWebCaptureCommandSettingsDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfWebCaptureCommandSettingsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfWebCaptureCommandSettingsDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapWebCaptureCommandSettingsDictionary(value)) return false;
+ *data = (SkPdfWebCaptureCommandSettingsDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfWebCaptureCommandSettingsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfWebCaptureCommandSettingsDictionary** data) const {
+ if (SkPdfWebCaptureCommandSettingsDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfWebCaptureCommandSettingsDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isBoxColorInformationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfBoxColorInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfBoxColorInformationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapBoxColorInformationDictionary(value)) return false;
+ *data = (SkPdfBoxColorInformationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfBoxColorInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfBoxColorInformationDictionary** data) const {
+ if (SkPdfBoxColorInformationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfBoxColorInformationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isBoxStyleDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfBoxStyleDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfBoxStyleDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapBoxStyleDictionary(value)) return false;
+ *data = (SkPdfBoxStyleDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfBoxStyleDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfBoxStyleDictionary** data) const {
+ if (SkPdfBoxStyleDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfBoxStyleDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isPrinterMarkAnnotationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPrinterMarkAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPrinterMarkAnnotationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapPrinterMarkAnnotationDictionary(value)) return false;
+ *data = (SkPdfPrinterMarkAnnotationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPrinterMarkAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPrinterMarkAnnotationDictionary** data) const {
+ if (SkPdfPrinterMarkAnnotationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfPrinterMarkAnnotationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isPrinterMarkFormDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPrinterMarkFormDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPrinterMarkFormDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapPrinterMarkFormDictionary(value)) return false;
+ *data = (SkPdfPrinterMarkFormDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPrinterMarkFormDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPrinterMarkFormDictionary** data) const {
+ if (SkPdfPrinterMarkFormDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfPrinterMarkFormDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isSeparationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSeparationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSeparationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapSeparationDictionary(value)) return false;
+ *data = (SkPdfSeparationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfSeparationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSeparationDictionary** data) const {
+ if (SkPdfSeparationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfSeparationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isPDF_XOutputIntentDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPDF_XOutputIntentDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPDF_XOutputIntentDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapPDF_XOutputIntentDictionary(value)) return false;
+ *data = (SkPdfPDF_XOutputIntentDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfPDF_XOutputIntentDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPDF_XOutputIntentDictionary** data) const {
+ if (SkPdfPDF_XOutputIntentDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfPDF_XOutputIntentDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isTrapNetworkAnnotationDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfTrapNetworkAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfTrapNetworkAnnotationDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapTrapNetworkAnnotationDictionary(value)) return false;
+ *data = (SkPdfTrapNetworkAnnotationDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfTrapNetworkAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfTrapNetworkAnnotationDictionary** data) const {
+ if (SkPdfTrapNetworkAnnotationDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfTrapNetworkAnnotationDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isTrapNetworkAppearanceStreamDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfTrapNetworkAppearanceStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfTrapNetworkAppearanceStreamDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapTrapNetworkAppearanceStreamDictionary(value)) return false;
+ *data = (SkPdfTrapNetworkAppearanceStreamDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfTrapNetworkAppearanceStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfTrapNetworkAppearanceStreamDictionary** data) const {
+ if (SkPdfTrapNetworkAppearanceStreamDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfTrapNetworkAppearanceStreamDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isOpiVersionDictionary(const SkPdfNativeObject* nativeObj) const {
+ return true;
+}
+
+bool SkPdfMapper::SkPdfOpiVersionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfOpiVersionDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapOpiVersionDictionary(value)) return false;
+ *data = (SkPdfOpiVersionDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfOpiVersionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfOpiVersionDictionary** data) const {
+ if (SkPdfOpiVersionDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfOpiVersionDictionaryFromDictionary(dict, abr, data);
+}
+
+bool SkPdfMapper::isMultiMasterFontDictionary(const SkPdfNativeObject* nativeObj) const {
+ const SkPdfNativeObject* ret = NULL;
+ if (!nativeObj->isDictionary()) return false;
+ ret = nativeObj->get("Subtype", "");
+ if (ret == NULL || !ret->isName()) return false;
+ if ((ret->nameValue2() != "MMType1")) return false;
+
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMultiMasterFontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMultiMasterFontDictionary** data) const {
+ const SkPdfNativeObject* value = dict->get(key);
+ if (value == NULL) { return false; }
+ if (data == NULL) { return true; }
+ if (kNone_SkPdfNativeObjectType == mapMultiMasterFontDictionary(value)) return false;
+ *data = (SkPdfMultiMasterFontDictionary*)value;
+ return true;
+}
+
+bool SkPdfMapper::SkPdfMultiMasterFontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMultiMasterFontDictionary** data) const {
+ if (SkPdfMultiMasterFontDictionaryFromDictionary(dict, key, data)) return true;
+ if (abr == NULL || *abr == '\0') return false;
+ return SkPdfMultiMasterFontDictionaryFromDictionary(dict, abr, data);
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMapper_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMapper_autogen.h
new file mode 100644
index 00000000000..7ddcb24c428
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMapper_autogen.h
@@ -0,0 +1,692 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfMapper_DEFINED
+#define SkPdfMapper_DEFINED
+
+#include "SkPdfHeaders_autogen.h"
+#include "SkPdfNativeDoc.h"
+#include "SkPdfNativeObject.h"
+class SkPdfMapper {
+public:
+ SkPdfMapper() {}
+
+ SkPdfNativeObjectType mapDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapXObjectDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFontDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapTrueTypeFontDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapStreamCommonDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapLzwdecodeAndFlatedecodeFiltersDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapCcittfaxdecodeFilterDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapJbig2DecodeFilterDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapDctdecodeFilterDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFileTrailerDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapEncryptionCommonDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapStandardSecurityHandlerDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapCatalogDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapPageTreeNodeDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapPageObjectDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapNameDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapResourceDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapNameTreeNodeDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapNumberTreeNodeDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFunctionCommonDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType0FunctionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType2FunctionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType3FunctionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFileSpecificationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapEmbeddedFileStreamDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapEmbeddedFileParameterDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapMacOsFileInformationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapGraphicsStateDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapCalgrayColorSpaceDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapCalrgbColorSpaceDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapLabColorSpaceDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapIccProfileStreamDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapDeviceNColorSpaceDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType1PatternDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType2PatternDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapShadingDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType1ShadingDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType2ShadingDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType3ShadingDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType4ShadingDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType5ShadingDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType6ShadingDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapImageDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapAlternateImageDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType1FormDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapGroupAttributesDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapReferenceDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapPSXobjectDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType1FontDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType3FontDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapEncodingDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapCIDSystemInfoDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapCIDFontDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapCMapDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType0FontDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFontDescriptorDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapCIDFontDescriptorDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapEmbeddedFontStreamDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType1HalftoneDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType6HalftoneDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType10HalftoneDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType16HalftoneDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapType5HalftoneDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapSoftMaskDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapSoftMaskImageDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapTransparencyGroupDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapViewerPreferencesDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapOutlineDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapOutlineItemDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapPageLabelDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapThreadDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapBeadDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapTransitionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapAnnotationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapBorderStyleDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapAppearanceDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapTextAnnotationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapALinkAnnotationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFreeTextAnnotationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapLineAnnotationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapSquareOrCircleAnnotation(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapMarkupAnnotationsDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapRubberStampAnnotationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapInkAnnotationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapPopUpAnnotationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFileAttachmentAnnotationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapSoundAnnotationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapMovieAnnotationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapWidgetAnnotationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapActionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapAnnotationActionsDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapPageObjectActionsDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFormFieldActionsDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapDocumentCatalogActionsDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapGoToActionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapRemoteGoToActionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapLaunchActionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapWindowsLaunchActionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapThreadActionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapURIActionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapURIDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapSoundActionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapMovieActionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapHideActionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapNamedActionsDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapInteractiveFormDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFieldDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapVariableTextFieldDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapAppearanceCharacteristicsDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapCheckboxFieldDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapRadioButtonFieldDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapTextFieldDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapChoiceFieldDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapSignatureDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapSubmitFormActionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapResetFormActionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapImportDataActionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapJavascriptActionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFDFTrailerDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFDFCatalogDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFDFDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapEncryptedEmbeddedFileStreamDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapJavascriptDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFDFFieldDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapIconFitDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFDFPageDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFDFTemplateDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFDFNamedPageReferenceDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapFDFFileAnnotationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapSoundObjectDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapMovieDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapMovieActivationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapDocumentInformationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapMetadataStreamDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapComponentsWithMetadataDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapPagePieceDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapApplicationDataDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapStructureTreeRootDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapStructureElementDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapMarkedContentReferenceDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapObjectReferenceDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapStructureElementAccessDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapAttributeObjectDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapMarkInformationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapArtifactsDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapStandardStructureDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapBlockLevelStructureElementsDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapInlineLevelStructureElementsDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapListAttributeDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapTableAttributesDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapWebCaptureInformationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapWebCaptureDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapWebCapturePageSetDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapWebCaptureImageSetDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapSourceInformationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapURLAliasDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapWebCaptureCommandDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapWebCaptureCommandSettingsDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapBoxColorInformationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapBoxStyleDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapPrinterMarkAnnotationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapPrinterMarkFormDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapSeparationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapPDF_XOutputIntentDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapTrapNetworkAnnotationDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapTrapNetworkAppearanceStreamDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapOpiVersionDictionary(const SkPdfNativeObject* in) const;
+ SkPdfNativeObjectType mapMultiMasterFontDictionary(const SkPdfNativeObject* in) const;
+ bool isDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfDictionary** data) const ;
+ bool SkPdfDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfDictionary** data) const ;
+ bool isXObjectDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfXObjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfXObjectDictionary** data) const ;
+ bool SkPdfXObjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfXObjectDictionary** data) const ;
+ bool isFontDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFontDictionary** data) const ;
+ bool SkPdfFontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFontDictionary** data) const ;
+ bool isTrueTypeFontDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfTrueTypeFontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfTrueTypeFontDictionary** data) const ;
+ bool SkPdfTrueTypeFontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfTrueTypeFontDictionary** data) const ;
+ bool isStreamCommonDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfStreamCommonDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfStreamCommonDictionary** data) const ;
+ bool SkPdfStreamCommonDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfStreamCommonDictionary** data) const ;
+ bool isLzwdecodeAndFlatedecodeFiltersDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfLzwdecodeAndFlatedecodeFiltersDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfLzwdecodeAndFlatedecodeFiltersDictionary** data) const ;
+ bool SkPdfLzwdecodeAndFlatedecodeFiltersDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfLzwdecodeAndFlatedecodeFiltersDictionary** data) const ;
+ bool isCcittfaxdecodeFilterDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfCcittfaxdecodeFilterDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCcittfaxdecodeFilterDictionary** data) const ;
+ bool SkPdfCcittfaxdecodeFilterDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCcittfaxdecodeFilterDictionary** data) const ;
+ bool isJbig2DecodeFilterDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfJbig2DecodeFilterDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfJbig2DecodeFilterDictionary** data) const ;
+ bool SkPdfJbig2DecodeFilterDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfJbig2DecodeFilterDictionary** data) const ;
+ bool isDctdecodeFilterDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfDctdecodeFilterDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfDctdecodeFilterDictionary** data) const ;
+ bool SkPdfDctdecodeFilterDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfDctdecodeFilterDictionary** data) const ;
+ bool isFileTrailerDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFileTrailerDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFileTrailerDictionary** data) const ;
+ bool SkPdfFileTrailerDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFileTrailerDictionary** data) const ;
+ bool isEncryptionCommonDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfEncryptionCommonDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfEncryptionCommonDictionary** data) const ;
+ bool SkPdfEncryptionCommonDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfEncryptionCommonDictionary** data) const ;
+ bool isStandardSecurityHandlerDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfStandardSecurityHandlerDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfStandardSecurityHandlerDictionary** data) const ;
+ bool SkPdfStandardSecurityHandlerDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfStandardSecurityHandlerDictionary** data) const ;
+ bool isCatalogDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfCatalogDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCatalogDictionary** data) const ;
+ bool SkPdfCatalogDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCatalogDictionary** data) const ;
+ bool isPageTreeNodeDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfPageTreeNodeDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPageTreeNodeDictionary** data) const ;
+ bool SkPdfPageTreeNodeDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPageTreeNodeDictionary** data) const ;
+ bool isPageObjectDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfPageObjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPageObjectDictionary** data) const ;
+ bool SkPdfPageObjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPageObjectDictionary** data) const ;
+ bool isNameDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfNameDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfNameDictionary** data) const ;
+ bool SkPdfNameDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfNameDictionary** data) const ;
+ bool isResourceDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfResourceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfResourceDictionary** data) const ;
+ bool SkPdfResourceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfResourceDictionary** data) const ;
+ bool isNameTreeNodeDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfNameTreeNodeDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfNameTreeNodeDictionary** data) const ;
+ bool SkPdfNameTreeNodeDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfNameTreeNodeDictionary** data) const ;
+ bool isNumberTreeNodeDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfNumberTreeNodeDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfNumberTreeNodeDictionary** data) const ;
+ bool SkPdfNumberTreeNodeDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfNumberTreeNodeDictionary** data) const ;
+ bool isFunctionCommonDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFunctionCommonDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFunctionCommonDictionary** data) const ;
+ bool SkPdfFunctionCommonDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFunctionCommonDictionary** data) const ;
+ bool isType0FunctionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType0FunctionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType0FunctionDictionary** data) const ;
+ bool SkPdfType0FunctionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType0FunctionDictionary** data) const ;
+ bool isType2FunctionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType2FunctionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType2FunctionDictionary** data) const ;
+ bool SkPdfType2FunctionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType2FunctionDictionary** data) const ;
+ bool isType3FunctionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType3FunctionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType3FunctionDictionary** data) const ;
+ bool SkPdfType3FunctionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType3FunctionDictionary** data) const ;
+ bool isFileSpecificationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFileSpecificationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFileSpecificationDictionary** data) const ;
+ bool SkPdfFileSpecificationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFileSpecificationDictionary** data) const ;
+ bool isEmbeddedFileStreamDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfEmbeddedFileStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfEmbeddedFileStreamDictionary** data) const ;
+ bool SkPdfEmbeddedFileStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfEmbeddedFileStreamDictionary** data) const ;
+ bool isEmbeddedFileParameterDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfEmbeddedFileParameterDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfEmbeddedFileParameterDictionary** data) const ;
+ bool SkPdfEmbeddedFileParameterDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfEmbeddedFileParameterDictionary** data) const ;
+ bool isMacOsFileInformationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfMacOsFileInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMacOsFileInformationDictionary** data) const ;
+ bool SkPdfMacOsFileInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMacOsFileInformationDictionary** data) const ;
+ bool isGraphicsStateDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfGraphicsStateDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfGraphicsStateDictionary** data) const ;
+ bool SkPdfGraphicsStateDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfGraphicsStateDictionary** data) const ;
+ bool isCalgrayColorSpaceDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfCalgrayColorSpaceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCalgrayColorSpaceDictionary** data) const ;
+ bool SkPdfCalgrayColorSpaceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCalgrayColorSpaceDictionary** data) const ;
+ bool isCalrgbColorSpaceDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfCalrgbColorSpaceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCalrgbColorSpaceDictionary** data) const ;
+ bool SkPdfCalrgbColorSpaceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCalrgbColorSpaceDictionary** data) const ;
+ bool isLabColorSpaceDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfLabColorSpaceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfLabColorSpaceDictionary** data) const ;
+ bool SkPdfLabColorSpaceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfLabColorSpaceDictionary** data) const ;
+ bool isIccProfileStreamDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfIccProfileStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfIccProfileStreamDictionary** data) const ;
+ bool SkPdfIccProfileStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfIccProfileStreamDictionary** data) const ;
+ bool isDeviceNColorSpaceDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfDeviceNColorSpaceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfDeviceNColorSpaceDictionary** data) const ;
+ bool SkPdfDeviceNColorSpaceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfDeviceNColorSpaceDictionary** data) const ;
+ bool isType1PatternDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType1PatternDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType1PatternDictionary** data) const ;
+ bool SkPdfType1PatternDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType1PatternDictionary** data) const ;
+ bool isType2PatternDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType2PatternDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType2PatternDictionary** data) const ;
+ bool SkPdfType2PatternDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType2PatternDictionary** data) const ;
+ bool isShadingDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfShadingDictionary** data) const ;
+ bool SkPdfShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfShadingDictionary** data) const ;
+ bool isType1ShadingDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType1ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType1ShadingDictionary** data) const ;
+ bool SkPdfType1ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType1ShadingDictionary** data) const ;
+ bool isType2ShadingDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType2ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType2ShadingDictionary** data) const ;
+ bool SkPdfType2ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType2ShadingDictionary** data) const ;
+ bool isType3ShadingDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType3ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType3ShadingDictionary** data) const ;
+ bool SkPdfType3ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType3ShadingDictionary** data) const ;
+ bool isType4ShadingDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType4ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType4ShadingDictionary** data) const ;
+ bool SkPdfType4ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType4ShadingDictionary** data) const ;
+ bool isType5ShadingDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType5ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType5ShadingDictionary** data) const ;
+ bool SkPdfType5ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType5ShadingDictionary** data) const ;
+ bool isType6ShadingDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType6ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType6ShadingDictionary** data) const ;
+ bool SkPdfType6ShadingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType6ShadingDictionary** data) const ;
+ bool isImageDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfImageDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfImageDictionary** data) const ;
+ bool SkPdfImageDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfImageDictionary** data) const ;
+ bool isAlternateImageDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfAlternateImageDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfAlternateImageDictionary** data) const ;
+ bool SkPdfAlternateImageDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfAlternateImageDictionary** data) const ;
+ bool isType1FormDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType1FormDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType1FormDictionary** data) const ;
+ bool SkPdfType1FormDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType1FormDictionary** data) const ;
+ bool isGroupAttributesDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfGroupAttributesDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfGroupAttributesDictionary** data) const ;
+ bool SkPdfGroupAttributesDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfGroupAttributesDictionary** data) const ;
+ bool isReferenceDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfReferenceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfReferenceDictionary** data) const ;
+ bool SkPdfReferenceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfReferenceDictionary** data) const ;
+ bool isPSXobjectDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfPSXobjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPSXobjectDictionary** data) const ;
+ bool SkPdfPSXobjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPSXobjectDictionary** data) const ;
+ bool isType1FontDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType1FontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType1FontDictionary** data) const ;
+ bool SkPdfType1FontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType1FontDictionary** data) const ;
+ bool isType3FontDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType3FontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType3FontDictionary** data) const ;
+ bool SkPdfType3FontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType3FontDictionary** data) const ;
+ bool isEncodingDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfEncodingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfEncodingDictionary** data) const ;
+ bool SkPdfEncodingDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfEncodingDictionary** data) const ;
+ bool isCIDSystemInfoDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfCIDSystemInfoDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCIDSystemInfoDictionary** data) const ;
+ bool SkPdfCIDSystemInfoDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCIDSystemInfoDictionary** data) const ;
+ bool isCIDFontDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfCIDFontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCIDFontDictionary** data) const ;
+ bool SkPdfCIDFontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCIDFontDictionary** data) const ;
+ bool isCMapDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfCMapDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCMapDictionary** data) const ;
+ bool SkPdfCMapDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCMapDictionary** data) const ;
+ bool isType0FontDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType0FontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType0FontDictionary** data) const ;
+ bool SkPdfType0FontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType0FontDictionary** data) const ;
+ bool isFontDescriptorDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFontDescriptorDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFontDescriptorDictionary** data) const ;
+ bool SkPdfFontDescriptorDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFontDescriptorDictionary** data) const ;
+ bool isCIDFontDescriptorDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfCIDFontDescriptorDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCIDFontDescriptorDictionary** data) const ;
+ bool SkPdfCIDFontDescriptorDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCIDFontDescriptorDictionary** data) const ;
+ bool isEmbeddedFontStreamDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfEmbeddedFontStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfEmbeddedFontStreamDictionary** data) const ;
+ bool SkPdfEmbeddedFontStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfEmbeddedFontStreamDictionary** data) const ;
+ bool isType1HalftoneDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType1HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType1HalftoneDictionary** data) const ;
+ bool SkPdfType1HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType1HalftoneDictionary** data) const ;
+ bool isType6HalftoneDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType6HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType6HalftoneDictionary** data) const ;
+ bool SkPdfType6HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType6HalftoneDictionary** data) const ;
+ bool isType10HalftoneDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType10HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType10HalftoneDictionary** data) const ;
+ bool SkPdfType10HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType10HalftoneDictionary** data) const ;
+ bool isType16HalftoneDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType16HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType16HalftoneDictionary** data) const ;
+ bool SkPdfType16HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType16HalftoneDictionary** data) const ;
+ bool isType5HalftoneDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfType5HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfType5HalftoneDictionary** data) const ;
+ bool SkPdfType5HalftoneDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfType5HalftoneDictionary** data) const ;
+ bool isSoftMaskDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfSoftMaskDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSoftMaskDictionary** data) const ;
+ bool SkPdfSoftMaskDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSoftMaskDictionary** data) const ;
+ bool isSoftMaskImageDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfSoftMaskImageDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSoftMaskImageDictionary** data) const ;
+ bool SkPdfSoftMaskImageDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSoftMaskImageDictionary** data) const ;
+ bool isTransparencyGroupDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfTransparencyGroupDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfTransparencyGroupDictionary** data) const ;
+ bool SkPdfTransparencyGroupDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfTransparencyGroupDictionary** data) const ;
+ bool isViewerPreferencesDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfViewerPreferencesDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfViewerPreferencesDictionary** data) const ;
+ bool SkPdfViewerPreferencesDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfViewerPreferencesDictionary** data) const ;
+ bool isOutlineDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfOutlineDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfOutlineDictionary** data) const ;
+ bool SkPdfOutlineDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfOutlineDictionary** data) const ;
+ bool isOutlineItemDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfOutlineItemDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfOutlineItemDictionary** data) const ;
+ bool SkPdfOutlineItemDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfOutlineItemDictionary** data) const ;
+ bool isPageLabelDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfPageLabelDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPageLabelDictionary** data) const ;
+ bool SkPdfPageLabelDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPageLabelDictionary** data) const ;
+ bool isThreadDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfThreadDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfThreadDictionary** data) const ;
+ bool SkPdfThreadDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfThreadDictionary** data) const ;
+ bool isBeadDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfBeadDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfBeadDictionary** data) const ;
+ bool SkPdfBeadDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfBeadDictionary** data) const ;
+ bool isTransitionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfTransitionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfTransitionDictionary** data) const ;
+ bool SkPdfTransitionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfTransitionDictionary** data) const ;
+ bool isAnnotationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfAnnotationDictionary** data) const ;
+ bool SkPdfAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfAnnotationDictionary** data) const ;
+ bool isBorderStyleDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfBorderStyleDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfBorderStyleDictionary** data) const ;
+ bool SkPdfBorderStyleDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfBorderStyleDictionary** data) const ;
+ bool isAppearanceDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfAppearanceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfAppearanceDictionary** data) const ;
+ bool SkPdfAppearanceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfAppearanceDictionary** data) const ;
+ bool isTextAnnotationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfTextAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfTextAnnotationDictionary** data) const ;
+ bool SkPdfTextAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfTextAnnotationDictionary** data) const ;
+ bool isALinkAnnotationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfALinkAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfALinkAnnotationDictionary** data) const ;
+ bool SkPdfALinkAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfALinkAnnotationDictionary** data) const ;
+ bool isFreeTextAnnotationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFreeTextAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFreeTextAnnotationDictionary** data) const ;
+ bool SkPdfFreeTextAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFreeTextAnnotationDictionary** data) const ;
+ bool isLineAnnotationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfLineAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfLineAnnotationDictionary** data) const ;
+ bool SkPdfLineAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfLineAnnotationDictionary** data) const ;
+ bool isSquareOrCircleAnnotation(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfSquareOrCircleAnnotationFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSquareOrCircleAnnotation** data) const ;
+ bool SkPdfSquareOrCircleAnnotationFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSquareOrCircleAnnotation** data) const ;
+ bool isMarkupAnnotationsDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfMarkupAnnotationsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMarkupAnnotationsDictionary** data) const ;
+ bool SkPdfMarkupAnnotationsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMarkupAnnotationsDictionary** data) const ;
+ bool isRubberStampAnnotationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfRubberStampAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfRubberStampAnnotationDictionary** data) const ;
+ bool SkPdfRubberStampAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfRubberStampAnnotationDictionary** data) const ;
+ bool isInkAnnotationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfInkAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfInkAnnotationDictionary** data) const ;
+ bool SkPdfInkAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfInkAnnotationDictionary** data) const ;
+ bool isPopUpAnnotationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfPopUpAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPopUpAnnotationDictionary** data) const ;
+ bool SkPdfPopUpAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPopUpAnnotationDictionary** data) const ;
+ bool isFileAttachmentAnnotationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFileAttachmentAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFileAttachmentAnnotationDictionary** data) const ;
+ bool SkPdfFileAttachmentAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFileAttachmentAnnotationDictionary** data) const ;
+ bool isSoundAnnotationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfSoundAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSoundAnnotationDictionary** data) const ;
+ bool SkPdfSoundAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSoundAnnotationDictionary** data) const ;
+ bool isMovieAnnotationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfMovieAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMovieAnnotationDictionary** data) const ;
+ bool SkPdfMovieAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMovieAnnotationDictionary** data) const ;
+ bool isWidgetAnnotationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfWidgetAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfWidgetAnnotationDictionary** data) const ;
+ bool SkPdfWidgetAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfWidgetAnnotationDictionary** data) const ;
+ bool isActionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfActionDictionary** data) const ;
+ bool SkPdfActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfActionDictionary** data) const ;
+ bool isAnnotationActionsDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfAnnotationActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfAnnotationActionsDictionary** data) const ;
+ bool SkPdfAnnotationActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfAnnotationActionsDictionary** data) const ;
+ bool isPageObjectActionsDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfPageObjectActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPageObjectActionsDictionary** data) const ;
+ bool SkPdfPageObjectActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPageObjectActionsDictionary** data) const ;
+ bool isFormFieldActionsDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFormFieldActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFormFieldActionsDictionary** data) const ;
+ bool SkPdfFormFieldActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFormFieldActionsDictionary** data) const ;
+ bool isDocumentCatalogActionsDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfDocumentCatalogActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfDocumentCatalogActionsDictionary** data) const ;
+ bool SkPdfDocumentCatalogActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfDocumentCatalogActionsDictionary** data) const ;
+ bool isGoToActionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfGoToActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfGoToActionDictionary** data) const ;
+ bool SkPdfGoToActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfGoToActionDictionary** data) const ;
+ bool isRemoteGoToActionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfRemoteGoToActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfRemoteGoToActionDictionary** data) const ;
+ bool SkPdfRemoteGoToActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfRemoteGoToActionDictionary** data) const ;
+ bool isLaunchActionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfLaunchActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfLaunchActionDictionary** data) const ;
+ bool SkPdfLaunchActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfLaunchActionDictionary** data) const ;
+ bool isWindowsLaunchActionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfWindowsLaunchActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfWindowsLaunchActionDictionary** data) const ;
+ bool SkPdfWindowsLaunchActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfWindowsLaunchActionDictionary** data) const ;
+ bool isThreadActionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfThreadActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfThreadActionDictionary** data) const ;
+ bool SkPdfThreadActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfThreadActionDictionary** data) const ;
+ bool isURIActionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfURIActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfURIActionDictionary** data) const ;
+ bool SkPdfURIActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfURIActionDictionary** data) const ;
+ bool isURIDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfURIDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfURIDictionary** data) const ;
+ bool SkPdfURIDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfURIDictionary** data) const ;
+ bool isSoundActionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfSoundActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSoundActionDictionary** data) const ;
+ bool SkPdfSoundActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSoundActionDictionary** data) const ;
+ bool isMovieActionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfMovieActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMovieActionDictionary** data) const ;
+ bool SkPdfMovieActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMovieActionDictionary** data) const ;
+ bool isHideActionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfHideActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfHideActionDictionary** data) const ;
+ bool SkPdfHideActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfHideActionDictionary** data) const ;
+ bool isNamedActionsDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfNamedActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfNamedActionsDictionary** data) const ;
+ bool SkPdfNamedActionsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfNamedActionsDictionary** data) const ;
+ bool isInteractiveFormDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfInteractiveFormDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfInteractiveFormDictionary** data) const ;
+ bool SkPdfInteractiveFormDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfInteractiveFormDictionary** data) const ;
+ bool isFieldDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFieldDictionary** data) const ;
+ bool SkPdfFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFieldDictionary** data) const ;
+ bool isVariableTextFieldDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfVariableTextFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfVariableTextFieldDictionary** data) const ;
+ bool SkPdfVariableTextFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfVariableTextFieldDictionary** data) const ;
+ bool isAppearanceCharacteristicsDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfAppearanceCharacteristicsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfAppearanceCharacteristicsDictionary** data) const ;
+ bool SkPdfAppearanceCharacteristicsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfAppearanceCharacteristicsDictionary** data) const ;
+ bool isCheckboxFieldDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfCheckboxFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfCheckboxFieldDictionary** data) const ;
+ bool SkPdfCheckboxFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfCheckboxFieldDictionary** data) const ;
+ bool isRadioButtonFieldDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfRadioButtonFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfRadioButtonFieldDictionary** data) const ;
+ bool SkPdfRadioButtonFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfRadioButtonFieldDictionary** data) const ;
+ bool isTextFieldDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfTextFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfTextFieldDictionary** data) const ;
+ bool SkPdfTextFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfTextFieldDictionary** data) const ;
+ bool isChoiceFieldDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfChoiceFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfChoiceFieldDictionary** data) const ;
+ bool SkPdfChoiceFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfChoiceFieldDictionary** data) const ;
+ bool isSignatureDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfSignatureDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSignatureDictionary** data) const ;
+ bool SkPdfSignatureDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSignatureDictionary** data) const ;
+ bool isSubmitFormActionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfSubmitFormActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSubmitFormActionDictionary** data) const ;
+ bool SkPdfSubmitFormActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSubmitFormActionDictionary** data) const ;
+ bool isResetFormActionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfResetFormActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfResetFormActionDictionary** data) const ;
+ bool SkPdfResetFormActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfResetFormActionDictionary** data) const ;
+ bool isImportDataActionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfImportDataActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfImportDataActionDictionary** data) const ;
+ bool SkPdfImportDataActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfImportDataActionDictionary** data) const ;
+ bool isJavascriptActionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfJavascriptActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfJavascriptActionDictionary** data) const ;
+ bool SkPdfJavascriptActionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfJavascriptActionDictionary** data) const ;
+ bool isFDFTrailerDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFDFTrailerDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFDFTrailerDictionary** data) const ;
+ bool SkPdfFDFTrailerDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFDFTrailerDictionary** data) const ;
+ bool isFDFCatalogDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFDFCatalogDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFDFCatalogDictionary** data) const ;
+ bool SkPdfFDFCatalogDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFDFCatalogDictionary** data) const ;
+ bool isFDFDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFDFDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFDFDictionary** data) const ;
+ bool SkPdfFDFDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFDFDictionary** data) const ;
+ bool isEncryptedEmbeddedFileStreamDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfEncryptedEmbeddedFileStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfEncryptedEmbeddedFileStreamDictionary** data) const ;
+ bool SkPdfEncryptedEmbeddedFileStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfEncryptedEmbeddedFileStreamDictionary** data) const ;
+ bool isJavascriptDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfJavascriptDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfJavascriptDictionary** data) const ;
+ bool SkPdfJavascriptDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfJavascriptDictionary** data) const ;
+ bool isFDFFieldDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFDFFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFDFFieldDictionary** data) const ;
+ bool SkPdfFDFFieldDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFDFFieldDictionary** data) const ;
+ bool isIconFitDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfIconFitDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfIconFitDictionary** data) const ;
+ bool SkPdfIconFitDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfIconFitDictionary** data) const ;
+ bool isFDFPageDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFDFPageDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFDFPageDictionary** data) const ;
+ bool SkPdfFDFPageDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFDFPageDictionary** data) const ;
+ bool isFDFTemplateDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFDFTemplateDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFDFTemplateDictionary** data) const ;
+ bool SkPdfFDFTemplateDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFDFTemplateDictionary** data) const ;
+ bool isFDFNamedPageReferenceDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFDFNamedPageReferenceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFDFNamedPageReferenceDictionary** data) const ;
+ bool SkPdfFDFNamedPageReferenceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFDFNamedPageReferenceDictionary** data) const ;
+ bool isFDFFileAnnotationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfFDFFileAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfFDFFileAnnotationDictionary** data) const ;
+ bool SkPdfFDFFileAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfFDFFileAnnotationDictionary** data) const ;
+ bool isSoundObjectDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfSoundObjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSoundObjectDictionary** data) const ;
+ bool SkPdfSoundObjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSoundObjectDictionary** data) const ;
+ bool isMovieDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfMovieDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMovieDictionary** data) const ;
+ bool SkPdfMovieDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMovieDictionary** data) const ;
+ bool isMovieActivationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfMovieActivationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMovieActivationDictionary** data) const ;
+ bool SkPdfMovieActivationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMovieActivationDictionary** data) const ;
+ bool isDocumentInformationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfDocumentInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfDocumentInformationDictionary** data) const ;
+ bool SkPdfDocumentInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfDocumentInformationDictionary** data) const ;
+ bool isMetadataStreamDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfMetadataStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMetadataStreamDictionary** data) const ;
+ bool SkPdfMetadataStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMetadataStreamDictionary** data) const ;
+ bool isComponentsWithMetadataDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfComponentsWithMetadataDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfComponentsWithMetadataDictionary** data) const ;
+ bool SkPdfComponentsWithMetadataDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfComponentsWithMetadataDictionary** data) const ;
+ bool isPagePieceDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfPagePieceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPagePieceDictionary** data) const ;
+ bool SkPdfPagePieceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPagePieceDictionary** data) const ;
+ bool isApplicationDataDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfApplicationDataDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfApplicationDataDictionary** data) const ;
+ bool SkPdfApplicationDataDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfApplicationDataDictionary** data) const ;
+ bool isStructureTreeRootDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfStructureTreeRootDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfStructureTreeRootDictionary** data) const ;
+ bool SkPdfStructureTreeRootDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfStructureTreeRootDictionary** data) const ;
+ bool isStructureElementDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfStructureElementDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfStructureElementDictionary** data) const ;
+ bool SkPdfStructureElementDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfStructureElementDictionary** data) const ;
+ bool isMarkedContentReferenceDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfMarkedContentReferenceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMarkedContentReferenceDictionary** data) const ;
+ bool SkPdfMarkedContentReferenceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMarkedContentReferenceDictionary** data) const ;
+ bool isObjectReferenceDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfObjectReferenceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfObjectReferenceDictionary** data) const ;
+ bool SkPdfObjectReferenceDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfObjectReferenceDictionary** data) const ;
+ bool isStructureElementAccessDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfStructureElementAccessDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfStructureElementAccessDictionary** data) const ;
+ bool SkPdfStructureElementAccessDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfStructureElementAccessDictionary** data) const ;
+ bool isAttributeObjectDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfAttributeObjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfAttributeObjectDictionary** data) const ;
+ bool SkPdfAttributeObjectDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfAttributeObjectDictionary** data) const ;
+ bool isMarkInformationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfMarkInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMarkInformationDictionary** data) const ;
+ bool SkPdfMarkInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMarkInformationDictionary** data) const ;
+ bool isArtifactsDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfArtifactsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfArtifactsDictionary** data) const ;
+ bool SkPdfArtifactsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfArtifactsDictionary** data) const ;
+ bool isStandardStructureDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfStandardStructureDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfStandardStructureDictionary** data) const ;
+ bool SkPdfStandardStructureDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfStandardStructureDictionary** data) const ;
+ bool isBlockLevelStructureElementsDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfBlockLevelStructureElementsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfBlockLevelStructureElementsDictionary** data) const ;
+ bool SkPdfBlockLevelStructureElementsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfBlockLevelStructureElementsDictionary** data) const ;
+ bool isInlineLevelStructureElementsDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfInlineLevelStructureElementsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfInlineLevelStructureElementsDictionary** data) const ;
+ bool SkPdfInlineLevelStructureElementsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfInlineLevelStructureElementsDictionary** data) const ;
+ bool isListAttributeDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfListAttributeDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfListAttributeDictionary** data) const ;
+ bool SkPdfListAttributeDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfListAttributeDictionary** data) const ;
+ bool isTableAttributesDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfTableAttributesDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfTableAttributesDictionary** data) const ;
+ bool SkPdfTableAttributesDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfTableAttributesDictionary** data) const ;
+ bool isWebCaptureInformationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfWebCaptureInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfWebCaptureInformationDictionary** data) const ;
+ bool SkPdfWebCaptureInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfWebCaptureInformationDictionary** data) const ;
+ bool isWebCaptureDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfWebCaptureDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfWebCaptureDictionary** data) const ;
+ bool SkPdfWebCaptureDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfWebCaptureDictionary** data) const ;
+ bool isWebCapturePageSetDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfWebCapturePageSetDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfWebCapturePageSetDictionary** data) const ;
+ bool SkPdfWebCapturePageSetDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfWebCapturePageSetDictionary** data) const ;
+ bool isWebCaptureImageSetDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfWebCaptureImageSetDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfWebCaptureImageSetDictionary** data) const ;
+ bool SkPdfWebCaptureImageSetDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfWebCaptureImageSetDictionary** data) const ;
+ bool isSourceInformationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfSourceInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSourceInformationDictionary** data) const ;
+ bool SkPdfSourceInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSourceInformationDictionary** data) const ;
+ bool isURLAliasDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfURLAliasDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfURLAliasDictionary** data) const ;
+ bool SkPdfURLAliasDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfURLAliasDictionary** data) const ;
+ bool isWebCaptureCommandDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfWebCaptureCommandDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfWebCaptureCommandDictionary** data) const ;
+ bool SkPdfWebCaptureCommandDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfWebCaptureCommandDictionary** data) const ;
+ bool isWebCaptureCommandSettingsDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfWebCaptureCommandSettingsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfWebCaptureCommandSettingsDictionary** data) const ;
+ bool SkPdfWebCaptureCommandSettingsDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfWebCaptureCommandSettingsDictionary** data) const ;
+ bool isBoxColorInformationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfBoxColorInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfBoxColorInformationDictionary** data) const ;
+ bool SkPdfBoxColorInformationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfBoxColorInformationDictionary** data) const ;
+ bool isBoxStyleDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfBoxStyleDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfBoxStyleDictionary** data) const ;
+ bool SkPdfBoxStyleDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfBoxStyleDictionary** data) const ;
+ bool isPrinterMarkAnnotationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfPrinterMarkAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPrinterMarkAnnotationDictionary** data) const ;
+ bool SkPdfPrinterMarkAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPrinterMarkAnnotationDictionary** data) const ;
+ bool isPrinterMarkFormDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfPrinterMarkFormDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPrinterMarkFormDictionary** data) const ;
+ bool SkPdfPrinterMarkFormDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPrinterMarkFormDictionary** data) const ;
+ bool isSeparationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfSeparationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfSeparationDictionary** data) const ;
+ bool SkPdfSeparationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfSeparationDictionary** data) const ;
+ bool isPDF_XOutputIntentDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfPDF_XOutputIntentDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfPDF_XOutputIntentDictionary** data) const ;
+ bool SkPdfPDF_XOutputIntentDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfPDF_XOutputIntentDictionary** data) const ;
+ bool isTrapNetworkAnnotationDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfTrapNetworkAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfTrapNetworkAnnotationDictionary** data) const ;
+ bool SkPdfTrapNetworkAnnotationDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfTrapNetworkAnnotationDictionary** data) const ;
+ bool isTrapNetworkAppearanceStreamDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfTrapNetworkAppearanceStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfTrapNetworkAppearanceStreamDictionary** data) const ;
+ bool SkPdfTrapNetworkAppearanceStreamDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfTrapNetworkAppearanceStreamDictionary** data) const ;
+ bool isOpiVersionDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfOpiVersionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfOpiVersionDictionary** data) const ;
+ bool SkPdfOpiVersionDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfOpiVersionDictionary** data) const ;
+ bool isMultiMasterFontDictionary(const SkPdfNativeObject* nativeObj) const ;
+ bool SkPdfMultiMasterFontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, SkPdfMultiMasterFontDictionary** data) const ;
+ bool SkPdfMultiMasterFontDictionaryFromDictionary(const SkPdfNativeObject* dict, const char* key, const char* abr, SkPdfMultiMasterFontDictionary** data) const ;
+};
+
+#endif // SkPdfMapper_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkInformationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkInformationDictionary_autogen.cpp
new file mode 100644
index 00000000000..a95a1677afc
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkInformationDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfMarkInformationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+bool SkPdfMarkInformationDictionary::Marked(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Marked", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfMarkInformationDictionary::has_Marked() const {
+ return get("Marked", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkInformationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkInformationDictionary_autogen.h
new file mode 100644
index 00000000000..8396f11f41c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkInformationDictionary_autogen.h
@@ -0,0 +1,525 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfMarkInformationDictionary_DEFINED
+#define SkPdfMarkInformationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entry in the mark information dictionary
+class SkPdfMarkInformationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ bool Marked(SkPdfNativeDoc* doc);
+ bool has_Marked() const;
+};
+
+#endif // SkPdfMarkInformationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkedContentReferenceDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkedContentReferenceDictionary_autogen.cpp
new file mode 100644
index 00000000000..c3e021b625c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkedContentReferenceDictionary_autogen.cpp
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfMarkedContentReferenceDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfMarkedContentReferenceDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfMarkedContentReferenceDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfMarkedContentReferenceDictionary::Pg(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Pg", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfMarkedContentReferenceDictionary::has_Pg() const {
+ return get("Pg", "") != NULL;
+}
+
+SkPdfStream* SkPdfMarkedContentReferenceDictionary::Stm(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Stm", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfMarkedContentReferenceDictionary::has_Stm() const {
+ return get("Stm", "") != NULL;
+}
+
+SkPdfNativeObject* SkPdfMarkedContentReferenceDictionary::StmOwn(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("StmOwn", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && true) || (doc == NULL && ret != NULL && ret->isReference())) return ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfMarkedContentReferenceDictionary::has_StmOwn() const {
+ return get("StmOwn", "") != NULL;
+}
+
+int64_t SkPdfMarkedContentReferenceDictionary::MCID(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("MCID", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfMarkedContentReferenceDictionary::has_MCID() const {
+ return get("MCID", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkedContentReferenceDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkedContentReferenceDictionary_autogen.h
new file mode 100644
index 00000000000..34bd34c5549
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkedContentReferenceDictionary_autogen.h
@@ -0,0 +1,533 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfMarkedContentReferenceDictionary_DEFINED
+#define SkPdfMarkedContentReferenceDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a marked-content reference dictionary
+class SkPdfMarkedContentReferenceDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkPdfDictionary* Pg(SkPdfNativeDoc* doc);
+ bool has_Pg() const;
+ SkPdfStream* Stm(SkPdfNativeDoc* doc);
+ bool has_Stm() const;
+ SkPdfNativeObject* StmOwn(SkPdfNativeDoc* doc);
+ bool has_StmOwn() const;
+ int64_t MCID(SkPdfNativeDoc* doc);
+ bool has_MCID() const;
+};
+
+#endif // SkPdfMarkedContentReferenceDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkupAnnotationsDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkupAnnotationsDictionary_autogen.cpp
new file mode 100644
index 00000000000..634932bae64
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkupAnnotationsDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfMarkupAnnotationsDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfMarkupAnnotationsDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfMarkupAnnotationsDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfMarkupAnnotationsDictionary::Contents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfMarkupAnnotationsDictionary::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+SkPdfArray* SkPdfMarkupAnnotationsDictionary::QuadPoints(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("QuadPoints", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfMarkupAnnotationsDictionary::has_QuadPoints() const {
+ return get("QuadPoints", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkupAnnotationsDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkupAnnotationsDictionary_autogen.h
new file mode 100644
index 00000000000..c1d358b1e25
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMarkupAnnotationsDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfMarkupAnnotationsDictionary_DEFINED
+#define SkPdfMarkupAnnotationsDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to markup annotations
+class SkPdfMarkupAnnotationsDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString Contents(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+ SkPdfArray* QuadPoints(SkPdfNativeDoc* doc);
+ bool has_QuadPoints() const;
+};
+
+#endif // SkPdfMarkupAnnotationsDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMetadataStreamDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMetadataStreamDictionary_autogen.cpp
new file mode 100644
index 00000000000..0ab9b9a609e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMetadataStreamDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfMetadataStreamDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfMetadataStreamDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfMetadataStreamDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfMetadataStreamDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfMetadataStreamDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMetadataStreamDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMetadataStreamDictionary_autogen.h
new file mode 100644
index 00000000000..bc7bc1db2b5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMetadataStreamDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfMetadataStreamDictionary_DEFINED
+#define SkPdfMetadataStreamDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries in a metadata stream dictionary
+class SkPdfMetadataStreamDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+};
+
+#endif // SkPdfMetadataStreamDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieActionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieActionDictionary_autogen.cpp
new file mode 100644
index 00000000000..bfc77711692
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieActionDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfMovieActionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfMovieActionDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfMovieActionDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfMovieActionDictionary::Annot(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Annot", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfMovieActionDictionary::has_Annot() const {
+ return get("Annot", "") != NULL;
+}
+
+SkString SkPdfMovieActionDictionary::T(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("T", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfMovieActionDictionary::has_T() const {
+ return get("T", "") != NULL;
+}
+
+SkString SkPdfMovieActionDictionary::Operation(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Operation", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfMovieActionDictionary::has_Operation() const {
+ return get("Operation", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieActionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieActionDictionary_autogen.h
new file mode 100644
index 00000000000..ad47cd409ee
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieActionDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfMovieActionDictionary_DEFINED
+#define SkPdfMovieActionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a movie action
+class SkPdfMovieActionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkPdfDictionary* Annot(SkPdfNativeDoc* doc);
+ bool has_Annot() const;
+ SkString T(SkPdfNativeDoc* doc);
+ bool has_T() const;
+ SkString Operation(SkPdfNativeDoc* doc);
+ bool has_Operation() const;
+};
+
+#endif // SkPdfMovieActionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieActivationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieActivationDictionary_autogen.cpp
new file mode 100644
index 00000000000..b8ee3675726
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieActivationDictionary_autogen.cpp
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfMovieActivationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfNativeObject* SkPdfMovieActivationDictionary::Start(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Start", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && true) || (doc == NULL && ret != NULL && ret->isReference())) return ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfMovieActivationDictionary::has_Start() const {
+ return get("Start", "") != NULL;
+}
+
+SkPdfNativeObject* SkPdfMovieActivationDictionary::Duration(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Duration", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && true) || (doc == NULL && ret != NULL && ret->isReference())) return ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfMovieActivationDictionary::has_Duration() const {
+ return get("Duration", "") != NULL;
+}
+
+double SkPdfMovieActivationDictionary::Rate(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Rate", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfMovieActivationDictionary::has_Rate() const {
+ return get("Rate", "") != NULL;
+}
+
+double SkPdfMovieActivationDictionary::Volume(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Volume", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfMovieActivationDictionary::has_Volume() const {
+ return get("Volume", "") != NULL;
+}
+
+bool SkPdfMovieActivationDictionary::ShowControls(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ShowControls", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfMovieActivationDictionary::has_ShowControls() const {
+ return get("ShowControls", "") != NULL;
+}
+
+SkString SkPdfMovieActivationDictionary::Mode(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Mode", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfMovieActivationDictionary::has_Mode() const {
+ return get("Mode", "") != NULL;
+}
+
+bool SkPdfMovieActivationDictionary::Synchronous(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Synchronous", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfMovieActivationDictionary::has_Synchronous() const {
+ return get("Synchronous", "") != NULL;
+}
+
+SkPdfArray* SkPdfMovieActivationDictionary::FWScale(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FWScale", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfMovieActivationDictionary::has_FWScale() const {
+ return get("FWScale", "") != NULL;
+}
+
+SkPdfArray* SkPdfMovieActivationDictionary::FWPosition(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FWPosition", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfMovieActivationDictionary::has_FWPosition() const {
+ return get("FWPosition", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieActivationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieActivationDictionary_autogen.h
new file mode 100644
index 00000000000..787a7c965f2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieActivationDictionary_autogen.h
@@ -0,0 +1,541 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfMovieActivationDictionary_DEFINED
+#define SkPdfMovieActivationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a movie activation dictionary
+class SkPdfMovieActivationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfNativeObject* Start(SkPdfNativeDoc* doc);
+ bool has_Start() const;
+ SkPdfNativeObject* Duration(SkPdfNativeDoc* doc);
+ bool has_Duration() const;
+ double Rate(SkPdfNativeDoc* doc);
+ bool has_Rate() const;
+ double Volume(SkPdfNativeDoc* doc);
+ bool has_Volume() const;
+ bool ShowControls(SkPdfNativeDoc* doc);
+ bool has_ShowControls() const;
+ SkString Mode(SkPdfNativeDoc* doc);
+ bool has_Mode() const;
+ bool Synchronous(SkPdfNativeDoc* doc);
+ bool has_Synchronous() const;
+ SkPdfArray* FWScale(SkPdfNativeDoc* doc);
+ bool has_FWScale() const;
+ SkPdfArray* FWPosition(SkPdfNativeDoc* doc);
+ bool has_FWPosition() const;
+};
+
+#endif // SkPdfMovieActivationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieAnnotationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieAnnotationDictionary_autogen.cpp
new file mode 100644
index 00000000000..5b7e08cb6ee
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieAnnotationDictionary_autogen.cpp
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfMovieAnnotationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfMovieAnnotationDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfMovieAnnotationDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfMovieAnnotationDictionary::Movie(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Movie", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfMovieAnnotationDictionary::has_Movie() const {
+ return get("Movie", "") != NULL;
+}
+
+SkString SkPdfMovieAnnotationDictionary::Contents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfMovieAnnotationDictionary::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+bool SkPdfMovieAnnotationDictionary::isAABoolean(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("A", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isBoolean();
+}
+
+bool SkPdfMovieAnnotationDictionary::getAAsBoolean(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("A", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfMovieAnnotationDictionary::isAADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("A", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfMovieAnnotationDictionary::getAAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("A", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfMovieAnnotationDictionary::has_A() const {
+ return get("A", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieAnnotationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieAnnotationDictionary_autogen.h
new file mode 100644
index 00000000000..c53ee09fac0
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieAnnotationDictionary_autogen.h
@@ -0,0 +1,536 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfMovieAnnotationDictionary_DEFINED
+#define SkPdfMovieAnnotationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a movie annotation
+class SkPdfMovieAnnotationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkPdfDictionary* Movie(SkPdfNativeDoc* doc);
+ bool has_Movie() const;
+ SkString Contents(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+
+ bool isAABoolean(SkPdfNativeDoc* doc);
+ bool getAAsBoolean(SkPdfNativeDoc* doc);
+
+ bool isAADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getAAsDictionary(SkPdfNativeDoc* doc);
+ bool has_A() const;
+};
+
+#endif // SkPdfMovieAnnotationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieDictionary_autogen.cpp
new file mode 100644
index 00000000000..a1f483186b7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieDictionary_autogen.cpp
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfMovieDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfFileSpec SkPdfMovieDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->fileSpecValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkPdfFileSpec();
+}
+
+bool SkPdfMovieDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
+
+SkPdfArray* SkPdfMovieDictionary::Aspect(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Aspect", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfMovieDictionary::has_Aspect() const {
+ return get("Aspect", "") != NULL;
+}
+
+int64_t SkPdfMovieDictionary::Rotate(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Rotate", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfMovieDictionary::has_Rotate() const {
+ return get("Rotate", "") != NULL;
+}
+
+bool SkPdfMovieDictionary::isPosterABoolean(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Poster", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isBoolean();
+}
+
+bool SkPdfMovieDictionary::getPosterAsBoolean(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Poster", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfMovieDictionary::isPosterAStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Poster", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfMovieDictionary::getPosterAsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Poster", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfMovieDictionary::has_Poster() const {
+ return get("Poster", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieDictionary_autogen.h
new file mode 100644
index 00000000000..58aa9cb496f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMovieDictionary_autogen.h
@@ -0,0 +1,536 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfMovieDictionary_DEFINED
+#define SkPdfMovieDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a movie dictionary
+class SkPdfMovieDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfMovieDictionary* asMovieDictionary() {return this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfFileSpec F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+ SkPdfArray* Aspect(SkPdfNativeDoc* doc);
+ bool has_Aspect() const;
+ int64_t Rotate(SkPdfNativeDoc* doc);
+ bool has_Rotate() const;
+
+ bool isPosterABoolean(SkPdfNativeDoc* doc);
+ bool getPosterAsBoolean(SkPdfNativeDoc* doc);
+
+ bool isPosterAStream(SkPdfNativeDoc* doc);
+ SkPdfStream* getPosterAsStream(SkPdfNativeDoc* doc);
+ bool has_Poster() const;
+};
+
+#endif // SkPdfMovieDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMultiMasterFontDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMultiMasterFontDictionary_autogen.cpp
new file mode 100644
index 00000000000..71afef18a64
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMultiMasterFontDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfMultiMasterFontDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfMultiMasterFontDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfMultiMasterFontDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMultiMasterFontDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMultiMasterFontDictionary_autogen.h
new file mode 100644
index 00000000000..99ae6a37caa
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfMultiMasterFontDictionary_autogen.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfMultiMasterFontDictionary_DEFINED
+#define SkPdfMultiMasterFontDictionary_DEFINED
+
+#include "SkPdfType1FontDictionary_autogen.h"
+
+class SkPdfMultiMasterFontDictionary : public SkPdfType1FontDictionary {
+public:
+public:
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return this;}
+
+private:
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+};
+
+#endif // SkPdfMultiMasterFontDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNameDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNameDictionary_autogen.cpp
new file mode 100644
index 00000000000..4db47a46bde
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNameDictionary_autogen.cpp
@@ -0,0 +1,265 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfNameDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+bool SkPdfNameDictionary::isDestsAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dests", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfNameDictionary::getDestsAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dests", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfNameDictionary::isDestsATree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dests", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && false;
+}
+
+SkPdfTree SkPdfNameDictionary::getDestsAsTree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dests", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->treeValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfTree();
+}
+
+bool SkPdfNameDictionary::has_Dests() const {
+ return get("Dests", "") != NULL;
+}
+
+bool SkPdfNameDictionary::isAPAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AP", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfNameDictionary::getAPAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AP", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfNameDictionary::isAPATree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AP", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && false;
+}
+
+SkPdfTree SkPdfNameDictionary::getAPAsTree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AP", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->treeValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfTree();
+}
+
+bool SkPdfNameDictionary::has_AP() const {
+ return get("AP", "") != NULL;
+}
+
+bool SkPdfNameDictionary::isJavaScriptAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("JavaScript", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfNameDictionary::getJavaScriptAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("JavaScript", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfNameDictionary::isJavaScriptATree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("JavaScript", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && false;
+}
+
+SkPdfTree SkPdfNameDictionary::getJavaScriptAsTree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("JavaScript", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->treeValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfTree();
+}
+
+bool SkPdfNameDictionary::has_JavaScript() const {
+ return get("JavaScript", "") != NULL;
+}
+
+bool SkPdfNameDictionary::isPagesAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Pages", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfNameDictionary::getPagesAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Pages", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfNameDictionary::isPagesATree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Pages", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && false;
+}
+
+SkPdfTree SkPdfNameDictionary::getPagesAsTree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Pages", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->treeValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfTree();
+}
+
+bool SkPdfNameDictionary::has_Pages() const {
+ return get("Pages", "") != NULL;
+}
+
+bool SkPdfNameDictionary::isTemplatesAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Templates", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfNameDictionary::getTemplatesAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Templates", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfNameDictionary::isTemplatesATree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Templates", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && false;
+}
+
+SkPdfTree SkPdfNameDictionary::getTemplatesAsTree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Templates", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->treeValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfTree();
+}
+
+bool SkPdfNameDictionary::has_Templates() const {
+ return get("Templates", "") != NULL;
+}
+
+bool SkPdfNameDictionary::isIDSAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("IDS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfNameDictionary::getIDSAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("IDS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfNameDictionary::isIDSATree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("IDS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && false;
+}
+
+SkPdfTree SkPdfNameDictionary::getIDSAsTree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("IDS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->treeValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfTree();
+}
+
+bool SkPdfNameDictionary::has_IDS() const {
+ return get("IDS", "") != NULL;
+}
+
+bool SkPdfNameDictionary::isURLSAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("URLS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfNameDictionary::getURLSAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("URLS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfNameDictionary::isURLSATree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("URLS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && false;
+}
+
+SkPdfTree SkPdfNameDictionary::getURLSAsTree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("URLS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->treeValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfTree();
+}
+
+bool SkPdfNameDictionary::has_URLS() const {
+ return get("URLS", "") != NULL;
+}
+
+bool SkPdfNameDictionary::isEmbeddedFilesAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("EmbeddedFiles", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfNameDictionary::getEmbeddedFilesAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("EmbeddedFiles", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfNameDictionary::isEmbeddedFilesATree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("EmbeddedFiles", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && false;
+}
+
+SkPdfTree SkPdfNameDictionary::getEmbeddedFilesAsTree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("EmbeddedFiles", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->treeValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfTree();
+}
+
+bool SkPdfNameDictionary::has_EmbeddedFiles() const {
+ return get("EmbeddedFiles", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNameDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNameDictionary_autogen.h
new file mode 100644
index 00000000000..bcce582b9cb
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNameDictionary_autogen.h
@@ -0,0 +1,579 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfNameDictionary_DEFINED
+#define SkPdfNameDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in the name dictionary
+class SkPdfNameDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfNameDictionary* asNameDictionary() {return this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+
+ bool isDestsAName(SkPdfNativeDoc* doc);
+ SkString getDestsAsName(SkPdfNativeDoc* doc);
+
+ bool isDestsATree(SkPdfNativeDoc* doc);
+ SkPdfTree getDestsAsTree(SkPdfNativeDoc* doc);
+ bool has_Dests() const;
+
+ bool isAPAName(SkPdfNativeDoc* doc);
+ SkString getAPAsName(SkPdfNativeDoc* doc);
+
+ bool isAPATree(SkPdfNativeDoc* doc);
+ SkPdfTree getAPAsTree(SkPdfNativeDoc* doc);
+ bool has_AP() const;
+
+ bool isJavaScriptAName(SkPdfNativeDoc* doc);
+ SkString getJavaScriptAsName(SkPdfNativeDoc* doc);
+
+ bool isJavaScriptATree(SkPdfNativeDoc* doc);
+ SkPdfTree getJavaScriptAsTree(SkPdfNativeDoc* doc);
+ bool has_JavaScript() const;
+
+ bool isPagesAName(SkPdfNativeDoc* doc);
+ SkString getPagesAsName(SkPdfNativeDoc* doc);
+
+ bool isPagesATree(SkPdfNativeDoc* doc);
+ SkPdfTree getPagesAsTree(SkPdfNativeDoc* doc);
+ bool has_Pages() const;
+
+ bool isTemplatesAName(SkPdfNativeDoc* doc);
+ SkString getTemplatesAsName(SkPdfNativeDoc* doc);
+
+ bool isTemplatesATree(SkPdfNativeDoc* doc);
+ SkPdfTree getTemplatesAsTree(SkPdfNativeDoc* doc);
+ bool has_Templates() const;
+
+ bool isIDSAName(SkPdfNativeDoc* doc);
+ SkString getIDSAsName(SkPdfNativeDoc* doc);
+
+ bool isIDSATree(SkPdfNativeDoc* doc);
+ SkPdfTree getIDSAsTree(SkPdfNativeDoc* doc);
+ bool has_IDS() const;
+
+ bool isURLSAName(SkPdfNativeDoc* doc);
+ SkString getURLSAsName(SkPdfNativeDoc* doc);
+
+ bool isURLSATree(SkPdfNativeDoc* doc);
+ SkPdfTree getURLSAsTree(SkPdfNativeDoc* doc);
+ bool has_URLS() const;
+
+ bool isEmbeddedFilesAName(SkPdfNativeDoc* doc);
+ SkString getEmbeddedFilesAsName(SkPdfNativeDoc* doc);
+
+ bool isEmbeddedFilesATree(SkPdfNativeDoc* doc);
+ SkPdfTree getEmbeddedFilesAsTree(SkPdfNativeDoc* doc);
+ bool has_EmbeddedFiles() const;
+};
+
+#endif // SkPdfNameDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNameTreeNodeDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNameTreeNodeDictionary_autogen.cpp
new file mode 100644
index 00000000000..f78158079f3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNameTreeNodeDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfNameTreeNodeDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfNameTreeNodeDictionary::Kids(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Kids", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfNameTreeNodeDictionary::has_Kids() const {
+ return get("Kids", "") != NULL;
+}
+
+SkPdfArray* SkPdfNameTreeNodeDictionary::Names(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Names", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfNameTreeNodeDictionary::has_Names() const {
+ return get("Names", "") != NULL;
+}
+
+SkPdfArray* SkPdfNameTreeNodeDictionary::Limits(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Limits", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfNameTreeNodeDictionary::has_Limits() const {
+ return get("Limits", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNameTreeNodeDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNameTreeNodeDictionary_autogen.h
new file mode 100644
index 00000000000..1f4d3849b39
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNameTreeNodeDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfNameTreeNodeDictionary_DEFINED
+#define SkPdfNameTreeNodeDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a name tree node dictionary
+class SkPdfNameTreeNodeDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* Kids(SkPdfNativeDoc* doc);
+ bool has_Kids() const;
+ SkPdfArray* Names(SkPdfNativeDoc* doc);
+ bool has_Names() const;
+ SkPdfArray* Limits(SkPdfNativeDoc* doc);
+ bool has_Limits() const;
+};
+
+#endif // SkPdfNameTreeNodeDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNamedActionsDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNamedActionsDictionary_autogen.cpp
new file mode 100644
index 00000000000..d7ea748fee4
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNamedActionsDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfNamedActionsDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfNamedActionsDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfNamedActionsDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkString SkPdfNamedActionsDictionary::N(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("N", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfNamedActionsDictionary::has_N() const {
+ return get("N", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNamedActionsDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNamedActionsDictionary_autogen.h
new file mode 100644
index 00000000000..132ce23e9c7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNamedActionsDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfNamedActionsDictionary_DEFINED
+#define SkPdfNamedActionsDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to named actions
+class SkPdfNamedActionsDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkString N(SkPdfNativeDoc* doc);
+ bool has_N() const;
+};
+
+#endif // SkPdfNamedActionsDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNumberTreeNodeDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNumberTreeNodeDictionary_autogen.cpp
new file mode 100644
index 00000000000..d80b9ff1b35
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNumberTreeNodeDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfNumberTreeNodeDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfNumberTreeNodeDictionary::Kids(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Kids", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfNumberTreeNodeDictionary::has_Kids() const {
+ return get("Kids", "") != NULL;
+}
+
+SkPdfArray* SkPdfNumberTreeNodeDictionary::Nums(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Nums", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfNumberTreeNodeDictionary::has_Nums() const {
+ return get("Nums", "") != NULL;
+}
+
+SkPdfArray* SkPdfNumberTreeNodeDictionary::Limits(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Limits", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfNumberTreeNodeDictionary::has_Limits() const {
+ return get("Limits", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNumberTreeNodeDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNumberTreeNodeDictionary_autogen.h
new file mode 100644
index 00000000000..f76cc86ef40
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfNumberTreeNodeDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfNumberTreeNodeDictionary_DEFINED
+#define SkPdfNumberTreeNodeDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a number tree node dictionary
+class SkPdfNumberTreeNodeDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* Kids(SkPdfNativeDoc* doc);
+ bool has_Kids() const;
+ SkPdfArray* Nums(SkPdfNativeDoc* doc);
+ bool has_Nums() const;
+ SkPdfArray* Limits(SkPdfNativeDoc* doc);
+ bool has_Limits() const;
+};
+
+#endif // SkPdfNumberTreeNodeDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfObjectReferenceDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfObjectReferenceDictionary_autogen.cpp
new file mode 100644
index 00000000000..2db98a4b6d3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfObjectReferenceDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfObjectReferenceDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfObjectReferenceDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfObjectReferenceDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfObjectReferenceDictionary::Pg(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Pg", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfObjectReferenceDictionary::has_Pg() const {
+ return get("Pg", "") != NULL;
+}
+
+SkPdfNativeObject* SkPdfObjectReferenceDictionary::Obj(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Obj", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && true) || (doc == NULL && ret != NULL && ret->isReference())) return ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfObjectReferenceDictionary::has_Obj() const {
+ return get("Obj", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfObjectReferenceDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfObjectReferenceDictionary_autogen.h
new file mode 100644
index 00000000000..02b69bf5ecb
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfObjectReferenceDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfObjectReferenceDictionary_DEFINED
+#define SkPdfObjectReferenceDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in an object reference dictionary
+class SkPdfObjectReferenceDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkPdfDictionary* Pg(SkPdfNativeDoc* doc);
+ bool has_Pg() const;
+ SkPdfNativeObject* Obj(SkPdfNativeDoc* doc);
+ bool has_Obj() const;
+};
+
+#endif // SkPdfObjectReferenceDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOpiVersionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOpiVersionDictionary_autogen.cpp
new file mode 100644
index 00000000000..ff08cf87e56
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOpiVersionDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfOpiVersionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfDictionary* SkPdfOpiVersionDictionary::version_number(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("version_number", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfOpiVersionDictionary::has_version_number() const {
+ return get("version_number", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOpiVersionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOpiVersionDictionary_autogen.h
new file mode 100644
index 00000000000..49db23b4655
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOpiVersionDictionary_autogen.h
@@ -0,0 +1,525 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfOpiVersionDictionary_DEFINED
+#define SkPdfOpiVersionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entry in an OPI version dictionary
+class SkPdfOpiVersionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfDictionary* version_number(SkPdfNativeDoc* doc);
+ bool has_version_number() const;
+};
+
+#endif // SkPdfOpiVersionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOutlineDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOutlineDictionary_autogen.cpp
new file mode 100644
index 00000000000..ea7ae473d64
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOutlineDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfOutlineDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfOutlineDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfOutlineDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfOutlineDictionary::First(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("First", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfOutlineDictionary::has_First() const {
+ return get("First", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfOutlineDictionary::Last(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Last", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfOutlineDictionary::has_Last() const {
+ return get("Last", "") != NULL;
+}
+
+int64_t SkPdfOutlineDictionary::Count(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Count", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfOutlineDictionary::has_Count() const {
+ return get("Count", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOutlineDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOutlineDictionary_autogen.h
new file mode 100644
index 00000000000..a25c12b3185
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOutlineDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfOutlineDictionary_DEFINED
+#define SkPdfOutlineDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in the outline dictionary
+class SkPdfOutlineDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfOutlineDictionary* asOutlineDictionary() {return this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkPdfDictionary* First(SkPdfNativeDoc* doc);
+ bool has_First() const;
+ SkPdfDictionary* Last(SkPdfNativeDoc* doc);
+ bool has_Last() const;
+ int64_t Count(SkPdfNativeDoc* doc);
+ bool has_Count() const;
+};
+
+#endif // SkPdfOutlineDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOutlineItemDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOutlineItemDictionary_autogen.cpp
new file mode 100644
index 00000000000..62a87a803a0
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOutlineItemDictionary_autogen.cpp
@@ -0,0 +1,187 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfOutlineItemDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfOutlineItemDictionary::Title(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Title", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfOutlineItemDictionary::has_Title() const {
+ return get("Title", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfOutlineItemDictionary::Parent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Parent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfOutlineItemDictionary::has_Parent() const {
+ return get("Parent", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfOutlineItemDictionary::Prev(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Prev", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfOutlineItemDictionary::has_Prev() const {
+ return get("Prev", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfOutlineItemDictionary::Next(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Next", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfOutlineItemDictionary::has_Next() const {
+ return get("Next", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfOutlineItemDictionary::First(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("First", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfOutlineItemDictionary::has_First() const {
+ return get("First", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfOutlineItemDictionary::Last(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Last", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfOutlineItemDictionary::has_Last() const {
+ return get("Last", "") != NULL;
+}
+
+int64_t SkPdfOutlineItemDictionary::Count(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Count", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfOutlineItemDictionary::has_Count() const {
+ return get("Count", "") != NULL;
+}
+
+bool SkPdfOutlineItemDictionary::isDestAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dest", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfOutlineItemDictionary::getDestAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dest", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfOutlineItemDictionary::isDestAString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dest", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isAnyString();
+}
+
+SkString SkPdfOutlineItemDictionary::getDestAsString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dest", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfOutlineItemDictionary::isDestAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dest", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfOutlineItemDictionary::getDestAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dest", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfOutlineItemDictionary::has_Dest() const {
+ return get("Dest", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfOutlineItemDictionary::A(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("A", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfOutlineItemDictionary::has_A() const {
+ return get("A", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfOutlineItemDictionary::SE(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SE", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfOutlineItemDictionary::has_SE() const {
+ return get("SE", "") != NULL;
+}
+
+SkPdfArray* SkPdfOutlineItemDictionary::C(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("C", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfOutlineItemDictionary::has_C() const {
+ return get("C", "") != NULL;
+}
+
+int64_t SkPdfOutlineItemDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfOutlineItemDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOutlineItemDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOutlineItemDictionary_autogen.h
new file mode 100644
index 00000000000..e2158a79e37
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfOutlineItemDictionary_autogen.h
@@ -0,0 +1,555 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfOutlineItemDictionary_DEFINED
+#define SkPdfOutlineItemDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in an outline item dictionary
+class SkPdfOutlineItemDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Title(SkPdfNativeDoc* doc);
+ bool has_Title() const;
+ SkPdfDictionary* Parent(SkPdfNativeDoc* doc);
+ bool has_Parent() const;
+ SkPdfDictionary* Prev(SkPdfNativeDoc* doc);
+ bool has_Prev() const;
+ SkPdfDictionary* Next(SkPdfNativeDoc* doc);
+ bool has_Next() const;
+ SkPdfDictionary* First(SkPdfNativeDoc* doc);
+ bool has_First() const;
+ SkPdfDictionary* Last(SkPdfNativeDoc* doc);
+ bool has_Last() const;
+ int64_t Count(SkPdfNativeDoc* doc);
+ bool has_Count() const;
+
+ bool isDestAName(SkPdfNativeDoc* doc);
+ SkString getDestAsName(SkPdfNativeDoc* doc);
+
+ bool isDestAString(SkPdfNativeDoc* doc);
+ SkString getDestAsString(SkPdfNativeDoc* doc);
+
+ bool isDestAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getDestAsArray(SkPdfNativeDoc* doc);
+ bool has_Dest() const;
+ SkPdfDictionary* A(SkPdfNativeDoc* doc);
+ bool has_A() const;
+ SkPdfDictionary* SE(SkPdfNativeDoc* doc);
+ bool has_SE() const;
+ SkPdfArray* C(SkPdfNativeDoc* doc);
+ bool has_C() const;
+ int64_t F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+};
+
+#endif // SkPdfOutlineItemDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPDF_XOutputIntentDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPDF_XOutputIntentDictionary_autogen.cpp
new file mode 100644
index 00000000000..af16355afff
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPDF_XOutputIntentDictionary_autogen.cpp
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfPDF_XOutputIntentDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfPDF_XOutputIntentDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfPDF_XOutputIntentDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfPDF_XOutputIntentDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfPDF_XOutputIntentDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkString SkPdfPDF_XOutputIntentDictionary::OutputCondition(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("OutputCondition", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfPDF_XOutputIntentDictionary::has_OutputCondition() const {
+ return get("OutputCondition", "") != NULL;
+}
+
+SkString SkPdfPDF_XOutputIntentDictionary::OutputConditionIdentifier(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("OutputConditionIdentifier", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfPDF_XOutputIntentDictionary::has_OutputConditionIdentifier() const {
+ return get("OutputConditionIdentifier", "") != NULL;
+}
+
+SkString SkPdfPDF_XOutputIntentDictionary::RegistryName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("RegistryName", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfPDF_XOutputIntentDictionary::has_RegistryName() const {
+ return get("RegistryName", "") != NULL;
+}
+
+SkString SkPdfPDF_XOutputIntentDictionary::Info(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Info", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfPDF_XOutputIntentDictionary::has_Info() const {
+ return get("Info", "") != NULL;
+}
+
+SkPdfStream* SkPdfPDF_XOutputIntentDictionary::DestOutputProfile(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DestOutputProfile", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPDF_XOutputIntentDictionary::has_DestOutputProfile() const {
+ return get("DestOutputProfile", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPDF_XOutputIntentDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPDF_XOutputIntentDictionary_autogen.h
new file mode 100644
index 00000000000..52c14163214
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPDF_XOutputIntentDictionary_autogen.h
@@ -0,0 +1,537 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfPDF_XOutputIntentDictionary_DEFINED
+#define SkPdfPDF_XOutputIntentDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a PDF/X output intent dictionary
+class SkPdfPDF_XOutputIntentDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkString OutputCondition(SkPdfNativeDoc* doc);
+ bool has_OutputCondition() const;
+ SkString OutputConditionIdentifier(SkPdfNativeDoc* doc);
+ bool has_OutputConditionIdentifier() const;
+ SkString RegistryName(SkPdfNativeDoc* doc);
+ bool has_RegistryName() const;
+ SkString Info(SkPdfNativeDoc* doc);
+ bool has_Info() const;
+ SkPdfStream* DestOutputProfile(SkPdfNativeDoc* doc);
+ bool has_DestOutputProfile() const;
+};
+
+#endif // SkPdfPDF_XOutputIntentDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPSXobjectDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPSXobjectDictionary_autogen.cpp
new file mode 100644
index 00000000000..8677c3553d5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPSXobjectDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfPSXobjectDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfPSXobjectDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfPSXobjectDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfPSXobjectDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfPSXobjectDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkPdfStream* SkPdfPSXobjectDictionary::Level1(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Level1", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPSXobjectDictionary::has_Level1() const {
+ return get("Level1", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPSXobjectDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPSXobjectDictionary_autogen.h
new file mode 100644
index 00000000000..17fc3debc0a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPSXobjectDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfPSXobjectDictionary_DEFINED
+#define SkPdfPSXobjectDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a PostScript XObject dictionary
+class SkPdfPSXobjectDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkPdfStream* Level1(SkPdfNativeDoc* doc);
+ bool has_Level1() const;
+};
+
+#endif // SkPdfPSXobjectDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageLabelDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageLabelDictionary_autogen.cpp
new file mode 100644
index 00000000000..8c099fe9a7d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageLabelDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfPageLabelDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfPageLabelDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfPageLabelDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfPageLabelDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfPageLabelDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkString SkPdfPageLabelDictionary::P(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("P", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfPageLabelDictionary::has_P() const {
+ return get("P", "") != NULL;
+}
+
+int64_t SkPdfPageLabelDictionary::St(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("St", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfPageLabelDictionary::has_St() const {
+ return get("St", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageLabelDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageLabelDictionary_autogen.h
new file mode 100644
index 00000000000..b29d7aa878f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageLabelDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfPageLabelDictionary_DEFINED
+#define SkPdfPageLabelDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a page label dictionary
+class SkPdfPageLabelDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkString P(SkPdfNativeDoc* doc);
+ bool has_P() const;
+ int64_t St(SkPdfNativeDoc* doc);
+ bool has_St() const;
+};
+
+#endif // SkPdfPageLabelDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageObjectActionsDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageObjectActionsDictionary_autogen.cpp
new file mode 100644
index 00000000000..1c98621a6ad
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageObjectActionsDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfPageObjectActionsDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfDictionary* SkPdfPageObjectActionsDictionary::O(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("O", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPageObjectActionsDictionary::has_O() const {
+ return get("O", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfPageObjectActionsDictionary::C(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("C", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPageObjectActionsDictionary::has_C() const {
+ return get("C", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageObjectActionsDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageObjectActionsDictionary_autogen.h
new file mode 100644
index 00000000000..7239345a795
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageObjectActionsDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfPageObjectActionsDictionary_DEFINED
+#define SkPdfPageObjectActionsDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a page object's additional-actions dictionary
+class SkPdfPageObjectActionsDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfDictionary* O(SkPdfNativeDoc* doc);
+ bool has_O() const;
+ SkPdfDictionary* C(SkPdfNativeDoc* doc);
+ bool has_C() const;
+};
+
+#endif // SkPdfPageObjectActionsDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageObjectDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageObjectDictionary_autogen.cpp
new file mode 100644
index 00000000000..73bf56ec67c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageObjectDictionary_autogen.cpp
@@ -0,0 +1,329 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfPageObjectDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfPageObjectDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfPageObjectDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfPageObjectDictionary::Parent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Parent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPageObjectDictionary::has_Parent() const {
+ return get("Parent", "") != NULL;
+}
+
+SkPdfDate SkPdfPageObjectDictionary::LastModified(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("LastModified", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDate()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->dateValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfDate();
+}
+
+bool SkPdfPageObjectDictionary::has_LastModified() const {
+ return get("LastModified", "") != NULL;
+}
+
+SkPdfResourceDictionary* SkPdfPageObjectDictionary::Resources(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Resources", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary() && ((SkPdfResourceDictionary*)ret)->valid()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfResourceDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfPageObjectDictionary::has_Resources() const {
+ return get("Resources", "") != NULL;
+}
+
+SkRect SkPdfPageObjectDictionary::MediaBox(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("MediaBox", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isRectangle()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->rectangleValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkRect::MakeEmpty();
+}
+
+bool SkPdfPageObjectDictionary::has_MediaBox() const {
+ return get("MediaBox", "") != NULL;
+}
+
+SkRect SkPdfPageObjectDictionary::CropBox(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CropBox", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isRectangle()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->rectangleValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkRect::MakeEmpty();
+}
+
+bool SkPdfPageObjectDictionary::has_CropBox() const {
+ return get("CropBox", "") != NULL;
+}
+
+SkRect SkPdfPageObjectDictionary::BleedBox(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BleedBox", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isRectangle()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->rectangleValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkRect::MakeEmpty();
+}
+
+bool SkPdfPageObjectDictionary::has_BleedBox() const {
+ return get("BleedBox", "") != NULL;
+}
+
+SkRect SkPdfPageObjectDictionary::TrimBox(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TrimBox", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isRectangle()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->rectangleValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkRect::MakeEmpty();
+}
+
+bool SkPdfPageObjectDictionary::has_TrimBox() const {
+ return get("TrimBox", "") != NULL;
+}
+
+SkRect SkPdfPageObjectDictionary::ArtBox(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ArtBox", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isRectangle()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->rectangleValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkRect::MakeEmpty();
+}
+
+bool SkPdfPageObjectDictionary::has_ArtBox() const {
+ return get("ArtBox", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfPageObjectDictionary::BoxColorInfo(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BoxColorInfo", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPageObjectDictionary::has_BoxColorInfo() const {
+ return get("BoxColorInfo", "") != NULL;
+}
+
+bool SkPdfPageObjectDictionary::isContentsAStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfPageObjectDictionary::getContentsAsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPageObjectDictionary::isContentsAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfPageObjectDictionary::getContentsAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPageObjectDictionary::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+int64_t SkPdfPageObjectDictionary::Rotate(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Rotate", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfPageObjectDictionary::has_Rotate() const {
+ return get("Rotate", "") != NULL;
+}
+
+SkPdfTransparencyGroupDictionary* SkPdfPageObjectDictionary::Group(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Group", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary() && ((SkPdfTransparencyGroupDictionary*)ret)->valid()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfTransparencyGroupDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPageObjectDictionary::has_Group() const {
+ return get("Group", "") != NULL;
+}
+
+SkPdfStream* SkPdfPageObjectDictionary::Thumb(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Thumb", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPageObjectDictionary::has_Thumb() const {
+ return get("Thumb", "") != NULL;
+}
+
+SkPdfArray* SkPdfPageObjectDictionary::B(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("B", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPageObjectDictionary::has_B() const {
+ return get("B", "") != NULL;
+}
+
+double SkPdfPageObjectDictionary::Dur(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dur", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfPageObjectDictionary::has_Dur() const {
+ return get("Dur", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfPageObjectDictionary::Trans(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Trans", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPageObjectDictionary::has_Trans() const {
+ return get("Trans", "") != NULL;
+}
+
+SkPdfArray* SkPdfPageObjectDictionary::Annots(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Annots", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPageObjectDictionary::has_Annots() const {
+ return get("Annots", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfPageObjectDictionary::AA(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AA", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPageObjectDictionary::has_AA() const {
+ return get("AA", "") != NULL;
+}
+
+SkPdfStream* SkPdfPageObjectDictionary::Metadata(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Metadata", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPageObjectDictionary::has_Metadata() const {
+ return get("Metadata", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfPageObjectDictionary::PieceInfo(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("PieceInfo", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPageObjectDictionary::has_PieceInfo() const {
+ return get("PieceInfo", "") != NULL;
+}
+
+int64_t SkPdfPageObjectDictionary::StructParents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("StructParents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfPageObjectDictionary::has_StructParents() const {
+ return get("StructParents", "") != NULL;
+}
+
+SkString SkPdfPageObjectDictionary::ID(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ID", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfPageObjectDictionary::has_ID() const {
+ return get("ID", "") != NULL;
+}
+
+double SkPdfPageObjectDictionary::PZ(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("PZ", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfPageObjectDictionary::has_PZ() const {
+ return get("PZ", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfPageObjectDictionary::SeparationInfo(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SeparationInfo", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPageObjectDictionary::has_SeparationInfo() const {
+ return get("SeparationInfo", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageObjectDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageObjectDictionary_autogen.h
new file mode 100644
index 00000000000..f6fed5a3fd2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageObjectDictionary_autogen.h
@@ -0,0 +1,578 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfPageObjectDictionary_DEFINED
+#define SkPdfPageObjectDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a page object
+class SkPdfPageObjectDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkPdfDictionary* Parent(SkPdfNativeDoc* doc);
+ bool has_Parent() const;
+ SkPdfDate LastModified(SkPdfNativeDoc* doc);
+ bool has_LastModified() const;
+ SkPdfResourceDictionary* Resources(SkPdfNativeDoc* doc);
+ bool has_Resources() const;
+ SkRect MediaBox(SkPdfNativeDoc* doc);
+ bool has_MediaBox() const;
+ SkRect CropBox(SkPdfNativeDoc* doc);
+ bool has_CropBox() const;
+ SkRect BleedBox(SkPdfNativeDoc* doc);
+ bool has_BleedBox() const;
+ SkRect TrimBox(SkPdfNativeDoc* doc);
+ bool has_TrimBox() const;
+ SkRect ArtBox(SkPdfNativeDoc* doc);
+ bool has_ArtBox() const;
+ SkPdfDictionary* BoxColorInfo(SkPdfNativeDoc* doc);
+ bool has_BoxColorInfo() const;
+
+ bool isContentsAStream(SkPdfNativeDoc* doc);
+ SkPdfStream* getContentsAsStream(SkPdfNativeDoc* doc);
+
+ bool isContentsAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getContentsAsArray(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+ int64_t Rotate(SkPdfNativeDoc* doc);
+ bool has_Rotate() const;
+ SkPdfTransparencyGroupDictionary* Group(SkPdfNativeDoc* doc);
+ bool has_Group() const;
+ SkPdfStream* Thumb(SkPdfNativeDoc* doc);
+ bool has_Thumb() const;
+ SkPdfArray* B(SkPdfNativeDoc* doc);
+ bool has_B() const;
+ double Dur(SkPdfNativeDoc* doc);
+ bool has_Dur() const;
+ SkPdfDictionary* Trans(SkPdfNativeDoc* doc);
+ bool has_Trans() const;
+ SkPdfArray* Annots(SkPdfNativeDoc* doc);
+ bool has_Annots() const;
+ SkPdfDictionary* AA(SkPdfNativeDoc* doc);
+ bool has_AA() const;
+ SkPdfStream* Metadata(SkPdfNativeDoc* doc);
+ bool has_Metadata() const;
+ SkPdfDictionary* PieceInfo(SkPdfNativeDoc* doc);
+ bool has_PieceInfo() const;
+ int64_t StructParents(SkPdfNativeDoc* doc);
+ bool has_StructParents() const;
+ SkString ID(SkPdfNativeDoc* doc);
+ bool has_ID() const;
+ double PZ(SkPdfNativeDoc* doc);
+ bool has_PZ() const;
+ SkPdfDictionary* SeparationInfo(SkPdfNativeDoc* doc);
+ bool has_SeparationInfo() const;
+};
+
+#endif // SkPdfPageObjectDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPagePieceDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPagePieceDictionary_autogen.cpp
new file mode 100644
index 00000000000..df6ab1bb3a8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPagePieceDictionary_autogen.cpp
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfPagePieceDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+/*
+
+SkPdfDictionary* SkPdfPagePieceDictionary::[any_application_name_or_well_known_data_type](SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("[any_application_name_or_well_known_data_type]", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPagePieceDictionary::has_[any_application_name_or_well_known_data_type]() const {
+ return get("[any_application_name_or_well_known_data_type]", "") != NULL;
+}
+*/
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPagePieceDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPagePieceDictionary_autogen.h
new file mode 100644
index 00000000000..83088b12306
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPagePieceDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfPagePieceDictionary_DEFINED
+#define SkPdfPagePieceDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a page-piece dictionary
+class SkPdfPagePieceDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+/*
+ SkPdfDictionary* [any_application_name_or_well_known_data_type](SkPdfNativeDoc* doc);
+ bool has_[any_application_name_or_well_known_data_type]() const;
+*/
+};
+
+#endif // SkPdfPagePieceDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageTreeNodeDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageTreeNodeDictionary_autogen.cpp
new file mode 100644
index 00000000000..c0f179e189e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageTreeNodeDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfPageTreeNodeDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfPageTreeNodeDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfPageTreeNodeDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfPageTreeNodeDictionary::Parent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Parent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPageTreeNodeDictionary::has_Parent() const {
+ return get("Parent", "") != NULL;
+}
+
+SkPdfArray* SkPdfPageTreeNodeDictionary::Kids(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Kids", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfPageTreeNodeDictionary::has_Kids() const {
+ return get("Kids", "") != NULL;
+}
+
+int64_t SkPdfPageTreeNodeDictionary::Count(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Count", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfPageTreeNodeDictionary::has_Count() const {
+ return get("Count", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageTreeNodeDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageTreeNodeDictionary_autogen.h
new file mode 100644
index 00000000000..3031394ccab
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPageTreeNodeDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfPageTreeNodeDictionary_DEFINED
+#define SkPdfPageTreeNodeDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Required entries in a page tree node
+class SkPdfPageTreeNodeDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkPdfDictionary* Parent(SkPdfNativeDoc* doc);
+ bool has_Parent() const;
+ SkPdfArray* Kids(SkPdfNativeDoc* doc);
+ bool has_Kids() const;
+ int64_t Count(SkPdfNativeDoc* doc);
+ bool has_Count() const;
+};
+
+#endif // SkPdfPageTreeNodeDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPopUpAnnotationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPopUpAnnotationDictionary_autogen.cpp
new file mode 100644
index 00000000000..1c7e16b1811
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPopUpAnnotationDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfPopUpAnnotationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfPopUpAnnotationDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfPopUpAnnotationDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfPopUpAnnotationDictionary::Contents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfPopUpAnnotationDictionary::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfPopUpAnnotationDictionary::Parent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Parent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPopUpAnnotationDictionary::has_Parent() const {
+ return get("Parent", "") != NULL;
+}
+
+bool SkPdfPopUpAnnotationDictionary::Open(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Open", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfPopUpAnnotationDictionary::has_Open() const {
+ return get("Open", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPopUpAnnotationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPopUpAnnotationDictionary_autogen.h
new file mode 100644
index 00000000000..49023221b89
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPopUpAnnotationDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfPopUpAnnotationDictionary_DEFINED
+#define SkPdfPopUpAnnotationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a pop-up annotation
+class SkPdfPopUpAnnotationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString Contents(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+ SkPdfDictionary* Parent(SkPdfNativeDoc* doc);
+ bool has_Parent() const;
+ bool Open(SkPdfNativeDoc* doc);
+ bool has_Open() const;
+};
+
+#endif // SkPdfPopUpAnnotationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPrinterMarkAnnotationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPrinterMarkAnnotationDictionary_autogen.cpp
new file mode 100644
index 00000000000..fa10c43758b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPrinterMarkAnnotationDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfPrinterMarkAnnotationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfPrinterMarkAnnotationDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfPrinterMarkAnnotationDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfPrinterMarkAnnotationDictionary::MN(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("MN", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfPrinterMarkAnnotationDictionary::has_MN() const {
+ return get("MN", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPrinterMarkAnnotationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPrinterMarkAnnotationDictionary_autogen.h
new file mode 100644
index 00000000000..08ad9424426
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPrinterMarkAnnotationDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfPrinterMarkAnnotationDictionary_DEFINED
+#define SkPdfPrinterMarkAnnotationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a printer's mark annotation
+class SkPdfPrinterMarkAnnotationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString MN(SkPdfNativeDoc* doc);
+ bool has_MN() const;
+};
+
+#endif // SkPdfPrinterMarkAnnotationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPrinterMarkFormDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPrinterMarkFormDictionary_autogen.cpp
new file mode 100644
index 00000000000..7d8937e2ed8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPrinterMarkFormDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfPrinterMarkFormDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfPrinterMarkFormDictionary::MarkStyle(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("MarkStyle", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfPrinterMarkFormDictionary::has_MarkStyle() const {
+ return get("MarkStyle", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfPrinterMarkFormDictionary::Colorants(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Colorants", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfPrinterMarkFormDictionary::has_Colorants() const {
+ return get("Colorants", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPrinterMarkFormDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPrinterMarkFormDictionary_autogen.h
new file mode 100644
index 00000000000..15b46dfc7a5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfPrinterMarkFormDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfPrinterMarkFormDictionary_DEFINED
+#define SkPdfPrinterMarkFormDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a printer's mark form dictionary
+class SkPdfPrinterMarkFormDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString MarkStyle(SkPdfNativeDoc* doc);
+ bool has_MarkStyle() const;
+ SkPdfDictionary* Colorants(SkPdfNativeDoc* doc);
+ bool has_Colorants() const;
+};
+
+#endif // SkPdfPrinterMarkFormDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRadioButtonFieldDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRadioButtonFieldDictionary_autogen.cpp
new file mode 100644
index 00000000000..1c74962a1f0
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRadioButtonFieldDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfRadioButtonFieldDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfRadioButtonFieldDictionary::Opt(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Opt", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfRadioButtonFieldDictionary::has_Opt() const {
+ return get("Opt", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRadioButtonFieldDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRadioButtonFieldDictionary_autogen.h
new file mode 100644
index 00000000000..e45ffaba861
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRadioButtonFieldDictionary_autogen.h
@@ -0,0 +1,525 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfRadioButtonFieldDictionary_DEFINED
+#define SkPdfRadioButtonFieldDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entry specific to a radio button field
+class SkPdfRadioButtonFieldDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* Opt(SkPdfNativeDoc* doc);
+ bool has_Opt() const;
+};
+
+#endif // SkPdfRadioButtonFieldDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfReferenceDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfReferenceDictionary_autogen.cpp
new file mode 100644
index 00000000000..b242997cd86
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfReferenceDictionary_autogen.cpp
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfReferenceDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfFileSpec SkPdfReferenceDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->fileSpecValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkPdfFileSpec();
+}
+
+bool SkPdfReferenceDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
+
+bool SkPdfReferenceDictionary::isPageAInteger(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Page", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isInteger();
+}
+
+int64_t SkPdfReferenceDictionary::getPageAsInteger(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Page", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfReferenceDictionary::isPageAString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Page", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isAnyString();
+}
+
+SkString SkPdfReferenceDictionary::getPageAsString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Page", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfReferenceDictionary::has_Page() const {
+ return get("Page", "") != NULL;
+}
+
+SkPdfArray* SkPdfReferenceDictionary::ID(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ID", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfReferenceDictionary::has_ID() const {
+ return get("ID", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfReferenceDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfReferenceDictionary_autogen.h
new file mode 100644
index 00000000000..d2db65ff277
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfReferenceDictionary_autogen.h
@@ -0,0 +1,534 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfReferenceDictionary_DEFINED
+#define SkPdfReferenceDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a reference dictionary
+class SkPdfReferenceDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfReferenceDictionary* asReferenceDictionary() {return this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfFileSpec F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+
+ bool isPageAInteger(SkPdfNativeDoc* doc);
+ int64_t getPageAsInteger(SkPdfNativeDoc* doc);
+
+ bool isPageAString(SkPdfNativeDoc* doc);
+ SkString getPageAsString(SkPdfNativeDoc* doc);
+ bool has_Page() const;
+ SkPdfArray* ID(SkPdfNativeDoc* doc);
+ bool has_ID() const;
+};
+
+#endif // SkPdfReferenceDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRemoteGoToActionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRemoteGoToActionDictionary_autogen.cpp
new file mode 100644
index 00000000000..e161bf6f0c0
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRemoteGoToActionDictionary_autogen.cpp
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfRemoteGoToActionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfRemoteGoToActionDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfRemoteGoToActionDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkPdfFileSpec SkPdfRemoteGoToActionDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->fileSpecValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkPdfFileSpec();
+}
+
+bool SkPdfRemoteGoToActionDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
+
+bool SkPdfRemoteGoToActionDictionary::isDAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfRemoteGoToActionDictionary::getDAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfRemoteGoToActionDictionary::isDAString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isAnyString();
+}
+
+SkString SkPdfRemoteGoToActionDictionary::getDAsString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfRemoteGoToActionDictionary::isDAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfRemoteGoToActionDictionary::getDAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfRemoteGoToActionDictionary::has_D() const {
+ return get("D", "") != NULL;
+}
+
+bool SkPdfRemoteGoToActionDictionary::NewWindow(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("NewWindow", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfRemoteGoToActionDictionary::has_NewWindow() const {
+ return get("NewWindow", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRemoteGoToActionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRemoteGoToActionDictionary_autogen.h
new file mode 100644
index 00000000000..5a97f241e33
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRemoteGoToActionDictionary_autogen.h
@@ -0,0 +1,539 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfRemoteGoToActionDictionary_DEFINED
+#define SkPdfRemoteGoToActionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a remote go-to action
+class SkPdfRemoteGoToActionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkPdfFileSpec F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+
+ bool isDAName(SkPdfNativeDoc* doc);
+ SkString getDAsName(SkPdfNativeDoc* doc);
+
+ bool isDAString(SkPdfNativeDoc* doc);
+ SkString getDAsString(SkPdfNativeDoc* doc);
+
+ bool isDAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getDAsArray(SkPdfNativeDoc* doc);
+ bool has_D() const;
+ bool NewWindow(SkPdfNativeDoc* doc);
+ bool has_NewWindow() const;
+};
+
+#endif // SkPdfRemoteGoToActionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfResetFormActionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfResetFormActionDictionary_autogen.cpp
new file mode 100644
index 00000000000..b61f88fa1a1
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfResetFormActionDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfResetFormActionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfResetFormActionDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfResetFormActionDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkPdfArray* SkPdfResetFormActionDictionary::Fields(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Fields", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfResetFormActionDictionary::has_Fields() const {
+ return get("Fields", "") != NULL;
+}
+
+int64_t SkPdfResetFormActionDictionary::Flags(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Flags", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfResetFormActionDictionary::has_Flags() const {
+ return get("Flags", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfResetFormActionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfResetFormActionDictionary_autogen.h
new file mode 100644
index 00000000000..7e6dd3a37ae
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfResetFormActionDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfResetFormActionDictionary_DEFINED
+#define SkPdfResetFormActionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a reset-form action
+class SkPdfResetFormActionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkPdfArray* Fields(SkPdfNativeDoc* doc);
+ bool has_Fields() const;
+ int64_t Flags(SkPdfNativeDoc* doc);
+ bool has_Flags() const;
+};
+
+#endif // SkPdfResetFormActionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfResourceDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfResourceDictionary_autogen.cpp
new file mode 100644
index 00000000000..7a054308be9
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfResourceDictionary_autogen.cpp
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfResourceDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfDictionary* SkPdfResourceDictionary::ExtGState(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ExtGState", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfResourceDictionary::has_ExtGState() const {
+ return get("ExtGState", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfResourceDictionary::ColorSpace(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ColorSpace", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfResourceDictionary::has_ColorSpace() const {
+ return get("ColorSpace", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfResourceDictionary::Pattern(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Pattern", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfResourceDictionary::has_Pattern() const {
+ return get("Pattern", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfResourceDictionary::Shading(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Shading", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfResourceDictionary::has_Shading() const {
+ return get("Shading", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfResourceDictionary::XObject(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("XObject", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfResourceDictionary::has_XObject() const {
+ return get("XObject", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfResourceDictionary::Font(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Font", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfResourceDictionary::has_Font() const {
+ return get("Font", "") != NULL;
+}
+
+SkPdfArray* SkPdfResourceDictionary::ProcSet(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ProcSet", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfResourceDictionary::has_ProcSet() const {
+ return get("ProcSet", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfResourceDictionary::Properties(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Properties", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfResourceDictionary::has_Properties() const {
+ return get("Properties", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfResourceDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfResourceDictionary_autogen.h
new file mode 100644
index 00000000000..1616a8bc0e9
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfResourceDictionary_autogen.h
@@ -0,0 +1,539 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfResourceDictionary_DEFINED
+#define SkPdfResourceDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a resource dictionary
+class SkPdfResourceDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfResourceDictionary* asResourceDictionary() {return this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfDictionary* ExtGState(SkPdfNativeDoc* doc);
+ bool has_ExtGState() const;
+ SkPdfDictionary* ColorSpace(SkPdfNativeDoc* doc);
+ bool has_ColorSpace() const;
+ SkPdfDictionary* Pattern(SkPdfNativeDoc* doc);
+ bool has_Pattern() const;
+ SkPdfDictionary* Shading(SkPdfNativeDoc* doc);
+ bool has_Shading() const;
+ SkPdfDictionary* XObject(SkPdfNativeDoc* doc);
+ bool has_XObject() const;
+ SkPdfDictionary* Font(SkPdfNativeDoc* doc);
+ bool has_Font() const;
+ SkPdfArray* ProcSet(SkPdfNativeDoc* doc);
+ bool has_ProcSet() const;
+ SkPdfDictionary* Properties(SkPdfNativeDoc* doc);
+ bool has_Properties() const;
+};
+
+#endif // SkPdfResourceDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRubberStampAnnotationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRubberStampAnnotationDictionary_autogen.cpp
new file mode 100644
index 00000000000..23177125958
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRubberStampAnnotationDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfRubberStampAnnotationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfRubberStampAnnotationDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfRubberStampAnnotationDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfRubberStampAnnotationDictionary::Contents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfRubberStampAnnotationDictionary::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+SkString SkPdfRubberStampAnnotationDictionary::Name(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Name", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfRubberStampAnnotationDictionary::has_Name() const {
+ return get("Name", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRubberStampAnnotationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRubberStampAnnotationDictionary_autogen.h
new file mode 100644
index 00000000000..021dbbf4463
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfRubberStampAnnotationDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfRubberStampAnnotationDictionary_DEFINED
+#define SkPdfRubberStampAnnotationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a rubber stamp annotation
+class SkPdfRubberStampAnnotationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString Contents(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+ SkString Name(SkPdfNativeDoc* doc);
+ bool has_Name() const;
+};
+
+#endif // SkPdfRubberStampAnnotationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSeparationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSeparationDictionary_autogen.cpp
new file mode 100644
index 00000000000..355f69e0316
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSeparationDictionary_autogen.cpp
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfSeparationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfSeparationDictionary::Pages(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Pages", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfSeparationDictionary::has_Pages() const {
+ return get("Pages", "") != NULL;
+}
+
+bool SkPdfSeparationDictionary::isDeviceColorantAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DeviceColorant", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfSeparationDictionary::getDeviceColorantAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DeviceColorant", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfSeparationDictionary::isDeviceColorantAString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DeviceColorant", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isAnyString();
+}
+
+SkString SkPdfSeparationDictionary::getDeviceColorantAsString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DeviceColorant", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfSeparationDictionary::has_DeviceColorant() const {
+ return get("DeviceColorant", "") != NULL;
+}
+
+SkPdfArray* SkPdfSeparationDictionary::ColorSpace(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ColorSpace", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfSeparationDictionary::has_ColorSpace() const {
+ return get("ColorSpace", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSeparationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSeparationDictionary_autogen.h
new file mode 100644
index 00000000000..d1293b365ae
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSeparationDictionary_autogen.h
@@ -0,0 +1,534 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfSeparationDictionary_DEFINED
+#define SkPdfSeparationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a separation dictionary
+class SkPdfSeparationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfSeparationDictionary* asSeparationDictionary() {return this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* Pages(SkPdfNativeDoc* doc);
+ bool has_Pages() const;
+
+ bool isDeviceColorantAName(SkPdfNativeDoc* doc);
+ SkString getDeviceColorantAsName(SkPdfNativeDoc* doc);
+
+ bool isDeviceColorantAString(SkPdfNativeDoc* doc);
+ SkString getDeviceColorantAsString(SkPdfNativeDoc* doc);
+ bool has_DeviceColorant() const;
+ SkPdfArray* ColorSpace(SkPdfNativeDoc* doc);
+ bool has_ColorSpace() const;
+};
+
+#endif // SkPdfSeparationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfShadingDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfShadingDictionary_autogen.cpp
new file mode 100644
index 00000000000..0cb4422466a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfShadingDictionary_autogen.cpp
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfShadingDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfShadingDictionary::ShadingType(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ShadingType", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfShadingDictionary::has_ShadingType() const {
+ return get("ShadingType", "") != NULL;
+}
+
+bool SkPdfShadingDictionary::isColorSpaceAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ColorSpace", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfShadingDictionary::getColorSpaceAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ColorSpace", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfShadingDictionary::isColorSpaceAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ColorSpace", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfShadingDictionary::getColorSpaceAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ColorSpace", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfShadingDictionary::has_ColorSpace() const {
+ return get("ColorSpace", "") != NULL;
+}
+
+SkPdfArray* SkPdfShadingDictionary::Background(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Background", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfShadingDictionary::has_Background() const {
+ return get("Background", "") != NULL;
+}
+
+SkRect SkPdfShadingDictionary::BBox(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BBox", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isRectangle()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->rectangleValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkRect::MakeEmpty();
+}
+
+bool SkPdfShadingDictionary::has_BBox() const {
+ return get("BBox", "") != NULL;
+}
+
+bool SkPdfShadingDictionary::AntiAlias(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AntiAlias", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfShadingDictionary::has_AntiAlias() const {
+ return get("AntiAlias", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfShadingDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfShadingDictionary_autogen.h
new file mode 100644
index 00000000000..22c92df5e2a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfShadingDictionary_autogen.h
@@ -0,0 +1,520 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfShadingDictionary_DEFINED
+#define SkPdfShadingDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries common to all shading dictionaries
+class SkPdfShadingDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfShadingDictionary* asShadingDictionary() {return this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t ShadingType(SkPdfNativeDoc* doc);
+ bool has_ShadingType() const;
+
+ bool isColorSpaceAName(SkPdfNativeDoc* doc);
+ SkString getColorSpaceAsName(SkPdfNativeDoc* doc);
+
+ bool isColorSpaceAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getColorSpaceAsArray(SkPdfNativeDoc* doc);
+ bool has_ColorSpace() const;
+ SkPdfArray* Background(SkPdfNativeDoc* doc);
+ bool has_Background() const;
+ SkRect BBox(SkPdfNativeDoc* doc);
+ bool has_BBox() const;
+ bool AntiAlias(SkPdfNativeDoc* doc);
+ bool has_AntiAlias() const;
+};
+
+#endif // SkPdfShadingDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSignatureDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSignatureDictionary_autogen.cpp
new file mode 100644
index 00000000000..faf4886db83
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSignatureDictionary_autogen.cpp
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfSignatureDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfSignatureDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfSignatureDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfSignatureDictionary::Filter(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Filter", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfSignatureDictionary::has_Filter() const {
+ return get("Filter", "") != NULL;
+}
+
+SkString SkPdfSignatureDictionary::SubFilter(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SubFilter", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfSignatureDictionary::has_SubFilter() const {
+ return get("SubFilter", "") != NULL;
+}
+
+SkPdfArray* SkPdfSignatureDictionary::ByteRange(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ByteRange", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfSignatureDictionary::has_ByteRange() const {
+ return get("ByteRange", "") != NULL;
+}
+
+SkString SkPdfSignatureDictionary::Contents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfSignatureDictionary::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+SkString SkPdfSignatureDictionary::Name(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Name", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfSignatureDictionary::has_Name() const {
+ return get("Name", "") != NULL;
+}
+
+SkPdfDate SkPdfSignatureDictionary::M(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("M", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDate()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->dateValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfDate();
+}
+
+bool SkPdfSignatureDictionary::has_M() const {
+ return get("M", "") != NULL;
+}
+
+SkString SkPdfSignatureDictionary::Location(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Location", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfSignatureDictionary::has_Location() const {
+ return get("Location", "") != NULL;
+}
+
+SkString SkPdfSignatureDictionary::Reason(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Reason", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfSignatureDictionary::has_Reason() const {
+ return get("Reason", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSignatureDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSignatureDictionary_autogen.h
new file mode 100644
index 00000000000..38634f90115
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSignatureDictionary_autogen.h
@@ -0,0 +1,541 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfSignatureDictionary_DEFINED
+#define SkPdfSignatureDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a signature dictionary
+class SkPdfSignatureDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfSignatureDictionary* asSignatureDictionary() {return this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString Filter(SkPdfNativeDoc* doc);
+ bool has_Filter() const;
+ SkString SubFilter(SkPdfNativeDoc* doc);
+ bool has_SubFilter() const;
+ SkPdfArray* ByteRange(SkPdfNativeDoc* doc);
+ bool has_ByteRange() const;
+ SkString Contents(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+ SkString Name(SkPdfNativeDoc* doc);
+ bool has_Name() const;
+ SkPdfDate M(SkPdfNativeDoc* doc);
+ bool has_M() const;
+ SkString Location(SkPdfNativeDoc* doc);
+ bool has_Location() const;
+ SkString Reason(SkPdfNativeDoc* doc);
+ bool has_Reason() const;
+};
+
+#endif // SkPdfSignatureDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoftMaskDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoftMaskDictionary_autogen.cpp
new file mode 100644
index 00000000000..26ef583ee08
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoftMaskDictionary_autogen.cpp
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfSoftMaskDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfSoftMaskDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfSoftMaskDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfSoftMaskDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfSoftMaskDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkPdfStream* SkPdfSoftMaskDictionary::G(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("G", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfSoftMaskDictionary::has_G() const {
+ return get("G", "") != NULL;
+}
+
+SkPdfArray* SkPdfSoftMaskDictionary::BC(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BC", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfSoftMaskDictionary::has_BC() const {
+ return get("BC", "") != NULL;
+}
+
+bool SkPdfSoftMaskDictionary::isTRAFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TR", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isFunction();
+}
+
+SkPdfFunction SkPdfSoftMaskDictionary::getTRAsFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TR", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFunction();
+}
+
+bool SkPdfSoftMaskDictionary::isTRAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TR", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfSoftMaskDictionary::getTRAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TR", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfSoftMaskDictionary::has_TR() const {
+ return get("TR", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoftMaskDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoftMaskDictionary_autogen.h
new file mode 100644
index 00000000000..e7d69710842
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoftMaskDictionary_autogen.h
@@ -0,0 +1,538 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfSoftMaskDictionary_DEFINED
+#define SkPdfSoftMaskDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a soft-mask dictionary
+class SkPdfSoftMaskDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkPdfStream* G(SkPdfNativeDoc* doc);
+ bool has_G() const;
+ SkPdfArray* BC(SkPdfNativeDoc* doc);
+ bool has_BC() const;
+
+ bool isTRAFunction(SkPdfNativeDoc* doc);
+ SkPdfFunction getTRAsFunction(SkPdfNativeDoc* doc);
+
+ bool isTRAName(SkPdfNativeDoc* doc);
+ SkString getTRAsName(SkPdfNativeDoc* doc);
+ bool has_TR() const;
+};
+
+#endif // SkPdfSoftMaskDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoftMaskImageDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoftMaskImageDictionary_autogen.cpp
new file mode 100644
index 00000000000..6d8601b7cd3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoftMaskImageDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfSoftMaskImageDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfSoftMaskImageDictionary::Matte(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Matte", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfSoftMaskImageDictionary::has_Matte() const {
+ return get("Matte", "") != NULL;
+}
+
+SkString SkPdfSoftMaskImageDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfSoftMaskImageDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfSoftMaskImageDictionary::ColorSpace(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ColorSpace", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfSoftMaskImageDictionary::has_ColorSpace() const {
+ return get("ColorSpace", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoftMaskImageDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoftMaskImageDictionary_autogen.h
new file mode 100644
index 00000000000..61a69f9c49f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoftMaskImageDictionary_autogen.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfSoftMaskImageDictionary_DEFINED
+#define SkPdfSoftMaskImageDictionary_DEFINED
+
+#include "SkPdfImageDictionary_autogen.h"
+
+// Additional entry in a soft-mask image dictionary
+class SkPdfSoftMaskImageDictionary : public SkPdfImageDictionary {
+public:
+public:
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return this;}
+
+private:
+public:
+ bool valid() const {return true;}
+ SkPdfArray* Matte(SkPdfNativeDoc* doc);
+ bool has_Matte() const;
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString ColorSpace(SkPdfNativeDoc* doc);
+ bool has_ColorSpace() const;
+};
+
+#endif // SkPdfSoftMaskImageDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundActionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundActionDictionary_autogen.cpp
new file mode 100644
index 00000000000..463e63bdef5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundActionDictionary_autogen.cpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfSoundActionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfSoundActionDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfSoundActionDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkPdfStream* SkPdfSoundActionDictionary::Sound(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Sound", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfSoundActionDictionary::has_Sound() const {
+ return get("Sound", "") != NULL;
+}
+
+double SkPdfSoundActionDictionary::Volume(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Volume", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfSoundActionDictionary::has_Volume() const {
+ return get("Volume", "") != NULL;
+}
+
+bool SkPdfSoundActionDictionary::Synchronous(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Synchronous", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfSoundActionDictionary::has_Synchronous() const {
+ return get("Synchronous", "") != NULL;
+}
+
+bool SkPdfSoundActionDictionary::Repeat(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Repeat", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfSoundActionDictionary::has_Repeat() const {
+ return get("Repeat", "") != NULL;
+}
+
+bool SkPdfSoundActionDictionary::Mix(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Mix", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfSoundActionDictionary::has_Mix() const {
+ return get("Mix", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundActionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundActionDictionary_autogen.h
new file mode 100644
index 00000000000..f25385c9a3f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundActionDictionary_autogen.h
@@ -0,0 +1,535 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfSoundActionDictionary_DEFINED
+#define SkPdfSoundActionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a sound action
+class SkPdfSoundActionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkPdfStream* Sound(SkPdfNativeDoc* doc);
+ bool has_Sound() const;
+ double Volume(SkPdfNativeDoc* doc);
+ bool has_Volume() const;
+ bool Synchronous(SkPdfNativeDoc* doc);
+ bool has_Synchronous() const;
+ bool Repeat(SkPdfNativeDoc* doc);
+ bool has_Repeat() const;
+ bool Mix(SkPdfNativeDoc* doc);
+ bool has_Mix() const;
+};
+
+#endif // SkPdfSoundActionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundAnnotationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundAnnotationDictionary_autogen.cpp
new file mode 100644
index 00000000000..319b698bb6b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundAnnotationDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfSoundAnnotationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfSoundAnnotationDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfSoundAnnotationDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkPdfStream* SkPdfSoundAnnotationDictionary::Sound(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Sound", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfSoundAnnotationDictionary::has_Sound() const {
+ return get("Sound", "") != NULL;
+}
+
+SkString SkPdfSoundAnnotationDictionary::Contents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfSoundAnnotationDictionary::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+SkString SkPdfSoundAnnotationDictionary::Name(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Name", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfSoundAnnotationDictionary::has_Name() const {
+ return get("Name", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundAnnotationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundAnnotationDictionary_autogen.h
new file mode 100644
index 00000000000..5df82f70407
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundAnnotationDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfSoundAnnotationDictionary_DEFINED
+#define SkPdfSoundAnnotationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a sound annotation
+class SkPdfSoundAnnotationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkPdfStream* Sound(SkPdfNativeDoc* doc);
+ bool has_Sound() const;
+ SkString Contents(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+ SkString Name(SkPdfNativeDoc* doc);
+ bool has_Name() const;
+};
+
+#endif // SkPdfSoundAnnotationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundObjectDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundObjectDictionary_autogen.cpp
new file mode 100644
index 00000000000..0bf17a7c17f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundObjectDictionary_autogen.cpp
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfSoundObjectDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfSoundObjectDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfSoundObjectDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+double SkPdfSoundObjectDictionary::R(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("R", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfSoundObjectDictionary::has_R() const {
+ return get("R", "") != NULL;
+}
+
+int64_t SkPdfSoundObjectDictionary::C(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("C", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfSoundObjectDictionary::has_C() const {
+ return get("C", "") != NULL;
+}
+
+int64_t SkPdfSoundObjectDictionary::B(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("B", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfSoundObjectDictionary::has_B() const {
+ return get("B", "") != NULL;
+}
+
+SkString SkPdfSoundObjectDictionary::E(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("E", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfSoundObjectDictionary::has_E() const {
+ return get("E", "") != NULL;
+}
+
+SkString SkPdfSoundObjectDictionary::CO(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CO", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfSoundObjectDictionary::has_CO() const {
+ return get("CO", "") != NULL;
+}
+
+SkPdfNativeObject* SkPdfSoundObjectDictionary::CP(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CP", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && true) || (doc == NULL && ret != NULL && ret->isReference())) return ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfSoundObjectDictionary::has_CP() const {
+ return get("CP", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundObjectDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundObjectDictionary_autogen.h
new file mode 100644
index 00000000000..4cac479b9ac
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSoundObjectDictionary_autogen.h
@@ -0,0 +1,537 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfSoundObjectDictionary_DEFINED
+#define SkPdfSoundObjectDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a sound object
+class SkPdfSoundObjectDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ double R(SkPdfNativeDoc* doc);
+ bool has_R() const;
+ int64_t C(SkPdfNativeDoc* doc);
+ bool has_C() const;
+ int64_t B(SkPdfNativeDoc* doc);
+ bool has_B() const;
+ SkString E(SkPdfNativeDoc* doc);
+ bool has_E() const;
+ SkString CO(SkPdfNativeDoc* doc);
+ bool has_CO() const;
+ SkPdfNativeObject* CP(SkPdfNativeDoc* doc);
+ bool has_CP() const;
+};
+
+#endif // SkPdfSoundObjectDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSourceInformationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSourceInformationDictionary_autogen.cpp
new file mode 100644
index 00000000000..e4e5787111d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSourceInformationDictionary_autogen.cpp
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfSourceInformationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+bool SkPdfSourceInformationDictionary::isAUAString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AU", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isAnyString();
+}
+
+SkString SkPdfSourceInformationDictionary::getAUAsString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AU", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfSourceInformationDictionary::isAUADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AU", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfSourceInformationDictionary::getAUAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AU", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfSourceInformationDictionary::has_AU() const {
+ return get("AU", "") != NULL;
+}
+
+SkPdfDate SkPdfSourceInformationDictionary::TS(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDate()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->dateValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfDate();
+}
+
+bool SkPdfSourceInformationDictionary::has_TS() const {
+ return get("TS", "") != NULL;
+}
+
+SkPdfDate SkPdfSourceInformationDictionary::E(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("E", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDate()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->dateValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfDate();
+}
+
+bool SkPdfSourceInformationDictionary::has_E() const {
+ return get("E", "") != NULL;
+}
+
+int64_t SkPdfSourceInformationDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfSourceInformationDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfSourceInformationDictionary::C(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("C", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfSourceInformationDictionary::has_C() const {
+ return get("C", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSourceInformationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSourceInformationDictionary_autogen.h
new file mode 100644
index 00000000000..d827dc14f66
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSourceInformationDictionary_autogen.h
@@ -0,0 +1,538 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfSourceInformationDictionary_DEFINED
+#define SkPdfSourceInformationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a source information dictionary
+class SkPdfSourceInformationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+
+ bool isAUAString(SkPdfNativeDoc* doc);
+ SkString getAUAsString(SkPdfNativeDoc* doc);
+
+ bool isAUADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getAUAsDictionary(SkPdfNativeDoc* doc);
+ bool has_AU() const;
+ SkPdfDate TS(SkPdfNativeDoc* doc);
+ bool has_TS() const;
+ SkPdfDate E(SkPdfNativeDoc* doc);
+ bool has_E() const;
+ int64_t S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkPdfDictionary* C(SkPdfNativeDoc* doc);
+ bool has_C() const;
+};
+
+#endif // SkPdfSourceInformationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSquareOrCircleAnnotation_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSquareOrCircleAnnotation_autogen.cpp
new file mode 100644
index 00000000000..7e0ed50fa0d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSquareOrCircleAnnotation_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfSquareOrCircleAnnotation_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfSquareOrCircleAnnotation::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfSquareOrCircleAnnotation::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfSquareOrCircleAnnotation::Contents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfSquareOrCircleAnnotation::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfSquareOrCircleAnnotation::BS(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfSquareOrCircleAnnotation::has_BS() const {
+ return get("BS", "") != NULL;
+}
+
+SkPdfArray* SkPdfSquareOrCircleAnnotation::IC(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("IC", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfSquareOrCircleAnnotation::has_IC() const {
+ return get("IC", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSquareOrCircleAnnotation_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSquareOrCircleAnnotation_autogen.h
new file mode 100644
index 00000000000..1bb9ded785d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSquareOrCircleAnnotation_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfSquareOrCircleAnnotation_DEFINED
+#define SkPdfSquareOrCircleAnnotation_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a square or circle annotation
+class SkPdfSquareOrCircleAnnotation : public SkPdfDictionary {
+public:
+public:
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString Contents(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+ SkPdfDictionary* BS(SkPdfNativeDoc* doc);
+ bool has_BS() const;
+ SkPdfArray* IC(SkPdfNativeDoc* doc);
+ bool has_IC() const;
+};
+
+#endif // SkPdfSquareOrCircleAnnotation_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStandardSecurityHandlerDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStandardSecurityHandlerDictionary_autogen.cpp
new file mode 100644
index 00000000000..81d6e69186e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStandardSecurityHandlerDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfStandardSecurityHandlerDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+double SkPdfStandardSecurityHandlerDictionary::R(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("R", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfStandardSecurityHandlerDictionary::has_R() const {
+ return get("R", "") != NULL;
+}
+
+SkString SkPdfStandardSecurityHandlerDictionary::O(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("O", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfStandardSecurityHandlerDictionary::has_O() const {
+ return get("O", "") != NULL;
+}
+
+SkString SkPdfStandardSecurityHandlerDictionary::U(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("U", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfStandardSecurityHandlerDictionary::has_U() const {
+ return get("U", "") != NULL;
+}
+
+int64_t SkPdfStandardSecurityHandlerDictionary::P(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("P", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfStandardSecurityHandlerDictionary::has_P() const {
+ return get("P", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStandardSecurityHandlerDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStandardSecurityHandlerDictionary_autogen.h
new file mode 100644
index 00000000000..64705f9c294
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStandardSecurityHandlerDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfStandardSecurityHandlerDictionary_DEFINED
+#define SkPdfStandardSecurityHandlerDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional encryption dictionary entries for the standard security handler
+class SkPdfStandardSecurityHandlerDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ double R(SkPdfNativeDoc* doc);
+ bool has_R() const;
+ SkString O(SkPdfNativeDoc* doc);
+ bool has_O() const;
+ SkString U(SkPdfNativeDoc* doc);
+ bool has_U() const;
+ int64_t P(SkPdfNativeDoc* doc);
+ bool has_P() const;
+};
+
+#endif // SkPdfStandardSecurityHandlerDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStandardStructureDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStandardStructureDictionary_autogen.cpp
new file mode 100644
index 00000000000..82f12a1f9ef
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStandardStructureDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfStandardStructureDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfStandardStructureDictionary::Placement(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Placement", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfStandardStructureDictionary::has_Placement() const {
+ return get("Placement", "") != NULL;
+}
+
+SkString SkPdfStandardStructureDictionary::WritingMode(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("WritingMode", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfStandardStructureDictionary::has_WritingMode() const {
+ return get("WritingMode", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStandardStructureDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStandardStructureDictionary_autogen.h
new file mode 100644
index 00000000000..3cfc0fd3bf8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStandardStructureDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfStandardStructureDictionary_DEFINED
+#define SkPdfStandardStructureDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Standard layout attributes common to all standard structure types
+class SkPdfStandardStructureDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Placement(SkPdfNativeDoc* doc);
+ bool has_Placement() const;
+ SkString WritingMode(SkPdfNativeDoc* doc);
+ bool has_WritingMode() const;
+};
+
+#endif // SkPdfStandardStructureDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStreamCommonDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStreamCommonDictionary_autogen.cpp
new file mode 100644
index 00000000000..26cd71bf89d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStreamCommonDictionary_autogen.cpp
@@ -0,0 +1,161 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfStreamCommonDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfStreamCommonDictionary::Length(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Length", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfStreamCommonDictionary::has_Length() const {
+ return get("Length", "") != NULL;
+}
+
+bool SkPdfStreamCommonDictionary::isFilterAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Filter", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfStreamCommonDictionary::getFilterAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Filter", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfStreamCommonDictionary::isFilterAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Filter", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfStreamCommonDictionary::getFilterAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Filter", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfStreamCommonDictionary::has_Filter() const {
+ return get("Filter", "") != NULL;
+}
+
+bool SkPdfStreamCommonDictionary::isDecodeParmsADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DecodeParms", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfStreamCommonDictionary::getDecodeParmsAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DecodeParms", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfStreamCommonDictionary::isDecodeParmsAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DecodeParms", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfStreamCommonDictionary::getDecodeParmsAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DecodeParms", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfStreamCommonDictionary::has_DecodeParms() const {
+ return get("DecodeParms", "") != NULL;
+}
+
+SkPdfFileSpec SkPdfStreamCommonDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->fileSpecValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFileSpec();
+}
+
+bool SkPdfStreamCommonDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
+
+bool SkPdfStreamCommonDictionary::isFFilterAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FFilter", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfStreamCommonDictionary::getFFilterAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FFilter", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfStreamCommonDictionary::isFFilterAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FFilter", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfStreamCommonDictionary::getFFilterAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FFilter", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfStreamCommonDictionary::has_FFilter() const {
+ return get("FFilter", "") != NULL;
+}
+
+bool SkPdfStreamCommonDictionary::isFDecodeParmsADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FDecodeParms", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfStreamCommonDictionary::getFDecodeParmsAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FDecodeParms", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfStreamCommonDictionary::isFDecodeParmsAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FDecodeParms", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfStreamCommonDictionary::getFDecodeParmsAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FDecodeParms", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfStreamCommonDictionary::has_FDecodeParms() const {
+ return get("FDecodeParms", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStreamCommonDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStreamCommonDictionary_autogen.h
new file mode 100644
index 00000000000..fe445ed99e1
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStreamCommonDictionary_autogen.h
@@ -0,0 +1,555 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfStreamCommonDictionary_DEFINED
+#define SkPdfStreamCommonDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries common to all stream dictionaries
+class SkPdfStreamCommonDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t Length(SkPdfNativeDoc* doc);
+ bool has_Length() const;
+
+ bool isFilterAName(SkPdfNativeDoc* doc);
+ SkString getFilterAsName(SkPdfNativeDoc* doc);
+
+ bool isFilterAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getFilterAsArray(SkPdfNativeDoc* doc);
+ bool has_Filter() const;
+
+ bool isDecodeParmsADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getDecodeParmsAsDictionary(SkPdfNativeDoc* doc);
+
+ bool isDecodeParmsAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getDecodeParmsAsArray(SkPdfNativeDoc* doc);
+ bool has_DecodeParms() const;
+ SkPdfFileSpec F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+
+ bool isFFilterAName(SkPdfNativeDoc* doc);
+ SkString getFFilterAsName(SkPdfNativeDoc* doc);
+
+ bool isFFilterAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getFFilterAsArray(SkPdfNativeDoc* doc);
+ bool has_FFilter() const;
+
+ bool isFDecodeParmsADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getFDecodeParmsAsDictionary(SkPdfNativeDoc* doc);
+
+ bool isFDecodeParmsAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getFDecodeParmsAsArray(SkPdfNativeDoc* doc);
+ bool has_FDecodeParms() const;
+};
+
+#endif // SkPdfStreamCommonDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureElementAccessDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureElementAccessDictionary_autogen.cpp
new file mode 100644
index 00000000000..471dd632d7c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureElementAccessDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfStructureElementAccessDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfStructureElementAccessDictionary::StructParent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("StructParent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfStructureElementAccessDictionary::has_StructParent() const {
+ return get("StructParent", "") != NULL;
+}
+
+int64_t SkPdfStructureElementAccessDictionary::StructParents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("StructParents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfStructureElementAccessDictionary::has_StructParents() const {
+ return get("StructParents", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureElementAccessDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureElementAccessDictionary_autogen.h
new file mode 100644
index 00000000000..acc17ae4fb1
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureElementAccessDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfStructureElementAccessDictionary_DEFINED
+#define SkPdfStructureElementAccessDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional dictionary entries for structure element access
+class SkPdfStructureElementAccessDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t StructParent(SkPdfNativeDoc* doc);
+ bool has_StructParent() const;
+ int64_t StructParents(SkPdfNativeDoc* doc);
+ bool has_StructParents() const;
+};
+
+#endif // SkPdfStructureElementAccessDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureElementDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureElementDictionary_autogen.cpp
new file mode 100644
index 00000000000..eac2b37dcd7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureElementDictionary_autogen.cpp
@@ -0,0 +1,185 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfStructureElementDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfStructureElementDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfStructureElementDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfStructureElementDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfStructureElementDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfStructureElementDictionary::P(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("P", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfStructureElementDictionary::has_P() const {
+ return get("P", "") != NULL;
+}
+
+SkString SkPdfStructureElementDictionary::ID(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ID", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfStructureElementDictionary::has_ID() const {
+ return get("ID", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfStructureElementDictionary::Pg(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Pg", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfStructureElementDictionary::has_Pg() const {
+ return get("Pg", "") != NULL;
+}
+
+SkPdfNativeObject* SkPdfStructureElementDictionary::K(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("K", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && true) || (doc == NULL && ret != NULL && ret->isReference())) return ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfStructureElementDictionary::has_K() const {
+ return get("K", "") != NULL;
+}
+
+SkPdfNativeObject* SkPdfStructureElementDictionary::A(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("A", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && true) || (doc == NULL && ret != NULL && ret->isReference())) return ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfStructureElementDictionary::has_A() const {
+ return get("A", "") != NULL;
+}
+
+bool SkPdfStructureElementDictionary::isCAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("C", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfStructureElementDictionary::getCAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("C", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfStructureElementDictionary::isCAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("C", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfStructureElementDictionary::getCAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("C", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfStructureElementDictionary::has_C() const {
+ return get("C", "") != NULL;
+}
+
+int64_t SkPdfStructureElementDictionary::R(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("R", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfStructureElementDictionary::has_R() const {
+ return get("R", "") != NULL;
+}
+
+SkString SkPdfStructureElementDictionary::T(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("T", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfStructureElementDictionary::has_T() const {
+ return get("T", "") != NULL;
+}
+
+SkString SkPdfStructureElementDictionary::Lang(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Lang", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfStructureElementDictionary::has_Lang() const {
+ return get("Lang", "") != NULL;
+}
+
+SkString SkPdfStructureElementDictionary::Alt(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Alt", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfStructureElementDictionary::has_Alt() const {
+ return get("Alt", "") != NULL;
+}
+
+SkString SkPdfStructureElementDictionary::ActualText(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ActualText", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfStructureElementDictionary::has_ActualText() const {
+ return get("ActualText", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureElementDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureElementDictionary_autogen.h
new file mode 100644
index 00000000000..4e28286afd5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureElementDictionary_autogen.h
@@ -0,0 +1,554 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfStructureElementDictionary_DEFINED
+#define SkPdfStructureElementDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a structure element dictionary
+class SkPdfStructureElementDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkPdfDictionary* P(SkPdfNativeDoc* doc);
+ bool has_P() const;
+ SkString ID(SkPdfNativeDoc* doc);
+ bool has_ID() const;
+ SkPdfDictionary* Pg(SkPdfNativeDoc* doc);
+ bool has_Pg() const;
+ SkPdfNativeObject* K(SkPdfNativeDoc* doc);
+ bool has_K() const;
+ SkPdfNativeObject* A(SkPdfNativeDoc* doc);
+ bool has_A() const;
+
+ bool isCAName(SkPdfNativeDoc* doc);
+ SkString getCAsName(SkPdfNativeDoc* doc);
+
+ bool isCAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getCAsArray(SkPdfNativeDoc* doc);
+ bool has_C() const;
+ int64_t R(SkPdfNativeDoc* doc);
+ bool has_R() const;
+ SkString T(SkPdfNativeDoc* doc);
+ bool has_T() const;
+ SkString Lang(SkPdfNativeDoc* doc);
+ bool has_Lang() const;
+ SkString Alt(SkPdfNativeDoc* doc);
+ bool has_Alt() const;
+ SkString ActualText(SkPdfNativeDoc* doc);
+ bool has_ActualText() const;
+};
+
+#endif // SkPdfStructureElementDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureTreeRootDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureTreeRootDictionary_autogen.cpp
new file mode 100644
index 00000000000..9614378ba58
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureTreeRootDictionary_autogen.cpp
@@ -0,0 +1,153 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfStructureTreeRootDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfStructureTreeRootDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfStructureTreeRootDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+bool SkPdfStructureTreeRootDictionary::isKADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("K", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfStructureTreeRootDictionary::getKAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("K", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfStructureTreeRootDictionary::isKAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("K", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfStructureTreeRootDictionary::getKAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("K", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfStructureTreeRootDictionary::has_K() const {
+ return get("K", "") != NULL;
+}
+
+bool SkPdfStructureTreeRootDictionary::isIDTreeAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("IDTree", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfStructureTreeRootDictionary::getIDTreeAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("IDTree", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfStructureTreeRootDictionary::isIDTreeATree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("IDTree", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && false;
+}
+
+SkPdfTree SkPdfStructureTreeRootDictionary::getIDTreeAsTree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("IDTree", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->treeValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfTree();
+}
+
+bool SkPdfStructureTreeRootDictionary::has_IDTree() const {
+ return get("IDTree", "") != NULL;
+}
+
+bool SkPdfStructureTreeRootDictionary::isParentTreeANumber(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ParentTree", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isNumber();
+}
+
+double SkPdfStructureTreeRootDictionary::getParentTreeAsNumber(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ParentTree", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfStructureTreeRootDictionary::isParentTreeATree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ParentTree", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && false;
+}
+
+SkPdfTree SkPdfStructureTreeRootDictionary::getParentTreeAsTree(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ParentTree", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->treeValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfTree();
+}
+
+bool SkPdfStructureTreeRootDictionary::has_ParentTree() const {
+ return get("ParentTree", "") != NULL;
+}
+
+int64_t SkPdfStructureTreeRootDictionary::ParentTreeNextKey(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ParentTreeNextKey", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfStructureTreeRootDictionary::has_ParentTreeNextKey() const {
+ return get("ParentTreeNextKey", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfStructureTreeRootDictionary::RoleMap(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("RoleMap", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfStructureTreeRootDictionary::has_RoleMap() const {
+ return get("RoleMap", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfStructureTreeRootDictionary::ClassMap(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ClassMap", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfStructureTreeRootDictionary::has_ClassMap() const {
+ return get("ClassMap", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureTreeRootDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureTreeRootDictionary_autogen.h
new file mode 100644
index 00000000000..167e6f1365f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfStructureTreeRootDictionary_autogen.h
@@ -0,0 +1,552 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfStructureTreeRootDictionary_DEFINED
+#define SkPdfStructureTreeRootDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in the structure tree root
+class SkPdfStructureTreeRootDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+
+ bool isKADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getKAsDictionary(SkPdfNativeDoc* doc);
+
+ bool isKAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getKAsArray(SkPdfNativeDoc* doc);
+ bool has_K() const;
+
+ bool isIDTreeAName(SkPdfNativeDoc* doc);
+ SkString getIDTreeAsName(SkPdfNativeDoc* doc);
+
+ bool isIDTreeATree(SkPdfNativeDoc* doc);
+ SkPdfTree getIDTreeAsTree(SkPdfNativeDoc* doc);
+ bool has_IDTree() const;
+
+ bool isParentTreeANumber(SkPdfNativeDoc* doc);
+ double getParentTreeAsNumber(SkPdfNativeDoc* doc);
+
+ bool isParentTreeATree(SkPdfNativeDoc* doc);
+ SkPdfTree getParentTreeAsTree(SkPdfNativeDoc* doc);
+ bool has_ParentTree() const;
+ int64_t ParentTreeNextKey(SkPdfNativeDoc* doc);
+ bool has_ParentTreeNextKey() const;
+ SkPdfDictionary* RoleMap(SkPdfNativeDoc* doc);
+ bool has_RoleMap() const;
+ SkPdfDictionary* ClassMap(SkPdfNativeDoc* doc);
+ bool has_ClassMap() const;
+};
+
+#endif // SkPdfStructureTreeRootDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSubmitFormActionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSubmitFormActionDictionary_autogen.cpp
new file mode 100644
index 00000000000..e41e80d1fde
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSubmitFormActionDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfSubmitFormActionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfSubmitFormActionDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfSubmitFormActionDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkPdfFileSpec SkPdfSubmitFormActionDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->fileSpecValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkPdfFileSpec();
+}
+
+bool SkPdfSubmitFormActionDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
+
+SkPdfArray* SkPdfSubmitFormActionDictionary::Fields(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Fields", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfSubmitFormActionDictionary::has_Fields() const {
+ return get("Fields", "") != NULL;
+}
+
+int64_t SkPdfSubmitFormActionDictionary::Flags(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Flags", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfSubmitFormActionDictionary::has_Flags() const {
+ return get("Flags", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSubmitFormActionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSubmitFormActionDictionary_autogen.h
new file mode 100644
index 00000000000..0f4193ae03c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfSubmitFormActionDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfSubmitFormActionDictionary_DEFINED
+#define SkPdfSubmitFormActionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a submit-form action
+class SkPdfSubmitFormActionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkPdfFileSpec F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+ SkPdfArray* Fields(SkPdfNativeDoc* doc);
+ bool has_Fields() const;
+ int64_t Flags(SkPdfNativeDoc* doc);
+ bool has_Flags() const;
+};
+
+#endif // SkPdfSubmitFormActionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTableAttributesDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTableAttributesDictionary_autogen.cpp
new file mode 100644
index 00000000000..7b4e88c9e44
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTableAttributesDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfTableAttributesDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfTableAttributesDictionary::RowSpan(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("RowSpan", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfTableAttributesDictionary::has_RowSpan() const {
+ return get("RowSpan", "") != NULL;
+}
+
+int64_t SkPdfTableAttributesDictionary::ColSpan(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ColSpan", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfTableAttributesDictionary::has_ColSpan() const {
+ return get("ColSpan", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTableAttributesDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTableAttributesDictionary_autogen.h
new file mode 100644
index 00000000000..140ff5096f9
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTableAttributesDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfTableAttributesDictionary_DEFINED
+#define SkPdfTableAttributesDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Standard table attributes
+class SkPdfTableAttributesDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t RowSpan(SkPdfNativeDoc* doc);
+ bool has_RowSpan() const;
+ int64_t ColSpan(SkPdfNativeDoc* doc);
+ bool has_ColSpan() const;
+};
+
+#endif // SkPdfTableAttributesDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTextAnnotationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTextAnnotationDictionary_autogen.cpp
new file mode 100644
index 00000000000..e2ced01b3cb
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTextAnnotationDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfTextAnnotationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfTextAnnotationDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfTextAnnotationDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfTextAnnotationDictionary::Contents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfTextAnnotationDictionary::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+bool SkPdfTextAnnotationDictionary::Open(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Open", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfTextAnnotationDictionary::has_Open() const {
+ return get("Open", "") != NULL;
+}
+
+SkString SkPdfTextAnnotationDictionary::Name(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Name", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfTextAnnotationDictionary::has_Name() const {
+ return get("Name", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTextAnnotationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTextAnnotationDictionary_autogen.h
new file mode 100644
index 00000000000..2a5cf727a87
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTextAnnotationDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfTextAnnotationDictionary_DEFINED
+#define SkPdfTextAnnotationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a text annotation
+class SkPdfTextAnnotationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString Contents(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+ bool Open(SkPdfNativeDoc* doc);
+ bool has_Open() const;
+ SkString Name(SkPdfNativeDoc* doc);
+ bool has_Name() const;
+};
+
+#endif // SkPdfTextAnnotationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTextFieldDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTextFieldDictionary_autogen.cpp
new file mode 100644
index 00000000000..25d49e79f8e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTextFieldDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfTextFieldDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfTextFieldDictionary::MaxLen(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("MaxLen", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfTextFieldDictionary::has_MaxLen() const {
+ return get("MaxLen", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTextFieldDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTextFieldDictionary_autogen.h
new file mode 100644
index 00000000000..bd9e230adef
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTextFieldDictionary_autogen.h
@@ -0,0 +1,525 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfTextFieldDictionary_DEFINED
+#define SkPdfTextFieldDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entry specific to a text field
+class SkPdfTextFieldDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t MaxLen(SkPdfNativeDoc* doc);
+ bool has_MaxLen() const;
+};
+
+#endif // SkPdfTextFieldDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfThreadActionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfThreadActionDictionary_autogen.cpp
new file mode 100644
index 00000000000..b02b19979d1
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfThreadActionDictionary_autogen.cpp
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfThreadActionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfThreadActionDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfThreadActionDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkPdfFileSpec SkPdfThreadActionDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && false) || (doc == NULL && ret != NULL && ret->isReference())) return ret->fileSpecValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFileSpec();
+}
+
+bool SkPdfThreadActionDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
+
+bool SkPdfThreadActionDictionary::isDADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfThreadActionDictionary::getDAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfThreadActionDictionary::isDAInteger(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isInteger();
+}
+
+int64_t SkPdfThreadActionDictionary::getDAsInteger(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfThreadActionDictionary::isDAString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isAnyString();
+}
+
+SkString SkPdfThreadActionDictionary::getDAsString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfThreadActionDictionary::has_D() const {
+ return get("D", "") != NULL;
+}
+
+bool SkPdfThreadActionDictionary::isBADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("B", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfThreadActionDictionary::getBAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("B", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfThreadActionDictionary::isBAInteger(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("B", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isInteger();
+}
+
+int64_t SkPdfThreadActionDictionary::getBAsInteger(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("B", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfThreadActionDictionary::has_B() const {
+ return get("B", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfThreadActionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfThreadActionDictionary_autogen.h
new file mode 100644
index 00000000000..e602b81725f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfThreadActionDictionary_autogen.h
@@ -0,0 +1,544 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfThreadActionDictionary_DEFINED
+#define SkPdfThreadActionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a thread action
+class SkPdfThreadActionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkPdfFileSpec F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+
+ bool isDADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getDAsDictionary(SkPdfNativeDoc* doc);
+
+ bool isDAInteger(SkPdfNativeDoc* doc);
+ int64_t getDAsInteger(SkPdfNativeDoc* doc);
+
+ bool isDAString(SkPdfNativeDoc* doc);
+ SkString getDAsString(SkPdfNativeDoc* doc);
+ bool has_D() const;
+
+ bool isBADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getBAsDictionary(SkPdfNativeDoc* doc);
+
+ bool isBAInteger(SkPdfNativeDoc* doc);
+ int64_t getBAsInteger(SkPdfNativeDoc* doc);
+ bool has_B() const;
+};
+
+#endif // SkPdfThreadActionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfThreadDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfThreadDictionary_autogen.cpp
new file mode 100644
index 00000000000..3ec21733b88
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfThreadDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfThreadDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfThreadDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfThreadDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfThreadDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfThreadDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfThreadDictionary::I(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("I", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfThreadDictionary::has_I() const {
+ return get("I", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfThreadDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfThreadDictionary_autogen.h
new file mode 100644
index 00000000000..564be48438a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfThreadDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfThreadDictionary_DEFINED
+#define SkPdfThreadDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a thread dictionary
+class SkPdfThreadDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfThreadDictionary* asThreadDictionary() {return this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkPdfDictionary* F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+ SkPdfDictionary* I(SkPdfNativeDoc* doc);
+ bool has_I() const;
+};
+
+#endif // SkPdfThreadDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTransitionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTransitionDictionary_autogen.cpp
new file mode 100644
index 00000000000..38ee9f5fcea
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTransitionDictionary_autogen.cpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfTransitionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfTransitionDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfTransitionDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+double SkPdfTransitionDictionary::D(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfTransitionDictionary::has_D() const {
+ return get("D", "") != NULL;
+}
+
+SkString SkPdfTransitionDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfTransitionDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkString SkPdfTransitionDictionary::Dm(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Dm", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfTransitionDictionary::has_Dm() const {
+ return get("Dm", "") != NULL;
+}
+
+SkString SkPdfTransitionDictionary::M(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("M", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfTransitionDictionary::has_M() const {
+ return get("M", "") != NULL;
+}
+
+double SkPdfTransitionDictionary::Di(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Di", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfTransitionDictionary::has_Di() const {
+ return get("Di", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTransitionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTransitionDictionary_autogen.h
new file mode 100644
index 00000000000..19b13447aff
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTransitionDictionary_autogen.h
@@ -0,0 +1,535 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfTransitionDictionary_DEFINED
+#define SkPdfTransitionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a transition dictionary
+class SkPdfTransitionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfTransitionDictionary* asTransitionDictionary() {return this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ double D(SkPdfNativeDoc* doc);
+ bool has_D() const;
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkString Dm(SkPdfNativeDoc* doc);
+ bool has_Dm() const;
+ SkString M(SkPdfNativeDoc* doc);
+ bool has_M() const;
+ double Di(SkPdfNativeDoc* doc);
+ bool has_Di() const;
+};
+
+#endif // SkPdfTransitionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTransparencyGroupDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTransparencyGroupDictionary_autogen.cpp
new file mode 100644
index 00000000000..d91550d72a7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTransparencyGroupDictionary_autogen.cpp
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfTransparencyGroupDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfTransparencyGroupDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfTransparencyGroupDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+bool SkPdfTransparencyGroupDictionary::isCSAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfTransparencyGroupDictionary::getCSAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfTransparencyGroupDictionary::isCSAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfTransparencyGroupDictionary::getCSAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfTransparencyGroupDictionary::has_CS() const {
+ return get("CS", "") != NULL;
+}
+
+bool SkPdfTransparencyGroupDictionary::I(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("I", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfTransparencyGroupDictionary::has_I() const {
+ return get("I", "") != NULL;
+}
+
+bool SkPdfTransparencyGroupDictionary::K(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("K", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfTransparencyGroupDictionary::has_K() const {
+ return get("K", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTransparencyGroupDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTransparencyGroupDictionary_autogen.h
new file mode 100644
index 00000000000..6872155e5e9
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTransparencyGroupDictionary_autogen.h
@@ -0,0 +1,536 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfTransparencyGroupDictionary_DEFINED
+#define SkPdfTransparencyGroupDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a transparency group attributes dictionary
+class SkPdfTransparencyGroupDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+
+ bool isCSAName(SkPdfNativeDoc* doc);
+ SkString getCSAsName(SkPdfNativeDoc* doc);
+
+ bool isCSAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getCSAsArray(SkPdfNativeDoc* doc);
+ bool has_CS() const;
+ bool I(SkPdfNativeDoc* doc);
+ bool has_I() const;
+ bool K(SkPdfNativeDoc* doc);
+ bool has_K() const;
+};
+
+#endif // SkPdfTransparencyGroupDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrapNetworkAnnotationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrapNetworkAnnotationDictionary_autogen.cpp
new file mode 100644
index 00000000000..deeef450845
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrapNetworkAnnotationDictionary_autogen.cpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfTrapNetworkAnnotationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfTrapNetworkAnnotationDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfTrapNetworkAnnotationDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfTrapNetworkAnnotationDictionary::Contents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfTrapNetworkAnnotationDictionary::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+SkPdfDate SkPdfTrapNetworkAnnotationDictionary::LastModified(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("LastModified", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDate()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->dateValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfDate();
+}
+
+bool SkPdfTrapNetworkAnnotationDictionary::has_LastModified() const {
+ return get("LastModified", "") != NULL;
+}
+
+SkPdfArray* SkPdfTrapNetworkAnnotationDictionary::Version(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Version", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfTrapNetworkAnnotationDictionary::has_Version() const {
+ return get("Version", "") != NULL;
+}
+
+SkPdfArray* SkPdfTrapNetworkAnnotationDictionary::AnnotStates(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AnnotStates", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfTrapNetworkAnnotationDictionary::has_AnnotStates() const {
+ return get("AnnotStates", "") != NULL;
+}
+
+SkPdfArray* SkPdfTrapNetworkAnnotationDictionary::FontFauxing(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FontFauxing", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfTrapNetworkAnnotationDictionary::has_FontFauxing() const {
+ return get("FontFauxing", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrapNetworkAnnotationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrapNetworkAnnotationDictionary_autogen.h
new file mode 100644
index 00000000000..11bb90e5183
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrapNetworkAnnotationDictionary_autogen.h
@@ -0,0 +1,535 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfTrapNetworkAnnotationDictionary_DEFINED
+#define SkPdfTrapNetworkAnnotationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a trap network annotation
+class SkPdfTrapNetworkAnnotationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString Contents(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+ SkPdfDate LastModified(SkPdfNativeDoc* doc);
+ bool has_LastModified() const;
+ SkPdfArray* Version(SkPdfNativeDoc* doc);
+ bool has_Version() const;
+ SkPdfArray* AnnotStates(SkPdfNativeDoc* doc);
+ bool has_AnnotStates() const;
+ SkPdfArray* FontFauxing(SkPdfNativeDoc* doc);
+ bool has_FontFauxing() const;
+};
+
+#endif // SkPdfTrapNetworkAnnotationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrapNetworkAppearanceStreamDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrapNetworkAppearanceStreamDictionary_autogen.cpp
new file mode 100644
index 00000000000..0df1f6dc616
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrapNetworkAppearanceStreamDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfTrapNetworkAppearanceStreamDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfTrapNetworkAppearanceStreamDictionary::PCM(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("PCM", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfTrapNetworkAppearanceStreamDictionary::has_PCM() const {
+ return get("PCM", "") != NULL;
+}
+
+SkPdfArray* SkPdfTrapNetworkAppearanceStreamDictionary::SeparationColorNames(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SeparationColorNames", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfTrapNetworkAppearanceStreamDictionary::has_SeparationColorNames() const {
+ return get("SeparationColorNames", "") != NULL;
+}
+
+SkPdfArray* SkPdfTrapNetworkAppearanceStreamDictionary::TrapRegions(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TrapRegions", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfTrapNetworkAppearanceStreamDictionary::has_TrapRegions() const {
+ return get("TrapRegions", "") != NULL;
+}
+
+SkString SkPdfTrapNetworkAppearanceStreamDictionary::TrapStyles(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TrapStyles", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfTrapNetworkAppearanceStreamDictionary::has_TrapStyles() const {
+ return get("TrapStyles", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrapNetworkAppearanceStreamDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrapNetworkAppearanceStreamDictionary_autogen.h
new file mode 100644
index 00000000000..fd88fef3b05
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrapNetworkAppearanceStreamDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfTrapNetworkAppearanceStreamDictionary_DEFINED
+#define SkPdfTrapNetworkAppearanceStreamDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a trap network appearance stream
+class SkPdfTrapNetworkAppearanceStreamDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString PCM(SkPdfNativeDoc* doc);
+ bool has_PCM() const;
+ SkPdfArray* SeparationColorNames(SkPdfNativeDoc* doc);
+ bool has_SeparationColorNames() const;
+ SkPdfArray* TrapRegions(SkPdfNativeDoc* doc);
+ bool has_TrapRegions() const;
+ SkString TrapStyles(SkPdfNativeDoc* doc);
+ bool has_TrapStyles() const;
+};
+
+#endif // SkPdfTrapNetworkAppearanceStreamDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrueTypeFontDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrueTypeFontDictionary_autogen.cpp
new file mode 100644
index 00000000000..df3c92bb3fd
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrueTypeFontDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfTrueTypeFontDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfTrueTypeFontDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfTrueTypeFontDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrueTypeFontDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrueTypeFontDictionary_autogen.h
new file mode 100644
index 00000000000..5ec564f2294
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfTrueTypeFontDictionary_autogen.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfTrueTypeFontDictionary_DEFINED
+#define SkPdfTrueTypeFontDictionary_DEFINED
+
+#include "SkPdfType1FontDictionary_autogen.h"
+
+class SkPdfTrueTypeFontDictionary : public SkPdfType1FontDictionary {
+public:
+public:
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return this;}
+
+private:
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+};
+
+#endif // SkPdfTrueTypeFontDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType0FontDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType0FontDictionary_autogen.cpp
new file mode 100644
index 00000000000..6c9e4a926be
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType0FontDictionary_autogen.cpp
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType0FontDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfType0FontDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfType0FontDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfType0FontDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfType0FontDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfType0FontDictionary::BaseFont(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BaseFont", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfType0FontDictionary::has_BaseFont() const {
+ return get("BaseFont", "") != NULL;
+}
+
+bool SkPdfType0FontDictionary::isEncodingAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Encoding", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfType0FontDictionary::getEncodingAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Encoding", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfType0FontDictionary::isEncodingAStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Encoding", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfType0FontDictionary::getEncodingAsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Encoding", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType0FontDictionary::has_Encoding() const {
+ return get("Encoding", "") != NULL;
+}
+
+SkPdfArray* SkPdfType0FontDictionary::DescendantFonts(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DescendantFonts", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType0FontDictionary::has_DescendantFonts() const {
+ return get("DescendantFonts", "") != NULL;
+}
+
+SkPdfStream* SkPdfType0FontDictionary::ToUnicode(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ToUnicode", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType0FontDictionary::has_ToUnicode() const {
+ return get("ToUnicode", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType0FontDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType0FontDictionary_autogen.h
new file mode 100644
index 00000000000..95ccd80b160
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType0FontDictionary_autogen.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType0FontDictionary_DEFINED
+#define SkPdfType0FontDictionary_DEFINED
+
+#include "SkPdfFontDictionary_autogen.h"
+
+// Entries in a Type 0 font dictionary
+class SkPdfType0FontDictionary : public SkPdfFontDictionary {
+public:
+public:
+ SkPdfType0FontDictionary* asType0FontDictionary() {return this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return this;}
+
+private:
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString BaseFont(SkPdfNativeDoc* doc);
+ bool has_BaseFont() const;
+
+ bool isEncodingAName(SkPdfNativeDoc* doc);
+ SkString getEncodingAsName(SkPdfNativeDoc* doc);
+
+ bool isEncodingAStream(SkPdfNativeDoc* doc);
+ SkPdfStream* getEncodingAsStream(SkPdfNativeDoc* doc);
+ bool has_Encoding() const;
+ SkPdfArray* DescendantFonts(SkPdfNativeDoc* doc);
+ bool has_DescendantFonts() const;
+ SkPdfStream* ToUnicode(SkPdfNativeDoc* doc);
+ bool has_ToUnicode() const;
+};
+
+#endif // SkPdfType0FontDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType0FunctionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType0FunctionDictionary_autogen.cpp
new file mode 100644
index 00000000000..ea4888b8076
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType0FunctionDictionary_autogen.cpp
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType0FunctionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfType0FunctionDictionary::Size(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Size", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType0FunctionDictionary::has_Size() const {
+ return get("Size", "") != NULL;
+}
+
+int64_t SkPdfType0FunctionDictionary::BitsPerSample(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BitsPerSample", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType0FunctionDictionary::has_BitsPerSample() const {
+ return get("BitsPerSample", "") != NULL;
+}
+
+int64_t SkPdfType0FunctionDictionary::Order(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Order", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfType0FunctionDictionary::has_Order() const {
+ return get("Order", "") != NULL;
+}
+
+SkPdfArray* SkPdfType0FunctionDictionary::Encode(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Encode", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType0FunctionDictionary::has_Encode() const {
+ return get("Encode", "") != NULL;
+}
+
+SkPdfArray* SkPdfType0FunctionDictionary::Decode(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Decode", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType0FunctionDictionary::has_Decode() const {
+ return get("Decode", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType0FunctionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType0FunctionDictionary_autogen.h
new file mode 100644
index 00000000000..b16d6be190e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType0FunctionDictionary_autogen.h
@@ -0,0 +1,533 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType0FunctionDictionary_DEFINED
+#define SkPdfType0FunctionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a type 0 function dictionary
+class SkPdfType0FunctionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* Size(SkPdfNativeDoc* doc);
+ bool has_Size() const;
+ int64_t BitsPerSample(SkPdfNativeDoc* doc);
+ bool has_BitsPerSample() const;
+ int64_t Order(SkPdfNativeDoc* doc);
+ bool has_Order() const;
+ SkPdfArray* Encode(SkPdfNativeDoc* doc);
+ bool has_Encode() const;
+ SkPdfArray* Decode(SkPdfNativeDoc* doc);
+ bool has_Decode() const;
+};
+
+#endif // SkPdfType0FunctionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType10HalftoneDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType10HalftoneDictionary_autogen.cpp
new file mode 100644
index 00000000000..d62ef387ea7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType10HalftoneDictionary_autogen.cpp
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType10HalftoneDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfType10HalftoneDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType10HalftoneDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+int64_t SkPdfType10HalftoneDictionary::HalftoneType(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HalftoneType", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType10HalftoneDictionary::has_HalftoneType() const {
+ return get("HalftoneType", "") != NULL;
+}
+
+SkString SkPdfType10HalftoneDictionary::HalftoneName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HalftoneName", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType10HalftoneDictionary::has_HalftoneName() const {
+ return get("HalftoneName", "") != NULL;
+}
+
+int64_t SkPdfType10HalftoneDictionary::Xsquare(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Xsquare", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType10HalftoneDictionary::has_Xsquare() const {
+ return get("Xsquare", "") != NULL;
+}
+
+int64_t SkPdfType10HalftoneDictionary::Ysquare(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Ysquare", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType10HalftoneDictionary::has_Ysquare() const {
+ return get("Ysquare", "") != NULL;
+}
+
+bool SkPdfType10HalftoneDictionary::isTransferFunctionAFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TransferFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isFunction();
+}
+
+SkPdfFunction SkPdfType10HalftoneDictionary::getTransferFunctionAsFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TransferFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFunction();
+}
+
+bool SkPdfType10HalftoneDictionary::isTransferFunctionAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TransferFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfType10HalftoneDictionary::getTransferFunctionAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TransferFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType10HalftoneDictionary::has_TransferFunction() const {
+ return get("TransferFunction", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType10HalftoneDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType10HalftoneDictionary_autogen.h
new file mode 100644
index 00000000000..c5e9892fb7f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType10HalftoneDictionary_autogen.h
@@ -0,0 +1,540 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType10HalftoneDictionary_DEFINED
+#define SkPdfType10HalftoneDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a type 10 halftone dictionary
+class SkPdfType10HalftoneDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ int64_t HalftoneType(SkPdfNativeDoc* doc);
+ bool has_HalftoneType() const;
+ SkString HalftoneName(SkPdfNativeDoc* doc);
+ bool has_HalftoneName() const;
+ int64_t Xsquare(SkPdfNativeDoc* doc);
+ bool has_Xsquare() const;
+ int64_t Ysquare(SkPdfNativeDoc* doc);
+ bool has_Ysquare() const;
+
+ bool isTransferFunctionAFunction(SkPdfNativeDoc* doc);
+ SkPdfFunction getTransferFunctionAsFunction(SkPdfNativeDoc* doc);
+
+ bool isTransferFunctionAName(SkPdfNativeDoc* doc);
+ SkString getTransferFunctionAsName(SkPdfNativeDoc* doc);
+ bool has_TransferFunction() const;
+};
+
+#endif // SkPdfType10HalftoneDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType16HalftoneDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType16HalftoneDictionary_autogen.cpp
new file mode 100644
index 00000000000..cf2f06af1e5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType16HalftoneDictionary_autogen.cpp
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType16HalftoneDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfType16HalftoneDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType16HalftoneDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+int64_t SkPdfType16HalftoneDictionary::HalftoneType(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HalftoneType", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType16HalftoneDictionary::has_HalftoneType() const {
+ return get("HalftoneType", "") != NULL;
+}
+
+SkString SkPdfType16HalftoneDictionary::HalftoneName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HalftoneName", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType16HalftoneDictionary::has_HalftoneName() const {
+ return get("HalftoneName", "") != NULL;
+}
+
+int64_t SkPdfType16HalftoneDictionary::Width(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Width", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType16HalftoneDictionary::has_Width() const {
+ return get("Width", "") != NULL;
+}
+
+int64_t SkPdfType16HalftoneDictionary::Height(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Height", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType16HalftoneDictionary::has_Height() const {
+ return get("Height", "") != NULL;
+}
+
+int64_t SkPdfType16HalftoneDictionary::Width2(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Width2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfType16HalftoneDictionary::has_Width2() const {
+ return get("Width2", "") != NULL;
+}
+
+int64_t SkPdfType16HalftoneDictionary::Height2(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Height2", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfType16HalftoneDictionary::has_Height2() const {
+ return get("Height2", "") != NULL;
+}
+
+bool SkPdfType16HalftoneDictionary::isTransferFunctionAFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TransferFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isFunction();
+}
+
+SkPdfFunction SkPdfType16HalftoneDictionary::getTransferFunctionAsFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TransferFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFunction();
+}
+
+bool SkPdfType16HalftoneDictionary::isTransferFunctionAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TransferFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfType16HalftoneDictionary::getTransferFunctionAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TransferFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType16HalftoneDictionary::has_TransferFunction() const {
+ return get("TransferFunction", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType16HalftoneDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType16HalftoneDictionary_autogen.h
new file mode 100644
index 00000000000..a70b91e681c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType16HalftoneDictionary_autogen.h
@@ -0,0 +1,544 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType16HalftoneDictionary_DEFINED
+#define SkPdfType16HalftoneDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a type 16 halftone dictionary
+class SkPdfType16HalftoneDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ int64_t HalftoneType(SkPdfNativeDoc* doc);
+ bool has_HalftoneType() const;
+ SkString HalftoneName(SkPdfNativeDoc* doc);
+ bool has_HalftoneName() const;
+ int64_t Width(SkPdfNativeDoc* doc);
+ bool has_Width() const;
+ int64_t Height(SkPdfNativeDoc* doc);
+ bool has_Height() const;
+ int64_t Width2(SkPdfNativeDoc* doc);
+ bool has_Width2() const;
+ int64_t Height2(SkPdfNativeDoc* doc);
+ bool has_Height2() const;
+
+ bool isTransferFunctionAFunction(SkPdfNativeDoc* doc);
+ SkPdfFunction getTransferFunctionAsFunction(SkPdfNativeDoc* doc);
+
+ bool isTransferFunctionAName(SkPdfNativeDoc* doc);
+ SkString getTransferFunctionAsName(SkPdfNativeDoc* doc);
+ bool has_TransferFunction() const;
+};
+
+#endif // SkPdfType16HalftoneDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1FontDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1FontDictionary_autogen.cpp
new file mode 100644
index 00000000000..7662182f041
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1FontDictionary_autogen.cpp
@@ -0,0 +1,149 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType1FontDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfType1FontDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfType1FontDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfType1FontDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfType1FontDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfType1FontDictionary::Name(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Name", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType1FontDictionary::has_Name() const {
+ return get("Name", "") != NULL;
+}
+
+SkString SkPdfType1FontDictionary::BaseFont(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BaseFont", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfType1FontDictionary::has_BaseFont() const {
+ return get("BaseFont", "") != NULL;
+}
+
+int64_t SkPdfType1FontDictionary::FirstChar(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FirstChar", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfType1FontDictionary::has_FirstChar() const {
+ return get("FirstChar", "") != NULL;
+}
+
+int64_t SkPdfType1FontDictionary::LastChar(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("LastChar", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfType1FontDictionary::has_LastChar() const {
+ return get("LastChar", "") != NULL;
+}
+
+SkPdfArray* SkPdfType1FontDictionary::Widths(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Widths", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType1FontDictionary::has_Widths() const {
+ return get("Widths", "") != NULL;
+}
+
+SkPdfFontDescriptorDictionary* SkPdfType1FontDictionary::FontDescriptor(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FontDescriptor", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary() && ((SkPdfFontDescriptorDictionary*)ret)->valid()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfFontDescriptorDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType1FontDictionary::has_FontDescriptor() const {
+ return get("FontDescriptor", "") != NULL;
+}
+
+bool SkPdfType1FontDictionary::isEncodingAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Encoding", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfType1FontDictionary::getEncodingAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Encoding", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType1FontDictionary::isEncodingADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Encoding", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfType1FontDictionary::getEncodingAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Encoding", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType1FontDictionary::has_Encoding() const {
+ return get("Encoding", "") != NULL;
+}
+
+SkPdfStream* SkPdfType1FontDictionary::ToUnicode(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ToUnicode", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType1FontDictionary::has_ToUnicode() const {
+ return get("ToUnicode", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1FontDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1FontDictionary_autogen.h
new file mode 100644
index 00000000000..6a4cb209d20
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1FontDictionary_autogen.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType1FontDictionary_DEFINED
+#define SkPdfType1FontDictionary_DEFINED
+
+#include "SkPdfFontDictionary_autogen.h"
+
+// Entries in a Type 1 font dictionary
+class SkPdfType1FontDictionary : public SkPdfFontDictionary {
+public:
+public:
+ SkPdfType1FontDictionary* asType1FontDictionary() {return this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return this;}
+
+private:
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString Name(SkPdfNativeDoc* doc);
+ bool has_Name() const;
+ SkString BaseFont(SkPdfNativeDoc* doc);
+ bool has_BaseFont() const;
+ int64_t FirstChar(SkPdfNativeDoc* doc);
+ bool has_FirstChar() const;
+ int64_t LastChar(SkPdfNativeDoc* doc);
+ bool has_LastChar() const;
+ SkPdfArray* Widths(SkPdfNativeDoc* doc);
+ bool has_Widths() const;
+ SkPdfFontDescriptorDictionary* FontDescriptor(SkPdfNativeDoc* doc);
+ bool has_FontDescriptor() const;
+
+ bool isEncodingAName(SkPdfNativeDoc* doc);
+ SkString getEncodingAsName(SkPdfNativeDoc* doc);
+
+ bool isEncodingADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getEncodingAsDictionary(SkPdfNativeDoc* doc);
+ bool has_Encoding() const;
+ SkPdfStream* ToUnicode(SkPdfNativeDoc* doc);
+ bool has_ToUnicode() const;
+};
+
+#endif // SkPdfType1FontDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1FormDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1FormDictionary_autogen.cpp
new file mode 100644
index 00000000000..c581a3be761
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1FormDictionary_autogen.cpp
@@ -0,0 +1,189 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType1FormDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfType1FormDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType1FormDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfType1FormDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfType1FormDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+int64_t SkPdfType1FormDictionary::FormType(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FormType", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfType1FormDictionary::has_FormType() const {
+ return get("FormType", "") != NULL;
+}
+
+SkString SkPdfType1FormDictionary::Name(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Name", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType1FormDictionary::has_Name() const {
+ return get("Name", "") != NULL;
+}
+
+SkPdfDate SkPdfType1FormDictionary::LastModified(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("LastModified", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDate()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->dateValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfDate();
+}
+
+bool SkPdfType1FormDictionary::has_LastModified() const {
+ return get("LastModified", "") != NULL;
+}
+
+SkRect SkPdfType1FormDictionary::BBox(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BBox", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isRectangle()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->rectangleValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkRect::MakeEmpty();
+}
+
+bool SkPdfType1FormDictionary::has_BBox() const {
+ return get("BBox", "") != NULL;
+}
+
+SkMatrix SkPdfType1FormDictionary::Matrix(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Matrix", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isMatrix()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->matrixValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkMatrix::I();
+}
+
+bool SkPdfType1FormDictionary::has_Matrix() const {
+ return get("Matrix", "") != NULL;
+}
+
+SkPdfResourceDictionary* SkPdfType1FormDictionary::Resources(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Resources", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary() && ((SkPdfResourceDictionary*)ret)->valid()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfResourceDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType1FormDictionary::has_Resources() const {
+ return get("Resources", "") != NULL;
+}
+
+SkPdfTransparencyGroupDictionary* SkPdfType1FormDictionary::Group(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Group", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary() && ((SkPdfTransparencyGroupDictionary*)ret)->valid()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfTransparencyGroupDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType1FormDictionary::has_Group() const {
+ return get("Group", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfType1FormDictionary::Ref(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Ref", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType1FormDictionary::has_Ref() const {
+ return get("Ref", "") != NULL;
+}
+
+SkPdfStream* SkPdfType1FormDictionary::Metadata(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Metadata", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType1FormDictionary::has_Metadata() const {
+ return get("Metadata", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfType1FormDictionary::PieceInfo(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("PieceInfo", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType1FormDictionary::has_PieceInfo() const {
+ return get("PieceInfo", "") != NULL;
+}
+
+int64_t SkPdfType1FormDictionary::StructParent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("StructParent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfType1FormDictionary::has_StructParent() const {
+ return get("StructParent", "") != NULL;
+}
+
+int64_t SkPdfType1FormDictionary::StructParents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("StructParents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfType1FormDictionary::has_StructParents() const {
+ return get("StructParents", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfType1FormDictionary::OPI(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("OPI", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType1FormDictionary::has_OPI() const {
+ return get("OPI", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1FormDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1FormDictionary_autogen.h
new file mode 100644
index 00000000000..968b1efd216
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1FormDictionary_autogen.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType1FormDictionary_DEFINED
+#define SkPdfType1FormDictionary_DEFINED
+
+#include "SkPdfXObjectDictionary_autogen.h"
+
+// Additional entries specific to a type 1 form dictionary
+class SkPdfType1FormDictionary : public SkPdfXObjectDictionary {
+public:
+public:
+ SkPdfType1FormDictionary* asType1FormDictionary() {return this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return this;}
+
+private:
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ int64_t FormType(SkPdfNativeDoc* doc);
+ bool has_FormType() const;
+ SkString Name(SkPdfNativeDoc* doc);
+ bool has_Name() const;
+ SkPdfDate LastModified(SkPdfNativeDoc* doc);
+ bool has_LastModified() const;
+ SkRect BBox(SkPdfNativeDoc* doc);
+ bool has_BBox() const;
+ SkMatrix Matrix(SkPdfNativeDoc* doc);
+ bool has_Matrix() const;
+ SkPdfResourceDictionary* Resources(SkPdfNativeDoc* doc);
+ bool has_Resources() const;
+ SkPdfTransparencyGroupDictionary* Group(SkPdfNativeDoc* doc);
+ bool has_Group() const;
+ SkPdfDictionary* Ref(SkPdfNativeDoc* doc);
+ bool has_Ref() const;
+ SkPdfStream* Metadata(SkPdfNativeDoc* doc);
+ bool has_Metadata() const;
+ SkPdfDictionary* PieceInfo(SkPdfNativeDoc* doc);
+ bool has_PieceInfo() const;
+ int64_t StructParent(SkPdfNativeDoc* doc);
+ bool has_StructParent() const;
+ int64_t StructParents(SkPdfNativeDoc* doc);
+ bool has_StructParents() const;
+ SkPdfDictionary* OPI(SkPdfNativeDoc* doc);
+ bool has_OPI() const;
+};
+
+#endif // SkPdfType1FormDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1HalftoneDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1HalftoneDictionary_autogen.cpp
new file mode 100644
index 00000000000..165362c753b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1HalftoneDictionary_autogen.cpp
@@ -0,0 +1,145 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType1HalftoneDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfType1HalftoneDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType1HalftoneDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+int64_t SkPdfType1HalftoneDictionary::HalftoneType(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HalftoneType", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType1HalftoneDictionary::has_HalftoneType() const {
+ return get("HalftoneType", "") != NULL;
+}
+
+SkString SkPdfType1HalftoneDictionary::HalftoneName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HalftoneName", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType1HalftoneDictionary::has_HalftoneName() const {
+ return get("HalftoneName", "") != NULL;
+}
+
+double SkPdfType1HalftoneDictionary::Frequency(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Frequency", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType1HalftoneDictionary::has_Frequency() const {
+ return get("Frequency", "") != NULL;
+}
+
+double SkPdfType1HalftoneDictionary::Angle(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Angle", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType1HalftoneDictionary::has_Angle() const {
+ return get("Angle", "") != NULL;
+}
+
+bool SkPdfType1HalftoneDictionary::isSpotFunctionAFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SpotFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isFunction();
+}
+
+SkPdfFunction SkPdfType1HalftoneDictionary::getSpotFunctionAsFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SpotFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkPdfFunction();
+}
+
+bool SkPdfType1HalftoneDictionary::isSpotFunctionAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SpotFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfType1HalftoneDictionary::getSpotFunctionAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SpotFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfType1HalftoneDictionary::has_SpotFunction() const {
+ return get("SpotFunction", "") != NULL;
+}
+
+bool SkPdfType1HalftoneDictionary::AccurateScreens(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("AccurateScreens", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfType1HalftoneDictionary::has_AccurateScreens() const {
+ return get("AccurateScreens", "") != NULL;
+}
+
+bool SkPdfType1HalftoneDictionary::isTransferFunctionAFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TransferFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isFunction();
+}
+
+SkPdfFunction SkPdfType1HalftoneDictionary::getTransferFunctionAsFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TransferFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFunction();
+}
+
+bool SkPdfType1HalftoneDictionary::isTransferFunctionAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TransferFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfType1HalftoneDictionary::getTransferFunctionAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TransferFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType1HalftoneDictionary::has_TransferFunction() const {
+ return get("TransferFunction", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1HalftoneDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1HalftoneDictionary_autogen.h
new file mode 100644
index 00000000000..5166c932a8a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1HalftoneDictionary_autogen.h
@@ -0,0 +1,549 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType1HalftoneDictionary_DEFINED
+#define SkPdfType1HalftoneDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a type 1 halftone dictionary
+class SkPdfType1HalftoneDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ int64_t HalftoneType(SkPdfNativeDoc* doc);
+ bool has_HalftoneType() const;
+ SkString HalftoneName(SkPdfNativeDoc* doc);
+ bool has_HalftoneName() const;
+ double Frequency(SkPdfNativeDoc* doc);
+ bool has_Frequency() const;
+ double Angle(SkPdfNativeDoc* doc);
+ bool has_Angle() const;
+
+ bool isSpotFunctionAFunction(SkPdfNativeDoc* doc);
+ SkPdfFunction getSpotFunctionAsFunction(SkPdfNativeDoc* doc);
+
+ bool isSpotFunctionAName(SkPdfNativeDoc* doc);
+ SkString getSpotFunctionAsName(SkPdfNativeDoc* doc);
+ bool has_SpotFunction() const;
+ bool AccurateScreens(SkPdfNativeDoc* doc);
+ bool has_AccurateScreens() const;
+
+ bool isTransferFunctionAFunction(SkPdfNativeDoc* doc);
+ SkPdfFunction getTransferFunctionAsFunction(SkPdfNativeDoc* doc);
+
+ bool isTransferFunctionAName(SkPdfNativeDoc* doc);
+ SkString getTransferFunctionAsName(SkPdfNativeDoc* doc);
+ bool has_TransferFunction() const;
+};
+
+#endif // SkPdfType1HalftoneDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1PatternDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1PatternDictionary_autogen.cpp
new file mode 100644
index 00000000000..969d3eb76c7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1PatternDictionary_autogen.cpp
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType1PatternDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfType1PatternDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType1PatternDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+int64_t SkPdfType1PatternDictionary::PatternType(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("PatternType", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType1PatternDictionary::has_PatternType() const {
+ return get("PatternType", "") != NULL;
+}
+
+int64_t SkPdfType1PatternDictionary::PaintType(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("PaintType", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType1PatternDictionary::has_PaintType() const {
+ return get("PaintType", "") != NULL;
+}
+
+int64_t SkPdfType1PatternDictionary::TilingType(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TilingType", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType1PatternDictionary::has_TilingType() const {
+ return get("TilingType", "") != NULL;
+}
+
+SkRect SkPdfType1PatternDictionary::BBox(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BBox", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isRectangle()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->rectangleValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkRect::MakeEmpty();
+}
+
+bool SkPdfType1PatternDictionary::has_BBox() const {
+ return get("BBox", "") != NULL;
+}
+
+double SkPdfType1PatternDictionary::XStep(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("XStep", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType1PatternDictionary::has_XStep() const {
+ return get("XStep", "") != NULL;
+}
+
+double SkPdfType1PatternDictionary::YStep(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("YStep", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType1PatternDictionary::has_YStep() const {
+ return get("YStep", "") != NULL;
+}
+
+SkPdfResourceDictionary* SkPdfType1PatternDictionary::Resources(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Resources", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary() && ((SkPdfResourceDictionary*)ret)->valid()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfResourceDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType1PatternDictionary::has_Resources() const {
+ return get("Resources", "") != NULL;
+}
+
+SkMatrix SkPdfType1PatternDictionary::Matrix(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Matrix", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isMatrix()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->matrixValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkMatrix::I();
+}
+
+bool SkPdfType1PatternDictionary::has_Matrix() const {
+ return get("Matrix", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1PatternDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1PatternDictionary_autogen.h
new file mode 100644
index 00000000000..e58f29bfae6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1PatternDictionary_autogen.h
@@ -0,0 +1,541 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType1PatternDictionary_DEFINED
+#define SkPdfType1PatternDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a type 1 pattern dictionary
+class SkPdfType1PatternDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ int64_t PatternType(SkPdfNativeDoc* doc);
+ bool has_PatternType() const;
+ int64_t PaintType(SkPdfNativeDoc* doc);
+ bool has_PaintType() const;
+ int64_t TilingType(SkPdfNativeDoc* doc);
+ bool has_TilingType() const;
+ SkRect BBox(SkPdfNativeDoc* doc);
+ bool has_BBox() const;
+ double XStep(SkPdfNativeDoc* doc);
+ bool has_XStep() const;
+ double YStep(SkPdfNativeDoc* doc);
+ bool has_YStep() const;
+ SkPdfResourceDictionary* Resources(SkPdfNativeDoc* doc);
+ bool has_Resources() const;
+ SkMatrix Matrix(SkPdfNativeDoc* doc);
+ bool has_Matrix() const;
+};
+
+#endif // SkPdfType1PatternDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1ShadingDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1ShadingDictionary_autogen.cpp
new file mode 100644
index 00000000000..b86a60b7e2f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1ShadingDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType1ShadingDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfType1ShadingDictionary::Domain(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Domain", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType1ShadingDictionary::has_Domain() const {
+ return get("Domain", "") != NULL;
+}
+
+SkPdfArray* SkPdfType1ShadingDictionary::Matrix(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Matrix", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType1ShadingDictionary::has_Matrix() const {
+ return get("Matrix", "") != NULL;
+}
+
+SkPdfFunction SkPdfType1ShadingDictionary::Function(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Function", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkPdfFunction();
+}
+
+bool SkPdfType1ShadingDictionary::has_Function() const {
+ return get("Function", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1ShadingDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1ShadingDictionary_autogen.h
new file mode 100644
index 00000000000..70039e68a54
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType1ShadingDictionary_autogen.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType1ShadingDictionary_DEFINED
+#define SkPdfType1ShadingDictionary_DEFINED
+
+#include "SkPdfShadingDictionary_autogen.h"
+
+// Additional entries specific to a type 1 shading dictionary
+class SkPdfType1ShadingDictionary : public SkPdfShadingDictionary {
+public:
+public:
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return this;}
+
+private:
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* Domain(SkPdfNativeDoc* doc);
+ bool has_Domain() const;
+ SkPdfArray* Matrix(SkPdfNativeDoc* doc);
+ bool has_Matrix() const;
+ SkPdfFunction Function(SkPdfNativeDoc* doc);
+ bool has_Function() const;
+};
+
+#endif // SkPdfType1ShadingDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2FunctionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2FunctionDictionary_autogen.cpp
new file mode 100644
index 00000000000..92502ea49c8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2FunctionDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType2FunctionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfType2FunctionDictionary::C0(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("C0", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType2FunctionDictionary::has_C0() const {
+ return get("C0", "") != NULL;
+}
+
+SkPdfArray* SkPdfType2FunctionDictionary::C1(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("C1", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType2FunctionDictionary::has_C1() const {
+ return get("C1", "") != NULL;
+}
+
+double SkPdfType2FunctionDictionary::N(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("N", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType2FunctionDictionary::has_N() const {
+ return get("N", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2FunctionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2FunctionDictionary_autogen.h
new file mode 100644
index 00000000000..e00494d3978
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2FunctionDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType2FunctionDictionary_DEFINED
+#define SkPdfType2FunctionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a type 2 function dictionary
+class SkPdfType2FunctionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* C0(SkPdfNativeDoc* doc);
+ bool has_C0() const;
+ SkPdfArray* C1(SkPdfNativeDoc* doc);
+ bool has_C1() const;
+ double N(SkPdfNativeDoc* doc);
+ bool has_N() const;
+};
+
+#endif // SkPdfType2FunctionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2PatternDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2PatternDictionary_autogen.cpp
new file mode 100644
index 00000000000..666dc3678f7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2PatternDictionary_autogen.cpp
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType2PatternDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfType2PatternDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfType2PatternDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+int64_t SkPdfType2PatternDictionary::PatternType(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("PatternType", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType2PatternDictionary::has_PatternType() const {
+ return get("PatternType", "") != NULL;
+}
+
+bool SkPdfType2PatternDictionary::isShadingADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Shading", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfType2PatternDictionary::getShadingAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Shading", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType2PatternDictionary::isShadingAStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Shading", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfType2PatternDictionary::getShadingAsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Shading", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType2PatternDictionary::has_Shading() const {
+ return get("Shading", "") != NULL;
+}
+
+SkPdfArray* SkPdfType2PatternDictionary::Matrix(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Matrix", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType2PatternDictionary::has_Matrix() const {
+ return get("Matrix", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfType2PatternDictionary::ExtGState(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ExtGState", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType2PatternDictionary::has_ExtGState() const {
+ return get("ExtGState", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2PatternDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2PatternDictionary_autogen.h
new file mode 100644
index 00000000000..b5aaa42a5bb
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2PatternDictionary_autogen.h
@@ -0,0 +1,538 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType2PatternDictionary_DEFINED
+#define SkPdfType2PatternDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a type 2 pattern dictionary
+class SkPdfType2PatternDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ int64_t PatternType(SkPdfNativeDoc* doc);
+ bool has_PatternType() const;
+
+ bool isShadingADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getShadingAsDictionary(SkPdfNativeDoc* doc);
+
+ bool isShadingAStream(SkPdfNativeDoc* doc);
+ SkPdfStream* getShadingAsStream(SkPdfNativeDoc* doc);
+ bool has_Shading() const;
+ SkPdfArray* Matrix(SkPdfNativeDoc* doc);
+ bool has_Matrix() const;
+ SkPdfDictionary* ExtGState(SkPdfNativeDoc* doc);
+ bool has_ExtGState() const;
+};
+
+#endif // SkPdfType2PatternDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2ShadingDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2ShadingDictionary_autogen.cpp
new file mode 100644
index 00000000000..0a2da8c2c73
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2ShadingDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType2ShadingDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfType2ShadingDictionary::Coords(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Coords", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType2ShadingDictionary::has_Coords() const {
+ return get("Coords", "") != NULL;
+}
+
+SkPdfArray* SkPdfType2ShadingDictionary::Domain(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Domain", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType2ShadingDictionary::has_Domain() const {
+ return get("Domain", "") != NULL;
+}
+
+SkPdfFunction SkPdfType2ShadingDictionary::Function(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Function", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkPdfFunction();
+}
+
+bool SkPdfType2ShadingDictionary::has_Function() const {
+ return get("Function", "") != NULL;
+}
+
+SkPdfArray* SkPdfType2ShadingDictionary::Extend(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Extend", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType2ShadingDictionary::has_Extend() const {
+ return get("Extend", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2ShadingDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2ShadingDictionary_autogen.h
new file mode 100644
index 00000000000..9feff350482
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType2ShadingDictionary_autogen.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType2ShadingDictionary_DEFINED
+#define SkPdfType2ShadingDictionary_DEFINED
+
+#include "SkPdfShadingDictionary_autogen.h"
+
+// Additional entries specific to a type 2 shading dictionary
+class SkPdfType2ShadingDictionary : public SkPdfShadingDictionary {
+public:
+public:
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return this;}
+
+private:
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* Coords(SkPdfNativeDoc* doc);
+ bool has_Coords() const;
+ SkPdfArray* Domain(SkPdfNativeDoc* doc);
+ bool has_Domain() const;
+ SkPdfFunction Function(SkPdfNativeDoc* doc);
+ bool has_Function() const;
+ SkPdfArray* Extend(SkPdfNativeDoc* doc);
+ bool has_Extend() const;
+};
+
+#endif // SkPdfType2ShadingDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3FontDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3FontDictionary_autogen.cpp
new file mode 100644
index 00000000000..a16af18aaed
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3FontDictionary_autogen.cpp
@@ -0,0 +1,173 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType3FontDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfType3FontDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfType3FontDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfType3FontDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfType3FontDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfType3FontDictionary::Name(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Name", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType3FontDictionary::has_Name() const {
+ return get("Name", "") != NULL;
+}
+
+SkRect SkPdfType3FontDictionary::FontBBox(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FontBBox", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isRectangle()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->rectangleValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkRect::MakeEmpty();
+}
+
+bool SkPdfType3FontDictionary::has_FontBBox() const {
+ return get("FontBBox", "") != NULL;
+}
+
+SkMatrix SkPdfType3FontDictionary::FontMatrix(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FontMatrix", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isMatrix()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->matrixValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkMatrix::I();
+}
+
+bool SkPdfType3FontDictionary::has_FontMatrix() const {
+ return get("FontMatrix", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfType3FontDictionary::CharProcs(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CharProcs", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType3FontDictionary::has_CharProcs() const {
+ return get("CharProcs", "") != NULL;
+}
+
+bool SkPdfType3FontDictionary::isEncodingAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Encoding", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfType3FontDictionary::getEncodingAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Encoding", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfType3FontDictionary::isEncodingAEncodingdictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Encoding", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary() && ((SkPdfEncodingDictionary*)ret)->valid();
+}
+
+SkPdfEncodingDictionary* SkPdfType3FontDictionary::getEncodingAsEncodingdictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Encoding", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary() && ((SkPdfEncodingDictionary*)ret)->valid()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfEncodingDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType3FontDictionary::has_Encoding() const {
+ return get("Encoding", "") != NULL;
+}
+
+int64_t SkPdfType3FontDictionary::FirstChar(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FirstChar", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType3FontDictionary::has_FirstChar() const {
+ return get("FirstChar", "") != NULL;
+}
+
+int64_t SkPdfType3FontDictionary::LastChar(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("LastChar", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType3FontDictionary::has_LastChar() const {
+ return get("LastChar", "") != NULL;
+}
+
+SkPdfArray* SkPdfType3FontDictionary::Widths(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Widths", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType3FontDictionary::has_Widths() const {
+ return get("Widths", "") != NULL;
+}
+
+SkPdfResourceDictionary* SkPdfType3FontDictionary::Resources(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Resources", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary() && ((SkPdfResourceDictionary*)ret)->valid()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfResourceDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType3FontDictionary::has_Resources() const {
+ return get("Resources", "") != NULL;
+}
+
+SkPdfStream* SkPdfType3FontDictionary::ToUnicode(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ToUnicode", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType3FontDictionary::has_ToUnicode() const {
+ return get("ToUnicode", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3FontDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3FontDictionary_autogen.h
new file mode 100644
index 00000000000..797249a2fd1
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3FontDictionary_autogen.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType3FontDictionary_DEFINED
+#define SkPdfType3FontDictionary_DEFINED
+
+#include "SkPdfType1FontDictionary_autogen.h"
+
+// Entries in a Type 3 font dictionary
+class SkPdfType3FontDictionary : public SkPdfType1FontDictionary {
+public:
+public:
+ SkPdfType3FontDictionary* asType3FontDictionary() {return this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return this;}
+
+private:
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString Name(SkPdfNativeDoc* doc);
+ bool has_Name() const;
+ SkRect FontBBox(SkPdfNativeDoc* doc);
+ bool has_FontBBox() const;
+ SkMatrix FontMatrix(SkPdfNativeDoc* doc);
+ bool has_FontMatrix() const;
+ SkPdfDictionary* CharProcs(SkPdfNativeDoc* doc);
+ bool has_CharProcs() const;
+
+ bool isEncodingAName(SkPdfNativeDoc* doc);
+ SkString getEncodingAsName(SkPdfNativeDoc* doc);
+
+ bool isEncodingAEncodingdictionary(SkPdfNativeDoc* doc);
+ SkPdfEncodingDictionary* getEncodingAsEncodingdictionary(SkPdfNativeDoc* doc);
+ bool has_Encoding() const;
+ int64_t FirstChar(SkPdfNativeDoc* doc);
+ bool has_FirstChar() const;
+ int64_t LastChar(SkPdfNativeDoc* doc);
+ bool has_LastChar() const;
+ SkPdfArray* Widths(SkPdfNativeDoc* doc);
+ bool has_Widths() const;
+ SkPdfResourceDictionary* Resources(SkPdfNativeDoc* doc);
+ bool has_Resources() const;
+ SkPdfStream* ToUnicode(SkPdfNativeDoc* doc);
+ bool has_ToUnicode() const;
+};
+
+#endif // SkPdfType3FontDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3FunctionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3FunctionDictionary_autogen.cpp
new file mode 100644
index 00000000000..5a0e66487d5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3FunctionDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType3FunctionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfType3FunctionDictionary::Functions(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Functions", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType3FunctionDictionary::has_Functions() const {
+ return get("Functions", "") != NULL;
+}
+
+SkPdfArray* SkPdfType3FunctionDictionary::Bounds(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Bounds", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType3FunctionDictionary::has_Bounds() const {
+ return get("Bounds", "") != NULL;
+}
+
+SkPdfArray* SkPdfType3FunctionDictionary::Encode(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Encode", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType3FunctionDictionary::has_Encode() const {
+ return get("Encode", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3FunctionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3FunctionDictionary_autogen.h
new file mode 100644
index 00000000000..ed5da2b2b34
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3FunctionDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType3FunctionDictionary_DEFINED
+#define SkPdfType3FunctionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a type 3 function dictionary
+class SkPdfType3FunctionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* Functions(SkPdfNativeDoc* doc);
+ bool has_Functions() const;
+ SkPdfArray* Bounds(SkPdfNativeDoc* doc);
+ bool has_Bounds() const;
+ SkPdfArray* Encode(SkPdfNativeDoc* doc);
+ bool has_Encode() const;
+};
+
+#endif // SkPdfType3FunctionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3ShadingDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3ShadingDictionary_autogen.cpp
new file mode 100644
index 00000000000..129b9a9b248
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3ShadingDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType3ShadingDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfArray* SkPdfType3ShadingDictionary::Coords(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Coords", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType3ShadingDictionary::has_Coords() const {
+ return get("Coords", "") != NULL;
+}
+
+SkPdfArray* SkPdfType3ShadingDictionary::Domain(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Domain", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType3ShadingDictionary::has_Domain() const {
+ return get("Domain", "") != NULL;
+}
+
+SkPdfFunction SkPdfType3ShadingDictionary::Function(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Function", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkPdfFunction();
+}
+
+bool SkPdfType3ShadingDictionary::has_Function() const {
+ return get("Function", "") != NULL;
+}
+
+SkPdfArray* SkPdfType3ShadingDictionary::Extend(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Extend", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType3ShadingDictionary::has_Extend() const {
+ return get("Extend", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3ShadingDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3ShadingDictionary_autogen.h
new file mode 100644
index 00000000000..5ff6e456c23
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType3ShadingDictionary_autogen.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType3ShadingDictionary_DEFINED
+#define SkPdfType3ShadingDictionary_DEFINED
+
+#include "SkPdfShadingDictionary_autogen.h"
+
+// Additional entries specific to a type 3 shading dictionary
+class SkPdfType3ShadingDictionary : public SkPdfShadingDictionary {
+public:
+public:
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return this;}
+
+private:
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfArray* Coords(SkPdfNativeDoc* doc);
+ bool has_Coords() const;
+ SkPdfArray* Domain(SkPdfNativeDoc* doc);
+ bool has_Domain() const;
+ SkPdfFunction Function(SkPdfNativeDoc* doc);
+ bool has_Function() const;
+ SkPdfArray* Extend(SkPdfNativeDoc* doc);
+ bool has_Extend() const;
+};
+
+#endif // SkPdfType3ShadingDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType4ShadingDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType4ShadingDictionary_autogen.cpp
new file mode 100644
index 00000000000..3da811a8a18
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType4ShadingDictionary_autogen.cpp
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType4ShadingDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfType4ShadingDictionary::BitsPerCoordinate(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BitsPerCoordinate", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType4ShadingDictionary::has_BitsPerCoordinate() const {
+ return get("BitsPerCoordinate", "") != NULL;
+}
+
+int64_t SkPdfType4ShadingDictionary::BitsPerComponent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BitsPerComponent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType4ShadingDictionary::has_BitsPerComponent() const {
+ return get("BitsPerComponent", "") != NULL;
+}
+
+int64_t SkPdfType4ShadingDictionary::BitsPerFlag(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BitsPerFlag", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType4ShadingDictionary::has_BitsPerFlag() const {
+ return get("BitsPerFlag", "") != NULL;
+}
+
+SkRect SkPdfType4ShadingDictionary::Decode(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Decode", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isRectangle()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->rectangleValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkRect::MakeEmpty();
+}
+
+bool SkPdfType4ShadingDictionary::has_Decode() const {
+ return get("Decode", "") != NULL;
+}
+
+SkPdfFunction SkPdfType4ShadingDictionary::Function(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Function", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFunction();
+}
+
+bool SkPdfType4ShadingDictionary::has_Function() const {
+ return get("Function", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType4ShadingDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType4ShadingDictionary_autogen.h
new file mode 100644
index 00000000000..a1056510d0f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType4ShadingDictionary_autogen.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType4ShadingDictionary_DEFINED
+#define SkPdfType4ShadingDictionary_DEFINED
+
+#include "SkPdfShadingDictionary_autogen.h"
+
+// Additional entries specific to a type 4 shading dictionary
+class SkPdfType4ShadingDictionary : public SkPdfShadingDictionary {
+public:
+public:
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return this;}
+
+private:
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t BitsPerCoordinate(SkPdfNativeDoc* doc);
+ bool has_BitsPerCoordinate() const;
+ int64_t BitsPerComponent(SkPdfNativeDoc* doc);
+ bool has_BitsPerComponent() const;
+ int64_t BitsPerFlag(SkPdfNativeDoc* doc);
+ bool has_BitsPerFlag() const;
+ SkRect Decode(SkPdfNativeDoc* doc);
+ bool has_Decode() const;
+ SkPdfFunction Function(SkPdfNativeDoc* doc);
+ bool has_Function() const;
+};
+
+#endif // SkPdfType4ShadingDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType5HalftoneDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType5HalftoneDictionary_autogen.cpp
new file mode 100644
index 00000000000..9aff8a04d92
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType5HalftoneDictionary_autogen.cpp
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType5HalftoneDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfType5HalftoneDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType5HalftoneDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+double SkPdfType5HalftoneDictionary::HalftoneType(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HalftoneType", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType5HalftoneDictionary::has_HalftoneType() const {
+ return get("HalftoneType", "") != NULL;
+}
+
+SkString SkPdfType5HalftoneDictionary::HalftoneName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HalftoneName", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType5HalftoneDictionary::has_HalftoneName() const {
+ return get("HalftoneName", "") != NULL;
+}
+/*
+
+bool SkPdfType5HalftoneDictionary::is[any_colorant_name]ADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("[any_colorant_name]", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfType5HalftoneDictionary::get[any_colorant_name]AsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("[any_colorant_name]", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType5HalftoneDictionary::is[any_colorant_name]AStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("[any_colorant_name]", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfType5HalftoneDictionary::get[any_colorant_name]AsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("[any_colorant_name]", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfType5HalftoneDictionary::has_[any_colorant_name]() const {
+ return get("[any_colorant_name]", "") != NULL;
+}
+*/
+
+bool SkPdfType5HalftoneDictionary::isDefaultADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Default", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfType5HalftoneDictionary::getDefaultAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Default", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType5HalftoneDictionary::isDefaultAStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Default", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfType5HalftoneDictionary::getDefaultAsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Default", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType5HalftoneDictionary::has_Default() const {
+ return get("Default", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType5HalftoneDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType5HalftoneDictionary_autogen.h
new file mode 100644
index 00000000000..e19d5a190ed
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType5HalftoneDictionary_autogen.h
@@ -0,0 +1,545 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType5HalftoneDictionary_DEFINED
+#define SkPdfType5HalftoneDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a type 5 halftone dictionary
+class SkPdfType5HalftoneDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ double HalftoneType(SkPdfNativeDoc* doc);
+ bool has_HalftoneType() const;
+ SkString HalftoneName(SkPdfNativeDoc* doc);
+ bool has_HalftoneName() const;
+/*
+
+ bool is[any_colorant_name]ADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* get[any_colorant_name]AsDictionary(SkPdfNativeDoc* doc);
+
+ bool is[any_colorant_name]AStream(SkPdfNativeDoc* doc);
+ SkPdfStream* get[any_colorant_name]AsStream(SkPdfNativeDoc* doc);
+ bool has_[any_colorant_name]() const;
+*/
+
+ bool isDefaultADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getDefaultAsDictionary(SkPdfNativeDoc* doc);
+
+ bool isDefaultAStream(SkPdfNativeDoc* doc);
+ SkPdfStream* getDefaultAsStream(SkPdfNativeDoc* doc);
+ bool has_Default() const;
+};
+
+#endif // SkPdfType5HalftoneDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType5ShadingDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType5ShadingDictionary_autogen.cpp
new file mode 100644
index 00000000000..b77085783b6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType5ShadingDictionary_autogen.cpp
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType5ShadingDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfType5ShadingDictionary::BitsPerCoordinate(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BitsPerCoordinate", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType5ShadingDictionary::has_BitsPerCoordinate() const {
+ return get("BitsPerCoordinate", "") != NULL;
+}
+
+int64_t SkPdfType5ShadingDictionary::BitsPerComponent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BitsPerComponent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType5ShadingDictionary::has_BitsPerComponent() const {
+ return get("BitsPerComponent", "") != NULL;
+}
+
+int64_t SkPdfType5ShadingDictionary::VerticesPerRow(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("VerticesPerRow", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType5ShadingDictionary::has_VerticesPerRow() const {
+ return get("VerticesPerRow", "") != NULL;
+}
+
+SkPdfArray* SkPdfType5ShadingDictionary::Decode(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Decode", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType5ShadingDictionary::has_Decode() const {
+ return get("Decode", "") != NULL;
+}
+
+SkPdfFunction SkPdfType5ShadingDictionary::Function(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Function", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFunction();
+}
+
+bool SkPdfType5ShadingDictionary::has_Function() const {
+ return get("Function", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType5ShadingDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType5ShadingDictionary_autogen.h
new file mode 100644
index 00000000000..07151d37a12
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType5ShadingDictionary_autogen.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType5ShadingDictionary_DEFINED
+#define SkPdfType5ShadingDictionary_DEFINED
+
+#include "SkPdfShadingDictionary_autogen.h"
+
+// Additional entries specific to a type 5 shading dictionary
+class SkPdfType5ShadingDictionary : public SkPdfShadingDictionary {
+public:
+public:
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return this;}
+
+private:
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t BitsPerCoordinate(SkPdfNativeDoc* doc);
+ bool has_BitsPerCoordinate() const;
+ int64_t BitsPerComponent(SkPdfNativeDoc* doc);
+ bool has_BitsPerComponent() const;
+ int64_t VerticesPerRow(SkPdfNativeDoc* doc);
+ bool has_VerticesPerRow() const;
+ SkPdfArray* Decode(SkPdfNativeDoc* doc);
+ bool has_Decode() const;
+ SkPdfFunction Function(SkPdfNativeDoc* doc);
+ bool has_Function() const;
+};
+
+#endif // SkPdfType5ShadingDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType6HalftoneDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType6HalftoneDictionary_autogen.cpp
new file mode 100644
index 00000000000..6a851a14515
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType6HalftoneDictionary_autogen.cpp
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType6HalftoneDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfType6HalftoneDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType6HalftoneDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+int64_t SkPdfType6HalftoneDictionary::HalftoneType(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HalftoneType", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType6HalftoneDictionary::has_HalftoneType() const {
+ return get("HalftoneType", "") != NULL;
+}
+
+SkString SkPdfType6HalftoneDictionary::HalftoneName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HalftoneName", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType6HalftoneDictionary::has_HalftoneName() const {
+ return get("HalftoneName", "") != NULL;
+}
+
+int64_t SkPdfType6HalftoneDictionary::Width(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Width", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType6HalftoneDictionary::has_Width() const {
+ return get("Width", "") != NULL;
+}
+
+int64_t SkPdfType6HalftoneDictionary::Height(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Height", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType6HalftoneDictionary::has_Height() const {
+ return get("Height", "") != NULL;
+}
+
+bool SkPdfType6HalftoneDictionary::isTransferFunctionAFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TransferFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isFunction();
+}
+
+SkPdfFunction SkPdfType6HalftoneDictionary::getTransferFunctionAsFunction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TransferFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFunction();
+}
+
+bool SkPdfType6HalftoneDictionary::isTransferFunctionAName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TransferFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isName();
+}
+
+SkString SkPdfType6HalftoneDictionary::getTransferFunctionAsName(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TransferFunction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfType6HalftoneDictionary::has_TransferFunction() const {
+ return get("TransferFunction", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType6HalftoneDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType6HalftoneDictionary_autogen.h
new file mode 100644
index 00000000000..e7365a7cf22
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType6HalftoneDictionary_autogen.h
@@ -0,0 +1,540 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType6HalftoneDictionary_DEFINED
+#define SkPdfType6HalftoneDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a type 6 halftone dictionary
+class SkPdfType6HalftoneDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ int64_t HalftoneType(SkPdfNativeDoc* doc);
+ bool has_HalftoneType() const;
+ SkString HalftoneName(SkPdfNativeDoc* doc);
+ bool has_HalftoneName() const;
+ int64_t Width(SkPdfNativeDoc* doc);
+ bool has_Width() const;
+ int64_t Height(SkPdfNativeDoc* doc);
+ bool has_Height() const;
+
+ bool isTransferFunctionAFunction(SkPdfNativeDoc* doc);
+ SkPdfFunction getTransferFunctionAsFunction(SkPdfNativeDoc* doc);
+
+ bool isTransferFunctionAName(SkPdfNativeDoc* doc);
+ SkString getTransferFunctionAsName(SkPdfNativeDoc* doc);
+ bool has_TransferFunction() const;
+};
+
+#endif // SkPdfType6HalftoneDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType6ShadingDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType6ShadingDictionary_autogen.cpp
new file mode 100644
index 00000000000..a3293de3869
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType6ShadingDictionary_autogen.cpp
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfType6ShadingDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+int64_t SkPdfType6ShadingDictionary::BitsPerCoordinate(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BitsPerCoordinate", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType6ShadingDictionary::has_BitsPerCoordinate() const {
+ return get("BitsPerCoordinate", "") != NULL;
+}
+
+int64_t SkPdfType6ShadingDictionary::BitsPerComponent(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BitsPerComponent", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType6ShadingDictionary::has_BitsPerComponent() const {
+ return get("BitsPerComponent", "") != NULL;
+}
+
+int64_t SkPdfType6ShadingDictionary::BitsPerFlag(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("BitsPerFlag", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfType6ShadingDictionary::has_BitsPerFlag() const {
+ return get("BitsPerFlag", "") != NULL;
+}
+
+SkPdfArray* SkPdfType6ShadingDictionary::Decode(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Decode", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfType6ShadingDictionary::has_Decode() const {
+ return get("Decode", "") != NULL;
+}
+
+SkPdfFunction SkPdfType6ShadingDictionary::Function(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Function", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isFunction()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->functionValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfFunction();
+}
+
+bool SkPdfType6ShadingDictionary::has_Function() const {
+ return get("Function", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType6ShadingDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType6ShadingDictionary_autogen.h
new file mode 100644
index 00000000000..d5a38b12d90
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfType6ShadingDictionary_autogen.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfType6ShadingDictionary_DEFINED
+#define SkPdfType6ShadingDictionary_DEFINED
+
+#include "SkPdfShadingDictionary_autogen.h"
+
+// Additional entries specific to a type 6 shading dictionary
+class SkPdfType6ShadingDictionary : public SkPdfShadingDictionary {
+public:
+public:
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return this;}
+
+private:
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ int64_t BitsPerCoordinate(SkPdfNativeDoc* doc);
+ bool has_BitsPerCoordinate() const;
+ int64_t BitsPerComponent(SkPdfNativeDoc* doc);
+ bool has_BitsPerComponent() const;
+ int64_t BitsPerFlag(SkPdfNativeDoc* doc);
+ bool has_BitsPerFlag() const;
+ SkPdfArray* Decode(SkPdfNativeDoc* doc);
+ bool has_Decode() const;
+ SkPdfFunction Function(SkPdfNativeDoc* doc);
+ bool has_Function() const;
+};
+
+#endif // SkPdfType6ShadingDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURIActionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURIActionDictionary_autogen.cpp
new file mode 100644
index 00000000000..8fa4a379632
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURIActionDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfURIActionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfURIActionDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfURIActionDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkString SkPdfURIActionDictionary::URI(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("URI", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfURIActionDictionary::has_URI() const {
+ return get("URI", "") != NULL;
+}
+
+bool SkPdfURIActionDictionary::IsMap(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("IsMap", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfURIActionDictionary::has_IsMap() const {
+ return get("IsMap", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURIActionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURIActionDictionary_autogen.h
new file mode 100644
index 00000000000..a1c3087535c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURIActionDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfURIActionDictionary_DEFINED
+#define SkPdfURIActionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a URI action
+class SkPdfURIActionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfURIActionDictionary* asURIActionDictionary() {return this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkString URI(SkPdfNativeDoc* doc);
+ bool has_URI() const;
+ bool IsMap(SkPdfNativeDoc* doc);
+ bool has_IsMap() const;
+};
+
+#endif // SkPdfURIActionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURIDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURIDictionary_autogen.cpp
new file mode 100644
index 00000000000..14b3f46678c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURIDictionary_autogen.cpp
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfURIDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfURIDictionary::Base(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Base", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfURIDictionary::has_Base() const {
+ return get("Base", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURIDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURIDictionary_autogen.h
new file mode 100644
index 00000000000..c3a87acba39
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURIDictionary_autogen.h
@@ -0,0 +1,525 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfURIDictionary_DEFINED
+#define SkPdfURIDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entry in a URI dictionary
+class SkPdfURIDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfURIDictionary* asURIDictionary() {return this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Base(SkPdfNativeDoc* doc);
+ bool has_Base() const;
+};
+
+#endif // SkPdfURIDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURLAliasDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURLAliasDictionary_autogen.cpp
new file mode 100644
index 00000000000..b05b143a85c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURLAliasDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfURLAliasDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfURLAliasDictionary::U(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("U", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfURLAliasDictionary::has_U() const {
+ return get("U", "") != NULL;
+}
+
+SkPdfArray* SkPdfURLAliasDictionary::C(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("C", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfURLAliasDictionary::has_C() const {
+ return get("C", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURLAliasDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURLAliasDictionary_autogen.h
new file mode 100644
index 00000000000..97da9dbe2d2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfURLAliasDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfURLAliasDictionary_DEFINED
+#define SkPdfURLAliasDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a URL alias dictionary
+class SkPdfURLAliasDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString U(SkPdfNativeDoc* doc);
+ bool has_U() const;
+ SkPdfArray* C(SkPdfNativeDoc* doc);
+ bool has_C() const;
+};
+
+#endif // SkPdfURLAliasDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfVariableTextFieldDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfVariableTextFieldDictionary_autogen.cpp
new file mode 100644
index 00000000000..dcb83730168
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfVariableTextFieldDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfVariableTextFieldDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfDictionary* SkPdfVariableTextFieldDictionary::DR(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DR", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfVariableTextFieldDictionary::has_DR() const {
+ return get("DR", "") != NULL;
+}
+
+SkString SkPdfVariableTextFieldDictionary::DA(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DA", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfVariableTextFieldDictionary::has_DA() const {
+ return get("DA", "") != NULL;
+}
+
+int64_t SkPdfVariableTextFieldDictionary::Q(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Q", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfVariableTextFieldDictionary::has_Q() const {
+ return get("Q", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfVariableTextFieldDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfVariableTextFieldDictionary_autogen.h
new file mode 100644
index 00000000000..cf6414b709e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfVariableTextFieldDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfVariableTextFieldDictionary_DEFINED
+#define SkPdfVariableTextFieldDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries common to all fields containing variable text
+class SkPdfVariableTextFieldDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfDictionary* DR(SkPdfNativeDoc* doc);
+ bool has_DR() const;
+ SkString DA(SkPdfNativeDoc* doc);
+ bool has_DA() const;
+ int64_t Q(SkPdfNativeDoc* doc);
+ bool has_Q() const;
+};
+
+#endif // SkPdfVariableTextFieldDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfViewerPreferencesDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfViewerPreferencesDictionary_autogen.cpp
new file mode 100644
index 00000000000..2537202e3b9
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfViewerPreferencesDictionary_autogen.cpp
@@ -0,0 +1,153 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfViewerPreferencesDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+bool SkPdfViewerPreferencesDictionary::HideToolbar(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HideToolbar", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfViewerPreferencesDictionary::has_HideToolbar() const {
+ return get("HideToolbar", "") != NULL;
+}
+
+bool SkPdfViewerPreferencesDictionary::HideMenubar(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HideMenubar", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfViewerPreferencesDictionary::has_HideMenubar() const {
+ return get("HideMenubar", "") != NULL;
+}
+
+bool SkPdfViewerPreferencesDictionary::HideWindowUI(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("HideWindowUI", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfViewerPreferencesDictionary::has_HideWindowUI() const {
+ return get("HideWindowUI", "") != NULL;
+}
+
+bool SkPdfViewerPreferencesDictionary::FitWindow(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("FitWindow", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfViewerPreferencesDictionary::has_FitWindow() const {
+ return get("FitWindow", "") != NULL;
+}
+
+bool SkPdfViewerPreferencesDictionary::CenterWindow(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CenterWindow", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfViewerPreferencesDictionary::has_CenterWindow() const {
+ return get("CenterWindow", "") != NULL;
+}
+
+bool SkPdfViewerPreferencesDictionary::DisplayDocTitle(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("DisplayDocTitle", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isBoolean()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->boolValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return false;
+}
+
+bool SkPdfViewerPreferencesDictionary::has_DisplayDocTitle() const {
+ return get("DisplayDocTitle", "") != NULL;
+}
+
+SkString SkPdfViewerPreferencesDictionary::NonFullScreenPageMode(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("NonFullScreenPageMode", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfViewerPreferencesDictionary::has_NonFullScreenPageMode() const {
+ return get("NonFullScreenPageMode", "") != NULL;
+}
+
+SkString SkPdfViewerPreferencesDictionary::Direction(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Direction", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfViewerPreferencesDictionary::has_Direction() const {
+ return get("Direction", "") != NULL;
+}
+
+SkString SkPdfViewerPreferencesDictionary::ViewArea(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ViewArea", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfViewerPreferencesDictionary::has_ViewArea() const {
+ return get("ViewArea", "") != NULL;
+}
+
+SkString SkPdfViewerPreferencesDictionary::ViewClip(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ViewClip", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfViewerPreferencesDictionary::has_ViewClip() const {
+ return get("ViewClip", "") != NULL;
+}
+
+SkString SkPdfViewerPreferencesDictionary::PrintArea(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("PrintArea", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfViewerPreferencesDictionary::has_PrintArea() const {
+ return get("PrintArea", "") != NULL;
+}
+
+SkString SkPdfViewerPreferencesDictionary::PrintClip(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("PrintClip", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfViewerPreferencesDictionary::has_PrintClip() const {
+ return get("PrintClip", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfViewerPreferencesDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfViewerPreferencesDictionary_autogen.h
new file mode 100644
index 00000000000..79cba5936c3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfViewerPreferencesDictionary_autogen.h
@@ -0,0 +1,547 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfViewerPreferencesDictionary_DEFINED
+#define SkPdfViewerPreferencesDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a viewer preferences dictionary
+class SkPdfViewerPreferencesDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ bool HideToolbar(SkPdfNativeDoc* doc);
+ bool has_HideToolbar() const;
+ bool HideMenubar(SkPdfNativeDoc* doc);
+ bool has_HideMenubar() const;
+ bool HideWindowUI(SkPdfNativeDoc* doc);
+ bool has_HideWindowUI() const;
+ bool FitWindow(SkPdfNativeDoc* doc);
+ bool has_FitWindow() const;
+ bool CenterWindow(SkPdfNativeDoc* doc);
+ bool has_CenterWindow() const;
+ bool DisplayDocTitle(SkPdfNativeDoc* doc);
+ bool has_DisplayDocTitle() const;
+ SkString NonFullScreenPageMode(SkPdfNativeDoc* doc);
+ bool has_NonFullScreenPageMode() const;
+ SkString Direction(SkPdfNativeDoc* doc);
+ bool has_Direction() const;
+ SkString ViewArea(SkPdfNativeDoc* doc);
+ bool has_ViewArea() const;
+ SkString ViewClip(SkPdfNativeDoc* doc);
+ bool has_ViewClip() const;
+ SkString PrintArea(SkPdfNativeDoc* doc);
+ bool has_PrintArea() const;
+ SkString PrintClip(SkPdfNativeDoc* doc);
+ bool has_PrintClip() const;
+};
+
+#endif // SkPdfViewerPreferencesDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureCommandDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureCommandDictionary_autogen.cpp
new file mode 100644
index 00000000000..acc8ea8114a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureCommandDictionary_autogen.cpp
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfWebCaptureCommandDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfWebCaptureCommandDictionary::URL(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("URL", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfWebCaptureCommandDictionary::has_URL() const {
+ return get("URL", "") != NULL;
+}
+
+int64_t SkPdfWebCaptureCommandDictionary::L(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("L", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfWebCaptureCommandDictionary::has_L() const {
+ return get("L", "") != NULL;
+}
+
+int64_t SkPdfWebCaptureCommandDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return 0;
+}
+
+bool SkPdfWebCaptureCommandDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
+
+bool SkPdfWebCaptureCommandDictionary::isPAString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("P", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isAnyString();
+}
+
+SkString SkPdfWebCaptureCommandDictionary::getPAsString(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("P", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfWebCaptureCommandDictionary::isPAStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("P", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->hasStream();
+}
+
+SkPdfStream* SkPdfWebCaptureCommandDictionary::getPAsStream(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("P", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->hasStream()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->getStream();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfWebCaptureCommandDictionary::has_P() const {
+ return get("P", "") != NULL;
+}
+
+SkString SkPdfWebCaptureCommandDictionary::CT(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CT", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfWebCaptureCommandDictionary::has_CT() const {
+ return get("CT", "") != NULL;
+}
+
+SkString SkPdfWebCaptureCommandDictionary::H(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("H", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfWebCaptureCommandDictionary::has_H() const {
+ return get("H", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfWebCaptureCommandDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfWebCaptureCommandDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureCommandDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureCommandDictionary_autogen.h
new file mode 100644
index 00000000000..8b27409805e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureCommandDictionary_autogen.h
@@ -0,0 +1,542 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfWebCaptureCommandDictionary_DEFINED
+#define SkPdfWebCaptureCommandDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a Web Capture command dictionary
+class SkPdfWebCaptureCommandDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString URL(SkPdfNativeDoc* doc);
+ bool has_URL() const;
+ int64_t L(SkPdfNativeDoc* doc);
+ bool has_L() const;
+ int64_t F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+
+ bool isPAString(SkPdfNativeDoc* doc);
+ SkString getPAsString(SkPdfNativeDoc* doc);
+
+ bool isPAStream(SkPdfNativeDoc* doc);
+ SkPdfStream* getPAsStream(SkPdfNativeDoc* doc);
+ bool has_P() const;
+ SkString CT(SkPdfNativeDoc* doc);
+ bool has_CT() const;
+ SkString H(SkPdfNativeDoc* doc);
+ bool has_H() const;
+ SkPdfDictionary* S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+};
+
+#endif // SkPdfWebCaptureCommandDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureCommandSettingsDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureCommandSettingsDictionary_autogen.cpp
new file mode 100644
index 00000000000..9076a973c66
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureCommandSettingsDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfWebCaptureCommandSettingsDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkPdfDictionary* SkPdfWebCaptureCommandSettingsDictionary::G(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("G", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfWebCaptureCommandSettingsDictionary::has_G() const {
+ return get("G", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfWebCaptureCommandSettingsDictionary::C(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("C", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfWebCaptureCommandSettingsDictionary::has_C() const {
+ return get("C", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureCommandSettingsDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureCommandSettingsDictionary_autogen.h
new file mode 100644
index 00000000000..1e65963e14f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureCommandSettingsDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfWebCaptureCommandSettingsDictionary_DEFINED
+#define SkPdfWebCaptureCommandSettingsDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a Web Capture command settings dictionary
+class SkPdfWebCaptureCommandSettingsDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkPdfDictionary* G(SkPdfNativeDoc* doc);
+ bool has_G() const;
+ SkPdfDictionary* C(SkPdfNativeDoc* doc);
+ bool has_C() const;
+};
+
+#endif // SkPdfWebCaptureCommandSettingsDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureDictionary_autogen.cpp
new file mode 100644
index 00000000000..6ec8c052f70
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureDictionary_autogen.cpp
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfWebCaptureDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfWebCaptureDictionary::Type(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Type", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfWebCaptureDictionary::has_Type() const {
+ return get("Type", "") != NULL;
+}
+
+SkString SkPdfWebCaptureDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfWebCaptureDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkString SkPdfWebCaptureDictionary::ID(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("ID", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfWebCaptureDictionary::has_ID() const {
+ return get("ID", "") != NULL;
+}
+
+SkPdfArray* SkPdfWebCaptureDictionary::O(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("O", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfWebCaptureDictionary::has_O() const {
+ return get("O", "") != NULL;
+}
+
+bool SkPdfWebCaptureDictionary::isSIADictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SI", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isDictionary();
+}
+
+SkPdfDictionary* SkPdfWebCaptureDictionary::getSIAsDictionary(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SI", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfWebCaptureDictionary::isSIAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SI", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfWebCaptureDictionary::getSIAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("SI", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfWebCaptureDictionary::has_SI() const {
+ return get("SI", "") != NULL;
+}
+
+SkString SkPdfWebCaptureDictionary::CT(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("CT", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfWebCaptureDictionary::has_CT() const {
+ return get("CT", "") != NULL;
+}
+
+SkPdfDate SkPdfWebCaptureDictionary::TS(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TS", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDate()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->dateValue();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkPdfDate();
+}
+
+bool SkPdfWebCaptureDictionary::has_TS() const {
+ return get("TS", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureDictionary_autogen.h
new file mode 100644
index 00000000000..a1081531cce
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureDictionary_autogen.h
@@ -0,0 +1,542 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfWebCaptureDictionary_DEFINED
+#define SkPdfWebCaptureDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries common to all Web Capture content sets
+class SkPdfWebCaptureDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Type(SkPdfNativeDoc* doc);
+ bool has_Type() const;
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkString ID(SkPdfNativeDoc* doc);
+ bool has_ID() const;
+ SkPdfArray* O(SkPdfNativeDoc* doc);
+ bool has_O() const;
+
+ bool isSIADictionary(SkPdfNativeDoc* doc);
+ SkPdfDictionary* getSIAsDictionary(SkPdfNativeDoc* doc);
+
+ bool isSIAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getSIAsArray(SkPdfNativeDoc* doc);
+ bool has_SI() const;
+ SkString CT(SkPdfNativeDoc* doc);
+ bool has_CT() const;
+ SkPdfDate TS(SkPdfNativeDoc* doc);
+ bool has_TS() const;
+};
+
+#endif // SkPdfWebCaptureDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureImageSetDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureImageSetDictionary_autogen.cpp
new file mode 100644
index 00000000000..3daadfbd770
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureImageSetDictionary_autogen.cpp
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfWebCaptureImageSetDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfWebCaptureImageSetDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfWebCaptureImageSetDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+bool SkPdfWebCaptureImageSetDictionary::isRAInteger(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("R", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isInteger();
+}
+
+int64_t SkPdfWebCaptureImageSetDictionary::getRAsInteger(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("R", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isInteger()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->intValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfWebCaptureImageSetDictionary::isRAArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("R", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ return ret != NULL && ret->isArray();
+}
+
+SkPdfArray* SkPdfWebCaptureImageSetDictionary::getRAsArray(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("R", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return NULL;
+}
+
+bool SkPdfWebCaptureImageSetDictionary::has_R() const {
+ return get("R", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureImageSetDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureImageSetDictionary_autogen.h
new file mode 100644
index 00000000000..579fcb7c513
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureImageSetDictionary_autogen.h
@@ -0,0 +1,532 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfWebCaptureImageSetDictionary_DEFINED
+#define SkPdfWebCaptureImageSetDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a Web Capture image set
+class SkPdfWebCaptureImageSetDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+
+ bool isRAInteger(SkPdfNativeDoc* doc);
+ int64_t getRAsInteger(SkPdfNativeDoc* doc);
+
+ bool isRAArray(SkPdfNativeDoc* doc);
+ SkPdfArray* getRAsArray(SkPdfNativeDoc* doc);
+ bool has_R() const;
+};
+
+#endif // SkPdfWebCaptureImageSetDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureInformationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureInformationDictionary_autogen.cpp
new file mode 100644
index 00000000000..cfcf3551c7f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureInformationDictionary_autogen.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfWebCaptureInformationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+double SkPdfWebCaptureInformationDictionary::V(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("V", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isNumber()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->numberValue();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return 0;
+}
+
+bool SkPdfWebCaptureInformationDictionary::has_V() const {
+ return get("V", "") != NULL;
+}
+
+SkPdfArray* SkPdfWebCaptureInformationDictionary::C(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("C", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isArray()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfArray*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfWebCaptureInformationDictionary::has_C() const {
+ return get("C", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureInformationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureInformationDictionary_autogen.h
new file mode 100644
index 00000000000..0bb686b5048
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCaptureInformationDictionary_autogen.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfWebCaptureInformationDictionary_DEFINED
+#define SkPdfWebCaptureInformationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in the Web Capture information dictionary
+class SkPdfWebCaptureInformationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ double V(SkPdfNativeDoc* doc);
+ bool has_V() const;
+ SkPdfArray* C(SkPdfNativeDoc* doc);
+ bool has_C() const;
+};
+
+#endif // SkPdfWebCaptureInformationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCapturePageSetDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCapturePageSetDictionary_autogen.cpp
new file mode 100644
index 00000000000..01d9f2da95d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCapturePageSetDictionary_autogen.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfWebCapturePageSetDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfWebCapturePageSetDictionary::S(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("S", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfWebCapturePageSetDictionary::has_S() const {
+ return get("S", "") != NULL;
+}
+
+SkString SkPdfWebCapturePageSetDictionary::T(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("T", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfWebCapturePageSetDictionary::has_T() const {
+ return get("T", "") != NULL;
+}
+
+SkString SkPdfWebCapturePageSetDictionary::TID(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("TID", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfWebCapturePageSetDictionary::has_TID() const {
+ return get("TID", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCapturePageSetDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCapturePageSetDictionary_autogen.h
new file mode 100644
index 00000000000..a5ee2a27b17
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWebCapturePageSetDictionary_autogen.h
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfWebCapturePageSetDictionary_DEFINED
+#define SkPdfWebCapturePageSetDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a Web Capture page set
+class SkPdfWebCapturePageSetDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString S(SkPdfNativeDoc* doc);
+ bool has_S() const;
+ SkString T(SkPdfNativeDoc* doc);
+ bool has_T() const;
+ SkString TID(SkPdfNativeDoc* doc);
+ bool has_TID() const;
+};
+
+#endif // SkPdfWebCapturePageSetDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWidgetAnnotationDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWidgetAnnotationDictionary_autogen.cpp
new file mode 100644
index 00000000000..ea264017080
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWidgetAnnotationDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfWidgetAnnotationDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfWidgetAnnotationDictionary::Subtype(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Subtype", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfWidgetAnnotationDictionary::has_Subtype() const {
+ return get("Subtype", "") != NULL;
+}
+
+SkString SkPdfWidgetAnnotationDictionary::Contents(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("Contents", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfWidgetAnnotationDictionary::has_Contents() const {
+ return get("Contents", "") != NULL;
+}
+
+SkString SkPdfWidgetAnnotationDictionary::H(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("H", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isName()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->nameValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfWidgetAnnotationDictionary::has_H() const {
+ return get("H", "") != NULL;
+}
+
+SkPdfDictionary* SkPdfWidgetAnnotationDictionary::MK(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("MK", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isDictionary()) || (doc == NULL && ret != NULL && ret->isReference())) return (SkPdfDictionary*)ret;
+ // TODO(edisonn): warn about missing default value for optional fields
+ return NULL;
+}
+
+bool SkPdfWidgetAnnotationDictionary::has_MK() const {
+ return get("MK", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWidgetAnnotationDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWidgetAnnotationDictionary_autogen.h
new file mode 100644
index 00000000000..322ec990595
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWidgetAnnotationDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfWidgetAnnotationDictionary_DEFINED
+#define SkPdfWidgetAnnotationDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Additional entries specific to a widget annotation
+class SkPdfWidgetAnnotationDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString Subtype(SkPdfNativeDoc* doc);
+ bool has_Subtype() const;
+ SkString Contents(SkPdfNativeDoc* doc);
+ bool has_Contents() const;
+ SkString H(SkPdfNativeDoc* doc);
+ bool has_H() const;
+ SkPdfDictionary* MK(SkPdfNativeDoc* doc);
+ bool has_MK() const;
+};
+
+#endif // SkPdfWidgetAnnotationDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWindowsLaunchActionDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWindowsLaunchActionDictionary_autogen.cpp
new file mode 100644
index 00000000000..2351978f021
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWindowsLaunchActionDictionary_autogen.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfWindowsLaunchActionDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
+
+SkString SkPdfWindowsLaunchActionDictionary::F(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("F", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing required field, assert for known good pdfs
+ return SkString();
+}
+
+bool SkPdfWindowsLaunchActionDictionary::has_F() const {
+ return get("F", "") != NULL;
+}
+
+SkString SkPdfWindowsLaunchActionDictionary::D(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("D", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfWindowsLaunchActionDictionary::has_D() const {
+ return get("D", "") != NULL;
+}
+
+SkString SkPdfWindowsLaunchActionDictionary::O(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("O", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfWindowsLaunchActionDictionary::has_O() const {
+ return get("O", "") != NULL;
+}
+
+SkString SkPdfWindowsLaunchActionDictionary::P(SkPdfNativeDoc* doc) {
+ SkPdfNativeObject* ret = get("P", "");
+ if (doc) {ret = doc->resolveReference(ret);}
+ if ((ret != NULL && ret->isAnyString()) || (doc == NULL && ret != NULL && ret->isReference())) return ret->stringValue2();
+ // TODO(edisonn): warn about missing default value for optional fields
+ return SkString();
+}
+
+bool SkPdfWindowsLaunchActionDictionary::has_P() const {
+ return get("P", "") != NULL;
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWindowsLaunchActionDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWindowsLaunchActionDictionary_autogen.h
new file mode 100644
index 00000000000..917cb57e84b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfWindowsLaunchActionDictionary_autogen.h
@@ -0,0 +1,531 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfWindowsLaunchActionDictionary_DEFINED
+#define SkPdfWindowsLaunchActionDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+// Entries in a Windows launch parameter dictionary
+class SkPdfWindowsLaunchActionDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfXObjectDictionary* asXObjectDictionary() {return (SkPdfXObjectDictionary*)this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return (const SkPdfXObjectDictionary*)this;}
+
+ SkPdfImageDictionary* asImageDictionary() {return (SkPdfImageDictionary*)this;}
+ const SkPdfImageDictionary* asImageDictionary() const {return (const SkPdfImageDictionary*)this;}
+
+ SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() {return (SkPdfSoftMaskImageDictionary*)this;}
+ const SkPdfSoftMaskImageDictionary* asSoftMaskImageDictionary() const {return (const SkPdfSoftMaskImageDictionary*)this;}
+
+ SkPdfType1FormDictionary* asType1FormDictionary() {return (SkPdfType1FormDictionary*)this;}
+ const SkPdfType1FormDictionary* asType1FormDictionary() const {return (const SkPdfType1FormDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+ SkString F(SkPdfNativeDoc* doc);
+ bool has_F() const;
+ SkString D(SkPdfNativeDoc* doc);
+ bool has_D() const;
+ SkString O(SkPdfNativeDoc* doc);
+ bool has_O() const;
+ SkString P(SkPdfNativeDoc* doc);
+ bool has_P() const;
+};
+
+#endif // SkPdfWindowsLaunchActionDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfXObjectDictionary_autogen.cpp b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfXObjectDictionary_autogen.cpp
new file mode 100644
index 00000000000..0276fdad9db
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfXObjectDictionary_autogen.cpp
@@ -0,0 +1,9 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfXObjectDictionary_autogen.h"
+#include "SkPdfNativeDoc.h"
diff --git a/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfXObjectDictionary_autogen.h b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfXObjectDictionary_autogen.h
new file mode 100644
index 00000000000..9028cf59f9a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/pdfparser/native/pdfapi/SkPdfXObjectDictionary_autogen.h
@@ -0,0 +1,513 @@
+/*
+ * Copyright 2013 Google Inc.
+
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfXObjectDictionary_DEFINED
+#define SkPdfXObjectDictionary_DEFINED
+
+#include "SkPdfDictionary_autogen.h"
+
+class SkPdfXObjectDictionary : public SkPdfDictionary {
+public:
+public:
+ SkPdfXObjectDictionary* asXObjectDictionary() {return this;}
+ const SkPdfXObjectDictionary* asXObjectDictionary() const {return this;}
+
+private:
+ SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() {return (SkPdfALinkAnnotationDictionary*)this;}
+ const SkPdfALinkAnnotationDictionary* asALinkAnnotationDictionary() const {return (const SkPdfALinkAnnotationDictionary*)this;}
+
+ SkPdfActionDictionary* asActionDictionary() {return (SkPdfActionDictionary*)this;}
+ const SkPdfActionDictionary* asActionDictionary() const {return (const SkPdfActionDictionary*)this;}
+
+ SkPdfAlternateImageDictionary* asAlternateImageDictionary() {return (SkPdfAlternateImageDictionary*)this;}
+ const SkPdfAlternateImageDictionary* asAlternateImageDictionary() const {return (const SkPdfAlternateImageDictionary*)this;}
+
+ SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() {return (SkPdfAnnotationActionsDictionary*)this;}
+ const SkPdfAnnotationActionsDictionary* asAnnotationActionsDictionary() const {return (const SkPdfAnnotationActionsDictionary*)this;}
+
+ SkPdfAnnotationDictionary* asAnnotationDictionary() {return (SkPdfAnnotationDictionary*)this;}
+ const SkPdfAnnotationDictionary* asAnnotationDictionary() const {return (const SkPdfAnnotationDictionary*)this;}
+
+ SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() {return (SkPdfAppearanceCharacteristicsDictionary*)this;}
+ const SkPdfAppearanceCharacteristicsDictionary* asAppearanceCharacteristicsDictionary() const {return (const SkPdfAppearanceCharacteristicsDictionary*)this;}
+
+ SkPdfAppearanceDictionary* asAppearanceDictionary() {return (SkPdfAppearanceDictionary*)this;}
+ const SkPdfAppearanceDictionary* asAppearanceDictionary() const {return (const SkPdfAppearanceDictionary*)this;}
+
+ SkPdfApplicationDataDictionary* asApplicationDataDictionary() {return (SkPdfApplicationDataDictionary*)this;}
+ const SkPdfApplicationDataDictionary* asApplicationDataDictionary() const {return (const SkPdfApplicationDataDictionary*)this;}
+
+ SkPdfArtifactsDictionary* asArtifactsDictionary() {return (SkPdfArtifactsDictionary*)this;}
+ const SkPdfArtifactsDictionary* asArtifactsDictionary() const {return (const SkPdfArtifactsDictionary*)this;}
+
+ SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() {return (SkPdfAttributeObjectDictionary*)this;}
+ const SkPdfAttributeObjectDictionary* asAttributeObjectDictionary() const {return (const SkPdfAttributeObjectDictionary*)this;}
+
+ SkPdfBeadDictionary* asBeadDictionary() {return (SkPdfBeadDictionary*)this;}
+ const SkPdfBeadDictionary* asBeadDictionary() const {return (const SkPdfBeadDictionary*)this;}
+
+ SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() {return (SkPdfBlockLevelStructureElementsDictionary*)this;}
+ const SkPdfBlockLevelStructureElementsDictionary* asBlockLevelStructureElementsDictionary() const {return (const SkPdfBlockLevelStructureElementsDictionary*)this;}
+
+ SkPdfBorderStyleDictionary* asBorderStyleDictionary() {return (SkPdfBorderStyleDictionary*)this;}
+ const SkPdfBorderStyleDictionary* asBorderStyleDictionary() const {return (const SkPdfBorderStyleDictionary*)this;}
+
+ SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() {return (SkPdfBoxColorInformationDictionary*)this;}
+ const SkPdfBoxColorInformationDictionary* asBoxColorInformationDictionary() const {return (const SkPdfBoxColorInformationDictionary*)this;}
+
+ SkPdfBoxStyleDictionary* asBoxStyleDictionary() {return (SkPdfBoxStyleDictionary*)this;}
+ const SkPdfBoxStyleDictionary* asBoxStyleDictionary() const {return (const SkPdfBoxStyleDictionary*)this;}
+
+ SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() {return (SkPdfCIDFontDescriptorDictionary*)this;}
+ const SkPdfCIDFontDescriptorDictionary* asCIDFontDescriptorDictionary() const {return (const SkPdfCIDFontDescriptorDictionary*)this;}
+
+ SkPdfCIDFontDictionary* asCIDFontDictionary() {return (SkPdfCIDFontDictionary*)this;}
+ const SkPdfCIDFontDictionary* asCIDFontDictionary() const {return (const SkPdfCIDFontDictionary*)this;}
+
+ SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() {return (SkPdfCIDSystemInfoDictionary*)this;}
+ const SkPdfCIDSystemInfoDictionary* asCIDSystemInfoDictionary() const {return (const SkPdfCIDSystemInfoDictionary*)this;}
+
+ SkPdfCMapDictionary* asCMapDictionary() {return (SkPdfCMapDictionary*)this;}
+ const SkPdfCMapDictionary* asCMapDictionary() const {return (const SkPdfCMapDictionary*)this;}
+
+ SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() {return (SkPdfCalgrayColorSpaceDictionary*)this;}
+ const SkPdfCalgrayColorSpaceDictionary* asCalgrayColorSpaceDictionary() const {return (const SkPdfCalgrayColorSpaceDictionary*)this;}
+
+ SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() {return (SkPdfCalrgbColorSpaceDictionary*)this;}
+ const SkPdfCalrgbColorSpaceDictionary* asCalrgbColorSpaceDictionary() const {return (const SkPdfCalrgbColorSpaceDictionary*)this;}
+
+ SkPdfCatalogDictionary* asCatalogDictionary() {return (SkPdfCatalogDictionary*)this;}
+ const SkPdfCatalogDictionary* asCatalogDictionary() const {return (const SkPdfCatalogDictionary*)this;}
+
+ SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() {return (SkPdfCcittfaxdecodeFilterDictionary*)this;}
+ const SkPdfCcittfaxdecodeFilterDictionary* asCcittfaxdecodeFilterDictionary() const {return (const SkPdfCcittfaxdecodeFilterDictionary*)this;}
+
+ SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() {return (SkPdfCheckboxFieldDictionary*)this;}
+ const SkPdfCheckboxFieldDictionary* asCheckboxFieldDictionary() const {return (const SkPdfCheckboxFieldDictionary*)this;}
+
+ SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() {return (SkPdfChoiceFieldDictionary*)this;}
+ const SkPdfChoiceFieldDictionary* asChoiceFieldDictionary() const {return (const SkPdfChoiceFieldDictionary*)this;}
+
+ SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() {return (SkPdfComponentsWithMetadataDictionary*)this;}
+ const SkPdfComponentsWithMetadataDictionary* asComponentsWithMetadataDictionary() const {return (const SkPdfComponentsWithMetadataDictionary*)this;}
+
+ SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() {return (SkPdfDctdecodeFilterDictionary*)this;}
+ const SkPdfDctdecodeFilterDictionary* asDctdecodeFilterDictionary() const {return (const SkPdfDctdecodeFilterDictionary*)this;}
+
+ SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() {return (SkPdfDeviceNColorSpaceDictionary*)this;}
+ const SkPdfDeviceNColorSpaceDictionary* asDeviceNColorSpaceDictionary() const {return (const SkPdfDeviceNColorSpaceDictionary*)this;}
+
+ SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() {return (SkPdfDocumentCatalogActionsDictionary*)this;}
+ const SkPdfDocumentCatalogActionsDictionary* asDocumentCatalogActionsDictionary() const {return (const SkPdfDocumentCatalogActionsDictionary*)this;}
+
+ SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() {return (SkPdfDocumentInformationDictionary*)this;}
+ const SkPdfDocumentInformationDictionary* asDocumentInformationDictionary() const {return (const SkPdfDocumentInformationDictionary*)this;}
+
+ SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() {return (SkPdfEmbeddedFileParameterDictionary*)this;}
+ const SkPdfEmbeddedFileParameterDictionary* asEmbeddedFileParameterDictionary() const {return (const SkPdfEmbeddedFileParameterDictionary*)this;}
+
+ SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() {return (SkPdfEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEmbeddedFileStreamDictionary* asEmbeddedFileStreamDictionary() const {return (const SkPdfEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() {return (SkPdfEmbeddedFontStreamDictionary*)this;}
+ const SkPdfEmbeddedFontStreamDictionary* asEmbeddedFontStreamDictionary() const {return (const SkPdfEmbeddedFontStreamDictionary*)this;}
+
+ SkPdfEncodingDictionary* asEncodingDictionary() {return (SkPdfEncodingDictionary*)this;}
+ const SkPdfEncodingDictionary* asEncodingDictionary() const {return (const SkPdfEncodingDictionary*)this;}
+
+ SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() {return (SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+ const SkPdfEncryptedEmbeddedFileStreamDictionary* asEncryptedEmbeddedFileStreamDictionary() const {return (const SkPdfEncryptedEmbeddedFileStreamDictionary*)this;}
+
+ SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() {return (SkPdfEncryptionCommonDictionary*)this;}
+ const SkPdfEncryptionCommonDictionary* asEncryptionCommonDictionary() const {return (const SkPdfEncryptionCommonDictionary*)this;}
+
+ SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() {return (SkPdfFDFCatalogDictionary*)this;}
+ const SkPdfFDFCatalogDictionary* asFDFCatalogDictionary() const {return (const SkPdfFDFCatalogDictionary*)this;}
+
+ SkPdfFDFDictionary* asFDFDictionary() {return (SkPdfFDFDictionary*)this;}
+ const SkPdfFDFDictionary* asFDFDictionary() const {return (const SkPdfFDFDictionary*)this;}
+
+ SkPdfFDFFieldDictionary* asFDFFieldDictionary() {return (SkPdfFDFFieldDictionary*)this;}
+ const SkPdfFDFFieldDictionary* asFDFFieldDictionary() const {return (const SkPdfFDFFieldDictionary*)this;}
+
+ SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() {return (SkPdfFDFFileAnnotationDictionary*)this;}
+ const SkPdfFDFFileAnnotationDictionary* asFDFFileAnnotationDictionary() const {return (const SkPdfFDFFileAnnotationDictionary*)this;}
+
+ SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() {return (SkPdfFDFNamedPageReferenceDictionary*)this;}
+ const SkPdfFDFNamedPageReferenceDictionary* asFDFNamedPageReferenceDictionary() const {return (const SkPdfFDFNamedPageReferenceDictionary*)this;}
+
+ SkPdfFDFPageDictionary* asFDFPageDictionary() {return (SkPdfFDFPageDictionary*)this;}
+ const SkPdfFDFPageDictionary* asFDFPageDictionary() const {return (const SkPdfFDFPageDictionary*)this;}
+
+ SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() {return (SkPdfFDFTemplateDictionary*)this;}
+ const SkPdfFDFTemplateDictionary* asFDFTemplateDictionary() const {return (const SkPdfFDFTemplateDictionary*)this;}
+
+ SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() {return (SkPdfFDFTrailerDictionary*)this;}
+ const SkPdfFDFTrailerDictionary* asFDFTrailerDictionary() const {return (const SkPdfFDFTrailerDictionary*)this;}
+
+ SkPdfFieldDictionary* asFieldDictionary() {return (SkPdfFieldDictionary*)this;}
+ const SkPdfFieldDictionary* asFieldDictionary() const {return (const SkPdfFieldDictionary*)this;}
+
+ SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() {return (SkPdfFileAttachmentAnnotationDictionary*)this;}
+ const SkPdfFileAttachmentAnnotationDictionary* asFileAttachmentAnnotationDictionary() const {return (const SkPdfFileAttachmentAnnotationDictionary*)this;}
+
+ SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() {return (SkPdfFileSpecificationDictionary*)this;}
+ const SkPdfFileSpecificationDictionary* asFileSpecificationDictionary() const {return (const SkPdfFileSpecificationDictionary*)this;}
+
+ SkPdfFileTrailerDictionary* asFileTrailerDictionary() {return (SkPdfFileTrailerDictionary*)this;}
+ const SkPdfFileTrailerDictionary* asFileTrailerDictionary() const {return (const SkPdfFileTrailerDictionary*)this;}
+
+ SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() {return (SkPdfFontDescriptorDictionary*)this;}
+ const SkPdfFontDescriptorDictionary* asFontDescriptorDictionary() const {return (const SkPdfFontDescriptorDictionary*)this;}
+
+ SkPdfFontDictionary* asFontDictionary() {return (SkPdfFontDictionary*)this;}
+ const SkPdfFontDictionary* asFontDictionary() const {return (const SkPdfFontDictionary*)this;}
+
+ SkPdfType0FontDictionary* asType0FontDictionary() {return (SkPdfType0FontDictionary*)this;}
+ const SkPdfType0FontDictionary* asType0FontDictionary() const {return (const SkPdfType0FontDictionary*)this;}
+
+ SkPdfType1FontDictionary* asType1FontDictionary() {return (SkPdfType1FontDictionary*)this;}
+ const SkPdfType1FontDictionary* asType1FontDictionary() const {return (const SkPdfType1FontDictionary*)this;}
+
+ SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() {return (SkPdfMultiMasterFontDictionary*)this;}
+ const SkPdfMultiMasterFontDictionary* asMultiMasterFontDictionary() const {return (const SkPdfMultiMasterFontDictionary*)this;}
+
+ SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() {return (SkPdfTrueTypeFontDictionary*)this;}
+ const SkPdfTrueTypeFontDictionary* asTrueTypeFontDictionary() const {return (const SkPdfTrueTypeFontDictionary*)this;}
+
+ SkPdfType3FontDictionary* asType3FontDictionary() {return (SkPdfType3FontDictionary*)this;}
+ const SkPdfType3FontDictionary* asType3FontDictionary() const {return (const SkPdfType3FontDictionary*)this;}
+
+ SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() {return (SkPdfFormFieldActionsDictionary*)this;}
+ const SkPdfFormFieldActionsDictionary* asFormFieldActionsDictionary() const {return (const SkPdfFormFieldActionsDictionary*)this;}
+
+ SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() {return (SkPdfFreeTextAnnotationDictionary*)this;}
+ const SkPdfFreeTextAnnotationDictionary* asFreeTextAnnotationDictionary() const {return (const SkPdfFreeTextAnnotationDictionary*)this;}
+
+ SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() {return (SkPdfFunctionCommonDictionary*)this;}
+ const SkPdfFunctionCommonDictionary* asFunctionCommonDictionary() const {return (const SkPdfFunctionCommonDictionary*)this;}
+
+ SkPdfGoToActionDictionary* asGoToActionDictionary() {return (SkPdfGoToActionDictionary*)this;}
+ const SkPdfGoToActionDictionary* asGoToActionDictionary() const {return (const SkPdfGoToActionDictionary*)this;}
+
+ SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() {return (SkPdfGraphicsStateDictionary*)this;}
+ const SkPdfGraphicsStateDictionary* asGraphicsStateDictionary() const {return (const SkPdfGraphicsStateDictionary*)this;}
+
+ SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() {return (SkPdfGroupAttributesDictionary*)this;}
+ const SkPdfGroupAttributesDictionary* asGroupAttributesDictionary() const {return (const SkPdfGroupAttributesDictionary*)this;}
+
+ SkPdfHideActionDictionary* asHideActionDictionary() {return (SkPdfHideActionDictionary*)this;}
+ const SkPdfHideActionDictionary* asHideActionDictionary() const {return (const SkPdfHideActionDictionary*)this;}
+
+ SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() {return (SkPdfIccProfileStreamDictionary*)this;}
+ const SkPdfIccProfileStreamDictionary* asIccProfileStreamDictionary() const {return (const SkPdfIccProfileStreamDictionary*)this;}
+
+ SkPdfIconFitDictionary* asIconFitDictionary() {return (SkPdfIconFitDictionary*)this;}
+ const SkPdfIconFitDictionary* asIconFitDictionary() const {return (const SkPdfIconFitDictionary*)this;}
+
+ SkPdfImportDataActionDictionary* asImportDataActionDictionary() {return (SkPdfImportDataActionDictionary*)this;}
+ const SkPdfImportDataActionDictionary* asImportDataActionDictionary() const {return (const SkPdfImportDataActionDictionary*)this;}
+
+ SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() {return (SkPdfInkAnnotationDictionary*)this;}
+ const SkPdfInkAnnotationDictionary* asInkAnnotationDictionary() const {return (const SkPdfInkAnnotationDictionary*)this;}
+
+ SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() {return (SkPdfInlineLevelStructureElementsDictionary*)this;}
+ const SkPdfInlineLevelStructureElementsDictionary* asInlineLevelStructureElementsDictionary() const {return (const SkPdfInlineLevelStructureElementsDictionary*)this;}
+
+ SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() {return (SkPdfInteractiveFormDictionary*)this;}
+ const SkPdfInteractiveFormDictionary* asInteractiveFormDictionary() const {return (const SkPdfInteractiveFormDictionary*)this;}
+
+ SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() {return (SkPdfJavascriptActionDictionary*)this;}
+ const SkPdfJavascriptActionDictionary* asJavascriptActionDictionary() const {return (const SkPdfJavascriptActionDictionary*)this;}
+
+ SkPdfJavascriptDictionary* asJavascriptDictionary() {return (SkPdfJavascriptDictionary*)this;}
+ const SkPdfJavascriptDictionary* asJavascriptDictionary() const {return (const SkPdfJavascriptDictionary*)this;}
+
+ SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() {return (SkPdfJbig2DecodeFilterDictionary*)this;}
+ const SkPdfJbig2DecodeFilterDictionary* asJbig2DecodeFilterDictionary() const {return (const SkPdfJbig2DecodeFilterDictionary*)this;}
+
+ SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() {return (SkPdfLabColorSpaceDictionary*)this;}
+ const SkPdfLabColorSpaceDictionary* asLabColorSpaceDictionary() const {return (const SkPdfLabColorSpaceDictionary*)this;}
+
+ SkPdfLaunchActionDictionary* asLaunchActionDictionary() {return (SkPdfLaunchActionDictionary*)this;}
+ const SkPdfLaunchActionDictionary* asLaunchActionDictionary() const {return (const SkPdfLaunchActionDictionary*)this;}
+
+ SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() {return (SkPdfLineAnnotationDictionary*)this;}
+ const SkPdfLineAnnotationDictionary* asLineAnnotationDictionary() const {return (const SkPdfLineAnnotationDictionary*)this;}
+
+ SkPdfListAttributeDictionary* asListAttributeDictionary() {return (SkPdfListAttributeDictionary*)this;}
+ const SkPdfListAttributeDictionary* asListAttributeDictionary() const {return (const SkPdfListAttributeDictionary*)this;}
+
+ SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() {return (SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+ const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary* asLzwdecodeAndFlatedecodeFiltersDictionary() const {return (const SkPdfLzwdecodeAndFlatedecodeFiltersDictionary*)this;}
+
+ SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() {return (SkPdfMacOsFileInformationDictionary*)this;}
+ const SkPdfMacOsFileInformationDictionary* asMacOsFileInformationDictionary() const {return (const SkPdfMacOsFileInformationDictionary*)this;}
+
+ SkPdfMarkInformationDictionary* asMarkInformationDictionary() {return (SkPdfMarkInformationDictionary*)this;}
+ const SkPdfMarkInformationDictionary* asMarkInformationDictionary() const {return (const SkPdfMarkInformationDictionary*)this;}
+
+ SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() {return (SkPdfMarkedContentReferenceDictionary*)this;}
+ const SkPdfMarkedContentReferenceDictionary* asMarkedContentReferenceDictionary() const {return (const SkPdfMarkedContentReferenceDictionary*)this;}
+
+ SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() {return (SkPdfMarkupAnnotationsDictionary*)this;}
+ const SkPdfMarkupAnnotationsDictionary* asMarkupAnnotationsDictionary() const {return (const SkPdfMarkupAnnotationsDictionary*)this;}
+
+ SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() {return (SkPdfMetadataStreamDictionary*)this;}
+ const SkPdfMetadataStreamDictionary* asMetadataStreamDictionary() const {return (const SkPdfMetadataStreamDictionary*)this;}
+
+ SkPdfMovieActionDictionary* asMovieActionDictionary() {return (SkPdfMovieActionDictionary*)this;}
+ const SkPdfMovieActionDictionary* asMovieActionDictionary() const {return (const SkPdfMovieActionDictionary*)this;}
+
+ SkPdfMovieActivationDictionary* asMovieActivationDictionary() {return (SkPdfMovieActivationDictionary*)this;}
+ const SkPdfMovieActivationDictionary* asMovieActivationDictionary() const {return (const SkPdfMovieActivationDictionary*)this;}
+
+ SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() {return (SkPdfMovieAnnotationDictionary*)this;}
+ const SkPdfMovieAnnotationDictionary* asMovieAnnotationDictionary() const {return (const SkPdfMovieAnnotationDictionary*)this;}
+
+ SkPdfMovieDictionary* asMovieDictionary() {return (SkPdfMovieDictionary*)this;}
+ const SkPdfMovieDictionary* asMovieDictionary() const {return (const SkPdfMovieDictionary*)this;}
+
+ SkPdfNameDictionary* asNameDictionary() {return (SkPdfNameDictionary*)this;}
+ const SkPdfNameDictionary* asNameDictionary() const {return (const SkPdfNameDictionary*)this;}
+
+ SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() {return (SkPdfNameTreeNodeDictionary*)this;}
+ const SkPdfNameTreeNodeDictionary* asNameTreeNodeDictionary() const {return (const SkPdfNameTreeNodeDictionary*)this;}
+
+ SkPdfNamedActionsDictionary* asNamedActionsDictionary() {return (SkPdfNamedActionsDictionary*)this;}
+ const SkPdfNamedActionsDictionary* asNamedActionsDictionary() const {return (const SkPdfNamedActionsDictionary*)this;}
+
+ SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() {return (SkPdfNumberTreeNodeDictionary*)this;}
+ const SkPdfNumberTreeNodeDictionary* asNumberTreeNodeDictionary() const {return (const SkPdfNumberTreeNodeDictionary*)this;}
+
+ SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() {return (SkPdfObjectReferenceDictionary*)this;}
+ const SkPdfObjectReferenceDictionary* asObjectReferenceDictionary() const {return (const SkPdfObjectReferenceDictionary*)this;}
+
+ SkPdfOpiVersionDictionary* asOpiVersionDictionary() {return (SkPdfOpiVersionDictionary*)this;}
+ const SkPdfOpiVersionDictionary* asOpiVersionDictionary() const {return (const SkPdfOpiVersionDictionary*)this;}
+
+ SkPdfOutlineDictionary* asOutlineDictionary() {return (SkPdfOutlineDictionary*)this;}
+ const SkPdfOutlineDictionary* asOutlineDictionary() const {return (const SkPdfOutlineDictionary*)this;}
+
+ SkPdfOutlineItemDictionary* asOutlineItemDictionary() {return (SkPdfOutlineItemDictionary*)this;}
+ const SkPdfOutlineItemDictionary* asOutlineItemDictionary() const {return (const SkPdfOutlineItemDictionary*)this;}
+
+ SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() {return (SkPdfPDF_XOutputIntentDictionary*)this;}
+ const SkPdfPDF_XOutputIntentDictionary* asPDF_XOutputIntentDictionary() const {return (const SkPdfPDF_XOutputIntentDictionary*)this;}
+
+ SkPdfPSXobjectDictionary* asPSXobjectDictionary() {return (SkPdfPSXobjectDictionary*)this;}
+ const SkPdfPSXobjectDictionary* asPSXobjectDictionary() const {return (const SkPdfPSXobjectDictionary*)this;}
+
+ SkPdfPageLabelDictionary* asPageLabelDictionary() {return (SkPdfPageLabelDictionary*)this;}
+ const SkPdfPageLabelDictionary* asPageLabelDictionary() const {return (const SkPdfPageLabelDictionary*)this;}
+
+ SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() {return (SkPdfPageObjectActionsDictionary*)this;}
+ const SkPdfPageObjectActionsDictionary* asPageObjectActionsDictionary() const {return (const SkPdfPageObjectActionsDictionary*)this;}
+
+ SkPdfPageObjectDictionary* asPageObjectDictionary() {return (SkPdfPageObjectDictionary*)this;}
+ const SkPdfPageObjectDictionary* asPageObjectDictionary() const {return (const SkPdfPageObjectDictionary*)this;}
+
+ SkPdfPagePieceDictionary* asPagePieceDictionary() {return (SkPdfPagePieceDictionary*)this;}
+ const SkPdfPagePieceDictionary* asPagePieceDictionary() const {return (const SkPdfPagePieceDictionary*)this;}
+
+ SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() {return (SkPdfPageTreeNodeDictionary*)this;}
+ const SkPdfPageTreeNodeDictionary* asPageTreeNodeDictionary() const {return (const SkPdfPageTreeNodeDictionary*)this;}
+
+ SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() {return (SkPdfPopUpAnnotationDictionary*)this;}
+ const SkPdfPopUpAnnotationDictionary* asPopUpAnnotationDictionary() const {return (const SkPdfPopUpAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() {return (SkPdfPrinterMarkAnnotationDictionary*)this;}
+ const SkPdfPrinterMarkAnnotationDictionary* asPrinterMarkAnnotationDictionary() const {return (const SkPdfPrinterMarkAnnotationDictionary*)this;}
+
+ SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() {return (SkPdfPrinterMarkFormDictionary*)this;}
+ const SkPdfPrinterMarkFormDictionary* asPrinterMarkFormDictionary() const {return (const SkPdfPrinterMarkFormDictionary*)this;}
+
+ SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() {return (SkPdfRadioButtonFieldDictionary*)this;}
+ const SkPdfRadioButtonFieldDictionary* asRadioButtonFieldDictionary() const {return (const SkPdfRadioButtonFieldDictionary*)this;}
+
+ SkPdfReferenceDictionary* asReferenceDictionary() {return (SkPdfReferenceDictionary*)this;}
+ const SkPdfReferenceDictionary* asReferenceDictionary() const {return (const SkPdfReferenceDictionary*)this;}
+
+ SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() {return (SkPdfRemoteGoToActionDictionary*)this;}
+ const SkPdfRemoteGoToActionDictionary* asRemoteGoToActionDictionary() const {return (const SkPdfRemoteGoToActionDictionary*)this;}
+
+ SkPdfResetFormActionDictionary* asResetFormActionDictionary() {return (SkPdfResetFormActionDictionary*)this;}
+ const SkPdfResetFormActionDictionary* asResetFormActionDictionary() const {return (const SkPdfResetFormActionDictionary*)this;}
+
+ SkPdfResourceDictionary* asResourceDictionary() {return (SkPdfResourceDictionary*)this;}
+ const SkPdfResourceDictionary* asResourceDictionary() const {return (const SkPdfResourceDictionary*)this;}
+
+ SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() {return (SkPdfRubberStampAnnotationDictionary*)this;}
+ const SkPdfRubberStampAnnotationDictionary* asRubberStampAnnotationDictionary() const {return (const SkPdfRubberStampAnnotationDictionary*)this;}
+
+ SkPdfSeparationDictionary* asSeparationDictionary() {return (SkPdfSeparationDictionary*)this;}
+ const SkPdfSeparationDictionary* asSeparationDictionary() const {return (const SkPdfSeparationDictionary*)this;}
+
+ SkPdfShadingDictionary* asShadingDictionary() {return (SkPdfShadingDictionary*)this;}
+ const SkPdfShadingDictionary* asShadingDictionary() const {return (const SkPdfShadingDictionary*)this;}
+
+ SkPdfType1ShadingDictionary* asType1ShadingDictionary() {return (SkPdfType1ShadingDictionary*)this;}
+ const SkPdfType1ShadingDictionary* asType1ShadingDictionary() const {return (const SkPdfType1ShadingDictionary*)this;}
+
+ SkPdfType2ShadingDictionary* asType2ShadingDictionary() {return (SkPdfType2ShadingDictionary*)this;}
+ const SkPdfType2ShadingDictionary* asType2ShadingDictionary() const {return (const SkPdfType2ShadingDictionary*)this;}
+
+ SkPdfType3ShadingDictionary* asType3ShadingDictionary() {return (SkPdfType3ShadingDictionary*)this;}
+ const SkPdfType3ShadingDictionary* asType3ShadingDictionary() const {return (const SkPdfType3ShadingDictionary*)this;}
+
+ SkPdfType4ShadingDictionary* asType4ShadingDictionary() {return (SkPdfType4ShadingDictionary*)this;}
+ const SkPdfType4ShadingDictionary* asType4ShadingDictionary() const {return (const SkPdfType4ShadingDictionary*)this;}
+
+ SkPdfType5ShadingDictionary* asType5ShadingDictionary() {return (SkPdfType5ShadingDictionary*)this;}
+ const SkPdfType5ShadingDictionary* asType5ShadingDictionary() const {return (const SkPdfType5ShadingDictionary*)this;}
+
+ SkPdfType6ShadingDictionary* asType6ShadingDictionary() {return (SkPdfType6ShadingDictionary*)this;}
+ const SkPdfType6ShadingDictionary* asType6ShadingDictionary() const {return (const SkPdfType6ShadingDictionary*)this;}
+
+ SkPdfSignatureDictionary* asSignatureDictionary() {return (SkPdfSignatureDictionary*)this;}
+ const SkPdfSignatureDictionary* asSignatureDictionary() const {return (const SkPdfSignatureDictionary*)this;}
+
+ SkPdfSoftMaskDictionary* asSoftMaskDictionary() {return (SkPdfSoftMaskDictionary*)this;}
+ const SkPdfSoftMaskDictionary* asSoftMaskDictionary() const {return (const SkPdfSoftMaskDictionary*)this;}
+
+ SkPdfSoundActionDictionary* asSoundActionDictionary() {return (SkPdfSoundActionDictionary*)this;}
+ const SkPdfSoundActionDictionary* asSoundActionDictionary() const {return (const SkPdfSoundActionDictionary*)this;}
+
+ SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() {return (SkPdfSoundAnnotationDictionary*)this;}
+ const SkPdfSoundAnnotationDictionary* asSoundAnnotationDictionary() const {return (const SkPdfSoundAnnotationDictionary*)this;}
+
+ SkPdfSoundObjectDictionary* asSoundObjectDictionary() {return (SkPdfSoundObjectDictionary*)this;}
+ const SkPdfSoundObjectDictionary* asSoundObjectDictionary() const {return (const SkPdfSoundObjectDictionary*)this;}
+
+ SkPdfSourceInformationDictionary* asSourceInformationDictionary() {return (SkPdfSourceInformationDictionary*)this;}
+ const SkPdfSourceInformationDictionary* asSourceInformationDictionary() const {return (const SkPdfSourceInformationDictionary*)this;}
+
+ SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() {return (SkPdfSquareOrCircleAnnotation*)this;}
+ const SkPdfSquareOrCircleAnnotation* asSquareOrCircleAnnotation() const {return (const SkPdfSquareOrCircleAnnotation*)this;}
+
+ SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() {return (SkPdfStandardSecurityHandlerDictionary*)this;}
+ const SkPdfStandardSecurityHandlerDictionary* asStandardSecurityHandlerDictionary() const {return (const SkPdfStandardSecurityHandlerDictionary*)this;}
+
+ SkPdfStandardStructureDictionary* asStandardStructureDictionary() {return (SkPdfStandardStructureDictionary*)this;}
+ const SkPdfStandardStructureDictionary* asStandardStructureDictionary() const {return (const SkPdfStandardStructureDictionary*)this;}
+
+ SkPdfStreamCommonDictionary* asStreamCommonDictionary() {return (SkPdfStreamCommonDictionary*)this;}
+ const SkPdfStreamCommonDictionary* asStreamCommonDictionary() const {return (const SkPdfStreamCommonDictionary*)this;}
+
+ SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() {return (SkPdfStructureElementAccessDictionary*)this;}
+ const SkPdfStructureElementAccessDictionary* asStructureElementAccessDictionary() const {return (const SkPdfStructureElementAccessDictionary*)this;}
+
+ SkPdfStructureElementDictionary* asStructureElementDictionary() {return (SkPdfStructureElementDictionary*)this;}
+ const SkPdfStructureElementDictionary* asStructureElementDictionary() const {return (const SkPdfStructureElementDictionary*)this;}
+
+ SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() {return (SkPdfStructureTreeRootDictionary*)this;}
+ const SkPdfStructureTreeRootDictionary* asStructureTreeRootDictionary() const {return (const SkPdfStructureTreeRootDictionary*)this;}
+
+ SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() {return (SkPdfSubmitFormActionDictionary*)this;}
+ const SkPdfSubmitFormActionDictionary* asSubmitFormActionDictionary() const {return (const SkPdfSubmitFormActionDictionary*)this;}
+
+ SkPdfTableAttributesDictionary* asTableAttributesDictionary() {return (SkPdfTableAttributesDictionary*)this;}
+ const SkPdfTableAttributesDictionary* asTableAttributesDictionary() const {return (const SkPdfTableAttributesDictionary*)this;}
+
+ SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() {return (SkPdfTextAnnotationDictionary*)this;}
+ const SkPdfTextAnnotationDictionary* asTextAnnotationDictionary() const {return (const SkPdfTextAnnotationDictionary*)this;}
+
+ SkPdfTextFieldDictionary* asTextFieldDictionary() {return (SkPdfTextFieldDictionary*)this;}
+ const SkPdfTextFieldDictionary* asTextFieldDictionary() const {return (const SkPdfTextFieldDictionary*)this;}
+
+ SkPdfThreadActionDictionary* asThreadActionDictionary() {return (SkPdfThreadActionDictionary*)this;}
+ const SkPdfThreadActionDictionary* asThreadActionDictionary() const {return (const SkPdfThreadActionDictionary*)this;}
+
+ SkPdfThreadDictionary* asThreadDictionary() {return (SkPdfThreadDictionary*)this;}
+ const SkPdfThreadDictionary* asThreadDictionary() const {return (const SkPdfThreadDictionary*)this;}
+
+ SkPdfTransitionDictionary* asTransitionDictionary() {return (SkPdfTransitionDictionary*)this;}
+ const SkPdfTransitionDictionary* asTransitionDictionary() const {return (const SkPdfTransitionDictionary*)this;}
+
+ SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() {return (SkPdfTransparencyGroupDictionary*)this;}
+ const SkPdfTransparencyGroupDictionary* asTransparencyGroupDictionary() const {return (const SkPdfTransparencyGroupDictionary*)this;}
+
+ SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() {return (SkPdfTrapNetworkAnnotationDictionary*)this;}
+ const SkPdfTrapNetworkAnnotationDictionary* asTrapNetworkAnnotationDictionary() const {return (const SkPdfTrapNetworkAnnotationDictionary*)this;}
+
+ SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() {return (SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+ const SkPdfTrapNetworkAppearanceStreamDictionary* asTrapNetworkAppearanceStreamDictionary() const {return (const SkPdfTrapNetworkAppearanceStreamDictionary*)this;}
+
+ SkPdfType0FunctionDictionary* asType0FunctionDictionary() {return (SkPdfType0FunctionDictionary*)this;}
+ const SkPdfType0FunctionDictionary* asType0FunctionDictionary() const {return (const SkPdfType0FunctionDictionary*)this;}
+
+ SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() {return (SkPdfType10HalftoneDictionary*)this;}
+ const SkPdfType10HalftoneDictionary* asType10HalftoneDictionary() const {return (const SkPdfType10HalftoneDictionary*)this;}
+
+ SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() {return (SkPdfType16HalftoneDictionary*)this;}
+ const SkPdfType16HalftoneDictionary* asType16HalftoneDictionary() const {return (const SkPdfType16HalftoneDictionary*)this;}
+
+ SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() {return (SkPdfType1HalftoneDictionary*)this;}
+ const SkPdfType1HalftoneDictionary* asType1HalftoneDictionary() const {return (const SkPdfType1HalftoneDictionary*)this;}
+
+ SkPdfType1PatternDictionary* asType1PatternDictionary() {return (SkPdfType1PatternDictionary*)this;}
+ const SkPdfType1PatternDictionary* asType1PatternDictionary() const {return (const SkPdfType1PatternDictionary*)this;}
+
+ SkPdfType2FunctionDictionary* asType2FunctionDictionary() {return (SkPdfType2FunctionDictionary*)this;}
+ const SkPdfType2FunctionDictionary* asType2FunctionDictionary() const {return (const SkPdfType2FunctionDictionary*)this;}
+
+ SkPdfType2PatternDictionary* asType2PatternDictionary() {return (SkPdfType2PatternDictionary*)this;}
+ const SkPdfType2PatternDictionary* asType2PatternDictionary() const {return (const SkPdfType2PatternDictionary*)this;}
+
+ SkPdfType3FunctionDictionary* asType3FunctionDictionary() {return (SkPdfType3FunctionDictionary*)this;}
+ const SkPdfType3FunctionDictionary* asType3FunctionDictionary() const {return (const SkPdfType3FunctionDictionary*)this;}
+
+ SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() {return (SkPdfType5HalftoneDictionary*)this;}
+ const SkPdfType5HalftoneDictionary* asType5HalftoneDictionary() const {return (const SkPdfType5HalftoneDictionary*)this;}
+
+ SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() {return (SkPdfType6HalftoneDictionary*)this;}
+ const SkPdfType6HalftoneDictionary* asType6HalftoneDictionary() const {return (const SkPdfType6HalftoneDictionary*)this;}
+
+ SkPdfURIActionDictionary* asURIActionDictionary() {return (SkPdfURIActionDictionary*)this;}
+ const SkPdfURIActionDictionary* asURIActionDictionary() const {return (const SkPdfURIActionDictionary*)this;}
+
+ SkPdfURIDictionary* asURIDictionary() {return (SkPdfURIDictionary*)this;}
+ const SkPdfURIDictionary* asURIDictionary() const {return (const SkPdfURIDictionary*)this;}
+
+ SkPdfURLAliasDictionary* asURLAliasDictionary() {return (SkPdfURLAliasDictionary*)this;}
+ const SkPdfURLAliasDictionary* asURLAliasDictionary() const {return (const SkPdfURLAliasDictionary*)this;}
+
+ SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() {return (SkPdfVariableTextFieldDictionary*)this;}
+ const SkPdfVariableTextFieldDictionary* asVariableTextFieldDictionary() const {return (const SkPdfVariableTextFieldDictionary*)this;}
+
+ SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() {return (SkPdfViewerPreferencesDictionary*)this;}
+ const SkPdfViewerPreferencesDictionary* asViewerPreferencesDictionary() const {return (const SkPdfViewerPreferencesDictionary*)this;}
+
+ SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() {return (SkPdfWebCaptureCommandDictionary*)this;}
+ const SkPdfWebCaptureCommandDictionary* asWebCaptureCommandDictionary() const {return (const SkPdfWebCaptureCommandDictionary*)this;}
+
+ SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() {return (SkPdfWebCaptureCommandSettingsDictionary*)this;}
+ const SkPdfWebCaptureCommandSettingsDictionary* asWebCaptureCommandSettingsDictionary() const {return (const SkPdfWebCaptureCommandSettingsDictionary*)this;}
+
+ SkPdfWebCaptureDictionary* asWebCaptureDictionary() {return (SkPdfWebCaptureDictionary*)this;}
+ const SkPdfWebCaptureDictionary* asWebCaptureDictionary() const {return (const SkPdfWebCaptureDictionary*)this;}
+
+ SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() {return (SkPdfWebCaptureImageSetDictionary*)this;}
+ const SkPdfWebCaptureImageSetDictionary* asWebCaptureImageSetDictionary() const {return (const SkPdfWebCaptureImageSetDictionary*)this;}
+
+ SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() {return (SkPdfWebCaptureInformationDictionary*)this;}
+ const SkPdfWebCaptureInformationDictionary* asWebCaptureInformationDictionary() const {return (const SkPdfWebCaptureInformationDictionary*)this;}
+
+ SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() {return (SkPdfWebCapturePageSetDictionary*)this;}
+ const SkPdfWebCapturePageSetDictionary* asWebCapturePageSetDictionary() const {return (const SkPdfWebCapturePageSetDictionary*)this;}
+
+ SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() {return (SkPdfWidgetAnnotationDictionary*)this;}
+ const SkPdfWidgetAnnotationDictionary* asWidgetAnnotationDictionary() const {return (const SkPdfWidgetAnnotationDictionary*)this;}
+
+ SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() {return (SkPdfWindowsLaunchActionDictionary*)this;}
+ const SkPdfWindowsLaunchActionDictionary* asWindowsLaunchActionDictionary() const {return (const SkPdfWindowsLaunchActionDictionary*)this;}
+
+public:
+ bool valid() const {return true;}
+};
+
+#endif // SkPdfXObjectDictionary_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/scripts/test_all_pdfs.sh b/chromium/third_party/skia/experimental/PdfViewer/scripts/test_all_pdfs.sh
new file mode 100755
index 00000000000..924c531bca5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/scripts/test_all_pdfs.sh
@@ -0,0 +1,92 @@
+#!/bin/bash
+
+# Copyright 2013 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+if [ "${1}" == '-h' ] || [ "${1}" == '--help' ]
+then
+echo 'test_all_pdfs.sh
+Usage: Run from the trunk directory of a Skia tree to convert a folder of PDFs into PNGs.
+ Many threads will be run simultaneously using the "parallel" tool if that tool is
+ installed. "parallel" can be installed on linux using "sudo apt-get install parallel."
+ Requires that skdiff and pdfviewer have already been built.
+
+Arguments:
+ folder Folder containing PDF files. The PNG results will be placed in "folder/new".
+ If folder contains a folder named "old", the PNGs in "folder/new" will be
+ compared to PNGs in "folder/old" with the same name, and the differences
+ will be stored in a "folder/d".'
+exit
+fi
+
+# Early exit if pdfviewer has not been built.
+# TODO (scroggo): Use release version if debug is unavailable
+if [ ! -f out/Debug/pdfviewer ]
+then
+ echo 'debug version of pdfviewer is required.'
+ exit
+fi
+
+if [ -z $1 ]
+then
+ echo 'folder is a required argument.'
+ exit
+fi
+
+if [ ! -d $1 ]
+then
+ echo 'folder must be a valid directory.'
+ exit
+fi
+
+# Create the directory to contain the new results. If old new results exist, remove them.
+if [ -d $1/new ]
+then
+ rm -rf $1/new
+fi
+
+mkdir $1/new/
+
+# Run the script to read each PDF and convert it to a PNG.
+if command -v parallel >/dev/null 2>&1
+then
+ echo 'Running in parallel'
+ ls -1 $1/*.pdf | sed "s/^/experimental\/PdfViewer\/scripts\/vm_pdf_viewer_run_one_pdf.sh /" \
+ | parallel
+else
+ echo 'Converting each file sequentially. Install "parallel" to convert in parallel.'
+ echo '"parallel" can be installed on linux with "sudo apt-get install parallel".'
+ ls -1 $1/*.pdf | xargs experimental/PdfViewer/scripts/vm_pdf_viewer_run_one_pdf.sh
+fi
+
+# Next, compare to the old results. Exit now if there is no folder with old results.
+if [ ! -d $1/old ]
+then
+ exit
+fi
+
+# Check to make sure that skdiff has been built.
+RELEASE_SKDIFF=out/Release/skdiff
+DEBUG_SKDIFF=out/Debug/skdiff
+if [ -f $RELEASE_SKDIFF ]
+then
+ SKDIFF=$RELEASE_SKDIFF
+elif [ -f $DEBUG_SKDIFF ]
+then
+ SKDIFF=$DEBUG_SKDIFF
+else
+ echo 'Build skdiff in order to do comparisons.'
+ exit
+fi
+
+# Create the diff folder, after deleting old diffs if necessary.
+if [ -d $1/d ]
+then
+ rm -rf $1/d
+fi
+
+mkdir $1/d
+
+$SKDIFF $1/old $1/new $1/d
diff --git a/chromium/third_party/skia/experimental/PdfViewer/scripts/vm_pdf_viewer_run_one_pdf.sh b/chromium/third_party/skia/experimental/PdfViewer/scripts/vm_pdf_viewer_run_one_pdf.sh
new file mode 100755
index 00000000000..c2df4759d9f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/scripts/vm_pdf_viewer_run_one_pdf.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+# Copyright 2013 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+DIR=`dirname "$1"`
+
+out/Debug/pdfviewer -r $1 -w $DIR/new -n
+
diff --git a/chromium/third_party/skia/experimental/PdfViewer/src/SkPdfContext.cpp b/chromium/third_party/skia/experimental/PdfViewer/src/SkPdfContext.cpp
new file mode 100644
index 00000000000..670e6ce48d6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/src/SkPdfContext.cpp
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfContext.h"
+#include "SkPdfNativeDoc.h"
+#include "SkPdfReporter.h"
+#include "SkPdfTokenLooper.h"
+
+///////////////////////////////////////////////////////////////////////////////
+
+class PdfMainLooper : public SkPdfTokenLooper {
+public:
+ PdfMainLooper(SkPdfNativeTokenizer* tokenizer,
+ SkPdfContext* pdfContext,
+ SkCanvas* canvas)
+ : INHERITED(tokenizer, pdfContext, canvas) {}
+
+ virtual SkPdfResult consumeToken(PdfToken& token) SK_OVERRIDE;
+ virtual void loop() SK_OVERRIDE;
+
+private:
+ typedef SkPdfTokenLooper INHERITED;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+
+SkPdfContext::SkPdfContext(SkPdfNativeDoc* doc)
+ : fPdfDoc(doc)
+{
+ SkASSERT(fPdfDoc != NULL);
+}
+
+void SkPdfContext::parseStream(SkPdfNativeObject* stream, SkCanvas* canvas) {
+ if (NULL == stream) {
+ // Nothing to parse.
+ return;
+ }
+
+ SkPdfNativeTokenizer tokenizer(stream, &fTmpPageAllocator, fPdfDoc);
+ PdfMainLooper looper(&tokenizer, this, canvas);
+ looper.loop();
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+// FIXME (scroggo): This probably belongs in a debugging file.
+// For reportRenderStats declaration.
+#include "SkPdfRenderer.h"
+
+// Temp code to measure what operands fail.
+template <typename T> class SkTDictWithDefaultConstructor : public SkTDict<T> {
+public:
+ SkTDictWithDefaultConstructor() : SkTDict<T>(10) {}
+};
+
+SkTDictWithDefaultConstructor<int> gRenderStats[kCount_SkPdfResult];
+
+const char* gRenderStatsNames[kCount_SkPdfResult] = {
+ "Success",
+ "Partially implemented",
+ "Not yet implemented",
+ "Ignore Error",
+ "Error",
+ "Unsupported/Unknown"
+};
+
+// Declared in SkPdfRenderer.h. Should be moved to a central debugging location.
+void reportPdfRenderStats() {
+ for (int i = 0 ; i < kCount_SkPdfResult; i++) {
+ SkTDict<int>::Iter iter(gRenderStats[i]);
+ const char* key;
+ int value = 0;
+ while ((key = iter.next(&value)) != NULL) {
+ SkDebugf("%s: %s -> count %i\n", gRenderStatsNames[i], key, value);
+ }
+ }
+}
+
+#include "SkPdfOps.h"
+
+SkPdfResult PdfMainLooper::consumeToken(PdfToken& token) {
+ if (token.fType == kKeyword_TokenType && token.fKeywordLength < 256)
+ {
+ PdfOperatorRenderer pdfOperatorRenderer = NULL;
+ if (gPdfOps.find(token.fKeyword, token.fKeywordLength, &pdfOperatorRenderer) &&
+ pdfOperatorRenderer) {
+ // Main work is done by pdfOperatorRenderer(...)
+ SkPdfResult result = pdfOperatorRenderer(fPdfContext, fCanvas, this);
+
+ int cnt = 0;
+ gRenderStats[result].find(token.fKeyword, token.fKeywordLength, &cnt);
+ gRenderStats[result].set(token.fKeyword, token.fKeywordLength, cnt + 1);
+ } else {
+ int cnt = 0;
+ gRenderStats[kUnsupported_SkPdfResult].find(token.fKeyword,
+ token.fKeywordLength,
+ &cnt);
+ gRenderStats[kUnsupported_SkPdfResult].set(token.fKeyword,
+ token.fKeywordLength,
+ cnt + 1);
+ }
+ }
+ else if (token.fType == kObject_TokenType)
+ {
+ fPdfContext->fObjectStack.push( token.fObject );
+ }
+ else {
+ // TODO(edisonn): store the keyword as a object, so we can track the location in file,
+ // and report where the error was triggered
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue, token.fKeyword, NULL,
+ fPdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+ return kOK_SkPdfResult;
+}
+
+void PdfMainLooper::loop() {
+ PdfToken token;
+ while (fTokenizer->readToken(&token, true)) {
+ this->consumeToken(token);
+ }
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/src/SkPdfDiffEncoder.cpp b/chromium/third_party/skia/experimental/PdfViewer/src/SkPdfDiffEncoder.cpp
new file mode 100644
index 00000000000..3ea0d37363a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/src/SkPdfDiffEncoder.cpp
@@ -0,0 +1,130 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfDiffEncoder.h"
+#include "SkPdfNativeTokenizer.h"
+
+#ifdef PDF_TRACE_DIFF_IN_PNG
+#include "SkBitmap.h"
+#include "SkBitmapDevice.h"
+#include "SkCanvas.h"
+#include "SkClipStack.h"
+#include "SkColor.h"
+#include "SkImageEncoder.h"
+#include "SkPaint.h"
+#include "SkPath.h"
+#include "SkRegion.h"
+#include "SkScalar.h"
+#include "SkString.h"
+
+extern "C" SkBitmap* gDumpBitmap;
+extern "C" SkCanvas* gDumpCanvas;
+SkBitmap* gDumpBitmap = NULL;
+SkCanvas* gDumpCanvas = NULL;
+static int gReadOp;
+static int gOpCounter;
+static SkString gLastKeyword;
+#endif // PDF_TRACE_DIFF_IN_PNG
+
+void SkPdfDiffEncoder::WriteToFile(PdfToken* token) {
+#ifdef PDF_TRACE_DIFF_IN_PNG
+ gReadOp++;
+ gOpCounter++;
+
+ // Only attempt to write if the dump bitmap and canvas are non NULL. They are set by
+ // pdf_viewer_main.cpp
+ if (NULL == gDumpBitmap || NULL == gDumpCanvas) {
+ return;
+ }
+
+ // TODO(edisonn): this code is used to make a step by step history of all the draw operations
+ // so we could find the step where something is wrong.
+ if (!gLastKeyword.isEmpty()) {
+ gDumpCanvas->flush();
+
+ // Copy the existing drawing. Then we will draw the difference caused by this command,
+ // highlighted with a blue border.
+ SkBitmap bitmap;
+ if (gDumpBitmap->copyTo(&bitmap, SkBitmap::kARGB_8888_Config)) {
+
+ SkAutoTUnref<SkBaseDevice> device(SkNEW_ARGS(SkBitmapDevice, (bitmap)));
+ SkCanvas canvas(device);
+
+ // draw context stuff here
+ SkPaint blueBorder;
+ blueBorder.setColor(SK_ColorBLUE);
+ blueBorder.setStyle(SkPaint::kStroke_Style);
+ blueBorder.setTextSize(SkDoubleToScalar(20));
+
+ SkString str;
+
+ const SkClipStack* clipStack = gDumpCanvas->getClipStack();
+ if (clipStack) {
+ SkClipStack::Iter iter(*clipStack, SkClipStack::Iter::kBottom_IterStart);
+ const SkClipStack::Element* elem;
+ double y = 0;
+ int total = 0;
+ while ((elem = iter.next()) != NULL) {
+ total++;
+ y += 30;
+
+ switch (elem->getType()) {
+ case SkClipStack::Element::kRect_Type:
+ canvas.drawRect(elem->getRect(), blueBorder);
+ canvas.drawText("Rect Clip", strlen("Rect Clip"),
+ SkDoubleToScalar(10), SkDoubleToScalar(y), blueBorder);
+ break;
+ case SkClipStack::Element::kPath_Type:
+ canvas.drawPath(elem->getPath(), blueBorder);
+ canvas.drawText("Path Clip", strlen("Path Clip"),
+ SkDoubleToScalar(10), SkDoubleToScalar(y), blueBorder);
+ break;
+ case SkClipStack::Element::kEmpty_Type:
+ canvas.drawText("Empty Clip!!!", strlen("Empty Clip!!!"),
+ SkDoubleToScalar(10), SkDoubleToScalar(y), blueBorder);
+ break;
+ default:
+ canvas.drawText("Unknown Clip!!!", strlen("Unknown Clip!!!"),
+ SkDoubleToScalar(10), SkDoubleToScalar(y), blueBorder);
+ break;
+ }
+ }
+
+ y += 30;
+ str.printf("Number of clips in stack: %i", total);
+ canvas.drawText(str.c_str(), str.size(),
+ SkDoubleToScalar(10), SkDoubleToScalar(y), blueBorder);
+ }
+
+ const SkRegion& clipRegion = gDumpCanvas->getTotalClip();
+ SkPath clipPath;
+ if (clipRegion.getBoundaryPath(&clipPath)) {
+ SkPaint redBorder;
+ redBorder.setColor(SK_ColorRED);
+ redBorder.setStyle(SkPaint::kStroke_Style);
+ canvas.drawPath(clipPath, redBorder);
+ }
+
+ canvas.flush();
+
+ SkString out;
+
+ // TODO(edisonn): overlay on top of image inf about the clip , grafic state, the stack
+
+ out.appendf("/tmp/log_step_by_step/step-%i-%s.png", gOpCounter, gLastKeyword.c_str());
+
+ SkImageEncoder::EncodeFile(out.c_str(), bitmap, SkImageEncoder::kPNG_Type, 100);
+ }
+ }
+
+ if (token->fType == kKeyword_TokenType && token->fKeyword && token->fKeywordLength > 0) {
+ gLastKeyword.set(token->fKeyword, token->fKeywordLength);
+ } else {
+ gLastKeyword.reset();
+ }
+#endif
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/src/SkPdfOps.h b/chromium/third_party/skia/experimental/PdfViewer/src/SkPdfOps.h
new file mode 100644
index 00000000000..c88d60716ab
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/src/SkPdfOps.h
@@ -0,0 +1,18 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkPdfOps_DEFINED
+#define SkPdfOps_DEFINED
+
+// Signature for all the operations available in pdf.
+typedef SkPdfResult (*PdfOperatorRenderer)(SkPdfContext*, SkCanvas*, SkPdfTokenLooper*);
+
+// FIXME (scroggo): Make a cleaner interface for this, and avoid statics and globals.
+// Map of string to function pointer for all known draw operations.
+extern SkTDict<PdfOperatorRenderer> gPdfOps;
+
+#endif // SkPdfOps_DEFINED
diff --git a/chromium/third_party/skia/experimental/PdfViewer/src/SkPdfRenderer.cpp b/chromium/third_party/skia/experimental/PdfViewer/src/SkPdfRenderer.cpp
new file mode 100644
index 00000000000..09953440932
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/src/SkPdfRenderer.cpp
@@ -0,0 +1,2915 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPdfRenderer.h"
+
+#include "SkBitmapDevice.h"
+#include "SkCanvas.h"
+#include "SkDevice.h"
+#include "SkForceLinking.h"
+#include "SkGraphics.h"
+#include "SkImageDecoder.h"
+#include "SkImageEncoder.h"
+#include "SkOSFile.h"
+#include "SkPicture.h"
+#include "SkPdfFont.h"
+#include "SkPdfGraphicsState.h"
+#include "SkPdfHeaders_autogen.h"
+#include "SkPdfMapper_autogen.h"
+#include "SkPdfNativeTokenizer.h"
+#include "SkPdfRenderer.h"
+#include "SkPdfReporter.h"
+#include "SkPdfTokenLooper.h"
+#include "SkPdfUtils.h"
+#include "SkStream.h"
+#include "SkTypeface.h"
+#include "SkTArray.h"
+#include "SkTDict.h"
+
+// TODO(edisonn): #ifdef these ones, as they are used only for debugging.
+extern "C" SkPdfContext* gPdfContext;
+
+__SK_FORCE_IMAGE_DECODER_LINKING;
+
+// TODO(edisonn): tool, show what objects were read during rendering - will help to identify
+// features with incomplete implementation
+// TODO(edisonn): security - validate all the user input, all pdf!
+// TODO(edisonn): testability -add option to render without text, or only render text
+
+// Helper macros to load variables from stack, and automatically check their type.
+#define EXPECT_OPERANDS(name,pdfContext,n) \
+ bool __failed = pdfContext->fObjectStack.count() < n; \
+ SkPdfREPORTCODE(const char* __operator_name = name); \
+ SkPdfREPORTCODE((void)__operator_name); \
+ SkPdfReportIf(pdfContext->fObjectStack.count() < n, \
+ kIgnoreError_SkPdfIssueSeverity, \
+ kStackOverflow_SkPdfIssue, \
+ "Not enought parameters.", NULL, pdfContext); \
+ SkDEBUGCODE(int __cnt = n);
+
+#define POP_OBJ(pdfContext,name) \
+ SkDEBUGCODE(__cnt--); \
+ SkASSERT(__cnt >= 0); \
+ SkPdfNativeObject* name = NULL; \
+ __failed = __failed || pdfContext->fObjectStack.count() == 0; \
+ if (pdfContext->fObjectStack.count() > 0) { \
+ name = pdfContext->fObjectStack.top(); \
+ pdfContext->fObjectStack.pop(); \
+ }
+
+// TODO(edisonn): make all pop function to use name##_obj
+#define POP_NUMBER(pdfContext,name) \
+ SkDEBUGCODE(__cnt--); \
+ SkASSERT(__cnt >= 0); \
+ double name = 0; \
+ SkPdfNativeObject* name##_obj = NULL; \
+ __failed = __failed || pdfContext->fObjectStack.count() == 0; \
+ if (pdfContext->fObjectStack.count() > 0) { \
+ name##_obj = pdfContext->fObjectStack.top(); \
+ pdfContext->fObjectStack.pop(); \
+ if (!name##_obj || !name##_obj->isNumber()) { \
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, \
+ __operator_name, \
+ name##_obj, \
+ SkPdfNativeObject::_kNumber_PdfObjectType, \
+ NULL);\
+ __failed = true;\
+ } else { \
+ name = name##_obj->numberValue(); \
+ } \
+ }
+
+#define POP_INTEGER(pdfContext,name) \
+ SkDEBUGCODE(__cnt--); \
+ SkASSERT(__cnt >= 0); \
+ int64_t name = 0; \
+ __failed = __failed || pdfContext->fObjectStack.count() == 0; \
+ SkPdfNativeObject* name##_obj = NULL; \
+ if (pdfContext->fObjectStack.count() > 0) { \
+ name##_obj = pdfContext->fObjectStack.top(); \
+ pdfContext->fObjectStack.pop(); \
+ if (!name##_obj || !name##_obj->isInteger()) { \
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, \
+ __operator_name, \
+ name##_obj, \
+ SkPdfNativeObject::kInteger_PdfObjectType, \
+ NULL);\
+ __failed = true;\
+ } else { \
+ name = name##_obj->intValue(); \
+ } \
+ }
+
+#define POP_NUMBER_INTO(pdfContext,var) \
+ SkDEBUGCODE(__cnt--); \
+ SkASSERT(__cnt >= 0); \
+ __failed = __failed || pdfContext->fObjectStack.count() == 0; \
+ if (pdfContext->fObjectStack.count() > 0) { \
+ SkPdfNativeObject* tmp = pdfContext->fObjectStack.top(); \
+ pdfContext->fObjectStack.pop(); \
+ if (!tmp || !tmp->isNumber()) { \
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, \
+ __operator_name, \
+ tmp, \
+ SkPdfNativeObject::kInteger_PdfObjectType | \
+ SkPdfNativeObject::kReal_PdfObjectType, \
+ NULL);\
+ __failed = true;\
+ } else { \
+ var = tmp->numberValue(); \
+ } \
+ }
+
+
+#define POP_NAME(pdfContext,name) \
+ SkDEBUGCODE(__cnt--); \
+ SkASSERT(__cnt >= 0); \
+ SkPdfNativeObject* name = NULL; \
+ __failed = __failed || pdfContext->fObjectStack.count() == 0; \
+ if (pdfContext->fObjectStack.count() > 0) { \
+ SkPdfNativeObject* tmp = pdfContext->fObjectStack.top(); \
+ pdfContext->fObjectStack.pop(); \
+ if (!tmp || !tmp->isName()) { \
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, \
+ __operator_name, \
+ tmp, \
+ SkPdfNativeObject::kName_PdfObjectType, \
+ NULL);\
+ __failed = true;\
+ } else { \
+ name = tmp; \
+ } \
+ }
+
+#define POP_STRING(pdfContext,name) \
+ SkDEBUGCODE(__cnt--); \
+ SkASSERT(__cnt >= 0); \
+ SkPdfNativeObject* name = NULL; \
+ __failed = __failed || pdfContext->fObjectStack.count() == 0; \
+ if (pdfContext->fObjectStack.count() > 0) { \
+ SkPdfNativeObject* tmp = pdfContext->fObjectStack.top(); \
+ pdfContext->fObjectStack.pop(); \
+ if (!tmp || !tmp->isAnyString()) { \
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, \
+ __operator_name, \
+ tmp, \
+ SkPdfNativeObject::kString_PdfObjectType | \
+ SkPdfNativeObject::kHexString_PdfObjectType, \
+ NULL);\
+ __failed = true;\
+ } else { \
+ name = tmp; \
+ } \
+ }
+
+#define POP_ARRAY(pdfContext,name) \
+ SkDEBUGCODE(__cnt--); \
+ SkASSERT(__cnt >= 0); \
+ SkPdfArray* name = NULL; \
+ __failed = __failed || pdfContext->fObjectStack.count() == 0; \
+ if (pdfContext->fObjectStack.count() > 0) { \
+ SkPdfNativeObject* tmp = pdfContext->fObjectStack.top(); \
+ pdfContext->fObjectStack.pop(); \
+ if (!tmp || !tmp->isArray()) { \
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, \
+ __operator_name, \
+ tmp, \
+ SkPdfNativeObject::kArray_PdfObjectType, \
+ NULL);\
+ __failed = true;\
+ } else { \
+ name = (SkPdfArray*)tmp; \
+ } \
+ }
+
+#define CHECK_PARAMETERS() \
+ SkASSERT(__cnt == 0); \
+ if (__failed) return kIgnoreError_SkPdfResult;
+
+
+NotOwnedString strings_DeviceRGB;
+NotOwnedString strings_DeviceCMYK;
+
+class StringsInit {
+public:
+ StringsInit() {
+ NotOwnedString::init(&strings_DeviceRGB, "DeviceRGB");
+ NotOwnedString::init(&strings_DeviceCMYK, "DeviceCMYK");
+ }
+};
+
+// TODO(edisonn): this will not work in chrome! Find another solution!
+StringsInit gStringsInit;
+
+// TODO(edisonn): Document SkPdfTokenLooper and subclasses.
+class PdfInlineImageLooper : public SkPdfTokenLooper {
+public:
+ explicit PdfInlineImageLooper(SkPdfTokenLooper* parent)
+ : INHERITED(parent) {}
+
+ virtual SkPdfResult consumeToken(PdfToken& token) SK_OVERRIDE;
+ virtual void loop() SK_OVERRIDE;
+
+private:
+ typedef SkPdfTokenLooper INHERITED;
+};
+
+class PdfCompatibilitySectionLooper : public SkPdfTokenLooper {
+public:
+ explicit PdfCompatibilitySectionLooper(SkPdfTokenLooper* parent)
+ : INHERITED (parent) {}
+
+ virtual SkPdfResult consumeToken(PdfToken& token) SK_OVERRIDE;
+ virtual void loop() SK_OVERRIDE;
+
+private:
+ typedef SkPdfTokenLooper INHERITED;
+};
+
+// Utilities
+static void setup_bitmap(SkBitmap* bitmap, int width, int height, SkColor color = SK_ColorWHITE) {
+ bitmap->allocN32Pixels(width, height);
+ bitmap->eraseColor(color);
+}
+
+// TODO(edisonn): synonyms? /DeviceRGB and /RGB mean the same thing. Context dependent.
+static int GetColorSpaceComponents(NotOwnedString& colorSpace) {
+ if (colorSpace.equals("DeviceCMYK")) {
+ return 4;
+ } else if (colorSpace.equals("DeviceGray") ||
+ colorSpace.equals("CalGray") ||
+ colorSpace.equals("Indexed")) {
+ return 1;
+ } else if (colorSpace.equals("DeviceRGB") ||
+ colorSpace.equals("CalRGB") ||
+ colorSpace.equals("Lab")) {
+ return 3;
+ } else {
+ return 0;
+ }
+}
+
+SkMatrix SkMatrixFromPdfMatrix(double array[6]) {
+ SkMatrix matrix;
+ matrix.setAll(SkDoubleToScalar(array[0]),
+ SkDoubleToScalar(array[2]),
+ SkDoubleToScalar(array[4]),
+ SkDoubleToScalar(array[1]),
+ SkDoubleToScalar(array[3]),
+ SkDoubleToScalar(array[5]),
+ SkDoubleToScalar(0),
+ SkDoubleToScalar(0),
+ SkDoubleToScalar(1));
+
+ return matrix;
+}
+
+SkMatrix SkMatrixFromPdfArray(SkPdfArray* pdfArray) {
+ double array[6];
+
+ // TODO(edisonn): security issue, ret if size() != 6
+ if (pdfArray == NULL) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kNullObject_SkPdfIssue,
+ "null array passed to build matrix", NULL, NULL);
+ return SkMatrix::I();
+ }
+
+ if (pdfArray->size() != 6) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kUnexpectedArraySize_SkPdfIssue,
+ "null array passed to build matrix", pdfArray, NULL);
+ return SkMatrix::I();
+ }
+
+ for (int i = 0; i < 6; i++) {
+ const SkPdfNativeObject* elem = pdfArray->operator [](i);
+ if (elem == NULL || !elem->isNumber()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, elem,
+ SkPdfNativeObject::_kNumber_PdfObjectType, NULL);
+ return SkMatrix::I();
+ }
+ array[i] = elem->numberValue();
+ }
+
+ return SkMatrixFromPdfMatrix(array);
+}
+
+// TODO(edisonn): debug code, used to analyze rendering when we find bugs.
+extern "C" SkPdfNativeDoc* gDoc;
+
+static SkPdfResult DrawText(SkPdfContext* pdfContext,
+ const SkPdfNativeObject* _str,
+ SkCanvas* canvas)
+{
+ SkPdfFont* skfont = pdfContext->fGraphicsState.fSkFont;
+ if (skfont == NULL) {
+ skfont = SkPdfFont::Default();
+ }
+
+ if (_str == NULL || !_str->isAnyString()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity,
+ "DrawText",
+ _str,
+ SkPdfNativeObject::_kAnyString_PdfObjectType,
+ pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+ const SkPdfString* str = (const SkPdfString*)_str;
+
+ SkUnencodedText binary(str);
+
+ SkDecodedText decoded;
+
+ if (skfont->encoding() == NULL) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kMissingEncoding_SkPdfIssue,
+ "draw text", _str, pdfContext);
+ return kNYI_SkPdfResult;
+ }
+
+ skfont->encoding()->decodeText(binary, &decoded);
+
+ SkPaint paint;
+ // TODO(edisonn): does size 0 mean anything special?
+ if (pdfContext->fGraphicsState.fCurFontSize != 0) {
+ paint.setTextSize(SkDoubleToScalar(pdfContext->fGraphicsState.fCurFontSize));
+ }
+
+ // TODO(edisonn): implement font scaler
+// if (fCurFont && fCurFont->GetFontScale() != 0) {
+// paint.setTextScaleX(fCurFont->GetFontScale() / 100.0);
+// }
+
+ pdfContext->fGraphicsState.applyGraphicsState(&paint, false);
+
+ skfont->drawText(decoded, &paint, pdfContext, canvas);
+
+ return kOK_SkPdfResult;
+}
+
+// TODO(edisonn): create header files with declarations!
+SkPdfResult PdfOp_q(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper* parentLooper);
+SkPdfResult PdfOp_Q(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper* parentLooper);
+SkPdfResult PdfOp_Tw(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper* parentLooper);
+SkPdfResult PdfOp_Tc(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper* parentLooper);
+
+// TODO(edisonn): perf!!!
+static SkColorTable* getGrayColortable() {
+ static SkColorTable* grayColortable = NULL;
+ if (grayColortable == NULL) {
+ SkPMColor* colors = new SkPMColor[256];
+ for (int i = 0 ; i < 256; i++) {
+ colors[i] = SkPreMultiplyARGB(255, i, i, i);
+ }
+ grayColortable = new SkColorTable(colors, 256);
+ }
+ return grayColortable;
+}
+
+static SkBitmap* transferImageStreamToBitmap(const unsigned char* uncompressedStream,
+ size_t uncompressedStreamLength,
+ int width, int height, int bytesPerLine,
+ int bpc, const SkString& colorSpace,
+ bool transparencyMask) {
+ SkBitmap* bitmap = new SkBitmap();
+
+ //int components = GetColorSpaceComponents(colorSpace);
+//#define MAX_COMPONENTS 10
+
+ // TODO(edisonn): assume start of lines are aligned at 32 bits?
+ // Is there a faster way to load the uncompressed stream into a bitmap?
+
+ // minimal support for now
+ if ((colorSpace.equals("DeviceRGB") || colorSpace.equals("RGB")) && bpc == 8) {
+ SkColor* uncompressedStreamArgb = (SkColor*)malloc(width * height * sizeof(SkColor));
+
+ for (int h = 0 ; h < height; h++) {
+ long i = width * (h);
+ for (int w = 0 ; w < width; w++) {
+ uncompressedStreamArgb[i] = SkColorSetRGB(uncompressedStream[3 * w],
+ uncompressedStream[3 * w + 1],
+ uncompressedStream[3 * w + 2]);
+ i++;
+ }
+ uncompressedStream += bytesPerLine;
+ }
+
+ const SkImageInfo info = SkImageInfo::MakeN32Premul(width, height);
+ bitmap->installPixels(info, uncompressedStreamArgb, info.minRowBytes());
+ }
+ else if ((colorSpace.equals("DeviceGray") || colorSpace.equals("Gray")) && bpc == 8) {
+ unsigned char* uncompressedStreamA8 = (unsigned char*)malloc(width * height);
+
+ for (int h = 0 ; h < height; h++) {
+ long i = width * (h);
+ for (int w = 0 ; w < width; w++) {
+ uncompressedStreamA8[i] = transparencyMask ? 255 - uncompressedStream[w] :
+ uncompressedStream[w];
+ i++;
+ }
+ uncompressedStream += bytesPerLine;
+ }
+
+ const SkColorType ct = transparencyMask ? kAlpha_8_SkColorType : kIndex_8_SkColorType;
+ const SkImageInfo info = SkImageInfo::Make(width, height, ct, kPremul_SkAlphaType);
+ bitmap->installPixels(info, uncompressedStreamA8, info.minRowBytes(),
+ transparencyMask ? NULL : getGrayColortable(), NULL, NULL);
+ }
+
+ // TODO(edisonn): pass color space and context here?
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue, "Color space NYI", NULL, NULL);
+ return bitmap;
+}
+// TODO(edisonn): preserve A1 format that skia knows, + fast convert from 111, 222, 444 to closest
+// skia format.
+
+// This functions returns the image, it does not look at the smask.
+static SkBitmap* getImageFromObjectCore(SkPdfContext* pdfContext,
+ SkPdfImageDictionary* image, bool transparencyMask) {
+ if (image == NULL || !image->hasStream()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, "Missing stream", image,
+ SkPdfNativeObject::_kStream_PdfObjectType, pdfContext);
+ return NULL;
+ }
+
+ int bpc = (int)image->BitsPerComponent(pdfContext->fPdfDoc);
+ int width = (int)image->Width(pdfContext->fPdfDoc);
+ int height = (int)image->Height(pdfContext->fPdfDoc);
+ SkString colorSpace("DeviceRGB");
+
+ bool indexed = false;
+ SkPMColor colors[256];
+ int cnt = 0;
+
+ if (image->isColorSpaceAName(pdfContext->fPdfDoc)) {
+ colorSpace = image->getColorSpaceAsName(pdfContext->fPdfDoc);
+ } else if (image->isColorSpaceAArray(pdfContext->fPdfDoc)) {
+ SkPdfArray* array = image->getColorSpaceAsArray(pdfContext->fPdfDoc);
+ if (array && array->size() == 4 && array->objAtAIndex(0)->isName("Indexed") &&
+ (array->objAtAIndex(1)->isName("DeviceRGB") ||
+ array->objAtAIndex(1)->isName("RGB")) &&
+ array->objAtAIndex(2)->isInteger() &&
+ array->objAtAIndex(3)->isHexString()
+ ) {
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue, "Color space NYI",
+ image, pdfContext);
+ indexed = true;
+ cnt = (int)array->objAtAIndex(2)->intValue() + 1;
+ if (cnt > 256) {
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue,
+ "Color space feature NYI, cnt > 256", image, pdfContext);
+ return NULL;
+ }
+ NotOwnedString data = array->objAtAIndex(3)->strRef();
+ if (data.fBytes != (unsigned int)cnt * 3) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kIncostistentSizes_SkPdfIssue,
+ "Image color table mismatch color space specs", array, pdfContext);
+ return NULL;
+ }
+ for (int i = 0 ; i < cnt; i++) {
+ colors[i] = SkPreMultiplyARGB(0xff,
+ data.fBuffer[3 * i],
+ data.fBuffer[3 * i + 1],
+ data.fBuffer[3 * i + 2]);
+ }
+ }
+ }
+
+ // TODO(edisonn): implement image masks.
+/* bool imageMask = image->imageMask();
+ if (imageMask) {
+ if (bpc != 0 && bpc != 1) {
+ // TODO(edisonn): report warning to be used in testing.
+ return SkBitmap();
+ }
+ bpc = 1;
+ }
+*/
+
+ const unsigned char* uncompressedStream = NULL;
+ size_t uncompressedStreamLength = 0;
+
+ SkPdfStream* stream = (SkPdfStream*)image;
+
+ if (!stream || !stream->GetFilteredStreamRef(&uncompressedStream, &uncompressedStreamLength) ||
+ uncompressedStream == NULL || uncompressedStreamLength == 0) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, "Missing stream", stream,
+ SkPdfNativeObject::_kStream_PdfObjectType, pdfContext);
+ return NULL;
+ }
+
+ SkPdfStreamCommonDictionary* streamDict = (SkPdfStreamCommonDictionary*)stream;
+
+ if (streamDict->has_Filter() &&
+ ((streamDict->isFilterAName(NULL) &&
+ streamDict->getFilterAsName(NULL).equals("DCTDecode")) ||
+ (streamDict->isFilterAArray(NULL) &&
+ streamDict->getFilterAsArray(NULL)->size() > 0 &&
+ streamDict->getFilterAsArray(NULL)->objAtAIndex(0)->isName() &&
+ streamDict->getFilterAsArray(NULL)->objAtAIndex(0)->nameValue2()
+ .equals("DCTDecode")))) {
+ SkBitmap* bitmap = new SkBitmap();
+ SkImageDecoder::DecodeMemory(uncompressedStream, uncompressedStreamLength, bitmap);
+ return bitmap;
+ }
+
+ // TODO(edisonn): assumes RGB for now, since it is the only one implemented
+ if (indexed) {
+ SkBitmap* bitmap = new SkBitmap();
+ const SkImageInfo info = SkImageInfo::Make(width, height, kIndex_8_SkColorType,
+ kPremul_SkAlphaType);
+ SkAutoTUnref<SkColorTable> colorTable(new SkColorTable(colors, cnt));
+ bitmap->installPixels(info, (void*)uncompressedStream, info.minRowBytes(), colorTable,
+ NULL, NULL);
+ return bitmap;
+ }
+
+ int bytesPerLine = (int)(uncompressedStreamLength / height);
+#ifdef PDF_TRACE
+ if (uncompressedStreamLength % height != 0) {
+ printf("Warning uncompressedStreamLength modulo height != 0 !!!\n");
+ }
+#endif
+
+ SkBitmap* bitmap = transferImageStreamToBitmap(
+ (unsigned char*)uncompressedStream, uncompressedStreamLength,
+ (int)width, (int)height, bytesPerLine,
+ (int)bpc, colorSpace,
+ transparencyMask);
+
+ return bitmap;
+}
+
+static SkBitmap* getImageFromObject(SkPdfContext* pdfContext, SkPdfImageDictionary* image,
+ bool transparencyMask) {
+ if (!transparencyMask) {
+ if (!image->hasData(SkPdfNativeObject::kBitmap_Data)) {
+ SkBitmap* bitmap = getImageFromObjectCore(pdfContext, image, transparencyMask);
+ image->setData(bitmap, SkPdfNativeObject::kBitmap_Data);
+ }
+ return (SkBitmap*) image->data(SkPdfNativeObject::kBitmap_Data);
+ } else {
+ return getImageFromObjectCore(pdfContext, image, transparencyMask);
+ }
+}
+
+static SkBitmap* getSmaskFromObject(SkPdfContext* pdfContext, SkPdfImageDictionary* obj) {
+ SkPdfImageDictionary* sMask = obj->SMask(pdfContext->fPdfDoc);
+
+ if (sMask) {
+ return getImageFromObject(pdfContext, sMask, true);
+ }
+
+ // TODO(edisonn): implement GS SMask. Default to empty right now.
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue,
+ "implement GS SMask. Default to empty right now.", obj, pdfContext);
+
+ return pdfContext->fGraphicsState.fSMask;
+}
+
+static SkPdfResult doXObject_Image(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfImageDictionary* skpdfimage) {
+ if (skpdfimage == NULL) {
+ return kIgnoreError_SkPdfResult;
+ }
+
+ SkBitmap* image = getImageFromObject(pdfContext, skpdfimage, false);
+ SkBitmap* sMask = getSmaskFromObject(pdfContext, skpdfimage);
+
+ canvas->save();
+ canvas->setMatrix(pdfContext->fGraphicsState.fCTM);
+
+ SkScalar z = SkIntToScalar(0);
+ SkScalar one = SkIntToScalar(1);
+
+ SkPoint from[4] = {SkPoint::Make(z, z), SkPoint::Make(one, z),
+ SkPoint::Make(one, one), SkPoint::Make(z, one)};
+ SkPoint to[4] = {SkPoint::Make(z, one), SkPoint::Make(one, one),
+ SkPoint::Make(one, z), SkPoint::Make(z, z)};
+ SkMatrix flip;
+ SkAssertResult(flip.setPolyToPoly(from, to, 4));
+ SkMatrix solveImageFlip = pdfContext->fGraphicsState.fCTM;
+ solveImageFlip.preConcat(flip);
+ canvas->setMatrix(solveImageFlip);
+
+#ifdef PDF_TRACE
+ SkPoint final[4] = {SkPoint::Make(z, z), SkPoint::Make(one, z),
+ SkPoint::Make(one, one), SkPoint::Make(z, one)};
+ solveImageFlip.mapPoints(final, 4);
+ printf("IMAGE rect = ");
+ for (int i = 0; i < 4; i++) {
+ printf("(%f %f) ", SkScalarToDouble(final[i].x()), SkScalarToDouble(final[i].y()));
+ }
+ printf("\n");
+#endif // PDF_TRACE
+
+ SkRect dst = SkRect::MakeXYWH(SkDoubleToScalar(0.0), SkDoubleToScalar(0.0),
+ SkDoubleToScalar(1.0), SkDoubleToScalar(1.0));
+
+ // TODO(edisonn): soft mask type? alpha/luminosity.
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue,
+ "implement soft mask type", skpdfimage, pdfContext);
+
+ SkPaint paint;
+ pdfContext->fGraphicsState.applyGraphicsState(&paint, false);
+
+ if (!sMask || sMask->empty()) {
+ canvas->drawBitmapRect(*image, dst, &paint);
+ } else {
+ canvas->saveLayer(&dst, &paint);
+ canvas->drawBitmapRect(*image, dst, NULL);
+ SkPaint xfer;
+ xfer.setXfermodeMode(SkXfermode::kSrcOut_Mode);
+ canvas->drawBitmapRect(*sMask, dst, &xfer);
+ canvas->restore();
+ }
+
+ canvas->restore();
+
+ return kPartial_SkPdfResult;
+}
+
+//TODO(edisonn): options for implementing isolation and knockout
+// 1) emulate them (current solution)
+// PRO: simple
+// CON: will need to use readPixels, which means serious perf issues
+// 2) Compile a plan for an array of matrixes, compose the result at the end
+// PRO: might be faster then 1, no need to readPixels
+// CON: multiple drawings (but on smaller areas), pay a price at loading pdf to
+// compute a pdf draw plan
+// on average, a load with empty draw is 100ms on all the skps we have, for complete sites
+// 3) support them natively in SkCanvas
+// PRO: simple
+// CON: we would still need to use a form of readPixels anyway, so perf might be the same as 1)
+// 4) compile a plan using pathops, and render once without any fancy rules with backdrop
+// PRO: simple, fast
+// CON: pathops must be bug free first + time to compute new paths
+// pay a price at loading pdf to compute a pdf draw plan
+// on average, a load with empty draw is 100ms on all the skps we have, for complete sites
+// 5) for knockout, render the objects in reverse order, and add every object to the clip, and any
+// new draw will be cliped
+
+static void doGroup_before(SkPdfContext* pdfContext, SkCanvas* canvas, SkRect bbox,
+ SkPdfTransparencyGroupDictionary* tgroup, bool page) {
+ SkRect bboxOrig = bbox;
+ SkBitmap backdrop;
+ bool isolatedGroup = tgroup->I(pdfContext->fPdfDoc);
+// bool knockoutGroup = tgroup->K(pdfContext->fPdfDoc);
+ SkPaint paint;
+ pdfContext->fGraphicsState.applyGraphicsState(&paint, false);
+ canvas->saveLayer(&bboxOrig, isolatedGroup ? &paint : NULL);
+}
+
+// TODO(edisonn): non isolation should probably be implemented in skia
+//static void doGroup_after(SkPdfContext* pdfContext, SkCanvas* canvas, SkRect bbox,
+// SkPdfTransparencyGroupDictionary* tgroup) {
+// if not isolated
+// canvas->drawBitmapRect(backdrop, bboxOrig, NULL);
+//}
+
+static SkPdfResult doXObject_Form(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfType1FormDictionary* skobj) {
+ if (!skobj || !skobj->hasStream()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, "Missing stream", skobj,
+ SkPdfNativeObject::_kStream_PdfObjectType, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ if (!skobj->has_BBox()) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kMissingRequiredKey_SkPdfIssue, "BBox",
+ skobj, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ PdfOp_q(pdfContext, canvas, NULL);
+
+
+ if (skobj->Resources(pdfContext->fPdfDoc)) {
+ pdfContext->fGraphicsState.fResources = skobj->Resources(pdfContext->fPdfDoc);
+ }
+
+ SkTraceMatrix(pdfContext->fGraphicsState.fCTM, "Current matrix");
+
+ if (skobj->has_Matrix()) {
+ pdfContext->fGraphicsState.fCTM.preConcat(skobj->Matrix(pdfContext->fPdfDoc));
+ SkMatrix matrix = pdfContext->fGraphicsState.fCTM;
+ matrix.preScale(SkDoubleToScalar(1), SkDoubleToScalar(-1));
+ pdfContext->fGraphicsState.fMatrixTm = matrix;
+ pdfContext->fGraphicsState.fMatrixTlm = matrix;
+ // TODO(edisonn): text matrixes mosltly NYI
+ }
+
+ SkTraceMatrix(pdfContext->fGraphicsState.fCTM, "Total matrix");
+ pdfContext->fGraphicsState.fContentStreamMatrix = pdfContext->fGraphicsState.fCTM;
+
+ canvas->setMatrix(pdfContext->fGraphicsState.fCTM);
+
+ SkRect bbox = skobj->BBox(pdfContext->fPdfDoc);
+ // TODO(edisonn): constants (AA) from settings.
+ canvas->clipRect(bbox, SkRegion::kIntersect_Op, false);
+
+ // This is a group?
+ if (skobj->has_Group()) {
+ SkPdfTransparencyGroupDictionary* tgroup = skobj->Group(pdfContext->fPdfDoc);
+ doGroup_before(pdfContext, canvas, bbox, tgroup, false);
+ }
+
+ SkPdfStream* stream = (SkPdfStream*)skobj;
+
+ pdfContext->parseStream(stream, canvas);
+
+ if (skobj->has_Group()) {
+ canvas->restore();
+ }
+
+ PdfOp_Q(pdfContext, canvas, NULL);
+ return kPartial_SkPdfResult;
+}
+
+static SkPdfResult doXObject_Pattern(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfType1PatternDictionary* skobj) {
+ if (!skobj || !skobj->hasStream()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, "Missing stream",
+ skobj, SkPdfNativeObject::_kStream_PdfObjectType, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ if (!skobj->has_BBox()) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kMissingRequiredKey_SkPdfIssue, "BBox",
+ skobj, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ PdfOp_q(pdfContext, canvas, NULL);
+
+
+ if (skobj->Resources(pdfContext->fPdfDoc)) {
+ pdfContext->fGraphicsState.fResources = skobj->Resources(pdfContext->fPdfDoc);
+ }
+
+ SkTraceMatrix(pdfContext->fGraphicsState.fContentStreamMatrix, "Current Content stream matrix");
+
+ if (skobj->has_Matrix()) {
+ pdfContext->fGraphicsState.fContentStreamMatrix.preConcat(
+ skobj->Matrix(pdfContext->fPdfDoc));
+ }
+
+ SkTraceMatrix(pdfContext->fGraphicsState.fContentStreamMatrix, "Total Content stream matrix");
+
+ canvas->setMatrix(pdfContext->fGraphicsState.fContentStreamMatrix);
+ pdfContext->fGraphicsState.fCTM = pdfContext->fGraphicsState.fContentStreamMatrix;
+
+ SkRect bbox = skobj->BBox(pdfContext->fPdfDoc);
+ // TODO(edisonn): constants (AA) from settings.
+ canvas->clipRect(bbox, SkRegion::kIntersect_Op, false);
+
+ SkPdfStream* stream = (SkPdfStream*)skobj;
+
+ pdfContext->parseStream(stream, canvas);
+
+ PdfOp_Q(pdfContext, canvas, NULL);
+ return kPartial_SkPdfResult;
+}
+
+// TODO(edisonn): PS NYI
+//static SkPdfResult doXObject_PS(SkPdfContext* pdfContext, SkCanvas* canvas,
+// const SkPdfNativeObject* obj) {
+// return kNYI_SkPdfResult;
+//}
+
+SkPdfResult doType3Char(SkPdfContext* pdfContext, SkCanvas* canvas, const SkPdfNativeObject* skobj,
+ SkRect bBox, SkMatrix matrix, double textSize) {
+ if (!skobj || !skobj->hasStream()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, "Missing stream", skobj,
+ SkPdfNativeObject::_kStream_PdfObjectType, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ PdfOp_q(pdfContext, canvas, NULL);
+
+ pdfContext->fGraphicsState.fMatrixTm.preConcat(matrix);
+ pdfContext->fGraphicsState.fMatrixTm.preScale(SkDoubleToScalar(textSize),
+ SkDoubleToScalar(textSize));
+ pdfContext->fGraphicsState.fMatrixTlm = pdfContext->fGraphicsState.fMatrixTm;
+
+ pdfContext->fGraphicsState.fCTM = pdfContext->fGraphicsState.fMatrixTm;
+ pdfContext->fGraphicsState.fCTM.preScale(SkDoubleToScalar(1), SkDoubleToScalar(-1));
+
+ SkTraceMatrix(pdfContext->fGraphicsState.fCTM, "Total matrix");
+
+ canvas->setMatrix(pdfContext->fGraphicsState.fCTM);
+
+ SkRect rm = bBox;
+ pdfContext->fGraphicsState.fCTM.mapRect(&rm);
+
+ SkTraceRect(rm, "bbox mapped");
+
+ // TODO(edisonn): constants (AA) from settings.
+ canvas->clipRect(bBox, SkRegion::kIntersect_Op, false);
+
+ SkPdfStream* stream = (SkPdfStream*)skobj;
+
+ pdfContext->parseStream(stream, canvas);
+
+ PdfOp_Q(pdfContext, canvas, NULL);
+
+ return kPartial_SkPdfResult;
+}
+
+// The PDF could be corrupted so a dict refers recursively to the same dict, if this happens
+// we end up with a stack overflow and crash.
+class CheckRecursiveRendering {
+ SkPdfNativeObject* fObj;
+public:
+ CheckRecursiveRendering(SkPdfNativeObject* obj) : fObj(obj) {
+ SkASSERT(!obj->inRendering());
+ obj->startRendering();
+ }
+
+ ~CheckRecursiveRendering() {
+ SkASSERT(fObj->inRendering());
+ fObj->doneRendering();
+ }
+
+ static bool IsInRendering(const SkPdfNativeObject* obj) {
+ return obj->inRendering();
+ }
+};
+
+static SkPdfResult doXObject(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfNativeObject* obj) {
+ if (CheckRecursiveRendering::IsInRendering(obj)) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kRecursiveReferencing_SkPdfIssue,
+ "Recursive reverencing is invalid in draw objects", obj, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ CheckRecursiveRendering checkRecursion(obj);
+
+ switch (pdfContext->fPdfDoc->mapper()->mapXObjectDictionary(obj))
+ {
+ case kImageDictionary_SkPdfNativeObjectType:
+ return doXObject_Image(pdfContext, canvas, (SkPdfImageDictionary*)obj);
+ case kType1FormDictionary_SkPdfNativeObjectType:
+ return doXObject_Form(pdfContext, canvas, (SkPdfType1FormDictionary*)obj);
+ //case kObjectDictionaryXObjectPS_SkPdfNativeObjectType:
+ //return doXObject_PS(skxobj.asPS());
+ default: {
+ if (pdfContext->fPdfDoc->mapper()->mapType1PatternDictionary(obj) !=
+ kNone_SkPdfNativeObjectType) {
+ SkPdfType1PatternDictionary* pattern = (SkPdfType1PatternDictionary*)obj;
+ return doXObject_Pattern(pdfContext, canvas, pattern);
+ }
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue, "doXObject",
+ obj, pdfContext);
+ }
+ }
+ return kIgnoreError_SkPdfResult;
+}
+
+static SkPdfResult doPage(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfPageObjectDictionary* skobj) {
+ if (!skobj || !skobj->isContentsAStream(pdfContext->fPdfDoc)) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, "Missing stream", skobj,
+ SkPdfNativeObject::_kStream_PdfObjectType, pdfContext);
+ return kNYI_SkPdfResult;
+ }
+
+ SkPdfStream* stream = skobj->getContentsAsStream(pdfContext->fPdfDoc);
+
+ if (!stream) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, "Missing stream",
+ skobj, SkPdfNativeObject::_kStream_PdfObjectType, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ // FIXME (scroggo): renderPage also sets fResources. Are these redundant?
+ pdfContext->fGraphicsState.fResources = skobj->Resources(pdfContext->fPdfDoc);
+
+ if (!pdfContext->fGraphicsState.fResources) {
+ // It might be null because we have not implemented yet inheritance.
+ return kIgnoreError_SkPdfResult;
+ }
+
+ if (CheckRecursiveRendering::IsInRendering(skobj)) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kRecursiveReferencing_SkPdfIssue,
+ "Recursive reverencing is invalid in draw objects", skobj, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+ CheckRecursiveRendering checkRecursion(skobj);
+
+
+ // FIXME (scroggo): Is this save necessary? May be needed for rendering a nested PDF.
+ PdfOp_q(pdfContext, canvas, NULL);
+
+ // TODO(edisonn): MediaBox can be inherited!!!!
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue, "MediaBox inheritance NYI",
+ NULL, pdfContext);
+ SkRect bbox = skobj->MediaBox(pdfContext->fPdfDoc);
+ if (skobj->has_Group()) {
+ SkPdfTransparencyGroupDictionary* tgroup = skobj->Group(pdfContext->fPdfDoc);
+ doGroup_before(pdfContext, canvas, bbox, tgroup, true);
+ } else {
+ canvas->save();
+ }
+
+ pdfContext->parseStream(stream, canvas);
+
+ canvas->restore();
+ PdfOp_Q(pdfContext, canvas, NULL);
+ return kPartial_SkPdfResult;
+}
+
+SkPdfResult PdfOp_q(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ pdfContext->fStateStack.push(pdfContext->fGraphicsState);
+ canvas->save();
+ pdfContext->fObjectStack.nest();
+ return kOK_SkPdfResult;
+}
+
+SkPdfResult PdfOp_Q(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ if (pdfContext->fStateStack.count() > 0) {
+ pdfContext->fGraphicsState = pdfContext->fStateStack.top();
+ pdfContext->fStateStack.pop();
+ canvas->restore();
+
+ if (pdfContext->fObjectStack.nestingLevel() == 0) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kStackNestingOverflow_SkPdfIssue,
+ "stack nesting overflow (q/Q)", NULL, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ } else {
+ pdfContext->fObjectStack.unnest();
+ }
+ } else {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kStackOverflow_SkPdfIssue,
+ "stack overflow (q/Q)", NULL, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_cm(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("cm", pdfContext, 6);
+ POP_NUMBER(pdfContext, f);
+ POP_NUMBER(pdfContext, e);
+ POP_NUMBER(pdfContext, d);
+ POP_NUMBER(pdfContext, c);
+ POP_NUMBER(pdfContext, b);
+ POP_NUMBER(pdfContext, a);
+ CHECK_PARAMETERS();
+ double array[6] = {a, b, c, d, e, f};
+
+ // a b
+ // c d
+ // e f
+
+ // 0 1
+ // 2 3
+ // 4 5
+
+ // sx ky
+ // kx sy
+ // tx ty
+ SkMatrix matrix = SkMatrixFromPdfMatrix(array);
+
+ pdfContext->fGraphicsState.fCTM.preConcat(matrix);
+
+#ifdef PDF_TRACE
+ printf("cm ");
+ for (int i = 0 ; i < 6 ; i++) {
+ printf("%f ", array[i]);
+ }
+ printf("\n");
+ SkTraceMatrix(pdfContext->fGraphicsState.fCTM, "cm");
+#endif
+
+ return kOK_SkPdfResult;
+}
+
+//leading TL Set the text leading, Tl
+//, to leading, which is a number expressed in unscaled text
+//space units. Text leading is used only by the T*, ', and " operators. Initial value: 0.
+static SkPdfResult PdfOp_TL(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("TL", pdfContext, 1);
+ POP_NUMBER(pdfContext, ty);
+ CHECK_PARAMETERS();
+
+ pdfContext->fGraphicsState.fTextLeading = ty;
+
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_Td(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("Td", pdfContext, 2);
+ POP_NUMBER(pdfContext, ty);
+ POP_NUMBER(pdfContext, tx);
+ CHECK_PARAMETERS();
+
+ double array[6] = {1, 0, 0, 1, tx, -ty};
+ SkMatrix matrix = SkMatrixFromPdfMatrix(array);
+
+ pdfContext->fGraphicsState.fMatrixTm.preConcat(matrix);
+ pdfContext->fGraphicsState.fMatrixTlm.preConcat(matrix);
+
+ return kPartial_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_TD(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfTokenLooper* parentLooper) {
+ EXPECT_OPERANDS("TD", pdfContext, 2)
+ POP_NUMBER(pdfContext, ty);
+ POP_NUMBER(pdfContext, tx);
+ CHECK_PARAMETERS();
+
+ // TODO(edisonn): Create factory methods or constructors so native is hidden
+ SkPdfReal* _ty = pdfContext->fPdfDoc->createReal(-ty);
+ pdfContext->fObjectStack.push(_ty);
+
+ PdfOp_TL(pdfContext, canvas, parentLooper);
+
+ SkPdfReal* vtx = pdfContext->fPdfDoc->createReal(tx);
+ pdfContext->fObjectStack.push(vtx);
+
+ SkPdfReal* vty = pdfContext->fPdfDoc->createReal(ty);
+ pdfContext->fObjectStack.push(vty);
+
+ SkPdfResult ret = PdfOp_Td(pdfContext, canvas, parentLooper);
+
+ return ret;
+}
+
+static SkPdfResult PdfOp_Tm(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("Tm", pdfContext, 6);
+ POP_NUMBER(pdfContext, f);
+ POP_NUMBER(pdfContext, e);
+ POP_NUMBER(pdfContext, d);
+ POP_NUMBER(pdfContext, c);
+ POP_NUMBER(pdfContext, b);
+ POP_NUMBER(pdfContext, a);
+ CHECK_PARAMETERS();
+
+ double array[6];
+ array[0] = a;
+ array[1] = b;
+ array[2] = c;
+ array[3] = d;
+ array[4] = e;
+ array[5] = f;
+
+ SkMatrix matrix = SkMatrixFromPdfMatrix(array);
+ matrix.postConcat(pdfContext->fGraphicsState.fCTM);
+ matrix.preScale(SkDoubleToScalar(1), SkDoubleToScalar(-1));
+
+ // TODO(edisonn): NYI - Text positioning.
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue,
+ "Text positioning not implemented for 2+ chars", NULL, pdfContext);
+
+ pdfContext->fGraphicsState.fMatrixTm = matrix;
+ pdfContext->fGraphicsState.fMatrixTlm = matrix;;
+
+ return kPartial_SkPdfResult;
+}
+
+//— T* Move to the start of the next line. This operator has the same effect as the code
+//0 Tl Td
+//where Tl is the current leading parameter in the text state
+static SkPdfResult PdfOp_T_star(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfTokenLooper* parentLooper) {
+ SkPdfReal* zero = pdfContext->fPdfDoc->createReal(0.0);
+ SkPdfReal* tl = pdfContext->fPdfDoc->createReal(pdfContext->fGraphicsState.fTextLeading);
+
+ pdfContext->fObjectStack.push(zero);
+ pdfContext->fObjectStack.push(tl);
+
+ SkPdfResult ret = PdfOp_Td(pdfContext, canvas, parentLooper);
+
+ return ret;
+}
+
+static SkPdfResult PdfOp_m(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ if (pdfContext->fGraphicsState.fPathClosed) {
+ pdfContext->fGraphicsState.fPath.reset();
+ pdfContext->fGraphicsState.fPathClosed = false;
+ }
+
+ EXPECT_OPERANDS("m", pdfContext, 2);
+ POP_NUMBER(pdfContext, y);
+ POP_NUMBER(pdfContext, x);
+ CHECK_PARAMETERS();
+
+ pdfContext->fGraphicsState.fCurPosY = y;
+ pdfContext->fGraphicsState.fCurPosX = x;
+
+ pdfContext->fGraphicsState.fPath.moveTo(SkDoubleToScalar(pdfContext->fGraphicsState.fCurPosX),
+ SkDoubleToScalar(pdfContext->fGraphicsState.fCurPosY));
+
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_l(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ if (pdfContext->fGraphicsState.fPathClosed) {
+ pdfContext->fGraphicsState.fPath.reset();
+ pdfContext->fGraphicsState.fPathClosed = false;
+ }
+
+ EXPECT_OPERANDS("l", pdfContext, 2);
+ POP_NUMBER(pdfContext, y);
+ POP_NUMBER(pdfContext, x);
+ CHECK_PARAMETERS();
+
+ pdfContext->fGraphicsState.fCurPosY = y;
+ pdfContext->fGraphicsState.fCurPosX = x;
+
+ pdfContext->fGraphicsState.fPath.lineTo(SkDoubleToScalar(pdfContext->fGraphicsState.fCurPosX),
+ SkDoubleToScalar(pdfContext->fGraphicsState.fCurPosY));
+
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_c(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ if (pdfContext->fGraphicsState.fPathClosed) {
+ pdfContext->fGraphicsState.fPath.reset();
+ pdfContext->fGraphicsState.fPathClosed = false;
+ }
+
+ EXPECT_OPERANDS("c", pdfContext, 6);
+ POP_NUMBER(pdfContext, y3);
+ POP_NUMBER(pdfContext, x3);
+ POP_NUMBER(pdfContext, y2);
+ POP_NUMBER(pdfContext, x2);
+ POP_NUMBER(pdfContext, y1);
+ POP_NUMBER(pdfContext, x1);
+ CHECK_PARAMETERS();
+
+ pdfContext->fGraphicsState.fPath.cubicTo(SkDoubleToScalar(x1), SkDoubleToScalar(y1),
+ SkDoubleToScalar(x2), SkDoubleToScalar(y2),
+ SkDoubleToScalar(x3), SkDoubleToScalar(y3));
+
+ pdfContext->fGraphicsState.fCurPosX = x3;
+ pdfContext->fGraphicsState.fCurPosY = y3;
+
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_v(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ if (pdfContext->fGraphicsState.fPathClosed) {
+ pdfContext->fGraphicsState.fPath.reset();
+ pdfContext->fGraphicsState.fPathClosed = false;
+ }
+
+ EXPECT_OPERANDS("v", pdfContext, 4);
+ POP_NUMBER(pdfContext, y3);
+ POP_NUMBER(pdfContext, x3);
+ POP_NUMBER(pdfContext, y2);
+ POP_NUMBER(pdfContext, x2);
+ CHECK_PARAMETERS();
+
+ double y1 = pdfContext->fGraphicsState.fCurPosY;
+ double x1 = pdfContext->fGraphicsState.fCurPosX;
+
+ pdfContext->fGraphicsState.fPath.cubicTo(SkDoubleToScalar(x1), SkDoubleToScalar(y1),
+ SkDoubleToScalar(x2), SkDoubleToScalar(y2),
+ SkDoubleToScalar(x3), SkDoubleToScalar(y3));
+
+ pdfContext->fGraphicsState.fCurPosX = x3;
+ pdfContext->fGraphicsState.fCurPosY = y3;
+
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_y(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ if (pdfContext->fGraphicsState.fPathClosed) {
+ pdfContext->fGraphicsState.fPath.reset();
+ pdfContext->fGraphicsState.fPathClosed = false;
+ }
+
+ EXPECT_OPERANDS("y", pdfContext, 4);
+ POP_NUMBER(pdfContext, y3);
+ POP_NUMBER(pdfContext, x3);
+ POP_NUMBER(pdfContext, y1);
+ POP_NUMBER(pdfContext, x1);
+ CHECK_PARAMETERS();
+
+ double y2 = pdfContext->fGraphicsState.fCurPosY;
+ double x2 = pdfContext->fGraphicsState.fCurPosX;
+
+ pdfContext->fGraphicsState.fPath.cubicTo(SkDoubleToScalar(x1), SkDoubleToScalar(y1),
+ SkDoubleToScalar(x2), SkDoubleToScalar(y2),
+ SkDoubleToScalar(x3), SkDoubleToScalar(y3));
+
+ pdfContext->fGraphicsState.fCurPosX = x3;
+ pdfContext->fGraphicsState.fCurPosY = y3;
+
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_re(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ if (pdfContext->fGraphicsState.fPathClosed) {
+ pdfContext->fGraphicsState.fPath.reset();
+ pdfContext->fGraphicsState.fPathClosed = false;
+ }
+
+ EXPECT_OPERANDS("re", pdfContext, 4);
+ POP_NUMBER(pdfContext, height);
+ POP_NUMBER(pdfContext, width);
+ POP_NUMBER(pdfContext, y);
+ POP_NUMBER(pdfContext, x);
+ CHECK_PARAMETERS();
+
+ pdfContext->fGraphicsState.fPath.addRect(SkDoubleToScalar(x),
+ SkDoubleToScalar(y),
+ SkDoubleToScalar(x + width),
+ SkDoubleToScalar(y + height));
+
+ pdfContext->fGraphicsState.fCurPosX = x;
+ pdfContext->fGraphicsState.fCurPosY = y + height;
+
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_h(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ pdfContext->fGraphicsState.fPath.close();
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_fillAndStroke(SkPdfContext* pdfContext, SkCanvas* canvas,
+ bool fill, bool stroke, bool close, bool evenOdd) {
+ SkPath path = pdfContext->fGraphicsState.fPath;
+
+ if (close) {
+ path.close();
+ }
+
+ canvas->setMatrix(pdfContext->fGraphicsState.fCTM);
+
+ SkPaint paint;
+
+ SkPoint line[2];
+ if (fill && !stroke && path.isLine(line)) {
+ paint.setStyle(SkPaint::kStroke_Style);
+
+ // TODO(edisonn): implement this with patterns
+ pdfContext->fGraphicsState.applyGraphicsState(&paint, false);
+ paint.setStrokeWidth(SkDoubleToScalar(0));
+
+ canvas->drawPath(path, paint);
+ } else {
+ if (fill) {
+ if (strncmp((char*)pdfContext->fGraphicsState.fNonStroking.fColorSpace.fBuffer,
+ "Pattern", strlen("Pattern")) == 0 &&
+ pdfContext->fGraphicsState.fNonStroking.fPattern != NULL) {
+
+ // TODO(edisonn): we can use a shader here, like imageshader to draw fast.
+
+ PdfOp_q(pdfContext, canvas, NULL);
+
+ if (evenOdd) {
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ }
+ canvas->clipPath(path);
+
+ if (pdfContext->fPdfDoc
+ ->mapper()
+ ->mapType1PatternDictionary(pdfContext->fGraphicsState
+ .fNonStroking
+ .fPattern)
+ != kNone_SkPdfNativeObjectType) {
+ SkPdfType1PatternDictionary* pattern
+ = (SkPdfType1PatternDictionary*)pdfContext->fGraphicsState
+ .fNonStroking
+ .fPattern;
+
+ // TODO(edisonn): make PaintType constants
+ if (pattern->PaintType(pdfContext->fPdfDoc) == 1) {
+ // TODO(edisonn): don't use abs, iterate as asked, if the cells intersect
+ // it will change the result iterating in reverse
+ // remove then the following bounds.sort();
+ int xStep = abs((int)pattern->XStep(pdfContext->fPdfDoc));
+ int yStep = abs((int)pattern->YStep(pdfContext->fPdfDoc));
+
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue,
+ "paterns x/y step is forced to positive number",
+ pattern, pdfContext);
+
+ SkRect bounds = path.getBounds();
+ bounds.sort();
+
+ SkScalar x;
+ SkScalar y;
+
+ y = bounds.top();
+ int totalx = 0;
+ int totaly = 0;
+ while (y < bounds.bottom()) {
+ x = bounds.left();
+ totalx = 0;
+
+ while (x < bounds.right()) {
+ doXObject(pdfContext, canvas, pattern);
+
+ pdfContext->fGraphicsState.fContentStreamMatrix.preTranslate(
+ SkIntToScalar(xStep), SkIntToScalar(0));
+ totalx += xStep;
+ x += SkIntToScalar(xStep);
+ }
+ pdfContext->fGraphicsState.fContentStreamMatrix.preTranslate(
+ SkIntToScalar(-totalx), SkIntToScalar(0));
+
+ pdfContext->fGraphicsState.fContentStreamMatrix.preTranslate(
+ SkIntToScalar(0), SkIntToScalar(-yStep));
+ totaly += yStep;
+ y += SkIntToScalar(yStep);
+ }
+ pdfContext->fGraphicsState.fContentStreamMatrix.preTranslate(
+ SkIntToScalar(0), SkIntToScalar(totaly));
+ }
+ }
+
+ PdfOp_Q(pdfContext, canvas, NULL);
+ } else {
+ paint.setStyle(SkPaint::kFill_Style);
+ if (evenOdd) {
+ path.setFillType(SkPath::kEvenOdd_FillType);
+ }
+
+ pdfContext->fGraphicsState.applyGraphicsState(&paint, false);
+
+ canvas->drawPath(path, paint);
+ }
+ }
+
+ if (stroke) {
+ if (false && strncmp((char*)pdfContext->fGraphicsState.fNonStroking.fColorSpace.fBuffer,
+ "Pattern", strlen("Pattern")) == 0) {
+ // TODO(edisonn): implement Pattern for strokes
+ paint.setStyle(SkPaint::kStroke_Style);
+
+ paint.setColor(SK_ColorGREEN);
+
+ // reset it, just in case it messes up the stroke
+ path.setFillType(SkPath::kWinding_FillType);
+ canvas->drawPath(path, paint);
+ } else {
+ paint.setStyle(SkPaint::kStroke_Style);
+
+ pdfContext->fGraphicsState.applyGraphicsState(&paint, true);
+
+ // reset it, just in case it messes up the stroke
+ path.setFillType(SkPath::kWinding_FillType);
+ canvas->drawPath(path, paint);
+ }
+ }
+ }
+
+ pdfContext->fGraphicsState.fPath.reset();
+ // TODO(edisonn): implement scale/zoom
+
+ if (pdfContext->fGraphicsState.fHasClipPathToApply) {
+#ifndef PDF_DEBUG_NO_CLIPING
+ canvas->clipPath(pdfContext->fGraphicsState.fClipPath, SkRegion::kIntersect_Op, true);
+#endif
+ }
+
+ //pdfContext->fGraphicsState.fClipPath.reset();
+ pdfContext->fGraphicsState.fHasClipPathToApply = false;
+
+ return kOK_SkPdfResult;
+
+}
+
+static SkPdfResult PdfOp_S(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_fillAndStroke(pdfContext, canvas, false, true, false, false);
+}
+
+static SkPdfResult PdfOp_s(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_fillAndStroke(pdfContext, canvas, false, true, true, false);
+}
+
+static SkPdfResult PdfOp_F(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_fillAndStroke(pdfContext, canvas, true, false, false, false);
+}
+
+static SkPdfResult PdfOp_f(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_fillAndStroke(pdfContext, canvas, true, false, false, false);
+}
+
+static SkPdfResult PdfOp_f_star(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfTokenLooper*) {
+ return PdfOp_fillAndStroke(pdfContext, canvas, true, false, false, true);
+}
+
+static SkPdfResult PdfOp_B(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_fillAndStroke(pdfContext, canvas, true, true, false, false);
+}
+
+static SkPdfResult PdfOp_B_star(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfTokenLooper*) {
+ return PdfOp_fillAndStroke(pdfContext, canvas, true, true, false, true);
+}
+
+static SkPdfResult PdfOp_b(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_fillAndStroke(pdfContext, canvas, true, true, true, false);
+}
+
+static SkPdfResult PdfOp_b_star(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfTokenLooper*) {
+ return PdfOp_fillAndStroke(pdfContext, canvas, true, true, true, true);
+}
+
+static SkPdfResult PdfOp_n(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ canvas->setMatrix(pdfContext->fGraphicsState.fCTM);
+ if (pdfContext->fGraphicsState.fHasClipPathToApply) {
+#ifndef PDF_DEBUG_NO_CLIPING
+ canvas->clipPath(pdfContext->fGraphicsState.fClipPath, SkRegion::kIntersect_Op, true);
+#endif
+ }
+
+ pdfContext->fGraphicsState.fHasClipPathToApply = false;
+
+ pdfContext->fGraphicsState.fPathClosed = true;
+
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_BT(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ pdfContext->fGraphicsState.fTextBlock = true;
+ SkMatrix matrix = pdfContext->fGraphicsState.fCTM;
+ matrix.preScale(SkDoubleToScalar(1), SkDoubleToScalar(-1));
+ pdfContext->fGraphicsState.fMatrixTm = matrix;
+ pdfContext->fGraphicsState.fMatrixTlm = matrix;
+
+ return kPartial_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_ET(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ if (!pdfContext->fGraphicsState.fTextBlock) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kMissingBT_SkPdfIssue, "ET without BT", NULL,
+ pdfContext);
+
+ return kIgnoreError_SkPdfResult;
+ }
+
+ pdfContext->fGraphicsState.fTextBlock = false;
+
+ // TODO(edisonn): anything else to be done once we are done with draw text? Like restore stack?
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult skpdfGraphicsStateApplyFontCore(SkPdfContext* pdfContext,
+ const SkPdfNativeObject* fontName, double fontSize) {
+#ifdef PDF_TRACE
+ printf("font name: %s\n", fontName->nameValue2().c_str());
+#endif
+
+ if (!pdfContext->fGraphicsState.fResources->Font(pdfContext->fPdfDoc)) {
+ // TODO(edisonn): try to recover and draw it any way?
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kMissingFont_SkPdfIssue,
+ "No font", fontName, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ SkPdfNativeObject* objFont
+ = pdfContext->fGraphicsState.fResources->Font(pdfContext->fPdfDoc)->get(fontName);
+ objFont = pdfContext->fPdfDoc->resolveReference(objFont);
+ if (kNone_SkPdfNativeObjectType == pdfContext->fPdfDoc->mapper()->mapFontDictionary(objFont)) {
+ // TODO(edisonn): try to recover and draw it any way?
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kInvalidFont_SkPdfIssue,
+ "Invalid font", objFont, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ SkPdfFontDictionary* fd = (SkPdfFontDictionary*)objFont;
+
+ SkPdfFont* skfont = SkPdfFont::fontFromPdfDictionary(pdfContext->fPdfDoc, fd);
+
+ if (skfont) {
+ pdfContext->fGraphicsState.fSkFont = skfont;
+ }
+ pdfContext->fGraphicsState.fCurFontSize = fontSize;
+ return kOK_SkPdfResult;
+}
+
+//font size Tf Set the text font, Tf
+//, to font and the text font size, Tfs, to size. font is the name of a
+//font resource in the Fontsubdictionary of the current resource dictionary; size is
+//a number representing a scale factor. There is no initial value for either font or
+//size; they must be specified explicitly using Tf before any text is shown.
+static SkPdfResult PdfOp_Tf(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("Tf", pdfContext, 2);
+ POP_NUMBER(pdfContext, fontSize);
+ POP_NAME(pdfContext, fontName);
+ CHECK_PARAMETERS();
+
+ return skpdfGraphicsStateApplyFontCore(pdfContext, fontName, fontSize);
+}
+
+static SkPdfResult PdfOp_Tj(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("Tj", pdfContext, 1);
+ POP_STRING(pdfContext, str);
+ CHECK_PARAMETERS();
+
+ if (!pdfContext->fGraphicsState.fTextBlock) {
+ // TODO(edisonn): try to recover and draw it any way?
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kMissingBT_SkPdfIssue, "Tj without BT", NULL,
+ pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ SkPdfResult ret = DrawText(pdfContext, str, canvas);
+
+ return ret;
+}
+
+static SkPdfResult PdfOp_quote(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfTokenLooper* parentLooper) {
+ if (!pdfContext->fGraphicsState.fTextBlock) {
+ // TODO(edisonn): try to recover and draw it any way?
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kMissingBT_SkPdfIssue,
+ "' without BT", NULL, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ PdfOp_T_star(pdfContext, canvas, parentLooper);
+ // Do not pop, and push, just transfer the param to Tj
+ return PdfOp_Tj(pdfContext, canvas, parentLooper);
+}
+
+static SkPdfResult PdfOp_doublequote(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfTokenLooper* parentLooper) {
+ if (!pdfContext->fGraphicsState.fTextBlock) {
+ // TODO(edisonn): try to recover and draw it any way?
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kMissingBT_SkPdfIssue,
+ "\" without BT", NULL, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ EXPECT_OPERANDS("\"", pdfContext, 3);
+ POP_OBJ(pdfContext, str);
+ POP_OBJ(pdfContext, ac);
+ POP_OBJ(pdfContext, aw);
+ CHECK_PARAMETERS();
+
+ pdfContext->fObjectStack.push(aw);
+ PdfOp_Tw(pdfContext, canvas, parentLooper);
+
+ pdfContext->fObjectStack.push(ac);
+ PdfOp_Tc(pdfContext, canvas, parentLooper);
+
+ pdfContext->fObjectStack.push(str);
+ PdfOp_quote(pdfContext, canvas, parentLooper);
+
+ return kPartial_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_TJ(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("Tf", pdfContext, 1);
+ POP_ARRAY(pdfContext, array);
+ CHECK_PARAMETERS();
+
+ if (!pdfContext->fGraphicsState.fTextBlock) {
+ // TODO(edisonn): try to recover and draw it any way?
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kMissingBT_SkPdfIssue, "TJ without BT", NULL,
+ pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ if (!array->isArray()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, array,
+ SkPdfNativeObject::kArray_PdfObjectType, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ for( int i=0; i<static_cast<int>(array->size()); i++ )
+ {
+ if (!(*array)[i]) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity,
+ "element [i] is null, no element should be null",
+ array,
+ SkPdfNativeObject::_kAnyString_PdfObjectType |
+ SkPdfNativeObject::_kNumber_PdfObjectType,
+ pdfContext);
+ } else if( (*array)[i]->isAnyString()) {
+ SkPdfNativeObject* obj = (*array)[i];
+ DrawText(pdfContext, obj, canvas);
+ } else if ((*array)[i]->isNumber()) {
+ double dx = (*array)[i]->numberValue();
+ SkMatrix matrix;
+ matrix.setAll(SkDoubleToScalar(1),
+ SkDoubleToScalar(0),
+ // TODO(edisonn): use writing mode, vertical/horizontal.
+ SkDoubleToScalar(-dx), // amount is substracted!!!
+ SkDoubleToScalar(0),
+ SkDoubleToScalar(1),
+ SkDoubleToScalar(0),
+ SkDoubleToScalar(0),
+ SkDoubleToScalar(0),
+ SkDoubleToScalar(1));
+
+ pdfContext->fGraphicsState.fMatrixTm.preConcat(matrix);
+ } else {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, "wrong type", (*array)[i],
+ SkPdfNativeObject::kArray_PdfObjectType |
+ SkPdfNativeObject::_kNumber_PdfObjectType,
+ pdfContext);
+ }
+ }
+ return kPartial_SkPdfResult; // TODO(edisonn): Implement fully DrawText before returing OK.
+}
+
+static SkPdfResult PdfOp_CS_cs(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfColorOperator* colorOperator) {
+ EXPECT_OPERANDS("CS/cs", pdfContext, 1);
+ POP_NAME(pdfContext, name);
+ CHECK_PARAMETERS();
+
+ //Next, get the ColorSpace Dictionary from the Resource Dictionary:
+ SkPdfDictionary* colorSpaceResource
+ = pdfContext->fGraphicsState.fResources->ColorSpace(pdfContext->fPdfDoc);
+
+ SkPdfNativeObject* colorSpace
+ = colorSpaceResource ? pdfContext->fPdfDoc
+ ->resolveReference(colorSpaceResource->get(name)) :
+ name;
+
+ if (colorSpace == NULL) {
+ colorOperator->fColorSpace = name->strRef();
+ } else {
+#ifdef PDF_TRACE
+ printf("CS = %s\n", colorSpace->toString(0, 0).c_str());
+#endif // PDF_TRACE
+ if (colorSpace->isName()) {
+ colorOperator->fColorSpace = colorSpace->strRef();
+ } else if (colorSpace->isArray()) {
+ size_t cnt = colorSpace->size();
+ if (cnt == 0) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kIncostistentSizes_SkPdfIssue,
+ "color space has length 0", colorSpace, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+ SkPdfNativeObject* type = colorSpace->objAtAIndex(0);
+ type = pdfContext->fPdfDoc->resolveReference(type);
+
+ if (type->isName("ICCBased")) {
+ if (cnt != 2) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kIncostistentSizes_SkPdfIssue,
+ "ICCBased color space must have an array with 2 elements",
+ colorSpace, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+ SkPdfNativeObject* prop = colorSpace->objAtAIndex(1);
+ prop = pdfContext->fPdfDoc->resolveReference(prop);
+#ifdef PDF_TRACE
+ printf("ICCBased prop = %s\n", prop->toString(0, 0).c_str());
+#endif // PDF_TRACE
+ // TODO(edisonn): hack
+ if (prop && prop->isDictionary() && prop->get("N") &&
+ prop->get("N")->isInteger() && prop->get("N")->intValue() == 3) {
+ colorOperator->setColorSpace(&strings_DeviceRGB);
+ return kPartial_SkPdfResult;
+ }
+ return kNYI_SkPdfResult;
+ }
+ }
+ }
+
+ return kPartial_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_CS(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_CS_cs(pdfContext, canvas, &pdfContext->fGraphicsState.fStroking);
+}
+
+static SkPdfResult PdfOp_cs(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_CS_cs(pdfContext, canvas, &pdfContext->fGraphicsState.fNonStroking);
+}
+
+static SkPdfResult PdfOp_SC_sc(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfColorOperator* colorOperator) {
+ double c[4];
+// int64_t v[4];
+
+ int n = GetColorSpaceComponents(colorOperator->fColorSpace);
+
+ bool doubles = true;
+ if (colorOperator->fColorSpace.equals("Indexed")) {
+ doubles = false;
+ }
+
+#ifdef PDF_TRACE
+ printf("color space = %s, N = %i\n", colorOperator->fColorSpace.fBuffer, n);
+#endif
+
+ EXPECT_OPERANDS("SC/sc", pdfContext, n);
+
+ for (int i = n - 1; i >= 0 ; i--) {
+ if (doubles) {
+ POP_NUMBER_INTO(pdfContext, c[i]);
+// } else {
+// v[i] = pdfContext->fObjectStack.top()->intValue(); pdfContext->fObjectStack.pop();
+ }
+ }
+ CHECK_PARAMETERS();
+
+ // TODO(edisonn): Now, set that color. Only DeviceRGB supported.
+ // TODO(edisonn): do possible field values to enum at parsing time!
+ // TODO(edisonn): support also abbreviations /DeviceRGB == /RGB
+ if (colorOperator->fColorSpace.equals("DeviceRGB") ||
+ colorOperator->fColorSpace.equals("RGB")) {
+ colorOperator->setRGBColor(SkColorSetRGB((U8CPU)(255*c[0]),
+ (U8CPU)(255*c[1]),
+ (U8CPU)(255*c[2])));
+ }
+ return kPartial_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_SC(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_SC_sc(pdfContext, canvas, &pdfContext->fGraphicsState.fStroking);
+}
+
+static SkPdfResult PdfOp_sc(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_SC_sc(pdfContext, canvas, &pdfContext->fGraphicsState.fNonStroking);
+}
+
+static SkPdfResult PdfOp_SCN_scn(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfColorOperator* colorOperator) {
+ if (pdfContext->fObjectStack.count() > 0 && pdfContext->fObjectStack.top()->isName()) {
+ SkPdfNativeObject* name = pdfContext->fObjectStack.top(); pdfContext->fObjectStack.pop();
+
+ SkPdfDictionary* patternResources
+ = pdfContext->fGraphicsState.fResources->Pattern(pdfContext->fPdfDoc);
+
+ if (patternResources == NULL) {
+#ifdef PDF_TRACE
+ printf("ExtGState is NULL!\n");
+#endif
+ return kIgnoreError_SkPdfResult;
+ }
+
+ colorOperator->setPatternColorSpace(
+ pdfContext->fPdfDoc->resolveReference(patternResources->get(name)));
+ }
+
+ // TODO(edisonn): SCN supports more color spaces than SCN. Read and implement spec.
+ PdfOp_SC_sc(pdfContext, canvas, colorOperator);
+
+ return kPartial_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_SCN(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_SCN_scn(pdfContext, canvas, &pdfContext->fGraphicsState.fStroking);
+}
+
+static SkPdfResult PdfOp_scn(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_SCN_scn(pdfContext, canvas, &pdfContext->fGraphicsState.fNonStroking);
+}
+
+static SkPdfResult PdfOp_G_g(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfColorOperator* colorOperator) {
+ EXPECT_OPERANDS("G/g", pdfContext, 1);
+ POP_NUMBER(pdfContext, gray);
+ CHECK_PARAMETERS();
+
+ // TODO(edisonn): limit gray in [0, 1]
+
+ // TODO(edisonn): HACK - it should be device gray, but not suported right now
+ colorOperator->fColorSpace = strings_DeviceRGB;
+ colorOperator->setRGBColor(SkColorSetRGB((U8CPU)(255 * gray),
+ (U8CPU)(255 * gray),
+ (U8CPU)(255 * gray)));
+
+ return kPartial_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_G(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_G_g(pdfContext, canvas, &pdfContext->fGraphicsState.fStroking);
+}
+
+static SkPdfResult PdfOp_g(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_G_g(pdfContext, canvas, &pdfContext->fGraphicsState.fNonStroking);
+}
+
+static SkPdfResult PdfOp_RG_rg(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfColorOperator* colorOperator) {
+ EXPECT_OPERANDS("RG/rg", pdfContext, 3);
+ POP_NUMBER(pdfContext, b);
+ POP_NUMBER(pdfContext, g);
+ POP_NUMBER(pdfContext, r);
+ CHECK_PARAMETERS();
+
+ colorOperator->fColorSpace = strings_DeviceRGB;
+ colorOperator->setRGBColor(SkColorSetRGB((U8CPU)(255*r), (U8CPU)(255*g), (U8CPU)(255*b)));
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_RG(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_RG_rg(pdfContext, canvas, &pdfContext->fGraphicsState.fStroking);
+}
+
+static SkPdfResult PdfOp_rg(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_RG_rg(pdfContext, canvas, &pdfContext->fGraphicsState.fNonStroking);
+}
+
+static SkPdfResult PdfOp_K_k(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfColorOperator* colorOperator) {
+ // TODO(edisonn): spec has some rules about overprint, implement them.
+ EXPECT_OPERANDS("K/k", pdfContext, 4);
+ POP_NUMBER(pdfContext, k);
+ POP_NUMBER(pdfContext, y);
+ POP_NUMBER(pdfContext, m);
+ POP_NUMBER(pdfContext, c);
+ CHECK_PARAMETERS();
+
+ // TODO(edisonn): really silly quick way to remove compiler warning
+ if (k + y + m + c == 0) {
+ return kNYI_SkPdfResult;
+ }
+
+ //colorOperator->fColorSpace = strings_DeviceCMYK;
+ // TODO(edisonn): Set color.
+ return kNYI_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_K(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_K_k(pdfContext, canvas, &pdfContext->fGraphicsState.fStroking);
+}
+
+static SkPdfResult PdfOp_k(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ return PdfOp_K_k(pdfContext, canvas, &pdfContext->fGraphicsState.fNonStroking);
+}
+
+static SkPdfResult PdfOp_W(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ pdfContext->fGraphicsState.fClipPath = pdfContext->fGraphicsState.fPath;
+ pdfContext->fGraphicsState.fHasClipPathToApply = true;
+
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_W_star(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ pdfContext->fGraphicsState.fClipPath = pdfContext->fGraphicsState.fPath;
+
+ pdfContext->fGraphicsState.fClipPath.setFillType(SkPath::kEvenOdd_FillType);
+ pdfContext->fGraphicsState.fHasClipPathToApply = true;
+
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_BX(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfTokenLooper* parentLooper) {
+ PdfCompatibilitySectionLooper looper(parentLooper);
+ looper.loop();
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_EX(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kNullObject_SkPdfIssue,
+ "EX operator should not be called, it is handled in a looper, "
+ "unless the file is corrupted, we should assert",
+ NULL, pdfContext);
+
+ return kIgnoreError_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_BI(SkPdfContext* pdfContext, SkCanvas* canvas,
+ SkPdfTokenLooper* parentLooper) {
+ PdfInlineImageLooper looper(parentLooper);
+ looper.loop();
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_ID(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kNullObject_SkPdfIssue,
+ "ID operator should not be called, it is habdled in a looper, "
+ "unless the file is corrupted, we should assert",
+ NULL, pdfContext);
+ return kIgnoreError_SkPdfResult;
+}
+
+static SkPdfResult PdfOp_EI(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kNullObject_SkPdfIssue,
+ "EI operator should not be called, it is habdled in a looper, "
+ "unless the file is corrupted, we should assert",
+ NULL, pdfContext);
+ return kIgnoreError_SkPdfResult;
+}
+
+static SkPdfResult skpdfGraphicsStateApply_ca(SkPdfContext* pdfContext, double ca) {
+ pdfContext->fGraphicsState.fNonStroking.fOpacity = ca;
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult skpdfGraphicsStateApply_CA(SkPdfContext* pdfContext, double CA) {
+ pdfContext->fGraphicsState.fStroking.fOpacity = CA;
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult skpdfGraphicsStateApplyLW(SkPdfContext* pdfContext, double lineWidth) {
+ pdfContext->fGraphicsState.fLineWidth = lineWidth;
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult skpdfGraphicsStateApplyLC(SkPdfContext* pdfContext, int64_t lineCap) {
+ pdfContext->fGraphicsState.fLineCap = (int)lineCap;
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult skpdfGraphicsStateApplyLJ(SkPdfContext* pdfContext, int64_t lineJoin) {
+ pdfContext->fGraphicsState.fLineJoin = (int)lineJoin;
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult skpdfGraphicsStateApplyML(SkPdfContext* pdfContext, double miterLimit) {
+ pdfContext->fGraphicsState.fMiterLimit = miterLimit;
+ return kOK_SkPdfResult;
+}
+
+// TODO(edisonn): test all dashing rules, not sure if they work as in skia.
+/*
+1) [ ] 0 No dash; solid, unbroken lines
+2) [3] 0 3 units on, 3 units off, …
+3) [2] 1 1 on, 2 off, 2 on, 2 off, …
+4) [2 1] 0 2 on, 1 off, 2 on, 1 off, …
+5) [3 5] 6 2 off, 3 on, 5 off, 3 on, 5 off, …
+6) [2 3] 11 1 on, 3 off, 2 on, 3 off, 2 on, …
+ */
+
+static SkPdfResult skpdfGraphicsStateApplyD(SkPdfContext* pdfContext, SkPdfArray* intervals,
+ SkPdfNativeObject* phase) {
+ if (intervals == NULL) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, intervals,
+ SkPdfNativeObject::_kNumber_PdfObjectType, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ if (phase == NULL) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, phase,
+ SkPdfNativeObject::_kNumber_PdfObjectType, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ int cnt = (int) intervals->size();
+ if (cnt >= 256) {
+ // TODO(edisonn): alloc memory
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue,
+ "dash array size unssuported, cnt > 256", intervals, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+ for (int i = 0; i < cnt; i++) {
+ if (!intervals->objAtAIndex(i) || !intervals->objAtAIndex(i)->isNumber()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL,
+ intervals->objAtAIndex(i),
+ SkPdfNativeObject::_kNumber_PdfObjectType, NULL);
+ return kIgnoreError_SkPdfResult;
+ }
+ }
+
+ double total = 0;
+ for (int i = 0 ; i < cnt; i++) {
+ pdfContext->fGraphicsState.fDashArray[i] = intervals->objAtAIndex(i)->scalarValue();
+ total += pdfContext->fGraphicsState.fDashArray[i];
+ }
+ if (cnt & 1) {
+ if (cnt == 1) {
+ pdfContext->fGraphicsState.fDashArray[1] = pdfContext->fGraphicsState.fDashArray[0];
+ cnt++;
+ } else {
+ // TODO(edisonn): report error/warning
+ return kNYI_SkPdfResult;
+ }
+ }
+ pdfContext->fGraphicsState.fDashArrayLength = cnt;
+ pdfContext->fGraphicsState.fDashPhase = phase->scalarValue();
+ if (pdfContext->fGraphicsState.fDashPhase == 0) {
+ // other rules, changes?
+ pdfContext->fGraphicsState.fDashPhase = SkDoubleToScalar(total);
+ }
+
+ return kOK_SkPdfResult;
+}
+
+static SkPdfResult skpdfGraphicsStateApplyD(SkPdfContext* pdfContext, SkPdfArray* dash) {
+ if (!dash || dash->isArray()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, dash,
+ SkPdfNativeObject::kArray_PdfObjectType, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ if (dash->size() != 2) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kIncostistentSizes_SkPdfIssue,
+ "hash array must have 2 elements", dash, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ if (!dash->objAtAIndex(0) || !dash->objAtAIndex(0)->isArray()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, dash->objAtAIndex(0),
+ SkPdfNativeObject::kArray_PdfObjectType, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ if (!dash->objAtAIndex(1) || !dash->objAtAIndex(1)->isNumber()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, dash->objAtAIndex(1),
+ SkPdfNativeObject::_kNumber_PdfObjectType, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ return skpdfGraphicsStateApplyD(pdfContext, (SkPdfArray*)dash->objAtAIndex(0),
+ dash->objAtAIndex(1));
+}
+
+static void skpdfGraphicsStateApplyFont(SkPdfContext* pdfContext, SkPdfArray* fontAndSize) {
+ if (!fontAndSize || !fontAndSize->isArray()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, fontAndSize,
+ SkPdfNativeObject::kArray_PdfObjectType, pdfContext);
+ return;
+ }
+
+ if (fontAndSize->size() != 2) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kIncostistentSizes_SkPdfIssue,
+ "font array must have 2 elements", fontAndSize, pdfContext);
+ return;
+ }
+
+ if (!fontAndSize->objAtAIndex(0) || !fontAndSize->objAtAIndex(0)->isName()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL,
+ fontAndSize->objAtAIndex(0),
+ SkPdfNativeObject::kName_PdfObjectType, pdfContext);
+ return;
+ }
+
+
+ if (!fontAndSize->objAtAIndex(1) || !fontAndSize->objAtAIndex(1)->isNumber()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL,
+ fontAndSize->objAtAIndex(0),
+ SkPdfNativeObject::_kNumber_PdfObjectType, pdfContext);
+ return;
+ }
+
+ skpdfGraphicsStateApplyFontCore(pdfContext, fontAndSize->objAtAIndex(0),
+ fontAndSize->objAtAIndex(1)->numberValue());
+}
+
+
+//lineWidth w Set the line width in the graphics state (see “Line Width” on page 152).
+static SkPdfResult PdfOp_w(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("w", pdfContext, 1);
+ POP_NUMBER(pdfContext, lw);
+ CHECK_PARAMETERS();
+
+ return skpdfGraphicsStateApplyLW(pdfContext, lw);
+}
+
+//lineCap J Set the line cap style in the graphics state (see “Line Cap Style” on page 153).
+static SkPdfResult PdfOp_J(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ // TODO(edisonn): round/ceil to int?
+ EXPECT_OPERANDS("J", pdfContext, 1);
+ POP_NUMBER(pdfContext, lc);
+ CHECK_PARAMETERS();
+
+ return skpdfGraphicsStateApplyLC(pdfContext, (int)lc);
+}
+
+//lineJoin j Set the line join style in the graphics state (see “Line Join Style” on page 153).
+static SkPdfResult PdfOp_j(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ // TODO(edisonn): round/ceil to int?
+ EXPECT_OPERANDS("j", pdfContext, 1);
+ POP_NUMBER(pdfContext, lj);
+ CHECK_PARAMETERS();
+
+ return skpdfGraphicsStateApplyLJ(pdfContext, (int)lj);
+}
+
+//miterLimit M Set the miter limit in the graphics state (see “Miter Limit” on page 153).
+static SkPdfResult PdfOp_M(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("M", pdfContext, 1);
+ POP_NUMBER(pdfContext, ml);
+ CHECK_PARAMETERS();
+ return skpdfGraphicsStateApplyML(pdfContext, ml);
+}
+
+//dashArray dashPhase d Set the line dash pattern in the graphics state (see “Line Dash Pattern” on
+//page 155).
+static SkPdfResult PdfOp_d(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("d", pdfContext, 2);
+ POP_OBJ(pdfContext, phase);
+ POP_ARRAY(pdfContext, array);
+ CHECK_PARAMETERS();
+
+ return skpdfGraphicsStateApplyD(pdfContext, array, phase);
+}
+
+//intent ri (PDF 1.1) Set the color rendering intent in the graphics state (see “Rendering Intents”
+// on page 197).
+static SkPdfResult PdfOp_ri(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ pdfContext->fObjectStack.pop();
+
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue, "render intent NYI", NULL,
+ pdfContext);
+
+ return kNYI_SkPdfResult;
+}
+
+//flatness i Set the flatness tolerance in the graphics state (see Section 6.5.1, “Flatness
+//Tolerance”). flatness is a number in the range 0 to 100; a value of 0 speci-
+//fies the output device’s default flatness tolerance.
+static SkPdfResult PdfOp_i(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("i", pdfContext, 1);
+ POP_NUMBER(pdfContext, flatness);
+ CHECK_PARAMETERS();
+
+ if (flatness < 0 || flatness > 100) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kOutOfRange_SkPdfIssue,
+ "flatness must be a real in [0, 100] range", flatness_obj, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ return kNYI_SkPdfResult;
+}
+
+SkTDict<SkXfermode::Mode> gPdfBlendModes(20);
+
+class InitBlendModes {
+public:
+ InitBlendModes() {
+ // TODO(edisonn): use the python code generator?
+ // TABLE 7.2 Standard separable blend modes
+ gPdfBlendModes.set("Normal", SkXfermode::kSrc_Mode);
+ gPdfBlendModes.set("Multiply", SkXfermode::kMultiply_Mode);
+ gPdfBlendModes.set("Screen", SkXfermode::kScreen_Mode);
+ gPdfBlendModes.set("Overlay", SkXfermode::kOverlay_Mode);
+ gPdfBlendModes.set("Darken", SkXfermode::kDarken_Mode);
+ gPdfBlendModes.set("Lighten", SkXfermode::kLighten_Mode);
+ gPdfBlendModes.set("ColorDodge", SkXfermode::kColorDodge_Mode);
+ gPdfBlendModes.set("ColorBurn", SkXfermode::kColorBurn_Mode);
+ gPdfBlendModes.set("HardLight", SkXfermode::kHardLight_Mode);
+ gPdfBlendModes.set("SoftLight", SkXfermode::kSoftLight_Mode);
+ gPdfBlendModes.set("Difference", SkXfermode::kDifference_Mode);
+ gPdfBlendModes.set("Exclusion", SkXfermode::kExclusion_Mode);
+
+ // TABLE 7.3 Standard nonseparable blend modes
+ gPdfBlendModes.set("Hue", SkXfermode::kHue_Mode);
+ gPdfBlendModes.set("Saturation", SkXfermode::kSaturation_Mode);
+ gPdfBlendModes.set("Color", SkXfermode::kColor_Mode);
+ gPdfBlendModes.set("Luminosity", SkXfermode::kLuminosity_Mode);
+ }
+};
+
+InitBlendModes _gDummyInniter;
+
+static SkXfermode::Mode xferModeFromBlendMode(const char* blendMode, size_t len) {
+ SkXfermode::Mode mode = (SkXfermode::Mode)(SkXfermode::kLastMode + 1);
+ if (gPdfBlendModes.find(blendMode, len, &mode)) {
+ return mode;
+ }
+
+ return (SkXfermode::Mode)(SkXfermode::kLastMode + 1);
+}
+
+static void skpdfGraphicsStateApplyBM_name(SkPdfContext* pdfContext, const SkString& blendMode) {
+ SkXfermode::Mode mode = xferModeFromBlendMode(blendMode.c_str(), blendMode.size());
+ if (mode <= SkXfermode::kLastMode) {
+ pdfContext->fGraphicsState.fBlendModesLength = 1;
+ pdfContext->fGraphicsState.fBlendModes[0] = mode;
+ } else {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kUnknownBlendMode_SkPdfIssue,
+ blendMode.c_str(), NULL, pdfContext);
+ }
+}
+
+static void skpdfGraphicsStateApplyBM_array(SkPdfContext* pdfContext, SkPdfArray* blendModes) {
+ if (!blendModes || !blendModes->isArray()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, blendModes,
+ SkPdfNativeObject::kArray_PdfObjectType, pdfContext);
+ return;
+ }
+
+ if (blendModes->size() == 0 || blendModes->size() > 256) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kIncostistentSizes_SkPdfIssue,
+ "length of blendmodes, 0, is an erro, 256+, is NYI", blendModes, pdfContext);
+ return;
+ }
+
+ SkXfermode::Mode modes[256];
+ int cnt = (int) blendModes->size();
+ for (int i = 0; i < cnt; i++) {
+ SkPdfNativeObject* name = blendModes->objAtAIndex(i);
+ if (!name || !name->isName()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, name,
+ SkPdfNativeObject::kName_PdfObjectType, pdfContext);
+ return;
+ }
+ SkXfermode::Mode mode = xferModeFromBlendMode(name->c_str(), name->lenstr());
+ if (mode > SkXfermode::kLastMode) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kUnknownBlendMode_SkPdfIssue, NULL, name,
+ pdfContext);
+ return;
+ }
+ }
+
+ pdfContext->fGraphicsState.fBlendModesLength = cnt;
+ for (int i = 0; i < cnt; i++) {
+ pdfContext->fGraphicsState.fBlendModes[i] = modes[i];
+ }
+}
+
+static void skpdfGraphicsStateApplySMask_dict(SkPdfContext* pdfContext, SkPdfDictionary* sMask) {
+ if (!sMask || !sMask->isName()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, sMask,
+ SkPdfNativeObject::kArray_PdfObjectType, pdfContext);
+ return;
+ }
+
+ if (pdfContext->fPdfDoc->mapper()->mapSoftMaskDictionary(sMask)) {
+ pdfContext->fGraphicsState.fSoftMaskDictionary = (SkPdfSoftMaskDictionary*)sMask;
+ } else if (pdfContext->fPdfDoc->mapper()->mapSoftMaskImageDictionary(sMask)) {
+ SkPdfSoftMaskImageDictionary* smid = (SkPdfSoftMaskImageDictionary*)sMask;
+ pdfContext->fGraphicsState.fSMask = getImageFromObject(pdfContext, smid, true);
+ } else {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity,
+ "Dictionary must be SoftMask, or SoftMaskImage",
+ sMask, SkPdfNativeObject::kDictionary_PdfObjectType, pdfContext);
+ }
+}
+
+static void skpdfGraphicsStateApplySMask_name(SkPdfContext* pdfContext, const SkString& sMask) {
+ if (sMask.equals("None")) {
+ pdfContext->fGraphicsState.fSoftMaskDictionary = NULL;
+ pdfContext->fGraphicsState.fSMask = NULL;
+ return;
+ }
+
+ SkPdfDictionary* extGStateDictionary
+ = pdfContext->fGraphicsState.fResources->ExtGState(pdfContext->fPdfDoc);
+
+ if (extGStateDictionary == NULL) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kMissingExtGState_SkPdfIssue, NULL,
+ pdfContext->fGraphicsState.fResources, pdfContext);
+ return;
+ }
+
+ SkPdfNativeObject* obj
+ = pdfContext->fPdfDoc->resolveReference(extGStateDictionary->get(sMask.c_str()));
+ if (!obj || !obj->isDictionary()) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, obj,
+ SkPdfNativeObject::kDictionary_PdfObjectType, pdfContext);
+ return;
+ }
+
+ pdfContext->fGraphicsState.fSoftMaskDictionary = NULL;
+ pdfContext->fGraphicsState.fSMask = NULL;
+
+ skpdfGraphicsStateApplySMask_dict(pdfContext, obj->asDictionary());
+}
+
+static void skpdfGraphicsStateApplyAIS(SkPdfContext* pdfContext, bool alphaSource) {
+ pdfContext->fGraphicsState.fAlphaSource = alphaSource;
+}
+
+
+//dictName gs (PDF 1.2) Set the specified parameters in the graphics state. dictName is
+//the name of a graphics state parameter dictionary in the ExtGState subdictionary of the current
+//resource dictionary (see the next section).
+static SkPdfResult PdfOp_gs(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("gs", pdfContext, 1);
+ POP_NAME(pdfContext, name);
+ CHECK_PARAMETERS();
+
+ SkPdfDictionary* extGStateDictionary
+ = pdfContext->fGraphicsState.fResources->ExtGState(pdfContext->fPdfDoc);
+
+ if (extGStateDictionary == NULL) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kMissingExtGState_SkPdfIssue, NULL,
+ pdfContext->fGraphicsState.fResources, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ SkPdfNativeObject* value
+ = pdfContext->fPdfDoc->resolveReference(extGStateDictionary->get(name));
+
+ if (kNone_SkPdfNativeObjectType ==
+ pdfContext->fPdfDoc->mapper()->mapGraphicsStateDictionary(value)) {
+ return kIgnoreError_SkPdfResult;
+ }
+ SkPdfGraphicsStateDictionary* gs = (SkPdfGraphicsStateDictionary*)value;
+
+ if (gs == NULL) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL,
+ gs, SkPdfNativeObject::kDictionary_PdfObjectType, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ if (gs->has_LW()) {
+ skpdfGraphicsStateApplyLW(pdfContext, gs->LW(pdfContext->fPdfDoc));
+ }
+
+ if (gs->has_LC()) {
+ skpdfGraphicsStateApplyLC(pdfContext, gs->LC(pdfContext->fPdfDoc));
+ }
+
+ if (gs->has_LJ()) {
+ skpdfGraphicsStateApplyLJ(pdfContext, gs->LJ(pdfContext->fPdfDoc));
+ }
+
+ if (gs->has_ML()) {
+ skpdfGraphicsStateApplyML(pdfContext, gs->ML(pdfContext->fPdfDoc));
+ }
+
+ if (gs->has_D()) {
+ skpdfGraphicsStateApplyD(pdfContext, gs->D(pdfContext->fPdfDoc));
+ }
+
+ if (gs->has_Font()) {
+ skpdfGraphicsStateApplyFont(pdfContext, gs->Font(pdfContext->fPdfDoc));
+ }
+
+ if (gs->has_BM()) {
+ if (gs->isBMAName(pdfContext->fPdfDoc)) {
+ skpdfGraphicsStateApplyBM_name(pdfContext, gs->getBMAsName(pdfContext->fPdfDoc));
+ } else if (gs->isBMAArray(pdfContext->fPdfDoc)) {
+ skpdfGraphicsStateApplyBM_array(pdfContext, gs->getBMAsArray(pdfContext->fPdfDoc));
+ } else {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, "wrong type", gs->get("BM"),
+ SkPdfNativeObject::kArray_PdfObjectType |
+ SkPdfNativeObject::kName_PdfObjectType, pdfContext);
+ }
+ }
+
+ if (gs->has_SMask()) {
+ if (gs->isSMaskAName(pdfContext->fPdfDoc)) {
+ skpdfGraphicsStateApplySMask_name(pdfContext, gs->getSMaskAsName(pdfContext->fPdfDoc));
+ } else if (gs->isSMaskADictionary(pdfContext->fPdfDoc)) {
+ skpdfGraphicsStateApplySMask_dict(pdfContext,
+ gs->getSMaskAsDictionary(pdfContext->fPdfDoc));
+ } else {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity,
+ "wrong type",
+ gs->get("BM"),
+ SkPdfNativeObject::kDictionary_PdfObjectType |
+ SkPdfNativeObject::kName_PdfObjectType,
+ pdfContext);
+ }
+ }
+
+ if (gs->has_ca()) {
+ skpdfGraphicsStateApply_ca(pdfContext, gs->ca(pdfContext->fPdfDoc));
+ }
+
+ if (gs->has_CA()) {
+ skpdfGraphicsStateApply_CA(pdfContext, gs->CA(pdfContext->fPdfDoc));
+ }
+
+ if (gs->has_AIS()) {
+ skpdfGraphicsStateApplyAIS(pdfContext, gs->AIS(pdfContext->fPdfDoc));
+ }
+
+ // TODO(edisonn): make sure we loaded all those properties in graphic state.
+
+ return kOK_SkPdfResult;
+}
+
+//charSpace Tc Set the character spacing, Tc
+//, to charSpace, which is a number expressed in unscaled text space units.
+// Character spacing is used by the Tj, TJ, and ' operators.
+//Initial value: 0.
+SkPdfResult PdfOp_Tc(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("Tc", pdfContext, 1);
+ POP_NUMBER(pdfContext, charSpace);
+ CHECK_PARAMETERS();
+
+ pdfContext->fGraphicsState.fCharSpace = charSpace;
+
+ return kOK_SkPdfResult;
+}
+
+//wordSpace Tw Set the word spacing, T
+//w
+//, to wordSpace, which is a number expressed in unscaled
+//text space units. Word spacing is used by the Tj, TJ, and ' operators. Initial
+//value: 0.
+SkPdfResult PdfOp_Tw(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("Tw", pdfContext, 1);
+ POP_NUMBER(pdfContext, wordSpace);
+ CHECK_PARAMETERS();
+
+ pdfContext->fGraphicsState.fWordSpace = wordSpace;
+
+ return kOK_SkPdfResult;
+}
+
+//scale Tz Set the horizontal scaling, Th
+//, to (scale ˜ 100). scale is a number specifying the
+//percentage of the normal width. Initial value: 100 (normal width).
+static SkPdfResult PdfOp_Tz(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("Tz", pdfContext, 1);
+ POP_NUMBER(pdfContext, scale);
+ CHECK_PARAMETERS();
+
+ if (scale < 0) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kOutOfRange_SkPdfIssue,
+ "scale must a positive real number", scale_obj, pdfContext);
+ return kError_SkPdfResult;
+ }
+
+ return kNYI_SkPdfResult;
+}
+
+//render Tr Set the text rendering mode, T
+//mode, to render, which is an integer. Initial value: 0.
+static SkPdfResult PdfOp_Tr(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("Tr", pdfContext, 1);
+ POP_INTEGER(pdfContext, mode);
+ CHECK_PARAMETERS();
+
+ if (mode < 0) { // TODO(edisonn): function/enums with supported modes
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kOutOfRange_SkPdfIssue,
+ "mode must a positive integer or 0", mode_obj, pdfContext);
+ return kError_SkPdfResult;
+ }
+
+ return kNYI_SkPdfResult;
+}
+//rise Ts Set the text rise, Trise, to rise, which is a number expressed in unscaled text space
+//units. Initial value: 0.
+static SkPdfResult PdfOp_Ts(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("Ts", pdfContext, 1);
+ POP_NUMBER(pdfContext, rise);
+ CHECK_PARAMETERS();
+
+ if (rise < 0) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kOutOfRange_SkPdfIssue,
+ "rise must a positive real number", rise_obj, pdfContext);
+ return kNYI_SkPdfResult;
+ }
+
+ return kNYI_SkPdfResult;
+}
+
+//wx wy d0
+static SkPdfResult PdfOp_d0(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("d0", pdfContext, 2);
+ POP_NUMBER(pdfContext, wy);
+ POP_NUMBER(pdfContext, wx);
+ CHECK_PARAMETERS();
+
+ if (wx < 0) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kOutOfRange_SkPdfIssue,
+ "wx must a positive real number", wx_obj, pdfContext);
+ return kError_SkPdfResult;
+ }
+
+ if (wy < 0) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kOutOfRange_SkPdfIssue,
+ "wy must a positive real number", wy_obj, pdfContext);
+ return kError_SkPdfResult;
+ }
+
+ return kNYI_SkPdfResult;
+}
+
+//wx wy llx lly urx ury d1
+static SkPdfResult PdfOp_d1(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("d1", pdfContext, 6);
+ POP_NUMBER(pdfContext, ury);
+ POP_NUMBER(pdfContext, urx);
+ POP_NUMBER(pdfContext, lly);
+ POP_NUMBER(pdfContext, llx);
+ POP_NUMBER(pdfContext, wy);
+ POP_NUMBER(pdfContext, wx);
+ CHECK_PARAMETERS();
+
+ // TODO(edisonn): really silly quick way to remove warning
+ if (wx + wy + llx + lly + urx + ury) {
+ return kNYI_SkPdfResult;
+ }
+
+ return kNYI_SkPdfResult;
+}
+
+//name sh
+static SkPdfResult PdfOp_sh(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("sh", pdfContext, 1);
+ POP_NAME(pdfContext, name);
+ CHECK_PARAMETERS();
+
+ if (name == NULL) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, name,
+ SkPdfNativeObject::kName_PdfObjectType, pdfContext);
+ return kError_SkPdfResult;
+ }
+
+ return kNYI_SkPdfResult;
+}
+
+//name Do
+static SkPdfResult PdfOp_Do(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("Do", pdfContext, 1);
+ POP_NAME(pdfContext, name);
+ CHECK_PARAMETERS();
+
+ SkPdfDictionary* xObject = pdfContext->fGraphicsState.fResources->XObject(pdfContext->fPdfDoc);
+
+ if (xObject == NULL) {
+ SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kMissingXObject_SkPdfIssue, NULL,
+ pdfContext->fGraphicsState.fResources, pdfContext);
+ return kIgnoreError_SkPdfResult;
+ }
+
+ SkPdfNativeObject* value = xObject->get(name);
+ value = pdfContext->fPdfDoc->resolveReference(value);
+
+ return doXObject(pdfContext, canvas, value);
+}
+
+//tag MP Designate a marked-content point. tag is a name object indicating the role or
+//significance of the point.
+static SkPdfResult PdfOp_MP(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("MP", pdfContext, 1);
+ POP_OBJ(pdfContext, tag);
+ CHECK_PARAMETERS();
+
+ if (tag == NULL) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, tag,
+ SkPdfNativeObject::_kObject_PdfObjectType, pdfContext);
+ return kNYI_SkPdfResult;
+ }
+
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue, "MP NYI", NULL, NULL);
+ return kNYI_SkPdfResult;
+}
+
+//tag properties DP Designate a marked-content point with an associated property list. tag is a
+//name object indicating the role or significance of the point; properties is
+//either an inline dictionary containing the property list or a name object
+//associated with it in the Properties subdictionary of the current resource
+//dictionary (see Section 9.5.1, “Property Lists”).
+static SkPdfResult PdfOp_DP(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("DP", pdfContext, 2);
+ POP_OBJ(pdfContext, properties);
+ POP_OBJ(pdfContext, tag);
+ CHECK_PARAMETERS();
+
+ if (tag == NULL) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, tag,
+ SkPdfNativeObject::_kObject_PdfObjectType, pdfContext);
+ return kNYI_SkPdfResult;
+ }
+
+ if (properties == NULL) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, properties,
+ SkPdfNativeObject::_kObject_PdfObjectType, pdfContext);
+ return kNYI_SkPdfResult;
+ }
+
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue, "DP NYI", NULL, NULL);
+ return kNYI_SkPdfResult;
+}
+
+//tag BMC Begin a marked-content sequence terminated by a balancing EMC operator.
+//tag is a name object indicating the role or significance of the sequence.
+static SkPdfResult PdfOp_BMC(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("BMC", pdfContext, 1);
+ POP_OBJ(pdfContext, tag);
+ CHECK_PARAMETERS();
+
+ if (tag == NULL) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, tag,
+ SkPdfNativeObject::_kObject_PdfObjectType, pdfContext);
+ return kNYI_SkPdfResult;
+ }
+
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue, "BMC NYI", NULL, NULL);
+ return kNYI_SkPdfResult;
+}
+
+//tag properties BDC Begin a marked-content sequence with an associated property list, terminated
+//by a balancing EMCoperator. tag is a name object indicating the role or significance of the
+// sequence; propertiesis either an inline dictionary containing the
+//property list or a name object associated with it in the Properties subdictionary of the current
+//resource dictionary (see Section 9.5.1, “Property Lists”).
+static SkPdfResult PdfOp_BDC(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ EXPECT_OPERANDS("BDC", pdfContext, 2);
+ POP_OBJ(pdfContext, properties);
+ POP_OBJ(pdfContext, tag);
+ CHECK_PARAMETERS();
+
+ if (tag == NULL) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, tag,
+ SkPdfNativeObject::_kObject_PdfObjectType, pdfContext);
+ return kNYI_SkPdfResult;
+ }
+
+ if (properties == NULL) {
+ SkPdfReportUnexpectedType(kIgnoreError_SkPdfIssueSeverity, NULL, properties,
+ SkPdfNativeObject::_kObject_PdfObjectType, pdfContext);
+ return kNYI_SkPdfResult;
+ }
+
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue, "BDC NYI", NULL, NULL);
+ return kNYI_SkPdfResult;
+}
+
+//— EMC End a marked-content sequence begun by a BMC or BDC operator.
+static SkPdfResult PdfOp_EMC(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) {
+ SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue, "EMC NYI", NULL, NULL);
+ return kNYI_SkPdfResult;
+}
+
+#include "SkPdfOps.h"
+
+SkTDict<PdfOperatorRenderer> gPdfOps(100);
+
+static void initPdfOperatorRenderes() {
+ static bool gInitialized = false;
+ if (gInitialized) {
+ return;
+ }
+
+ gPdfOps.set("q", PdfOp_q);
+ gPdfOps.set("Q", PdfOp_Q);
+ gPdfOps.set("cm", PdfOp_cm);
+
+ gPdfOps.set("TD", PdfOp_TD);
+ gPdfOps.set("Td", PdfOp_Td);
+ gPdfOps.set("Tm", PdfOp_Tm);
+ gPdfOps.set("T*", PdfOp_T_star);
+
+ gPdfOps.set("m", PdfOp_m);
+ gPdfOps.set("l", PdfOp_l);
+ gPdfOps.set("c", PdfOp_c);
+ gPdfOps.set("v", PdfOp_v);
+ gPdfOps.set("y", PdfOp_y);
+ gPdfOps.set("h", PdfOp_h);
+ gPdfOps.set("re", PdfOp_re);
+
+ gPdfOps.set("S", PdfOp_S);
+ gPdfOps.set("s", PdfOp_s);
+ gPdfOps.set("f", PdfOp_f);
+ gPdfOps.set("F", PdfOp_F);
+ gPdfOps.set("f*", PdfOp_f_star);
+ gPdfOps.set("B", PdfOp_B);
+ gPdfOps.set("B*", PdfOp_B_star);
+ gPdfOps.set("b", PdfOp_b);
+ gPdfOps.set("b*", PdfOp_b_star);
+ gPdfOps.set("n", PdfOp_n);
+
+ gPdfOps.set("BT", PdfOp_BT);
+ gPdfOps.set("ET", PdfOp_ET);
+
+ gPdfOps.set("Tj", PdfOp_Tj);
+ gPdfOps.set("'", PdfOp_quote);
+ gPdfOps.set("\"", PdfOp_doublequote);
+ gPdfOps.set("TJ", PdfOp_TJ);
+
+ gPdfOps.set("CS", PdfOp_CS);
+ gPdfOps.set("cs", PdfOp_cs);
+ gPdfOps.set("SC", PdfOp_SC);
+ gPdfOps.set("SCN", PdfOp_SCN);
+ gPdfOps.set("sc", PdfOp_sc);
+ gPdfOps.set("scn", PdfOp_scn);
+ gPdfOps.set("G", PdfOp_G);
+ gPdfOps.set("g", PdfOp_g);
+ gPdfOps.set("RG", PdfOp_RG);
+ gPdfOps.set("rg", PdfOp_rg);
+ gPdfOps.set("K", PdfOp_K);
+ gPdfOps.set("k", PdfOp_k);
+
+ gPdfOps.set("W", PdfOp_W);
+ gPdfOps.set("W*", PdfOp_W_star);
+
+ gPdfOps.set("BX", PdfOp_BX);
+ gPdfOps.set("EX", PdfOp_EX);
+
+ gPdfOps.set("BI", PdfOp_BI);
+ gPdfOps.set("ID", PdfOp_ID);
+ gPdfOps.set("EI", PdfOp_EI);
+
+ gPdfOps.set("w", PdfOp_w);
+ gPdfOps.set("J", PdfOp_J);
+ gPdfOps.set("j", PdfOp_j);
+ gPdfOps.set("M", PdfOp_M);
+ gPdfOps.set("d", PdfOp_d);
+ gPdfOps.set("ri", PdfOp_ri);
+ gPdfOps.set("i", PdfOp_i);
+ gPdfOps.set("gs", PdfOp_gs);
+
+ gPdfOps.set("Tc", PdfOp_Tc);
+ gPdfOps.set("Tw", PdfOp_Tw);
+ gPdfOps.set("Tz", PdfOp_Tz);
+ gPdfOps.set("TL", PdfOp_TL);
+ gPdfOps.set("Tf", PdfOp_Tf);
+ gPdfOps.set("Tr", PdfOp_Tr);
+ gPdfOps.set("Ts", PdfOp_Ts);
+
+ gPdfOps.set("d0", PdfOp_d0);
+ gPdfOps.set("d1", PdfOp_d1);
+
+ gPdfOps.set("sh", PdfOp_sh);
+
+ gPdfOps.set("Do", PdfOp_Do);
+
+ gPdfOps.set("MP", PdfOp_MP);
+ gPdfOps.set("DP", PdfOp_DP);
+ gPdfOps.set("BMC", PdfOp_BMC);
+ gPdfOps.set("BDC", PdfOp_BDC);
+ gPdfOps.set("EMC", PdfOp_EMC);
+
+ gInitialized = true;
+}
+
+class InitPdfOps {
+public:
+ InitPdfOps() {
+ initPdfOperatorRenderes();
+ }
+};
+
+InitPdfOps gInitPdfOps;
+
+SkPdfResult PdfInlineImageLooper::consumeToken(PdfToken& token) {
+ SkASSERT(false);
+ return kIgnoreError_SkPdfResult;
+}
+
+void PdfInlineImageLooper::loop() {
+ // FIXME (scroggo): Does this need to be looper? It does not consumeTokens,
+ // nor does it loop. The one thing it does is provide access to the
+ // protected members of SkPdfTokenLooper.
+ doXObject_Image(fPdfContext, fCanvas, fTokenizer->readInlineImage());
+}
+
+SkPdfResult PdfCompatibilitySectionLooper::consumeToken(PdfToken& token) {
+ return fParent->consumeToken(token);
+}
+
+void PdfCompatibilitySectionLooper::loop() {
+ PdfOp_q(fPdfContext, fCanvas, NULL);
+
+ PdfToken token;
+ while (fTokenizer->readToken(&token)) {
+ if (token.fType == kKeyword_TokenType && strcmp(token.fKeyword, "BX") == 0) {
+ PdfCompatibilitySectionLooper looper(this);
+ looper.loop();
+ } else {
+ if (token.fType == kKeyword_TokenType && strcmp(token.fKeyword, "EX") == 0) {
+ break;
+ }
+ fParent->consumeToken(token);
+ }
+ }
+
+ PdfOp_Q(fPdfContext, fCanvas, NULL);
+}
+
+// TODO(edisonn): for debugging - remove or put it in a #ifdef
+SkPdfContext* gPdfContext = NULL;
+
+bool SkPdfRenderer::renderPage(int page, SkCanvas* canvas, const SkRect& dst) const {
+ if (!fPdfDoc) {
+ return false;
+ }
+
+ if (page < 0 || page >= pages()) {
+ return false;
+ }
+
+ SkPdfContext pdfContext(fPdfDoc);
+
+ // FIXME (scroggo): Is this matrix needed?
+ pdfContext.fOriginalMatrix = SkMatrix::I();
+ pdfContext.fGraphicsState.fResources = fPdfDoc->pageResources(page);
+
+ gPdfContext = &pdfContext;
+
+ SkScalar z = SkIntToScalar(0);
+ SkScalar w = dst.width();
+ SkScalar h = dst.height();
+
+ if (SkScalarTruncToInt(w) <= 0 || SkScalarTruncToInt(h) <= 0) {
+ return true;
+ }
+
+ // FIXME (scroggo): The media box may not be anchored at 0,0. Is this okay?
+ SkScalar wp = fPdfDoc->MediaBox(page).width();
+ SkScalar hp = fPdfDoc->MediaBox(page).height();
+
+ SkPoint pdfSpace[4] = {SkPoint::Make(z, z),
+ SkPoint::Make(wp, z),
+ SkPoint::Make(wp, hp),
+ SkPoint::Make(z, hp)};
+
+#ifdef PDF_DEBUG_3X
+ // Use larger image to make sure we do not draw anything outside of page
+ // could be used in tests.
+ SkPoint skiaSpace[4] = {SkPoint::Make(w+z, h+h),
+ SkPoint::Make(w+w, h+h),
+ SkPoint::Make(w+w, h+z),
+ SkPoint::Make(w+z, h+z)};
+#else
+ SkPoint skiaSpace[4] = {SkPoint::Make(z, h),
+ SkPoint::Make(w, h),
+ SkPoint::Make(w, z),
+ SkPoint::Make(z, z)};
+#endif
+
+ SkAssertResult(pdfContext.fOriginalMatrix.setPolyToPoly(pdfSpace, skiaSpace, 4));
+ SkTraceMatrix(pdfContext.fOriginalMatrix, "Original matrix");
+
+ // FIXME (scroggo): Do we need to translate to account for the fact that
+ // the media box (or the destination rect) may not be anchored at 0,0?
+ pdfContext.fOriginalMatrix.postConcat(canvas->getTotalMatrix());
+
+ pdfContext.fGraphicsState.fCTM = pdfContext.fOriginalMatrix;
+ pdfContext.fGraphicsState.fContentStreamMatrix = pdfContext.fOriginalMatrix;
+ pdfContext.fGraphicsState.fMatrixTm = pdfContext.fGraphicsState.fCTM;
+ pdfContext.fGraphicsState.fMatrixTlm = pdfContext.fGraphicsState.fCTM;
+
+#ifndef PDF_DEBUG_NO_PAGE_CLIPING
+ canvas->clipRect(dst, SkRegion::kIntersect_Op, true);
+#endif
+
+ // FIXME (scroggo): This concat may not be necessary, since we generally
+ // call SkCanvas::setMatrix() before using the canvas.
+ canvas->concat(pdfContext.fOriginalMatrix);
+
+ doPage(&pdfContext, canvas, fPdfDoc->page(page));
+
+ // TODO(edisonn:) erase with white before draw? Right now the caller is responsible.
+// SkPaint paint;
+// paint.setColor(SK_ColorWHITE);
+// canvas->drawRect(rect, paint);
+
+
+ canvas->flush();
+ return true;
+}
+
+SkPdfRenderer* SkPdfRenderer::CreateFromFile(const char* inputFileName) {
+ // FIXME: SkPdfNativeDoc should have a similar Create function.
+ SkPdfNativeDoc* pdfDoc = SkNEW_ARGS(SkPdfNativeDoc, (inputFileName));
+ if (pdfDoc->pages() == 0) {
+ SkDELETE(pdfDoc);
+ return NULL;
+ }
+
+ return SkNEW_ARGS(SkPdfRenderer, (pdfDoc));
+}
+
+SkPdfRenderer* SkPdfRenderer::CreateFromStream(SkStream* stream) {
+ // TODO(edisonn): create static function that could return NULL if there are errors
+ SkPdfNativeDoc* pdfDoc = SkNEW_ARGS(SkPdfNativeDoc, (stream));
+ if (pdfDoc->pages() == 0) {
+ SkDELETE(pdfDoc);
+ return NULL;
+ }
+
+ return SkNEW_ARGS(SkPdfRenderer, (pdfDoc));
+}
+
+SkPdfRenderer::SkPdfRenderer(SkPdfNativeDoc* doc)
+ :fPdfDoc(doc) {
+}
+
+SkPdfRenderer::~SkPdfRenderer() {
+ SkDELETE(fPdfDoc);
+}
+
+int SkPdfRenderer::pages() const {
+ SkASSERT(fPdfDoc != NULL);
+ return fPdfDoc->pages();
+}
+
+SkRect SkPdfRenderer::MediaBox(int page) const {
+ SkASSERT(fPdfDoc != NULL);
+ return fPdfDoc->MediaBox(page);
+}
+
+size_t SkPdfRenderer::bytesUsed() const {
+ SkASSERT(fPdfDoc != NULL);
+ return fPdfDoc->bytesUsed();
+}
+
+bool SkPDFNativeRenderToBitmap(SkStream* stream,
+ SkBitmap* output,
+ int page,
+ SkPdfContent unused,
+ double dpi) {
+ SkASSERT(page >= 0);
+ SkPdfRenderer* renderer = SkPdfRenderer::CreateFromStream(stream);
+ if (NULL == renderer) {
+ return false;
+ }
+
+ SkRect rect = renderer->MediaBox(page < 0 ? 0 :page);
+
+ SkScalar width = SkScalarMul(rect.width(), SkDoubleToScalar(dpi / 72.0));
+ SkScalar height = SkScalarMul(rect.height(), SkDoubleToScalar(dpi / 72.0));
+
+ rect = SkRect::MakeWH(width, height);
+
+ setup_bitmap(output, SkScalarCeilToInt(width), SkScalarCeilToInt(height));
+
+ SkAutoTUnref<SkBaseDevice> device(SkNEW_ARGS(SkBitmapDevice, (*output)));
+ SkCanvas canvas(device);
+
+ return renderer->renderPage(page, &canvas, rect);
+}
diff --git a/chromium/third_party/skia/experimental/PdfViewer/src/SkTDStackNester.h b/chromium/third_party/skia/experimental/PdfViewer/src/SkTDStackNester.h
new file mode 100644
index 00000000000..dd936baaedd
--- /dev/null
+++ b/chromium/third_party/skia/experimental/PdfViewer/src/SkTDStackNester.h
@@ -0,0 +1,214 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkTDStackNester_DEFINED
+#define SkTDStackNester_DEFINED
+
+#include "SkTypes.h"
+#include "SkPdfReporter.h"
+
+// Adobe limits it to 28. Allow deeper nesting in case a file does not quite meet the
+// spec. 256 should be more than enough.
+#define MAX_NESTING 256
+
+/** \class SkTDStackNester
+ *
+ * Specialized version of SkTDStack which allows a stack of stacks.
+ * FIXME (scroggo): Could this be a subclass of SkTDStack? Could it have-a SkTDStack?
+ * The difference between SkTDStackNester and SkTDStack is that:
+ * - SkTDStackNester uses new/delete to manage initializations
+ * FIXME (scroggo): Why use new rather than malloc?
+ * - Supports nest/unnest which simulates a stack of stack. unnest will pop all the
+ * objects pushed since the last nest
+ * - kSlotCount is 64, instead of 8.
+ * FIXME (scroggo): How did we arrive at this number?
+ */
+
+template <typename T> class SkTDStackNester : SkNoncopyable {
+public:
+ SkTDStackNester()
+ : fCount(0)
+ , fLocalCount(0)
+ , fNestingLevel(0) {
+ fInitialRec.fNext = NULL;
+ fRec = &fInitialRec;
+ SkDEBUGCODE(fTotalCount = 0;)
+ }
+
+ ~SkTDStackNester() {
+ Rec* rec = fRec;
+ while (rec != &fInitialRec) {
+ Rec* next = rec->fNext;
+ delete rec;
+ rec = next;
+ }
+ }
+
+ /**
+ * Return the number of objects in the current nesting level.
+ */
+ int count() const { return fLocalCount; }
+
+ /**
+ * Whether the current nesting level is empty.
+ */
+ bool empty() const { return fLocalCount == 0; }
+
+ /**
+ * The current nesting level.
+ */
+ int nestingLevel() const {
+ return fNestingLevel;
+ }
+
+ /**
+ * Analogous to an SkCanvas::save(). When unnest() is called, the state of this SkTDStackNester
+ * will return to its state when nest() was called.
+ *
+ * After a call to nest(), fLocalCount is reset to 0, since the stack is on a new nesting
+ * level.
+ */
+ void nest() {
+ SkASSERT(fNestingLevel >= 0);
+ if (fNestingLevel < MAX_NESTING) {
+ fNestings[fNestingLevel] = fLocalCount;
+ fLocalCount = 0;
+ } else {
+ // We are are past max nesting levels. We will still continue to work, but we might fail
+ // to properly ignore errors. Ideally it should only mean poor rendering in exceptional
+ // cases.
+ SkPdfReport(kWarning_SkPdfIssueSeverity, kStackNestingOverflow_SkPdfIssue,
+ "Past maximum nesting level", NULL, NULL);
+ }
+ fNestingLevel++;
+ }
+
+ /**
+ * Analagous to an SkCanvas::restore(). Will revert this stack to the state it was in the last
+ * time nest() was called. It is an error to call unnest() more times than nest() has been
+ * called.
+ */
+ void unnest() {
+ SkASSERT(fNestingLevel >= 0);
+ if (0 == fNestingLevel) {
+ SkPdfReport(kWarning_SkPdfIssueSeverity, kStackNestingOverflow_SkPdfIssue,
+ "Nesting underflow", NULL, NULL);
+ return;
+ }
+
+ fNestingLevel--;
+ if (fNestingLevel < MAX_NESTING) {
+ while (fLocalCount > 0) {
+ // FIXME (scroggo): Pass the object?
+ SkPdfReport(kInfo_SkPdfIssueSeverity, kUnusedObject_SkPdfIssue,
+ "Unused object when calling unnest!", NULL, NULL);
+ this->pop();
+ }
+ fLocalCount = fNestings[fNestingLevel];
+ }
+ }
+
+ /**
+ * Add an object to the stack, and return a pointer to it for modification.
+ */
+ T* push() {
+ SkASSERT(fCount <= kSlotCount);
+ if (fCount == kSlotCount) {
+ Rec* rec = new Rec();
+ rec->fNext = fRec;
+ fRec = rec;
+ fCount = 0;
+ }
+ SkDEBUGCODE(++fTotalCount;)
+ ++fLocalCount;
+ return &fRec->fSlots[fCount++];
+ }
+
+ /**
+ * Add an object to the stack, copied from elem.
+ */
+ void push(const T& elem) { *this->push() = elem; }
+
+ /**
+ * Return the top element.
+ */
+ const T& top() const {
+ SkASSERT(fRec && fCount > 0);
+ return fRec->fSlots[fCount - 1];
+ }
+
+ /**
+ * Return the top element.
+ */
+ T& top() {
+ SkASSERT(fRec && fCount > 0);
+ return fRec->fSlots[fCount - 1];
+ }
+
+ /**
+ * Pop an object off the stack (via pop()), and copy its members into elem.
+ */
+ void pop(T* elem) {
+ if (elem) {
+ *elem = fRec->fSlots[fCount - 1];
+ }
+ this->pop();
+ }
+
+ /**
+ * Pop an object off the stack. It is an error to call pop() more times
+ * than push() has been called in total or since the last call to nest().
+ */
+ void pop() {
+ SkASSERT(fCount > 0 && fRec);
+ SkASSERT(fLocalCount > 0);
+ --fLocalCount;
+ SkDEBUGCODE(--fTotalCount;)
+ if (--fCount == 0) {
+ if (fRec != &fInitialRec) {
+ Rec* rec = fRec->fNext;
+ delete fRec;
+ fCount = kSlotCount;
+ fRec = rec;
+ } else {
+ SkASSERT(fTotalCount == 0);
+ }
+ }
+ }
+
+private:
+ enum {
+ // Number of objects held per Rec. Storing multiple objects in one Rec
+ // means that we call new less often.
+ kSlotCount = 64
+ };
+
+ struct Rec {
+ Rec* fNext;
+ T fSlots[kSlotCount];
+ };
+
+ // First Rec, requiring no allocation.
+ Rec fInitialRec;
+ // The Rec on top of the stack.
+ Rec* fRec;
+ // Number of objects in fRec.
+ int fCount;
+ // Number of objects in the current nesting level.
+ int fLocalCount;
+ // Array of counts of objects per nesting level.
+ // Only valid for fNestings[0] through fNestings[fNestingLevel-1].
+ int fNestings[MAX_NESTING];
+ // Current nesting level.
+ int fNestingLevel;
+ // Total number of objects in this SkTDStackNester.
+ SkDEBUGCODE(int fTotalCount;)
+
+ // For testing.
+ friend class SkTDStackNesterTester;
+};
+#endif // SkTDStackNester_DEFINED
diff --git a/chromium/third_party/skia/experimental/SimpleCocoaApp/SimpleApp-Info.plist b/chromium/third_party/skia/experimental/SimpleCocoaApp/SimpleApp-Info.plist
new file mode 100644
index 00000000000..dcb5a4544af
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SimpleCocoaApp/SimpleApp-Info.plist
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>com.yourcompany.${PRODUCT_NAME:rfc1034identifier}</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>${MACOSX_DEPLOYMENT_TARGET}</string>
+ <key>NSMainNibFile</key>
+ <string>SimpleApp</string>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+</dict>
+</plist>
diff --git a/chromium/third_party/skia/experimental/SimpleCocoaApp/SimpleApp.h b/chromium/third_party/skia/experimental/SimpleCocoaApp/SimpleApp.h
new file mode 100644
index 00000000000..fe47a4a0664
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SimpleCocoaApp/SimpleApp.h
@@ -0,0 +1,16 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/*
+ * Simple hello world app for skia on Mac OS (Cocoa)
+ */
+
+#import "SkNSView.h"
+@interface SimpleNSView : SkNSView
+- (id)initWithDefaults;
+@end
diff --git a/chromium/third_party/skia/experimental/SimpleCocoaApp/SimpleApp.mm b/chromium/third_party/skia/experimental/SimpleCocoaApp/SimpleApp.mm
new file mode 100644
index 00000000000..7dac2a4fffa
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SimpleCocoaApp/SimpleApp.mm
@@ -0,0 +1,306 @@
+#include "SkCanvas.h"
+#include "SkCGUtils.h"
+#include "SkGraphics.h"
+#include "SkImageDecoder.h"
+#include "SkOSFile.h"
+#include "SkPaint.h"
+#include "SkPicture.h"
+#include "SkStream.h"
+#include "SkWindow.h"
+
+static void make_filepath(SkString* path, const char* dir, const SkString& name) {
+ size_t len = strlen(dir);
+ path->set(dir);
+ if (len > 0 && dir[len - 1] != '/') {
+ path->append("/");
+ }
+ path->append(name);
+}
+
+static SkPicture* LoadPicture(const char path[]) {
+ SkPicture* pic = NULL;
+
+ SkBitmap bm;
+ if (SkImageDecoder::DecodeFile(path, &bm)) {
+ bm.setImmutable();
+ pic = SkNEW(SkPicture);
+ SkCanvas* can = pic->beginRecording(bm.width(), bm.height());
+ can->drawBitmap(bm, 0, 0, NULL);
+ pic->endRecording();
+ } else {
+ SkFILEStream stream(path);
+ if (stream.isValid()) {
+ pic = SkNEW_ARGS(SkPicture,
+ (&stream, NULL, &SkImageDecoder::DecodeStream));
+ }
+
+ if (false) { // re-record
+ SkPicture p2;
+ pic->draw(p2.beginRecording(pic->width(), pic->height()));
+ p2.endRecording();
+
+ SkString path2(path);
+ path2.append(".new.skp");
+ SkFILEWStream writer(path2.c_str());
+ p2.serialize(&writer);
+ }
+ }
+ return pic;
+}
+
+class SkSampleView : public SkView {
+public:
+ SkSampleView() {
+ this->setVisibleP(true);
+ this->setClipToBounds(false);
+ };
+protected:
+ virtual void onDraw(SkCanvas* canvas) {
+ canvas->drawColor(0xFFFFFFFF);
+ SkPaint p;
+ p.setTextSize(20);
+ p.setAntiAlias(true);
+ canvas->drawText("Hello World!", 13, 50, 30, p);
+ // SkRect r = {50, 50, 80, 80};
+ p.setColor(0xAA11EEAA);
+ // canvas->drawRect(r, p);
+
+ SkRect result;
+ SkPath path;
+ path.moveTo(0, 0);
+ path.lineTo(1, 1);
+ path.lineTo(1, 8);
+ path.lineTo(0, 9);
+ SkASSERT(path.hasRectangularInterior(&result));
+
+ path.reset();
+ path.addRect(10, 10, 100, 100, SkPath::kCW_Direction);
+ path.addRect(20, 20, 50, 50, SkPath::kCW_Direction);
+ path.addRect(50, 50, 90, 90, SkPath::kCCW_Direction);
+ p.setColor(0xAA335577);
+ canvas->drawPath(path, p);
+ SkASSERT(!path.hasRectangularInterior(NULL));
+ path.reset();
+ path.addRect(10, 10, 100, 100, SkPath::kCW_Direction);
+ path.addRect(20, 20, 80, 80, SkPath::kCW_Direction);
+ SkRect expected = {20, 20, 80, 80};
+ SkASSERT(path.hasRectangularInterior(&result));
+ SkASSERT(result == expected);
+
+ }
+private:
+ typedef SkView INHERITED;
+};
+
+void application_init();
+void application_term();
+
+static int showPathContour(SkPath::Iter& iter) {
+ uint8_t verb;
+ SkPoint pts[4];
+ int moves = 0;
+ bool waitForClose = false;
+ while ((verb = iter.next(pts)) != SkPath::kDone_Verb) {
+ switch (verb) {
+ case SkPath::kMove_Verb:
+ if (!waitForClose) {
+ ++moves;
+ waitForClose = true;
+ }
+ SkDebugf("path.moveTo(%1.9g, %1.9g);\n", pts[0].fX, pts[0].fY);
+ break;
+ case SkPath::kLine_Verb:
+ SkDebugf("path.lineTo(%1.9g, %1.9g);\n", pts[1].fX, pts[1].fY);
+ break;
+ case SkPath::kQuad_Verb:
+ SkDebugf("path.quadTo(%1.9g, %1.9g, %1.9g, %1.9g);\n",
+ pts[1].fX, pts[1].fY, pts[2].fX, pts[2].fY);
+ break;
+ case SkPath::kCubic_Verb:
+ SkDebugf("path.cubicTo(%1.9g, %1.9g, %1.9g, %1.9g, %1.9g, %1.9g);\n",
+ pts[1].fX, pts[1].fY, pts[2].fX, pts[2].fY,
+ pts[3].fX, pts[3].fY);
+ break;
+ case SkPath::kClose_Verb:
+ waitForClose = false;
+ SkDebugf("path.close();\n");
+ break;
+ default:
+ SkDEBUGFAIL("bad verb");
+ SkASSERT(0);
+ return 0;
+ }
+ }
+ return moves;
+}
+
+class PathCanvas : public SkCanvas {
+ virtual void drawPath(const SkPath& path, const SkPaint& paint) {
+ if (nameonly) {
+ SkDebugf(" %s%d,\n", filename.c_str(), ++count);
+ return;
+ }
+ SkPath::Iter iter(path, true);
+ SkDebugf("<div id=\"%s%d\">\n", filename.c_str(), ++count);
+ SkASSERT(path.getFillType() < SkPath::kInverseWinding_FillType);
+ SkDebugf("path.setFillType(SkPath::k%s_FillType);\n",
+ path.getFillType() == SkPath::kWinding_FillType ? "Winding" : "EvenOdd");
+ int contours = showPathContour(iter);
+ SkRect r;
+ SkRect copy = r;
+ bool hasOne = path.hasRectangularInterior(&r);
+ bool expected = (path.getFillType() == SkPath::kWinding_FillType && contours == 1)
+ || (path.getFillType() == SkPath::kEvenOdd_FillType && contours == 2);
+ if (!expected) {
+ SkDebugf("suspect contours=%d\n", contours);
+ }
+ int verbs = path.countVerbs();
+ int points = path.countPoints();
+ if (hasOne) {
+ if (rectVerbsMin > verbs) {
+ rectVerbsMin = verbs;
+ }
+ if (rectVerbsMax < verbs) {
+ rectVerbsMax = verbs;
+ }
+ if (rectPointsMin > points) {
+ rectPointsMin = points;
+ }
+ if (rectPointsMax < points) {
+ rectPointsMax = points;
+ }
+ SkDebugf("path.addRect(%1.9g, %1.9g, %1.9g, %1.9g);\n",
+ r.fLeft, r.fTop, r.fRight, r.fBottom);
+ } else {
+ if (verbsMin > verbs) {
+ verbsMin = verbs;
+ }
+ if (verbsMax < verbs) {
+ verbsMax = verbs;
+ }
+ if (pointsMin > points) {
+ pointsMin = points;
+ }
+ if (pointsMax < points) {
+ pointsMax = points;
+ }
+ SkDebugf("no interior bounds\n");
+ }
+ path.hasRectangularInterior(&copy);
+ SkDebugf("</div>\n\n");
+ }
+
+ virtual void drawPosTextH(const void* text, size_t byteLength,
+ const SkScalar xpos[], SkScalar constY,
+ const SkPaint& paint) {
+ }
+
+public:
+ void divName(const SkString& str, bool only) {
+ filename = str;
+ char* chars = filename.writable_str();
+ while (*chars) {
+ if (*chars == '.' || *chars == '-') *chars = '_';
+ chars++;
+ }
+ count = 0;
+ nameonly = only;
+ }
+
+ void init() {
+ pointsMin = verbsMin = SK_MaxS32;
+ pointsMax = verbsMax = SK_MinS32;
+ rectPointsMin = rectVerbsMin = SK_MaxS32;
+ rectPointsMax = rectVerbsMax = SK_MinS32;
+ }
+
+ SkString filename;
+ int count;
+ bool nameonly;
+ int pointsMin;
+ int pointsMax;
+ int verbsMin;
+ int verbsMax;
+ int rectPointsMin;
+ int rectPointsMax;
+ int rectVerbsMin;
+ int rectVerbsMax;
+};
+
+bool runone = false;
+
+void application_init() {
+ SkGraphics::Init();
+ SkEvent::Init();
+ if (runone) {
+ return;
+ }
+ const char pictDir[] = "/Volumes/chrome/nih/skia/skp/skp";
+ SkOSFile::Iter iter(pictDir, "skp");
+ SkString filename;
+ PathCanvas canvas;
+ canvas.init();
+ while (iter.next(&filename)) {
+ SkString path;
+ // if (true) filename.set("tabl_www_sahadan_com.skp");
+ make_filepath(&path, pictDir, filename);
+ canvas.divName(filename, false);
+ SkPicture* pic = LoadPicture(path.c_str());
+ pic->draw(&canvas);
+ SkDELETE(pic);
+ }
+ SkDebugf("\n</div>\n\n");
+
+ SkDebugf("<script type=\"text/javascript\">\n\n");
+ SkDebugf("var testDivs = [\n");
+
+ iter.reset(pictDir, "skp");
+ while (iter.next(&filename)) {
+ SkString path;
+ make_filepath(&path, pictDir, filename);
+ canvas.divName(filename, true);
+ SkPicture* pic = LoadPicture(path.c_str());
+ pic->draw(&canvas);
+ SkDELETE(pic);
+ }
+ SkDebugf("];\n\n");
+
+ SkDebugf("points min=%d max=%d verbs min=%d max=%d\n", canvas.pointsMin, canvas.pointsMax,
+ canvas.verbsMin, canvas.verbsMax);
+ SkDebugf("rect points min=%d max=%d verbs min=%d max=%d\n", canvas.rectPointsMin, canvas.rectPointsMax,
+ canvas.rectVerbsMin, canvas.rectVerbsMax);
+
+ SkDebugf("\n");
+}
+
+void application_term() {
+ SkGraphics::Term();
+ SkEvent::Term();
+}
+
+class FillLayout : public SkView::Layout {
+protected:
+ virtual void onLayoutChildren(SkView* parent) {
+ SkView* view = SkView::F2BIter(parent).next();
+ view->setSize(parent->width(), parent->height());
+ }
+};
+
+#import "SimpleApp.h"
+@implementation SimpleNSView
+
+- (id)initWithDefaults {
+ if ((self = [super initWithDefaults])) {
+ fWind = new SkOSWindow(self);
+ fWind->setLayout(new FillLayout, false);
+ fWind->attachChildToFront(new SkSampleView)->unref();
+ }
+ return self;
+}
+
+- (void)drawRect:(NSRect)dirtyRect {
+ CGContextRef ctx = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
+ SkCGDrawBitmap(ctx, fWind->getBitmap(), 0, 0);
+}
+
+@end
diff --git a/chromium/third_party/skia/experimental/SimpleCocoaApp/SimpleApp.xib b/chromium/third_party/skia/experimental/SimpleCocoaApp/SimpleApp.xib
new file mode 100644
index 00000000000..8ce9bc80664
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SimpleCocoaApp/SimpleApp.xib
@@ -0,0 +1,3734 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
+ <data>
+ <int key="IBDocument.SystemTarget">1060</int>
+ <string key="IBDocument.SystemVersion">10K540</string>
+ <string key="IBDocument.InterfaceBuilderVersion">851</string>
+ <string key="IBDocument.AppKitVersion">1038.36</string>
+ <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">851</string>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="372"/>
+ <integer value="24"/>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+ <integer value="1" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomObject" id="1021">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSCustomObject" id="1014">
+ <string key="NSClassName">FirstResponder</string>
+ </object>
+ <object class="NSCustomObject" id="1050">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSMenu" id="649796088">
+ <string key="NSTitle">AMainMenu</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="694149608">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">SimpleCocoaApp</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <object class="NSCustomResource" key="NSOnImage" id="35465992">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuCheckmark</string>
+ </object>
+ <object class="NSCustomResource" key="NSMixedImage" id="502551668">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuMixedState</string>
+ </object>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="110575045">
+ <string key="NSTitle">SimpleCocoaApp</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="238522557">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">About SimpleCocoaApp</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="304266470">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="609285721">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Preferences…</string>
+ <string key="NSKeyEquiv">,</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="481834944">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1046388886">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Services</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="752062318">
+ <string key="NSTitle">Services</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <string key="NSName">_NSServicesMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="646227648">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="755159360">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Hide SimpleCocoaApp</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="342932134">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Hide Others</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="908899353">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Show All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1056857174">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="632727374">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Quit SimpleCocoaApp</string>
+ <string key="NSKeyEquiv">q</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSAppleMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="379814623">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">File</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="720053764">
+ <string key="NSTitle">File</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="705341025">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">New</string>
+ <string key="NSKeyEquiv">n</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="722745758">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Open…</string>
+ <string key="NSKeyEquiv">o</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1025936716">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Open Recent</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="1065607017">
+ <string key="NSTitle">Open Recent</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="759406840">
+ <reference key="NSMenu" ref="1065607017"/>
+ <string key="NSTitle">Clear Menu</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSRecentDocumentsMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="425164168">
+ <reference key="NSMenu" ref="720053764"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="776162233">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Close</string>
+ <string key="NSKeyEquiv">w</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1023925487">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Save</string>
+ <string key="NSKeyEquiv">s</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="117038363">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Save As…</string>
+ <string key="NSKeyEquiv">S</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="579971712">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Revert to Saved</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1010469920">
+ <reference key="NSMenu" ref="720053764"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="294629803">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Page Setup...</string>
+ <string key="NSKeyEquiv">P</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSToolTip"/>
+ </object>
+ <object class="NSMenuItem" id="49223823">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Print…</string>
+ <string key="NSKeyEquiv">p</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="952259628">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Edit</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="789758025">
+ <string key="NSTitle">Edit</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="1058277027">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Undo</string>
+ <string key="NSKeyEquiv">z</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="790794224">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Redo</string>
+ <string key="NSKeyEquiv">Z</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1040322652">
+ <reference key="NSMenu" ref="789758025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="296257095">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Cut</string>
+ <string key="NSKeyEquiv">x</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="860595796">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Copy</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="29853731">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Paste</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="82994268">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Paste and Match Style</string>
+ <string key="NSKeyEquiv">V</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="437104165">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Delete</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="583158037">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Select All</string>
+ <string key="NSKeyEquiv">a</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="212016141">
+ <reference key="NSMenu" ref="789758025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="892235320">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Find</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="963351320">
+ <string key="NSTitle">Find</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="447796847">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find…</string>
+ <string key="NSKeyEquiv">f</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="326711663">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find Next</string>
+ <string key="NSKeyEquiv">g</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="270902937">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find Previous</string>
+ <string key="NSKeyEquiv">G</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="159080638">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Use Selection for Find</string>
+ <string key="NSKeyEquiv">e</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">7</int>
+ </object>
+ <object class="NSMenuItem" id="88285865">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Jump to Selection</string>
+ <string key="NSKeyEquiv">j</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="972420730">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Spelling and Grammar</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="769623530">
+ <string key="NSTitle">Spelling and Grammar</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="679648819">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Show Spelling and Grammar</string>
+ <string key="NSKeyEquiv">:</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="96193923">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Document Now</string>
+ <string key="NSKeyEquiv">;</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="859480356">
+ <reference key="NSMenu" ref="769623530"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="948374510">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Spelling While Typing</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="967646866">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Grammar With Spelling</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="795346622">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Correct Spelling Automatically</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="507821607">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Substitutions</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="698887838">
+ <string key="NSTitle">Substitutions</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="65139061">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Show Substitutions</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="19036812">
+ <reference key="NSMenu" ref="698887838"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="605118523">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Copy/Paste</string>
+ <string key="NSKeyEquiv">f</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="197661976">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Quotes</string>
+ <string key="NSKeyEquiv">g</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="672708820">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Dashes</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="708854459">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Links</string>
+ <string key="NSKeyEquiv">G</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="537092702">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Text Replacement</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="288088188">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Transformations</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="579392910">
+ <string key="NSTitle">Transformations</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="1060694897">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Make Upper Case</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="879586729">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Make Lower Case</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="56570060">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Capitalize</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="676164635">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Speech</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="785027613">
+ <string key="NSTitle">Speech</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="731782645">
+ <reference key="NSMenu" ref="785027613"/>
+ <string key="NSTitle">Start Speaking</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="680220178">
+ <reference key="NSMenu" ref="785027613"/>
+ <string key="NSTitle">Stop Speaking</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="302598603">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Format</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="941447902">
+ <string key="NSTitle">Format</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="792887677">
+ <reference key="NSMenu" ref="941447902"/>
+ <string key="NSTitle">Font</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="786677654">
+ <string key="NSTitle">Font</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="159677712">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Show Fonts</string>
+ <string key="NSKeyEquiv">t</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="305399458">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Bold</string>
+ <string key="NSKeyEquiv">b</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="814362025">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Italic</string>
+ <string key="NSKeyEquiv">i</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="330926929">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Underline</string>
+ <string key="NSKeyEquiv">u</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="533507878">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="158063935">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Bigger</string>
+ <string key="NSKeyEquiv">+</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="885547335">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Smaller</string>
+ <string key="NSKeyEquiv">-</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">4</int>
+ </object>
+ <object class="NSMenuItem" id="901062459">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="767671776">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Kern</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="175441468">
+ <string key="NSTitle">Kern</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="252969304">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="766922938">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Use None</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="677519740">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Tighten</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="238351151">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Loosen</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="691570813">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Ligature</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="1058217995">
+ <string key="NSTitle">Ligature</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="706297211">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="568384683">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use None</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="663508465">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="769124883">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Baseline</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="18263474">
+ <string key="NSTitle">Baseline</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="257962622">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="644725453">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Superscript</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1037576581">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Subscript</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="941806246">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Raise</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1045724900">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Lower</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="739652853">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1012600125">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Show Colors</string>
+ <string key="NSKeyEquiv">C</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="214559597">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="596732606">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Copy Style</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="393423671">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Paste Style</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSFontMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="215659978">
+ <reference key="NSMenu" ref="941447902"/>
+ <string key="NSTitle">Text</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="446991534">
+ <string key="NSTitle">Text</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="875092757">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Align Left</string>
+ <string key="NSKeyEquiv">{</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="630155264">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Center</string>
+ <string key="NSKeyEquiv">|</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="945678886">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Justify</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="512868991">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Align Right</string>
+ <string key="NSKeyEquiv">}</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="163117631">
+ <reference key="NSMenu" ref="446991534"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="31516759">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Writing Direction</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="956096989">
+ <string key="NSTitle">Writing Direction</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="257099033">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <string key="NSTitle">Paragraph</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="551969625">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="249532473">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="607364498">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="508151438">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="981751889">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <string key="NSTitle">Selection</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="380031999">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="825984362">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="560145579">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="908105787">
+ <reference key="NSMenu" ref="446991534"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="644046920">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Show Ruler</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="231811626">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Copy Ruler</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1310720</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="883618387">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Paste Ruler</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1310720</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="586577488">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">View</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="466310130">
+ <string key="NSTitle">View</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="102151532">
+ <reference key="NSMenu" ref="466310130"/>
+ <string key="NSTitle">Show Toolbar</string>
+ <string key="NSKeyEquiv">t</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="237841660">
+ <reference key="NSMenu" ref="466310130"/>
+ <string key="NSTitle">Customize Toolbar…</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="713487014">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Window</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="835318025">
+ <string key="NSTitle">Window</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="1011231497">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Minimize</string>
+ <string key="NSKeyEquiv">m</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="575023229">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Zoom</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="299356726">
+ <reference key="NSMenu" ref="835318025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="625202149">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Bring All to Front</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSWindowsMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="448692316">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Help</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="992780483">
+ <string key="NSTitle">Help</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="105068016">
+ <reference key="NSMenu" ref="992780483"/>
+ <string key="NSTitle">SimpleCocoaApp Help</string>
+ <string key="NSKeyEquiv">?</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </object>
+ <string key="NSName">_NSHelpMenu</string>
+ </object>
+ </object>
+ </object>
+ <string key="NSName">_NSMainMenu</string>
+ </object>
+ <object class="NSWindowTemplate" id="972006081">
+ <int key="NSWindowStyleMask">15</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{335, 390}, {480, 360}}</string>
+ <int key="NSWTFlags">1954021376</int>
+ <string key="NSWindowTitle">SimpleApp</string>
+ <string key="NSWindowClass">NSWindow</string>
+ <nil key="NSViewClass"/>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <object class="NSView" key="NSWindowView" id="439893737">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{480, 360}</string>
+ <reference key="NSSuperview"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performMiniaturize:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1011231497"/>
+ </object>
+ <int key="connectionID">37</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">arrangeInFront:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="625202149"/>
+ </object>
+ <int key="connectionID">39</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">print:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="49223823"/>
+ </object>
+ <int key="connectionID">86</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">runPageLayout:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="294629803"/>
+ </object>
+ <int key="connectionID">87</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">clearRecentDocuments:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="759406840"/>
+ </object>
+ <int key="connectionID">127</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontStandardAboutPanel:</string>
+ <reference key="source" ref="1021"/>
+ <reference key="destination" ref="238522557"/>
+ </object>
+ <int key="connectionID">142</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performClose:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="776162233"/>
+ </object>
+ <int key="connectionID">193</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleContinuousSpellChecking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="948374510"/>
+ </object>
+ <int key="connectionID">222</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">undo:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1058277027"/>
+ </object>
+ <int key="connectionID">223</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copy:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="860595796"/>
+ </object>
+ <int key="connectionID">224</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">checkSpelling:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="96193923"/>
+ </object>
+ <int key="connectionID">225</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">paste:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="29853731"/>
+ </object>
+ <int key="connectionID">226</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">stopSpeaking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="680220178"/>
+ </object>
+ <int key="connectionID">227</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cut:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="296257095"/>
+ </object>
+ <int key="connectionID">228</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showGuessPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="679648819"/>
+ </object>
+ <int key="connectionID">230</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">redo:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="790794224"/>
+ </object>
+ <int key="connectionID">231</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">selectAll:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="583158037"/>
+ </object>
+ <int key="connectionID">232</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">startSpeaking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="731782645"/>
+ </object>
+ <int key="connectionID">233</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">delete:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="437104165"/>
+ </object>
+ <int key="connectionID">235</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performZoom:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="575023229"/>
+ </object>
+ <int key="connectionID">240</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="447796847"/>
+ </object>
+ <int key="connectionID">241</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">centerSelectionInVisibleArea:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="88285865"/>
+ </object>
+ <int key="connectionID">245</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleGrammarChecking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="967646866"/>
+ </object>
+ <int key="connectionID">347</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleSmartInsertDelete:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="605118523"/>
+ </object>
+ <int key="connectionID">355</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticQuoteSubstitution:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="197661976"/>
+ </object>
+ <int key="connectionID">356</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticLinkDetection:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="708854459"/>
+ </object>
+ <int key="connectionID">357</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">saveDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1023925487"/>
+ </object>
+ <int key="connectionID">362</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">saveDocumentAs:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="117038363"/>
+ </object>
+ <int key="connectionID">363</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">revertDocumentToSaved:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="579971712"/>
+ </object>
+ <int key="connectionID">364</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">runToolbarCustomizationPalette:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="237841660"/>
+ </object>
+ <int key="connectionID">365</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleToolbarShown:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="102151532"/>
+ </object>
+ <int key="connectionID">366</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">hide:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="755159360"/>
+ </object>
+ <int key="connectionID">367</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">hideOtherApplications:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="342932134"/>
+ </object>
+ <int key="connectionID">368</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">unhideAllApplications:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="908899353"/>
+ </object>
+ <int key="connectionID">370</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">newDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="705341025"/>
+ </object>
+ <int key="connectionID">373</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="722745758"/>
+ </object>
+ <int key="connectionID">374</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">raiseBaseline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="941806246"/>
+ </object>
+ <int key="connectionID">426</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">lowerBaseline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1045724900"/>
+ </object>
+ <int key="connectionID">427</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copyFont:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="596732606"/>
+ </object>
+ <int key="connectionID">428</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">subscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1037576581"/>
+ </object>
+ <int key="connectionID">429</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">superscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="644725453"/>
+ </object>
+ <int key="connectionID">430</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">tightenKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="677519740"/>
+ </object>
+ <int key="connectionID">431</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">underline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="330926929"/>
+ </object>
+ <int key="connectionID">432</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontColorPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1012600125"/>
+ </object>
+ <int key="connectionID">433</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useAllLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="663508465"/>
+ </object>
+ <int key="connectionID">434</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">loosenKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="238351151"/>
+ </object>
+ <int key="connectionID">435</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteFont:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="393423671"/>
+ </object>
+ <int key="connectionID">436</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">unscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="257962622"/>
+ </object>
+ <int key="connectionID">437</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useStandardKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="252969304"/>
+ </object>
+ <int key="connectionID">438</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useStandardLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="706297211"/>
+ </object>
+ <int key="connectionID">439</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">turnOffLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="568384683"/>
+ </object>
+ <int key="connectionID">440</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">turnOffKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="766922938"/>
+ </object>
+ <int key="connectionID">441</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">terminate:</string>
+ <reference key="source" ref="1050"/>
+ <reference key="destination" ref="632727374"/>
+ </object>
+ <int key="connectionID">449</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticSpellingCorrection:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="795346622"/>
+ </object>
+ <int key="connectionID">456</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontSubstitutionsPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="65139061"/>
+ </object>
+ <int key="connectionID">458</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticDashSubstitution:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="672708820"/>
+ </object>
+ <int key="connectionID">461</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticTextReplacement:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="537092702"/>
+ </object>
+ <int key="connectionID">463</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">uppercaseWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1060694897"/>
+ </object>
+ <int key="connectionID">464</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">capitalizeWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="56570060"/>
+ </object>
+ <int key="connectionID">467</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">lowercaseWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="879586729"/>
+ </object>
+ <int key="connectionID">468</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteAsPlainText:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="82994268"/>
+ </object>
+ <int key="connectionID">486</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="326711663"/>
+ </object>
+ <int key="connectionID">487</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="270902937"/>
+ </object>
+ <int key="connectionID">488</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="159080638"/>
+ </object>
+ <int key="connectionID">489</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showHelp:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="105068016"/>
+ </object>
+ <int key="connectionID">493</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignCenter:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="630155264"/>
+ </object>
+ <int key="connectionID">518</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="883618387"/>
+ </object>
+ <int key="connectionID">519</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="644046920"/>
+ </object>
+ <int key="connectionID">520</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="512868991"/>
+ </object>
+ <int key="connectionID">521</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copyRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="231811626"/>
+ </object>
+ <int key="connectionID">522</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignJustified:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="945678886"/>
+ </object>
+ <int key="connectionID">523</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="875092757"/>
+ </object>
+ <int key="connectionID">524</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionNatural:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="551969625"/>
+ </object>
+ <int key="connectionID">525</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionLeftToRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="249532473"/>
+ </object>
+ <int key="connectionID">526</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionRightToLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="607364498"/>
+ </object>
+ <int key="connectionID">527</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionNatural:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="380031999"/>
+ </object>
+ <int key="connectionID">528</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionLeftToRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="825984362"/>
+ </object>
+ <int key="connectionID">529</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionRightToLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="560145579"/>
+ </object>
+ <int key="connectionID">530</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <object class="NSArray" key="object" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <reference key="children" ref="1048"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="1021"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="1014"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">First Responder</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="1050"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">29</int>
+ <reference key="object" ref="649796088"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="713487014"/>
+ <reference ref="694149608"/>
+ <reference ref="952259628"/>
+ <reference ref="379814623"/>
+ <reference ref="586577488"/>
+ <reference ref="302598603"/>
+ <reference ref="448692316"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">19</int>
+ <reference key="object" ref="713487014"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="835318025"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">56</int>
+ <reference key="object" ref="694149608"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="110575045"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">217</int>
+ <reference key="object" ref="952259628"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="789758025"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">83</int>
+ <reference key="object" ref="379814623"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="720053764"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">81</int>
+ <reference key="object" ref="720053764"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1023925487"/>
+ <reference ref="117038363"/>
+ <reference ref="49223823"/>
+ <reference ref="722745758"/>
+ <reference ref="705341025"/>
+ <reference ref="1025936716"/>
+ <reference ref="294629803"/>
+ <reference ref="776162233"/>
+ <reference ref="425164168"/>
+ <reference ref="579971712"/>
+ <reference ref="1010469920"/>
+ </object>
+ <reference key="parent" ref="379814623"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">75</int>
+ <reference key="object" ref="1023925487"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">80</int>
+ <reference key="object" ref="117038363"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">78</int>
+ <reference key="object" ref="49223823"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">72</int>
+ <reference key="object" ref="722745758"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">82</int>
+ <reference key="object" ref="705341025"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">124</int>
+ <reference key="object" ref="1025936716"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1065607017"/>
+ </object>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">77</int>
+ <reference key="object" ref="294629803"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">73</int>
+ <reference key="object" ref="776162233"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">79</int>
+ <reference key="object" ref="425164168"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">112</int>
+ <reference key="object" ref="579971712"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">74</int>
+ <reference key="object" ref="1010469920"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">125</int>
+ <reference key="object" ref="1065607017"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="759406840"/>
+ </object>
+ <reference key="parent" ref="1025936716"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">126</int>
+ <reference key="object" ref="759406840"/>
+ <reference key="parent" ref="1065607017"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">205</int>
+ <reference key="object" ref="789758025"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="437104165"/>
+ <reference ref="583158037"/>
+ <reference ref="1058277027"/>
+ <reference ref="212016141"/>
+ <reference ref="296257095"/>
+ <reference ref="29853731"/>
+ <reference ref="860595796"/>
+ <reference ref="1040322652"/>
+ <reference ref="790794224"/>
+ <reference ref="892235320"/>
+ <reference ref="972420730"/>
+ <reference ref="676164635"/>
+ <reference ref="507821607"/>
+ <reference ref="288088188"/>
+ <reference ref="82994268"/>
+ </object>
+ <reference key="parent" ref="952259628"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">202</int>
+ <reference key="object" ref="437104165"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">198</int>
+ <reference key="object" ref="583158037"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">207</int>
+ <reference key="object" ref="1058277027"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">214</int>
+ <reference key="object" ref="212016141"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">199</int>
+ <reference key="object" ref="296257095"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">203</int>
+ <reference key="object" ref="29853731"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">197</int>
+ <reference key="object" ref="860595796"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">206</int>
+ <reference key="object" ref="1040322652"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">215</int>
+ <reference key="object" ref="790794224"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">218</int>
+ <reference key="object" ref="892235320"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="963351320"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">216</int>
+ <reference key="object" ref="972420730"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="769623530"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">200</int>
+ <reference key="object" ref="769623530"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="948374510"/>
+ <reference ref="96193923"/>
+ <reference ref="679648819"/>
+ <reference ref="967646866"/>
+ <reference ref="859480356"/>
+ <reference ref="795346622"/>
+ </object>
+ <reference key="parent" ref="972420730"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">219</int>
+ <reference key="object" ref="948374510"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">201</int>
+ <reference key="object" ref="96193923"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">204</int>
+ <reference key="object" ref="679648819"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">220</int>
+ <reference key="object" ref="963351320"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="270902937"/>
+ <reference ref="88285865"/>
+ <reference ref="159080638"/>
+ <reference ref="326711663"/>
+ <reference ref="447796847"/>
+ </object>
+ <reference key="parent" ref="892235320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">213</int>
+ <reference key="object" ref="270902937"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">210</int>
+ <reference key="object" ref="88285865"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">221</int>
+ <reference key="object" ref="159080638"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">208</int>
+ <reference key="object" ref="326711663"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">209</int>
+ <reference key="object" ref="447796847"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">57</int>
+ <reference key="object" ref="110575045"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="238522557"/>
+ <reference ref="755159360"/>
+ <reference ref="908899353"/>
+ <reference ref="632727374"/>
+ <reference ref="646227648"/>
+ <reference ref="609285721"/>
+ <reference ref="481834944"/>
+ <reference ref="304266470"/>
+ <reference ref="1046388886"/>
+ <reference ref="1056857174"/>
+ <reference ref="342932134"/>
+ </object>
+ <reference key="parent" ref="694149608"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">58</int>
+ <reference key="object" ref="238522557"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">134</int>
+ <reference key="object" ref="755159360"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">150</int>
+ <reference key="object" ref="908899353"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">136</int>
+ <reference key="object" ref="632727374"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">144</int>
+ <reference key="object" ref="646227648"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">129</int>
+ <reference key="object" ref="609285721"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">143</int>
+ <reference key="object" ref="481834944"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">236</int>
+ <reference key="object" ref="304266470"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">131</int>
+ <reference key="object" ref="1046388886"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="752062318"/>
+ </object>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">149</int>
+ <reference key="object" ref="1056857174"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">145</int>
+ <reference key="object" ref="342932134"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">130</int>
+ <reference key="object" ref="752062318"/>
+ <reference key="parent" ref="1046388886"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">24</int>
+ <reference key="object" ref="835318025"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="299356726"/>
+ <reference ref="625202149"/>
+ <reference ref="575023229"/>
+ <reference ref="1011231497"/>
+ </object>
+ <reference key="parent" ref="713487014"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">92</int>
+ <reference key="object" ref="299356726"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5</int>
+ <reference key="object" ref="625202149"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">239</int>
+ <reference key="object" ref="575023229"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">23</int>
+ <reference key="object" ref="1011231497"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">295</int>
+ <reference key="object" ref="586577488"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="466310130"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">296</int>
+ <reference key="object" ref="466310130"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="102151532"/>
+ <reference ref="237841660"/>
+ </object>
+ <reference key="parent" ref="586577488"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">297</int>
+ <reference key="object" ref="102151532"/>
+ <reference key="parent" ref="466310130"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">298</int>
+ <reference key="object" ref="237841660"/>
+ <reference key="parent" ref="466310130"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">211</int>
+ <reference key="object" ref="676164635"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="785027613"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">212</int>
+ <reference key="object" ref="785027613"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="680220178"/>
+ <reference ref="731782645"/>
+ </object>
+ <reference key="parent" ref="676164635"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">195</int>
+ <reference key="object" ref="680220178"/>
+ <reference key="parent" ref="785027613"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">196</int>
+ <reference key="object" ref="731782645"/>
+ <reference key="parent" ref="785027613"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">346</int>
+ <reference key="object" ref="967646866"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">348</int>
+ <reference key="object" ref="507821607"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="698887838"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">349</int>
+ <reference key="object" ref="698887838"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="605118523"/>
+ <reference ref="197661976"/>
+ <reference ref="708854459"/>
+ <reference ref="65139061"/>
+ <reference ref="19036812"/>
+ <reference ref="672708820"/>
+ <reference ref="537092702"/>
+ </object>
+ <reference key="parent" ref="507821607"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">350</int>
+ <reference key="object" ref="605118523"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">351</int>
+ <reference key="object" ref="197661976"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">354</int>
+ <reference key="object" ref="708854459"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">371</int>
+ <reference key="object" ref="972006081"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="439893737"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">372</int>
+ <reference key="object" ref="439893737"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <reference key="parent" ref="972006081"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">375</int>
+ <reference key="object" ref="302598603"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="941447902"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">376</int>
+ <reference key="object" ref="941447902"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="792887677"/>
+ <reference ref="215659978"/>
+ </object>
+ <reference key="parent" ref="302598603"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">377</int>
+ <reference key="object" ref="792887677"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="786677654"/>
+ </object>
+ <reference key="parent" ref="941447902"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">388</int>
+ <reference key="object" ref="786677654"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="159677712"/>
+ <reference ref="305399458"/>
+ <reference ref="814362025"/>
+ <reference ref="330926929"/>
+ <reference ref="533507878"/>
+ <reference ref="158063935"/>
+ <reference ref="885547335"/>
+ <reference ref="901062459"/>
+ <reference ref="767671776"/>
+ <reference ref="691570813"/>
+ <reference ref="769124883"/>
+ <reference ref="739652853"/>
+ <reference ref="1012600125"/>
+ <reference ref="214559597"/>
+ <reference ref="596732606"/>
+ <reference ref="393423671"/>
+ </object>
+ <reference key="parent" ref="792887677"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">389</int>
+ <reference key="object" ref="159677712"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">390</int>
+ <reference key="object" ref="305399458"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">391</int>
+ <reference key="object" ref="814362025"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">392</int>
+ <reference key="object" ref="330926929"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">393</int>
+ <reference key="object" ref="533507878"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">394</int>
+ <reference key="object" ref="158063935"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">395</int>
+ <reference key="object" ref="885547335"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">396</int>
+ <reference key="object" ref="901062459"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">397</int>
+ <reference key="object" ref="767671776"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="175441468"/>
+ </object>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">398</int>
+ <reference key="object" ref="691570813"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1058217995"/>
+ </object>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">399</int>
+ <reference key="object" ref="769124883"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="18263474"/>
+ </object>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">400</int>
+ <reference key="object" ref="739652853"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">401</int>
+ <reference key="object" ref="1012600125"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">402</int>
+ <reference key="object" ref="214559597"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">403</int>
+ <reference key="object" ref="596732606"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">404</int>
+ <reference key="object" ref="393423671"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">405</int>
+ <reference key="object" ref="18263474"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="257962622"/>
+ <reference ref="644725453"/>
+ <reference ref="1037576581"/>
+ <reference ref="941806246"/>
+ <reference ref="1045724900"/>
+ </object>
+ <reference key="parent" ref="769124883"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">406</int>
+ <reference key="object" ref="257962622"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">407</int>
+ <reference key="object" ref="644725453"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">408</int>
+ <reference key="object" ref="1037576581"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">409</int>
+ <reference key="object" ref="941806246"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">410</int>
+ <reference key="object" ref="1045724900"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">411</int>
+ <reference key="object" ref="1058217995"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="706297211"/>
+ <reference ref="568384683"/>
+ <reference ref="663508465"/>
+ </object>
+ <reference key="parent" ref="691570813"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">412</int>
+ <reference key="object" ref="706297211"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">413</int>
+ <reference key="object" ref="568384683"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">414</int>
+ <reference key="object" ref="663508465"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">415</int>
+ <reference key="object" ref="175441468"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="252969304"/>
+ <reference ref="766922938"/>
+ <reference ref="677519740"/>
+ <reference ref="238351151"/>
+ </object>
+ <reference key="parent" ref="767671776"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">416</int>
+ <reference key="object" ref="252969304"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">417</int>
+ <reference key="object" ref="766922938"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">418</int>
+ <reference key="object" ref="677519740"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">419</int>
+ <reference key="object" ref="238351151"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">450</int>
+ <reference key="object" ref="288088188"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="579392910"/>
+ </object>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">451</int>
+ <reference key="object" ref="579392910"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1060694897"/>
+ <reference ref="879586729"/>
+ <reference ref="56570060"/>
+ </object>
+ <reference key="parent" ref="288088188"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">452</int>
+ <reference key="object" ref="1060694897"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">453</int>
+ <reference key="object" ref="859480356"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">454</int>
+ <reference key="object" ref="795346622"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">457</int>
+ <reference key="object" ref="65139061"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">459</int>
+ <reference key="object" ref="19036812"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">460</int>
+ <reference key="object" ref="672708820"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">462</int>
+ <reference key="object" ref="537092702"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">465</int>
+ <reference key="object" ref="879586729"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">466</int>
+ <reference key="object" ref="56570060"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">485</int>
+ <reference key="object" ref="82994268"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">490</int>
+ <reference key="object" ref="448692316"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="992780483"/>
+ </object>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">491</int>
+ <reference key="object" ref="992780483"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="105068016"/>
+ </object>
+ <reference key="parent" ref="448692316"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">492</int>
+ <reference key="object" ref="105068016"/>
+ <reference key="parent" ref="992780483"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">496</int>
+ <reference key="object" ref="215659978"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="446991534"/>
+ </object>
+ <reference key="parent" ref="941447902"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">497</int>
+ <reference key="object" ref="446991534"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="875092757"/>
+ <reference ref="630155264"/>
+ <reference ref="945678886"/>
+ <reference ref="512868991"/>
+ <reference ref="163117631"/>
+ <reference ref="31516759"/>
+ <reference ref="908105787"/>
+ <reference ref="644046920"/>
+ <reference ref="231811626"/>
+ <reference ref="883618387"/>
+ </object>
+ <reference key="parent" ref="215659978"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">498</int>
+ <reference key="object" ref="875092757"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">499</int>
+ <reference key="object" ref="630155264"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">500</int>
+ <reference key="object" ref="945678886"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">501</int>
+ <reference key="object" ref="512868991"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">502</int>
+ <reference key="object" ref="163117631"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">503</int>
+ <reference key="object" ref="31516759"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="956096989"/>
+ </object>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">504</int>
+ <reference key="object" ref="908105787"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">505</int>
+ <reference key="object" ref="644046920"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">506</int>
+ <reference key="object" ref="231811626"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">507</int>
+ <reference key="object" ref="883618387"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">508</int>
+ <reference key="object" ref="956096989"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="257099033"/>
+ <reference ref="551969625"/>
+ <reference ref="249532473"/>
+ <reference ref="607364498"/>
+ <reference ref="508151438"/>
+ <reference ref="981751889"/>
+ <reference ref="380031999"/>
+ <reference ref="825984362"/>
+ <reference ref="560145579"/>
+ </object>
+ <reference key="parent" ref="31516759"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">509</int>
+ <reference key="object" ref="257099033"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">510</int>
+ <reference key="object" ref="551969625"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">511</int>
+ <reference key="object" ref="249532473"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">512</int>
+ <reference key="object" ref="607364498"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">513</int>
+ <reference key="object" ref="508151438"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">514</int>
+ <reference key="object" ref="981751889"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">515</int>
+ <reference key="object" ref="380031999"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">516</int>
+ <reference key="object" ref="825984362"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">517</int>
+ <reference key="object" ref="560145579"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-3.IBPluginDependency</string>
+ <string>112.IBPluginDependency</string>
+ <string>112.ImportedFromIB2</string>
+ <string>124.IBPluginDependency</string>
+ <string>124.ImportedFromIB2</string>
+ <string>125.IBPluginDependency</string>
+ <string>125.ImportedFromIB2</string>
+ <string>125.editorWindowContentRectSynchronizationRect</string>
+ <string>126.IBPluginDependency</string>
+ <string>126.ImportedFromIB2</string>
+ <string>129.IBPluginDependency</string>
+ <string>129.ImportedFromIB2</string>
+ <string>130.IBPluginDependency</string>
+ <string>130.ImportedFromIB2</string>
+ <string>130.editorWindowContentRectSynchronizationRect</string>
+ <string>131.IBPluginDependency</string>
+ <string>131.ImportedFromIB2</string>
+ <string>134.IBPluginDependency</string>
+ <string>134.ImportedFromIB2</string>
+ <string>136.IBPluginDependency</string>
+ <string>136.ImportedFromIB2</string>
+ <string>143.IBPluginDependency</string>
+ <string>143.ImportedFromIB2</string>
+ <string>144.IBPluginDependency</string>
+ <string>144.ImportedFromIB2</string>
+ <string>145.IBPluginDependency</string>
+ <string>145.ImportedFromIB2</string>
+ <string>149.IBPluginDependency</string>
+ <string>149.ImportedFromIB2</string>
+ <string>150.IBPluginDependency</string>
+ <string>150.ImportedFromIB2</string>
+ <string>19.IBPluginDependency</string>
+ <string>19.ImportedFromIB2</string>
+ <string>195.IBPluginDependency</string>
+ <string>195.ImportedFromIB2</string>
+ <string>196.IBPluginDependency</string>
+ <string>196.ImportedFromIB2</string>
+ <string>197.IBPluginDependency</string>
+ <string>197.ImportedFromIB2</string>
+ <string>198.IBPluginDependency</string>
+ <string>198.ImportedFromIB2</string>
+ <string>199.IBPluginDependency</string>
+ <string>199.ImportedFromIB2</string>
+ <string>200.IBEditorWindowLastContentRect</string>
+ <string>200.IBPluginDependency</string>
+ <string>200.ImportedFromIB2</string>
+ <string>200.editorWindowContentRectSynchronizationRect</string>
+ <string>201.IBPluginDependency</string>
+ <string>201.ImportedFromIB2</string>
+ <string>202.IBPluginDependency</string>
+ <string>202.ImportedFromIB2</string>
+ <string>203.IBPluginDependency</string>
+ <string>203.ImportedFromIB2</string>
+ <string>204.IBPluginDependency</string>
+ <string>204.ImportedFromIB2</string>
+ <string>205.IBEditorWindowLastContentRect</string>
+ <string>205.IBPluginDependency</string>
+ <string>205.ImportedFromIB2</string>
+ <string>205.editorWindowContentRectSynchronizationRect</string>
+ <string>206.IBPluginDependency</string>
+ <string>206.ImportedFromIB2</string>
+ <string>207.IBPluginDependency</string>
+ <string>207.ImportedFromIB2</string>
+ <string>208.IBPluginDependency</string>
+ <string>208.ImportedFromIB2</string>
+ <string>209.IBPluginDependency</string>
+ <string>209.ImportedFromIB2</string>
+ <string>210.IBPluginDependency</string>
+ <string>210.ImportedFromIB2</string>
+ <string>211.IBPluginDependency</string>
+ <string>211.ImportedFromIB2</string>
+ <string>212.IBPluginDependency</string>
+ <string>212.ImportedFromIB2</string>
+ <string>212.editorWindowContentRectSynchronizationRect</string>
+ <string>213.IBPluginDependency</string>
+ <string>213.ImportedFromIB2</string>
+ <string>214.IBPluginDependency</string>
+ <string>214.ImportedFromIB2</string>
+ <string>215.IBPluginDependency</string>
+ <string>215.ImportedFromIB2</string>
+ <string>216.IBPluginDependency</string>
+ <string>216.ImportedFromIB2</string>
+ <string>217.IBPluginDependency</string>
+ <string>217.ImportedFromIB2</string>
+ <string>218.IBPluginDependency</string>
+ <string>218.ImportedFromIB2</string>
+ <string>219.IBPluginDependency</string>
+ <string>219.ImportedFromIB2</string>
+ <string>220.IBEditorWindowLastContentRect</string>
+ <string>220.IBPluginDependency</string>
+ <string>220.ImportedFromIB2</string>
+ <string>220.editorWindowContentRectSynchronizationRect</string>
+ <string>221.IBPluginDependency</string>
+ <string>221.ImportedFromIB2</string>
+ <string>23.IBPluginDependency</string>
+ <string>23.ImportedFromIB2</string>
+ <string>236.IBPluginDependency</string>
+ <string>236.ImportedFromIB2</string>
+ <string>239.IBPluginDependency</string>
+ <string>239.ImportedFromIB2</string>
+ <string>24.IBEditorWindowLastContentRect</string>
+ <string>24.IBPluginDependency</string>
+ <string>24.ImportedFromIB2</string>
+ <string>24.editorWindowContentRectSynchronizationRect</string>
+ <string>29.IBEditorWindowLastContentRect</string>
+ <string>29.IBPluginDependency</string>
+ <string>29.ImportedFromIB2</string>
+ <string>29.WindowOrigin</string>
+ <string>29.editorWindowContentRectSynchronizationRect</string>
+ <string>295.IBPluginDependency</string>
+ <string>296.IBEditorWindowLastContentRect</string>
+ <string>296.IBPluginDependency</string>
+ <string>296.editorWindowContentRectSynchronizationRect</string>
+ <string>297.IBPluginDependency</string>
+ <string>298.IBPluginDependency</string>
+ <string>346.IBPluginDependency</string>
+ <string>346.ImportedFromIB2</string>
+ <string>348.IBPluginDependency</string>
+ <string>348.ImportedFromIB2</string>
+ <string>349.IBEditorWindowLastContentRect</string>
+ <string>349.IBPluginDependency</string>
+ <string>349.ImportedFromIB2</string>
+ <string>349.editorWindowContentRectSynchronizationRect</string>
+ <string>350.IBPluginDependency</string>
+ <string>350.ImportedFromIB2</string>
+ <string>351.IBPluginDependency</string>
+ <string>351.ImportedFromIB2</string>
+ <string>354.IBPluginDependency</string>
+ <string>354.ImportedFromIB2</string>
+ <string>371.IBEditorWindowLastContentRect</string>
+ <string>371.IBPluginDependency</string>
+ <string>371.IBWindowTemplateEditedContentRect</string>
+ <string>371.NSWindowTemplate.visibleAtLaunch</string>
+ <string>371.editorWindowContentRectSynchronizationRect</string>
+ <string>371.windowTemplate.maxSize</string>
+ <string>371.windowTemplate.minSize</string>
+ <string>372.CustomClassName</string>
+ <string>372.IBPluginDependency</string>
+ <string>375.IBPluginDependency</string>
+ <string>376.IBEditorWindowLastContentRect</string>
+ <string>376.IBPluginDependency</string>
+ <string>377.IBPluginDependency</string>
+ <string>388.IBEditorWindowLastContentRect</string>
+ <string>388.IBPluginDependency</string>
+ <string>389.IBPluginDependency</string>
+ <string>390.IBPluginDependency</string>
+ <string>391.IBPluginDependency</string>
+ <string>392.IBPluginDependency</string>
+ <string>393.IBPluginDependency</string>
+ <string>394.IBPluginDependency</string>
+ <string>395.IBPluginDependency</string>
+ <string>396.IBPluginDependency</string>
+ <string>397.IBPluginDependency</string>
+ <string>398.IBPluginDependency</string>
+ <string>399.IBPluginDependency</string>
+ <string>400.IBPluginDependency</string>
+ <string>401.IBPluginDependency</string>
+ <string>402.IBPluginDependency</string>
+ <string>403.IBPluginDependency</string>
+ <string>404.IBPluginDependency</string>
+ <string>405.IBPluginDependency</string>
+ <string>406.IBPluginDependency</string>
+ <string>407.IBPluginDependency</string>
+ <string>408.IBPluginDependency</string>
+ <string>409.IBPluginDependency</string>
+ <string>410.IBPluginDependency</string>
+ <string>411.IBPluginDependency</string>
+ <string>412.IBPluginDependency</string>
+ <string>413.IBPluginDependency</string>
+ <string>414.IBPluginDependency</string>
+ <string>415.IBPluginDependency</string>
+ <string>416.IBPluginDependency</string>
+ <string>417.IBPluginDependency</string>
+ <string>418.IBPluginDependency</string>
+ <string>419.IBPluginDependency</string>
+ <string>450.IBPluginDependency</string>
+ <string>451.IBEditorWindowLastContentRect</string>
+ <string>451.IBPluginDependency</string>
+ <string>452.IBPluginDependency</string>
+ <string>453.IBPluginDependency</string>
+ <string>454.IBPluginDependency</string>
+ <string>457.IBPluginDependency</string>
+ <string>459.IBPluginDependency</string>
+ <string>460.IBPluginDependency</string>
+ <string>462.IBPluginDependency</string>
+ <string>465.IBPluginDependency</string>
+ <string>466.IBPluginDependency</string>
+ <string>485.IBPluginDependency</string>
+ <string>490.IBPluginDependency</string>
+ <string>491.IBEditorWindowLastContentRect</string>
+ <string>491.IBPluginDependency</string>
+ <string>492.IBPluginDependency</string>
+ <string>496.IBPluginDependency</string>
+ <string>497.IBEditorWindowLastContentRect</string>
+ <string>497.IBPluginDependency</string>
+ <string>498.IBPluginDependency</string>
+ <string>499.IBPluginDependency</string>
+ <string>5.IBPluginDependency</string>
+ <string>5.ImportedFromIB2</string>
+ <string>500.IBPluginDependency</string>
+ <string>501.IBPluginDependency</string>
+ <string>502.IBPluginDependency</string>
+ <string>503.IBPluginDependency</string>
+ <string>504.IBPluginDependency</string>
+ <string>505.IBPluginDependency</string>
+ <string>506.IBPluginDependency</string>
+ <string>507.IBPluginDependency</string>
+ <string>508.IBEditorWindowLastContentRect</string>
+ <string>508.IBPluginDependency</string>
+ <string>509.IBPluginDependency</string>
+ <string>510.IBPluginDependency</string>
+ <string>511.IBPluginDependency</string>
+ <string>512.IBPluginDependency</string>
+ <string>513.IBPluginDependency</string>
+ <string>514.IBPluginDependency</string>
+ <string>515.IBPluginDependency</string>
+ <string>516.IBPluginDependency</string>
+ <string>517.IBPluginDependency</string>
+ <string>56.IBPluginDependency</string>
+ <string>56.ImportedFromIB2</string>
+ <string>57.IBEditorWindowLastContentRect</string>
+ <string>57.IBPluginDependency</string>
+ <string>57.ImportedFromIB2</string>
+ <string>57.editorWindowContentRectSynchronizationRect</string>
+ <string>58.IBPluginDependency</string>
+ <string>58.ImportedFromIB2</string>
+ <string>72.IBPluginDependency</string>
+ <string>72.ImportedFromIB2</string>
+ <string>73.IBPluginDependency</string>
+ <string>73.ImportedFromIB2</string>
+ <string>74.IBPluginDependency</string>
+ <string>74.ImportedFromIB2</string>
+ <string>75.IBPluginDependency</string>
+ <string>75.ImportedFromIB2</string>
+ <string>77.IBPluginDependency</string>
+ <string>77.ImportedFromIB2</string>
+ <string>78.IBPluginDependency</string>
+ <string>78.ImportedFromIB2</string>
+ <string>79.IBPluginDependency</string>
+ <string>79.ImportedFromIB2</string>
+ <string>80.IBPluginDependency</string>
+ <string>80.ImportedFromIB2</string>
+ <string>81.IBEditorWindowLastContentRect</string>
+ <string>81.IBPluginDependency</string>
+ <string>81.ImportedFromIB2</string>
+ <string>81.editorWindowContentRectSynchronizationRect</string>
+ <string>82.IBPluginDependency</string>
+ <string>82.ImportedFromIB2</string>
+ <string>83.IBPluginDependency</string>
+ <string>83.ImportedFromIB2</string>
+ <string>92.IBPluginDependency</string>
+ <string>92.ImportedFromIB2</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{522, 812}, {146, 23}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{436, 809}, {64, 6}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{753, 187}, {275, 113}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{608, 612}, {275, 83}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{559, 374}, {254, 283}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{187, 434}, {243, 243}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{608, 612}, {167, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{753, 217}, {238, 103}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{608, 612}, {241, 103}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{719, 584}, {194, 73}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{525, 802}, {197, 73}}</string>
+ <string>{{366, 657}, {485, 20}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{74, 862}</string>
+ <string>{{6, 978}, {478, 20}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{669, 614}, {231, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{475, 832}, {234, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{746, 287}, {220, 133}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{608, 612}, {215, 63}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{228, 569}, {480, 360}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{228, 569}, {480, 360}}</string>
+ <integer value="1"/>
+ <string>{{33, 99}, {480, 360}}</string>
+ <string>{3.40282e+38, 3.40282e+38}</string>
+ <string>{0, 0}</string>
+ <string>SimpleNSView</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{603, 614}, {83, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{523, 2}, {178, 283}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{753, 197}, {170, 63}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{790, 634}, {221, 23}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{674, 260}, {204, 183}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{878, 180}, {164, 173}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{378, 474}, {250, 183}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{23, 794}, {245, 183}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{517, 454}, {196, 203}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{145, 474}, {199, 203}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">650</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">SimpleNSView</string>
+ <string key="superclassName">SkNSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../../experimental/SimpleCocoaApp/SimpleApp.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkNSView</string>
+ <string key="superclassName">NSView</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">fOptionsDelegate</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <string key="NS.key.0">fOptionsDelegate</string>
+ <object class="IBToOneOutletInfo" key="NS.object.0">
+ <string key="name">fOptionsDelegate</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../../src/utils/mac/SkNSView.h</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSFormatter</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">PrintCore.framework/Headers/PDEPluginInterface.h</string>
+ </object>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+ <integer value="3000" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <string key="IBDocument.LastKnownRelativeProjectPath">../../../out/gyp/SimpleCocoaApp.xcodeproj</string>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSMenuCheckmark</string>
+ <string>NSMenuMixedState</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>{9, 8}</string>
+ <string>{7, 2}</string>
+ </object>
+ </object>
+ </data>
+</archive>
diff --git a/chromium/third_party/skia/experimental/SimpleiOSApp/SimpleApp.h b/chromium/third_party/skia/experimental/SimpleiOSApp/SimpleApp.h
new file mode 100644
index 00000000000..392353b8dbd
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SimpleiOSApp/SimpleApp.h
@@ -0,0 +1,6 @@
+#import <UIKit/UIKit.h>
+#import "SkUIView.h"
+
+@interface SimpleApp : SkUIView
+- (id)initWithDefaults;
+@end
diff --git a/chromium/third_party/skia/experimental/SimpleiOSApp/SimpleApp.mm b/chromium/third_party/skia/experimental/SimpleiOSApp/SimpleApp.mm
new file mode 100644
index 00000000000..dba8bccafd3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SimpleiOSApp/SimpleApp.mm
@@ -0,0 +1,70 @@
+#import "SkCanvas.h"
+#import "SkPaint.h"
+#import "SkWindow.h"
+#include "SkGraphics.h"
+#include "SkCGUtils.h"
+
+extern void tool_main(int argc, char *argv[]);
+void save_args(int argc, char *argv[]);
+
+class SkSampleView : public SkView {
+public:
+ SkSampleView() {
+ this->setVisibleP(true);
+ this->setClipToBounds(false);
+ };
+protected:
+ virtual void onDraw(SkCanvas* canvas) {
+ canvas->drawColor(0xFFFFFFFF);
+ SkPaint p;
+ p.setTextSize(20);
+ p.setAntiAlias(true);
+ canvas->drawText("finished", 13, 50, 30, p);
+ SkRect r = {50, 50, 80, 80};
+ p.setColor(0xAA11EEAA);
+ canvas->drawRect(r, p);
+ }
+private:
+ typedef SkView INHERITED;
+};
+
+void application_init() {
+ SkGraphics::Init();
+ SkEvent::Init();
+}
+
+void application_term() {
+ SkGraphics::Term();
+ SkEvent::Term();
+}
+
+int saved_argc;
+char** saved_argv;
+
+void save_args(int argc, char *argv[]) {
+ saved_argc = argc;
+ saved_argv = argv;
+}
+
+class FillLayout : public SkView::Layout {
+protected:
+ virtual void onLayoutChildren(SkView* parent) {
+ SkView* view = SkView::F2BIter(parent).next();
+ view->setSize(parent->width(), parent->height());
+ }
+};
+
+#import "SimpleApp.h"
+@implementation SimpleApp
+
+- (id)initWithDefaults {
+ (void) tool_main(saved_argc, saved_argv);
+ if (self = [super initWithDefaults]) {
+ fWind = new SkOSWindow(self);
+ fWind->setLayout(new FillLayout, false);
+ fWind->attachChildToFront(new SkSampleView)->unref();
+ }
+ return self;
+}
+
+@end
diff --git a/chromium/third_party/skia/experimental/SimpleiOSApp/SimpleiOSApp-Info.plist b/chromium/third_party/skia/experimental/SimpleiOSApp/SimpleiOSApp-Info.plist
new file mode 100644
index 00000000000..da6b2f16553
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SimpleiOSApp/SimpleiOSApp-Info.plist
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleDisplayName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>com.yourcompany.${PRODUCT_NAME:rfc1034identifier}</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>LSRequiresIPhoneOS</key>
+ <true/>
+ <key>NSMainNibFile</key>
+ <string>MainWindow_iPhone</string>
+ <key>NSMainNibFile~ipad</key>
+ <string>MainWindow_iPad</string>
+ <key>UISupportedInterfaceOrientations</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ </array>
+ <key>UISupportedInterfaceOrientations~ipad</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationPortraitUpsideDown</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+</dict>
+</plist>
diff --git a/chromium/third_party/skia/experimental/SimpleiOSApp/SimpleiOSApp.xcodeproj/project.pbxproj b/chromium/third_party/skia/experimental/SimpleiOSApp/SimpleiOSApp.xcodeproj/project.pbxproj
new file mode 100755
index 00000000000..4c1a9a357af
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SimpleiOSApp/SimpleiOSApp.xcodeproj/project.pbxproj
@@ -0,0 +1,2935 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
+ 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
+ 26371977140D6C19006CC295 /* SkUIView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26371976140D6C19006CC295 /* SkUIView.mm */; };
+ 26D90F81140D512A0036A311 /* SkAnimateActive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C4B140D51290036A311 /* SkAnimateActive.cpp */; };
+ 26D90F82140D512A0036A311 /* SkAnimateBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C4D140D51290036A311 /* SkAnimateBase.cpp */; };
+ 26D90F83140D512A0036A311 /* SkAnimateField.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C4F140D51290036A311 /* SkAnimateField.cpp */; };
+ 26D90F84140D512A0036A311 /* SkAnimateMaker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C50140D51290036A311 /* SkAnimateMaker.cpp */; };
+ 26D90F85140D512A0036A311 /* SkAnimateSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C53140D51290036A311 /* SkAnimateSet.cpp */; };
+ 26D90F86140D512A0036A311 /* SkAnimator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C55140D51290036A311 /* SkAnimator.cpp */; };
+ 26D90F87140D512A0036A311 /* SkAnimatorScript.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C56140D51290036A311 /* SkAnimatorScript.cpp */; };
+ 26D90F88140D512A0036A311 /* SkBase64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C58140D51290036A311 /* SkBase64.cpp */; };
+ 26D90F89140D512A0036A311 /* SkBoundable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C5A140D51290036A311 /* SkBoundable.cpp */; };
+ 26D90F8A140D512A0036A311 /* SkBuildCondensedInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C5C140D51290036A311 /* SkBuildCondensedInfo.cpp */; };
+ 26D90F8B140D512A0036A311 /* SkDisplayAdd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C5D140D51290036A311 /* SkDisplayAdd.cpp */; };
+ 26D90F8C140D512A0036A311 /* SkDisplayApply.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C5F140D51290036A311 /* SkDisplayApply.cpp */; };
+ 26D90F8D140D512A0036A311 /* SkDisplayBounds.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C61140D51290036A311 /* SkDisplayBounds.cpp */; };
+ 26D90F8E140D512A0036A311 /* SkDisplayEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C63140D51290036A311 /* SkDisplayEvent.cpp */; };
+ 26D90F8F140D512A0036A311 /* SkDisplayEvents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C65140D51290036A311 /* SkDisplayEvents.cpp */; };
+ 26D90F90140D512A0036A311 /* SkDisplayInclude.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C67140D51290036A311 /* SkDisplayInclude.cpp */; };
+ 26D90F91140D512A0036A311 /* SkDisplayInput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C69140D51290036A311 /* SkDisplayInput.cpp */; };
+ 26D90F92140D512A0036A311 /* SkDisplayList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C6B140D51290036A311 /* SkDisplayList.cpp */; };
+ 26D90F93140D512A0036A311 /* SkDisplayMath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C6D140D51290036A311 /* SkDisplayMath.cpp */; };
+ 26D90F94140D512A0036A311 /* SkDisplayMovie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C6F140D51290036A311 /* SkDisplayMovie.cpp */; };
+ 26D90F95140D512A0036A311 /* SkDisplayNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C71140D51290036A311 /* SkDisplayNumber.cpp */; };
+ 26D90F96140D512A0036A311 /* SkDisplayPost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C73140D51290036A311 /* SkDisplayPost.cpp */; };
+ 26D90F97140D512A0036A311 /* SkDisplayRandom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C75140D51290036A311 /* SkDisplayRandom.cpp */; };
+ 26D90F98140D512A0036A311 /* SkDisplayScreenplay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C77140D51290036A311 /* SkDisplayScreenplay.cpp */; };
+ 26D90F99140D512A0036A311 /* SkDisplayType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C79140D51290036A311 /* SkDisplayType.cpp */; };
+ 26D90F9A140D512A0036A311 /* SkDisplayTypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C7B140D51290036A311 /* SkDisplayTypes.cpp */; };
+ 26D90F9B140D512A0036A311 /* SkDisplayXMLParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C7D140D51290036A311 /* SkDisplayXMLParser.cpp */; };
+ 26D90F9C140D512A0036A311 /* SkDisplayable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C7F140D51290036A311 /* SkDisplayable.cpp */; };
+ 26D90F9D140D512A0036A311 /* SkDraw3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C81140D51290036A311 /* SkDraw3D.cpp */; };
+ 26D90F9E140D512A0036A311 /* SkDrawBitmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C83140D51290036A311 /* SkDrawBitmap.cpp */; };
+ 26D90F9F140D512A0036A311 /* SkDrawBlur.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C85140D51290036A311 /* SkDrawBlur.cpp */; };
+ 26D90FA0140D512A0036A311 /* SkDrawClip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C87140D51290036A311 /* SkDrawClip.cpp */; };
+ 26D90FA1140D512A0036A311 /* SkDrawColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C89140D51290036A311 /* SkDrawColor.cpp */; };
+ 26D90FA2140D512A0036A311 /* SkDrawDash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C8B140D51290036A311 /* SkDrawDash.cpp */; };
+ 26D90FA3140D512A0036A311 /* SkDrawDiscrete.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C8D140D51290036A311 /* SkDrawDiscrete.cpp */; };
+ 26D90FA4140D512A0036A311 /* SkDrawEmboss.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C8F140D51290036A311 /* SkDrawEmboss.cpp */; };
+ 26D90FA5140D512A0036A311 /* SkDrawExtraPathEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C91140D51290036A311 /* SkDrawExtraPathEffect.cpp */; };
+ 26D90FA6140D512A0036A311 /* SkDrawFull.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C92140D51290036A311 /* SkDrawFull.cpp */; };
+ 26D90FA7140D512A0036A311 /* SkDrawGradient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C94140D51290036A311 /* SkDrawGradient.cpp */; };
+ 26D90FA8140D512A0036A311 /* SkDrawGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C96140D51290036A311 /* SkDrawGroup.cpp */; };
+ 26D90FA9140D512A0036A311 /* SkDrawLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C98140D51290036A311 /* SkDrawLine.cpp */; };
+ 26D90FAA140D512A0036A311 /* SkDrawMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C9A140D51290036A311 /* SkDrawMatrix.cpp */; };
+ 26D90FAB140D512A0036A311 /* SkDrawOval.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C9C140D51290036A311 /* SkDrawOval.cpp */; };
+ 26D90FAC140D512A0036A311 /* SkDrawPaint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90C9E140D51290036A311 /* SkDrawPaint.cpp */; };
+ 26D90FAD140D512A0036A311 /* SkDrawPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CA0140D51290036A311 /* SkDrawPath.cpp */; };
+ 26D90FAE140D512A0036A311 /* SkDrawPoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CA2140D51290036A311 /* SkDrawPoint.cpp */; };
+ 26D90FAF140D512A0036A311 /* SkDrawRectangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CA4140D51290036A311 /* SkDrawRectangle.cpp */; };
+ 26D90FB0140D512A0036A311 /* SkDrawSaveLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CA6140D51290036A311 /* SkDrawSaveLayer.cpp */; };
+ 26D90FB1140D512A0036A311 /* SkDrawShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CA8140D51290036A311 /* SkDrawShader.cpp */; };
+ 26D90FB2140D512A0036A311 /* SkDrawText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CAA140D51290036A311 /* SkDrawText.cpp */; };
+ 26D90FB3140D512A0036A311 /* SkDrawTextBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CAC140D51290036A311 /* SkDrawTextBox.cpp */; };
+ 26D90FB4140D512A0036A311 /* SkDrawTo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CAE140D51290036A311 /* SkDrawTo.cpp */; };
+ 26D90FB5140D512A0036A311 /* SkDrawTransparentShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CB0140D51290036A311 /* SkDrawTransparentShader.cpp */; };
+ 26D90FB6140D512A0036A311 /* SkDrawable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CB2140D51290036A311 /* SkDrawable.cpp */; };
+ 26D90FB7140D512A0036A311 /* SkDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CB4140D51290036A311 /* SkDump.cpp */; };
+ 26D90FB8140D512A0036A311 /* SkGetCondensedInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CB7140D51290036A311 /* SkGetCondensedInfo.cpp */; };
+ 26D90FB9140D512A0036A311 /* SkHitClear.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CB8140D51290036A311 /* SkHitClear.cpp */; };
+ 26D90FBA140D512A0036A311 /* SkHitTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CBA140D51290036A311 /* SkHitTest.cpp */; };
+ 26D90FBB140D512A0036A311 /* SkMatrixParts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CBD140D51290036A311 /* SkMatrixParts.cpp */; };
+ 26D90FBC140D512A0036A311 /* SkMemberInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CBF140D51290036A311 /* SkMemberInfo.cpp */; };
+ 26D90FBD140D512A0036A311 /* SkOpArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CC1140D51290036A311 /* SkOpArray.cpp */; };
+ 26D90FBE140D512A0036A311 /* SkOperandIterpolator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CC6140D51290036A311 /* SkOperandIterpolator.cpp */; };
+ 26D90FBF140D512A0036A311 /* SkPaintParts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CC7140D51290036A311 /* SkPaintParts.cpp */; };
+ 26D90FC0140D512A0036A311 /* SkParseSVGPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CC9140D51290036A311 /* SkParseSVGPath.cpp */; };
+ 26D90FC1140D512A0036A311 /* SkPathParts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CCA140D51290036A311 /* SkPathParts.cpp */; };
+ 26D90FC2140D512A0036A311 /* SkPostParts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CCC140D51290036A311 /* SkPostParts.cpp */; };
+ 26D90FC3140D512A0036A311 /* SkScript.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CCE140D51290036A311 /* SkScript.cpp */; };
+ 26D90FC4140D512A0036A311 /* SkScriptDecompile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CD2140D51290036A311 /* SkScriptDecompile.cpp */; };
+ 26D90FC5140D512A0036A311 /* SkScriptRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CD3140D51290036A311 /* SkScriptRuntime.cpp */; };
+ 26D90FC6140D512A0036A311 /* SkScriptTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CD5140D51290036A311 /* SkScriptTokenizer.cpp */; };
+ 26D90FC7140D512A0036A311 /* SkSnapshot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CD6140D51290036A311 /* SkSnapshot.cpp */; };
+ 26D90FC8140D512A0036A311 /* SkTextOnPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CD9140D51290036A311 /* SkTextOnPath.cpp */; };
+ 26D90FC9140D512A0036A311 /* SkTextToPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CDB140D51290036A311 /* SkTextToPath.cpp */; };
+ 26D90FCA140D512A0036A311 /* SkTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CDD140D51290036A311 /* SkTime.cpp */; };
+ 26D90FCB140D512A0036A311 /* SkTypedArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CDE140D51290036A311 /* SkTypedArray.cpp */; };
+ 26D90FCC140D512A0036A311 /* SkXMLAnimatorWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90CE0140D51290036A311 /* SkXMLAnimatorWriter.cpp */; };
+ 26D90FCD140D512A0036A311 /* SkData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D46140D51290036A311 /* SkData.cpp */; };
+ 26D90FCE140D512A0036A311 /* Sk64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D49140D51290036A311 /* Sk64.cpp */; };
+ 26D90FCF140D512A0036A311 /* SkAdvancedTypefaceMetrics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D4A140D51290036A311 /* SkAdvancedTypefaceMetrics.cpp */; };
+ 26D90FD0140D512A0036A311 /* SkAlphaRuns.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D4B140D51290036A311 /* SkAlphaRuns.cpp */; };
+ 26D90FD1140D512A0036A311 /* SkBitmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D4D140D51290036A311 /* SkBitmap.cpp */; };
+ 26D90FD2140D512A0036A311 /* SkBitmapProcShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D4E140D51290036A311 /* SkBitmapProcShader.cpp */; };
+ 26D90FD3140D512A0036A311 /* SkBitmapProcState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D50140D51290036A311 /* SkBitmapProcState.cpp */; };
+ 26D90FD4140D512A0036A311 /* SkBitmapProcState_matrixProcs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D53140D51290036A311 /* SkBitmapProcState_matrixProcs.cpp */; };
+ 26D90FD5140D512A0036A311 /* SkBitmapSampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D55140D51290036A311 /* SkBitmapSampler.cpp */; };
+ 26D90FD6140D512A0036A311 /* SkBitmap_scroll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D5A140D51290036A311 /* SkBitmap_scroll.cpp */; };
+ 26D90FD7140D512A0036A311 /* SkBlitRow_D16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D5C140D51290036A311 /* SkBlitRow_D16.cpp */; };
+ 26D90FD8140D512A0036A311 /* SkBlitRow_D32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D5D140D51290036A311 /* SkBlitRow_D32.cpp */; };
+ 26D90FD9140D512A0036A311 /* SkBlitRow_D4444.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D5E140D51290036A311 /* SkBlitRow_D4444.cpp */; };
+ 26D90FDA140D512A0036A311 /* SkBlitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D5F140D51290036A311 /* SkBlitter.cpp */; };
+ 26D90FDB140D512A0036A311 /* SkBlitter_4444.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D60140D51290036A311 /* SkBlitter_4444.cpp */; };
+ 26D90FDC140D512A0036A311 /* SkBlitter_A1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D61140D51290036A311 /* SkBlitter_A1.cpp */; };
+ 26D90FDD140D512A0036A311 /* SkBlitter_A8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D62140D51290036A311 /* SkBlitter_A8.cpp */; };
+ 26D90FDE140D512A0036A311 /* SkBlitter_ARGB32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D63140D51290036A311 /* SkBlitter_ARGB32.cpp */; };
+ 26D90FDF140D512A0036A311 /* SkBlitter_RGB16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D64140D51290036A311 /* SkBlitter_RGB16.cpp */; };
+ 26D90FE0140D512A0036A311 /* SkBlitter_Sprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D65140D51290036A311 /* SkBlitter_Sprite.cpp */; };
+ 26D90FE1140D512A0036A311 /* SkBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D66140D51290036A311 /* SkBuffer.cpp */; };
+ 26D90FE2140D512A0036A311 /* SkCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D67140D51290036A311 /* SkCanvas.cpp */; };
+ 26D90FE3140D512A0036A311 /* SkChunkAlloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D68140D51290036A311 /* SkChunkAlloc.cpp */; };
+ 26D90FE4140D512A0036A311 /* SkClampRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D69140D51290036A311 /* SkClampRange.cpp */; };
+ 26D90FE5140D512A0036A311 /* SkClipStack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D6A140D51290036A311 /* SkClipStack.cpp */; };
+ 26D90FE6140D512A0036A311 /* SkColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D6B140D51290036A311 /* SkColor.cpp */; };
+ 26D90FE7140D512A0036A311 /* SkColorFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D6C140D51290036A311 /* SkColorFilter.cpp */; };
+ 26D90FE8140D512A0036A311 /* SkColorTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D6D140D51290036A311 /* SkColorTable.cpp */; };
+ 26D90FE9140D512A0036A311 /* SkComposeShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D6E140D51290036A311 /* SkComposeShader.cpp */; };
+ 26D90FEA140D512A0036A311 /* SkConcaveToTriangles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D6F140D51290036A311 /* SkConcaveToTriangles.cpp */; };
+ 26D90FEB140D512A0036A311 /* SkCordic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D71140D51290036A311 /* SkCordic.cpp */; };
+ 26D90FEC140D512A0036A311 /* SkCubicClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D74140D51290036A311 /* SkCubicClipper.cpp */; };
+ 26D90FED140D512A0036A311 /* SkDebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D76140D51290036A311 /* SkDebug.cpp */; };
+ 26D90FEE140D512A0036A311 /* SkDeque.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D77140D51290036A311 /* SkDeque.cpp */; };
+ 26D90FEF140D512A0036A311 /* SkDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D78140D51290036A311 /* SkDevice.cpp */; };
+ 26D90FF0140D512A0036A311 /* SkDither.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D79140D51290036A311 /* SkDither.cpp */; };
+ 26D90FF1140D512A0036A311 /* SkDraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D7A140D51290036A311 /* SkDraw.cpp */; };
+ 26D90FF2140D512A0036A311 /* SkEdge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D7C140D51290036A311 /* SkEdge.cpp */; };
+ 26D90FF3140D512A0036A311 /* SkEdgeBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D7E140D51290036A311 /* SkEdgeBuilder.cpp */; };
+ 26D90FF4140D512A0036A311 /* SkEdgeClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D7F140D51290036A311 /* SkEdgeClipper.cpp */; };
+ 26D90FF5140D512A0036A311 /* SkFilterProc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D81140D51290036A311 /* SkFilterProc.cpp */; };
+ 26D90FF6140D512A0036A311 /* SkFlate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D83140D51290036A311 /* SkFlate.cpp */; };
+ 26D90FF7140D512A0036A311 /* SkFlattenable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D84140D51290036A311 /* SkFlattenable.cpp */; };
+ 26D90FF8140D512A0036A311 /* SkFloat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D85140D51290036A311 /* SkFloat.cpp */; };
+ 26D90FF9140D512A0036A311 /* SkFloatBits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D87140D51290036A311 /* SkFloatBits.cpp */; };
+ 26D90FFA140D512A0036A311 /* SkFontHost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D88140D51290036A311 /* SkFontHost.cpp */; };
+ 26D90FFB140D512A0036A311 /* SkGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D89140D51290036A311 /* SkGeometry.cpp */; };
+ 26D90FFC140D512A0036A311 /* SkGlobals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D8A140D51290036A311 /* SkGlobals.cpp */; };
+ 26D90FFD140D512A0036A311 /* SkGlyphCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D8B140D51290036A311 /* SkGlyphCache.cpp */; };
+ 26D90FFE140D512A0036A311 /* SkGraphics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D8D140D51290036A311 /* SkGraphics.cpp */; };
+ 26D90FFF140D512A0036A311 /* SkLineClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D8E140D51290036A311 /* SkLineClipper.cpp */; };
+ 26D91000140D512A0036A311 /* SkMMapStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D8F140D51290036A311 /* SkMMapStream.cpp */; };
+ 26D91001140D512A0036A311 /* SkMallocPixelRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D90140D51290036A311 /* SkMallocPixelRef.cpp */; };
+ 26D91002140D512A0036A311 /* SkMask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D91140D51290036A311 /* SkMask.cpp */; };
+ 26D91003140D512A0036A311 /* SkMaskFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D92140D51290036A311 /* SkMaskFilter.cpp */; };
+ 26D91004140D512A0036A311 /* SkMath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D93140D51290036A311 /* SkMath.cpp */; };
+ 26D91005140D512A0036A311 /* SkMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D94140D51290036A311 /* SkMatrix.cpp */; };
+ 26D91006140D512A0036A311 /* SkMetaData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D95140D51290036A311 /* SkMetaData.cpp */; };
+ 26D91007140D512A0036A311 /* SkPackBits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D96140D51290036A311 /* SkPackBits.cpp */; };
+ 26D91008140D512A0036A311 /* SkPaint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D97140D51290036A311 /* SkPaint.cpp */; };
+ 26D91009140D512A0036A311 /* SkPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D98140D51290036A311 /* SkPath.cpp */; };
+ 26D9100A140D512A0036A311 /* SkPathEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D99140D51290036A311 /* SkPathEffect.cpp */; };
+ 26D9100B140D512A0036A311 /* SkPathHeap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D9A140D51290036A311 /* SkPathHeap.cpp */; };
+ 26D9100C140D512A0036A311 /* SkPathMeasure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D9C140D51290036A311 /* SkPathMeasure.cpp */; };
+ 26D9100D140D512A0036A311 /* SkPicture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D9D140D51290036A311 /* SkPicture.cpp */; };
+ 26D9100E140D512A0036A311 /* SkPictureFlat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90D9E140D51290036A311 /* SkPictureFlat.cpp */; };
+ 26D9100F140D512A0036A311 /* SkPicturePlayback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DA0140D51290036A311 /* SkPicturePlayback.cpp */; };
+ 26D91010140D512A0036A311 /* SkPictureRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DA2140D51290036A311 /* SkPictureRecord.cpp */; };
+ 26D91011140D512A0036A311 /* SkPixelRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DA4140D51290036A311 /* SkPixelRef.cpp */; };
+ 26D91012140D512A0036A311 /* SkPoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DA5140D51290036A311 /* SkPoint.cpp */; };
+ 26D91013140D512A0036A311 /* SkProcSpriteBlitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DA6140D51290036A311 /* SkProcSpriteBlitter.cpp */; };
+ 26D91014140D512A0036A311 /* SkPtrRecorder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DA7140D51290036A311 /* SkPtrRecorder.cpp */; };
+ 26D91015140D512A0036A311 /* SkQuadClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DA8140D51290036A311 /* SkQuadClipper.cpp */; };
+ 26D91016140D512A0036A311 /* SkRasterizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DAA140D51290036A311 /* SkRasterizer.cpp */; };
+ 26D91017140D512A0036A311 /* SkRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DAB140D51290036A311 /* SkRect.cpp */; };
+ 26D91018140D512A0036A311 /* SkRefDict.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DAC140D51290036A311 /* SkRefDict.cpp */; };
+ 26D91019140D512A0036A311 /* SkRegion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DAD140D51290036A311 /* SkRegion.cpp */; };
+ 26D9101A140D512A0036A311 /* SkRegion_path.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DAF140D51290036A311 /* SkRegion_path.cpp */; };
+ 26D9101B140D512A0036A311 /* SkScalar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DB0140D51290036A311 /* SkScalar.cpp */; };
+ 26D9101C140D512A0036A311 /* SkScalerContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DB1140D51290036A311 /* SkScalerContext.cpp */; };
+ 26D9101D140D512A0036A311 /* SkScan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DB2140D51290036A311 /* SkScan.cpp */; };
+ 26D9101E140D512A0036A311 /* SkScan_AntiPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DB4140D51290036A311 /* SkScan_AntiPath.cpp */; };
+ 26D9101F140D512A0036A311 /* SkScan_Antihair.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DB5140D51290036A311 /* SkScan_Antihair.cpp */; };
+ 26D91020140D512A0036A311 /* SkScan_Hairline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DB6140D51290036A311 /* SkScan_Hairline.cpp */; };
+ 26D91021140D512A0036A311 /* SkScan_Path.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DB7140D51290036A311 /* SkScan_Path.cpp */; };
+ 26D91022140D512A0036A311 /* SkShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DB8140D51290036A311 /* SkShader.cpp */; };
+ 26D91023140D512A0036A311 /* SkShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DB9140D51290036A311 /* SkShape.cpp */; };
+ 26D91024140D512A0036A311 /* SkSpriteBlitter_ARGB32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DBD140D51290036A311 /* SkSpriteBlitter_ARGB32.cpp */; };
+ 26D91025140D512A0036A311 /* SkSpriteBlitter_RGB16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DBE140D51290036A311 /* SkSpriteBlitter_RGB16.cpp */; };
+ 26D91026140D512A0036A311 /* SkStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DBF140D51290036A311 /* SkStream.cpp */; };
+ 26D91027140D512A0036A311 /* SkString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DC0140D51290036A311 /* SkString.cpp */; };
+ 26D91028140D512A0036A311 /* SkStroke.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DC1140D51290036A311 /* SkStroke.cpp */; };
+ 26D91029140D512A0036A311 /* SkStrokerPriv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DC2140D51290036A311 /* SkStrokerPriv.cpp */; };
+ 26D9102A140D512A0036A311 /* SkTSearch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DC4140D51290036A311 /* SkTSearch.cpp */; };
+ 26D9102B140D512A0036A311 /* SkTypeface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DC8140D51290036A311 /* SkTypeface.cpp */; };
+ 26D9102C140D512A0036A311 /* SkTypefaceCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DC9140D51290036A311 /* SkTypefaceCache.cpp */; };
+ 26D9102D140D512A0036A311 /* SkUnPreMultiply.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DCB140D51290036A311 /* SkUnPreMultiply.cpp */; };
+ 26D9102E140D512A0036A311 /* SkUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DCC140D51290036A311 /* SkUtils.cpp */; };
+ 26D9102F140D512A0036A311 /* SkWriter32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DCD140D51290036A311 /* SkWriter32.cpp */; };
+ 26D91030140D512A0036A311 /* SkXfermode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DCE140D51290036A311 /* SkXfermode.cpp */; };
+ 26D91032140D512A0036A311 /* SkDebug_stdio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DD2140D51290036A311 /* SkDebug_stdio.cpp */; };
+ 26D91033140D512A0036A311 /* SkFontHost_mac_coretext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DD3140D51290036A311 /* SkFontHost_mac_coretext.cpp */; };
+ 26D91034140D512A0036A311 /* SkGlobals_global.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DD4140D51290036A311 /* SkGlobals_global.cpp */; };
+ 26D91035140D512A0036A311 /* SkMemory_malloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DD5140D51290036A311 /* SkMemory_malloc.cpp */; };
+ 26D91036140D512A0036A311 /* SkThread_pthread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DD6140D51290036A311 /* SkThread_pthread.cpp */; };
+ 26D91037140D512A0036A311 /* SkTime_Unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DD7140D51290036A311 /* SkTime_Unix.cpp */; };
+ 26D91038140D512A0036A311 /* SkXMLParser_empty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DD8140D51290036A311 /* SkXMLParser_empty.cpp */; };
+ 26D91039140D512A0036A311 /* Sk1DPathEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DF3140D51290036A311 /* Sk1DPathEffect.cpp */; };
+ 26D9103A140D512A0036A311 /* Sk2DPathEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DF4140D51290036A311 /* Sk2DPathEffect.cpp */; };
+ 26D9103B140D512A0036A311 /* SkAvoidXfermode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DF5140D51290036A311 /* SkAvoidXfermode.cpp */; };
+ 26D9103C140D512A0036A311 /* SkBitmapCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DF6140D51290036A311 /* SkBitmapCache.cpp */; };
+ 26D9103D140D512A0036A311 /* SkBlurDrawLooper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DF8140D51290036A311 /* SkBlurDrawLooper.cpp */; };
+ 26D9103E140D512A0036A311 /* SkBlurMask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DF9140D51290036A311 /* SkBlurMask.cpp */; };
+ 26D9103F140D512A0036A311 /* SkBlurMaskFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DFB140D51290036A311 /* SkBlurMaskFilter.cpp */; };
+ 26D91040140D512A0036A311 /* SkColorFilters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DFC140D51290036A311 /* SkColorFilters.cpp */; };
+ 26D91041140D512A0036A311 /* SkColorMatrixFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DFD140D51290036A311 /* SkColorMatrixFilter.cpp */; };
+ 26D91042140D512A0036A311 /* SkCornerPathEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DFE140D51290036A311 /* SkCornerPathEffect.cpp */; };
+ 26D91043140D512A0036A311 /* SkDashPathEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90DFF140D51290036A311 /* SkDashPathEffect.cpp */; };
+ 26D91044140D512A0036A311 /* SkDiscretePathEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E00140D51290036A311 /* SkDiscretePathEffect.cpp */; };
+ 26D91045140D512A0036A311 /* SkEmbossMask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E01140D51290036A311 /* SkEmbossMask.cpp */; };
+ 26D91046140D512A0036A311 /* SkEmbossMaskFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E03140D51290036A311 /* SkEmbossMaskFilter.cpp */; };
+ 26D91047140D512A0036A311 /* SkGradientShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E05140D51290036A311 /* SkGradientShader.cpp */; };
+ 26D91048140D512A0036A311 /* SkGroupShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E06140D51290036A311 /* SkGroupShape.cpp */; };
+ 26D91049140D512A0036A311 /* SkKernel33MaskFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E07140D51290036A311 /* SkKernel33MaskFilter.cpp */; };
+ 26D9104A140D512A0036A311 /* SkLayerDrawLooper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E08140D51290036A311 /* SkLayerDrawLooper.cpp */; };
+ 26D9104B140D512A0036A311 /* SkLayerRasterizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E09140D51290036A311 /* SkLayerRasterizer.cpp */; };
+ 26D9104C140D512A0036A311 /* SkPaintFlagsDrawFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E0A140D51290036A311 /* SkPaintFlagsDrawFilter.cpp */; };
+ 26D9104D140D512A0036A311 /* SkPixelXorXfermode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E0B140D51290036A311 /* SkPixelXorXfermode.cpp */; };
+ 26D9104E140D512A0036A311 /* SkPorterDuff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E0C140D51290036A311 /* SkPorterDuff.cpp */; };
+ 26D9104F140D512A0036A311 /* SkRectShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E0E140D51290036A311 /* SkRectShape.cpp */; };
+ 26D91050140D512A0036A311 /* SkTransparentShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E0F140D51290036A311 /* SkTransparentShader.cpp */; };
+ 26D91051140D512A0036A311 /* GrAddPathRenderers_none.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E4D140D51290036A311 /* GrAddPathRenderers_none.cpp */; };
+ 26D91052140D512A0036A311 /* GrDefaultPathRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E4E140D51290036A311 /* GrDefaultPathRenderer.cpp */; };
+ 26D91053140D512A0036A311 /* GrGLStencilBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E50140D51290036A311 /* GrGLStencilBuffer.cpp */; };
+ 26D91054140D512A0036A311 /* GrPathRendererChain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E53140D51290036A311 /* GrPathRendererChain.cpp */; };
+ 26D91055140D512A0036A311 /* GrStencilBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E55140D51290036A311 /* GrStencilBuffer.cpp */; };
+ 26D91056140D512A0036A311 /* GrRenderTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E56140D51290036A311 /* GrRenderTarget.cpp */; };
+ 26D91057140D512A0036A311 /* GrGLRenderTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E57140D51290036A311 /* GrGLRenderTarget.cpp */; };
+ 26D91058140D512A0036A311 /* GrResourceCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E5A140D51290036A311 /* GrResourceCache.cpp */; };
+ 26D91059140D512A0036A311 /* FlingState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E5C140D51290036A311 /* FlingState.cpp */; };
+ 26D9105A140D512A0036A311 /* GrDrawMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E5D140D51290036A311 /* GrDrawMesh.cpp */; };
+ 26D9105B140D512A0036A311 /* GrAllocPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E5E140D51290036A311 /* GrAllocPool.cpp */; };
+ 26D9105C140D512A0036A311 /* GrAtlas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E5F140D51290036A311 /* GrAtlas.cpp */; };
+ 26D9105D140D512A0036A311 /* GrBufferAllocPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E61140D51290036A311 /* GrBufferAllocPool.cpp */; };
+ 26D9105E140D512A0036A311 /* GrClip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E63140D51290036A311 /* GrClip.cpp */; };
+ 26D9105F140D512A0036A311 /* GrContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E64140D51290036A311 /* GrContext.cpp */; };
+ 26D91060140D512A0036A311 /* GrDrawTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E65140D51290036A311 /* GrDrawTarget.cpp */; };
+ 26D91061140D512A0036A311 /* GrGLDefaultInterface_none.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E66140D51290036A311 /* GrGLDefaultInterface_none.cpp */; };
+ 26D91062140D512A0036A311 /* GrGLIndexBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E67140D51290036A311 /* GrGLIndexBuffer.cpp */; };
+ 26D91063140D512A0036A311 /* GrGLInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E68140D51290036A311 /* GrGLInterface.cpp */; };
+ 26D91064140D512A0036A311 /* GrGLProgram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E69140D51290036A311 /* GrGLProgram.cpp */; };
+ 26D91065140D512A0036A311 /* GrGLTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E6B140D51290036A311 /* GrGLTexture.cpp */; };
+ 26D91066140D512A0036A311 /* GrGLUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E6C140D51290036A311 /* GrGLUtil.cpp */; };
+ 26D91067140D512A0036A311 /* GrGLVertexBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E6D140D51290036A311 /* GrGLVertexBuffer.cpp */; };
+ 26D91068140D512A0036A311 /* GrGpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E6E140D51290036A311 /* GrGpu.cpp */; };
+ 26D91069140D512A0036A311 /* GrGpuFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E6F140D51290036A311 /* GrGpuFactory.cpp */; };
+ 26D9106A140D512A0036A311 /* GrGpuGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E70140D51290036A311 /* GrGpuGL.cpp */; };
+ 26D9106B140D512A0036A311 /* GrGpuGLFixed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E72140D51290036A311 /* GrGpuGLFixed.cpp */; };
+ 26D9106C140D512A0036A311 /* GrGpuGLShaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E74140D51290036A311 /* GrGpuGLShaders.cpp */; };
+ 26D9106D140D512A0036A311 /* GrInOrderDrawBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E76140D51290036A311 /* GrInOrderDrawBuffer.cpp */; };
+ 26D9106E140D512A0036A311 /* GrMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E77140D51290036A311 /* GrMatrix.cpp */; };
+ 26D9106F140D512A0036A311 /* GrMemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E78140D51290036A311 /* GrMemory.cpp */; };
+ 26D91070140D512A0036A311 /* GrPathRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E79140D51290036A311 /* GrPathRenderer.cpp */; };
+ 26D91071140D512A0036A311 /* GrPathUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E7A140D51290036A311 /* GrPathUtils.cpp */; };
+ 26D91072140D512A0036A311 /* GrRectanizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E7C140D51290036A311 /* GrRectanizer.cpp */; };
+ 26D91073140D512A0036A311 /* GrResource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E7E140D51290036A311 /* GrResource.cpp */; };
+ 26D91074140D512A0036A311 /* GrStencil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E7F140D51290036A311 /* GrStencil.cpp */; };
+ 26D91076140D512A0036A311 /* GrTextContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E81140D51290036A311 /* GrTextContext.cpp */; };
+ 26D91077140D512A0036A311 /* GrTextStrike.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E82140D51290036A311 /* GrTextStrike.cpp */; };
+ 26D91078140D512A0036A311 /* GrTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E84140D51290036A311 /* GrTexture.cpp */; };
+ 26D91079140D512A0036A311 /* gr_unittests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E85140D51290036A311 /* gr_unittests.cpp */; };
+ 26D9107A140D512A0036A311 /* GrPrintf_skia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E8C140D51290036A311 /* GrPrintf_skia.cpp */; };
+ 26D9107B140D512A0036A311 /* SkGpuCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E8D140D51290036A311 /* SkGpuCanvas.cpp */; };
+ 26D9107C140D512A0036A311 /* SkGpuDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E8E140D51290036A311 /* SkGpuDevice.cpp */; };
+ 26D9107D140D512A0036A311 /* SkGr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E8F140D51290036A311 /* SkGr.cpp */; };
+ 26D9107E140D512A0036A311 /* SkGrFontScaler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E90140D51290036A311 /* SkGrFontScaler.cpp */; };
+ 26D9107F140D512A0036A311 /* SkGrTexturePixelRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E91140D51290036A311 /* SkGrTexturePixelRef.cpp */; };
+ 26D91080140D512A0036A311 /* SkMovie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90E9E140D51290036A311 /* SkMovie.cpp */; };
+ 26D91081140D512A0036A311 /* SkCreateRLEPixelRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EA0140D51290036A311 /* SkCreateRLEPixelRef.cpp */; };
+ 26D91082140D512A0036A311 /* SkFDStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EA1140D51290036A311 /* SkFDStream.cpp */; };
+ 26D91083140D512A0036A311 /* SkFlipPixelRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EA2140D51290036A311 /* SkFlipPixelRef.cpp */; };
+ 26D91084140D512A0036A311 /* SkImageDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EA3140D51290036A311 /* SkImageDecoder.cpp */; };
+ 26D91085140D512A0036A311 /* SkImageEncoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EA4140D51290036A311 /* SkImageEncoder.cpp */; };
+ 26D91086140D512A0036A311 /* SkImageDecoder_Factory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EA5140D51290036A311 /* SkImageDecoder_Factory.cpp */; };
+ 26D91087140D512A0036A311 /* SkImageEncoder_Factory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EA6140D51290036A311 /* SkImageEncoder_Factory.cpp */; };
+ 26D91088140D512A0036A311 /* SkPageFlipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EA7140D51290036A311 /* SkPageFlipper.cpp */; };
+ 26D91089140D512A0036A311 /* SkImageRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EA8140D51290036A311 /* SkImageRef.cpp */; };
+ 26D9108A140D512A0036A311 /* SkImageRefPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EA9140D51290036A311 /* SkImageRefPool.cpp */; };
+ 26D9108B140D512A0036A311 /* SkImageRef_GlobalPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EAB140D51290036A311 /* SkImageRef_GlobalPool.cpp */; };
+ 26D9108F140D512A0036A311 /* SkBitmapProcState_opts_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EB1140D51290036A311 /* SkBitmapProcState_opts_arm.cpp */; };
+ 26D91097140D512A0036A311 /* SkGPipeRead.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EBE140D51290036A311 /* SkGPipeRead.cpp */; };
+ 26D91098140D512A0036A311 /* SkGPipeWrite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EBF140D51290036A311 /* SkGPipeWrite.cpp */; };
+ 26D91099140D512A0036A311 /* SkBitSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90ED0140D51290036A311 /* SkBitSet.cpp */; };
+ 26D9109A140D512A0036A311 /* SkPDFCatalog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90ED1140D51290036A311 /* SkPDFCatalog.cpp */; };
+ 26D9109B140D512A0036A311 /* SkPDFDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90ED2140D51290036A311 /* SkPDFDevice.cpp */; };
+ 26D9109C140D512A0036A311 /* SkPDFDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90ED3140D51290036A311 /* SkPDFDocument.cpp */; };
+ 26D9109D140D512A0036A311 /* SkPDFFont.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90ED4140D51290036A311 /* SkPDFFont.cpp */; };
+ 26D9109E140D512A0036A311 /* SkPDFFormXObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90ED5140D51290036A311 /* SkPDFFormXObject.cpp */; };
+ 26D9109F140D512A0036A311 /* SkPDFGraphicState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90ED6140D51290036A311 /* SkPDFGraphicState.cpp */; };
+ 26D910A0140D512A0036A311 /* SkPDFImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90ED7140D51290036A311 /* SkPDFImage.cpp */; };
+ 26D910A1140D512A0036A311 /* SkPDFPage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90ED8140D51290036A311 /* SkPDFPage.cpp */; };
+ 26D910A2140D512A0036A311 /* SkPDFShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90ED9140D51290036A311 /* SkPDFShader.cpp */; };
+ 26D910A3140D512A0036A311 /* SkPDFStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EDA140D51290036A311 /* SkPDFStream.cpp */; };
+ 26D910A4140D512A0036A311 /* SkPDFTypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EDB140D51290036A311 /* SkPDFTypes.cpp */; };
+ 26D910A5140D512A0036A311 /* SkPDFUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EDC140D51290036A311 /* SkPDFUtils.cpp */; };
+ 26D910A6140D512A0036A311 /* SkSVGCircle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EE5140D51290036A311 /* SkSVGCircle.cpp */; };
+ 26D910A7140D512A0036A311 /* SkSVGClipPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EE7140D51290036A311 /* SkSVGClipPath.cpp */; };
+ 26D910A8140D512A0036A311 /* SkSVGDefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EE9140D51290036A311 /* SkSVGDefs.cpp */; };
+ 26D910A9140D512A0036A311 /* SkSVGElements.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EEB140D51290036A311 /* SkSVGElements.cpp */; };
+ 26D910AA140D512A0036A311 /* SkSVGEllipse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EED140D51290036A311 /* SkSVGEllipse.cpp */; };
+ 26D910AB140D512A0036A311 /* SkSVGFeColorMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EEF140D51290036A311 /* SkSVGFeColorMatrix.cpp */; };
+ 26D910AC140D512A0036A311 /* SkSVGFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EF1140D51290036A311 /* SkSVGFilter.cpp */; };
+ 26D910AD140D512A0036A311 /* SkSVGG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EF3140D51290036A311 /* SkSVGG.cpp */; };
+ 26D910AE140D512A0036A311 /* SkSVGGradient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EF5140D51290036A311 /* SkSVGGradient.cpp */; };
+ 26D910AF140D512A0036A311 /* SkSVGGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EF7140D51290036A311 /* SkSVGGroup.cpp */; };
+ 26D910B0140D512A0036A311 /* SkSVGImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EF9140D51290036A311 /* SkSVGImage.cpp */; };
+ 26D910B1140D512A0036A311 /* SkSVGLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EFB140D51290036A311 /* SkSVGLine.cpp */; };
+ 26D910B2140D512A0036A311 /* SkSVGLinearGradient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EFD140D51290036A311 /* SkSVGLinearGradient.cpp */; };
+ 26D910B3140D512A0036A311 /* SkSVGMask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90EFF140D512A0036A311 /* SkSVGMask.cpp */; };
+ 26D910B4140D512A0036A311 /* SkSVGMetadata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F01140D512A0036A311 /* SkSVGMetadata.cpp */; };
+ 26D910B5140D512A0036A311 /* SkSVGPaintState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F03140D512A0036A311 /* SkSVGPaintState.cpp */; };
+ 26D910B6140D512A0036A311 /* SkSVGParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F04140D512A0036A311 /* SkSVGParser.cpp */; };
+ 26D910B7140D512A0036A311 /* SkSVGPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F05140D512A0036A311 /* SkSVGPath.cpp */; };
+ 26D910B8140D512A0036A311 /* SkSVGPolygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F07140D512A0036A311 /* SkSVGPolygon.cpp */; };
+ 26D910B9140D512A0036A311 /* SkSVGPolyline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F09140D512A0036A311 /* SkSVGPolyline.cpp */; };
+ 26D910BA140D512A0036A311 /* SkSVGRadialGradient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F0B140D512A0036A311 /* SkSVGRadialGradient.cpp */; };
+ 26D910BB140D512A0036A311 /* SkSVGRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F0D140D512A0036A311 /* SkSVGRect.cpp */; };
+ 26D910BC140D512A0036A311 /* SkSVGSVG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F0F140D512A0036A311 /* SkSVGSVG.cpp */; };
+ 26D910BD140D512A0036A311 /* SkSVGStop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F11140D512A0036A311 /* SkSVGStop.cpp */; };
+ 26D910BE140D512A0036A311 /* SkSVGSymbol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F13140D512A0036A311 /* SkSVGSymbol.cpp */; };
+ 26D910BF140D512A0036A311 /* SkSVGText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F15140D512A0036A311 /* SkSVGText.cpp */; };
+ 26D910C0140D512A0036A311 /* SkSVGUse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F17140D512A0036A311 /* SkSVGUse.cpp */; };
+ 26D910C1140D512A0036A311 /* SkCreateCGImageRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F32140D512A0036A311 /* SkCreateCGImageRef.cpp */; };
+ 26D910C2140D512A0036A311 /* SkBoundaryPatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F33140D512A0036A311 /* SkBoundaryPatch.cpp */; };
+ 26D910C3140D512A0036A311 /* SkCamera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F34140D512A0036A311 /* SkCamera.cpp */; };
+ 26D910C4140D512A0036A311 /* SkColorMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F35140D512A0036A311 /* SkColorMatrix.cpp */; };
+ 26D910C5140D512A0036A311 /* SkCubicInterval.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F36140D512A0036A311 /* SkCubicInterval.cpp */; };
+ 26D910C6140D512A0036A311 /* SkCullPoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F37140D512A0036A311 /* SkCullPoints.cpp */; };
+ 26D910C7140D512A0036A311 /* SkDumpCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F38140D512A0036A311 /* SkDumpCanvas.cpp */; };
+ 26D910C8140D512A0036A311 /* SkInterpolator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F39140D512A0036A311 /* SkInterpolator.cpp */; };
+ 26D910C9140D512A0036A311 /* SkLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F3A140D512A0036A311 /* SkLayer.cpp */; };
+ 26D910CA140D512A0036A311 /* SkMatrix44.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F3B140D512A0036A311 /* SkMatrix44.cpp */; };
+ 26D910CB140D512A0036A311 /* SkMeshUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F3C140D512A0036A311 /* SkMeshUtils.cpp */; };
+ 26D910CC140D512A0036A311 /* SkNWayCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F3D140D512A0036A311 /* SkNWayCanvas.cpp */; };
+ 26D910CD140D512A0036A311 /* SkNinePatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F3E140D512A0036A311 /* SkNinePatch.cpp */; };
+ 26D910CE140D512A0036A311 /* SkOSFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F3F140D512A0036A311 /* SkOSFile.cpp */; };
+ 26D910CF140D512A0036A311 /* SkParse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F40140D512A0036A311 /* SkParse.cpp */; };
+ 26D910D0140D512A0036A311 /* SkParseColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F41140D512A0036A311 /* SkParseColor.cpp */; };
+ 26D910D1140D512A0036A311 /* SkParsePath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F42140D512A0036A311 /* SkParsePath.cpp */; };
+ 26D910D2140D512A0036A311 /* SkProxyCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F43140D512A0036A311 /* SkProxyCanvas.cpp */; };
+ 26D910D3140D512A0036A311 /* SkSfntUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F44140D512A0036A311 /* SkSfntUtils.cpp */; };
+ 26D910D4140D512A0036A311 /* SkUnitMappers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F45140D512A0036A311 /* SkUnitMappers.cpp */; };
+ 26D910D5140D512A0036A311 /* SkBGViewArtist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F5B140D512A0036A311 /* SkBGViewArtist.cpp */; };
+ 26D910D6140D512A0036A311 /* SkEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F5C140D512A0036A311 /* SkEvent.cpp */; };
+ 26D910D7140D512A0036A311 /* SkEventSink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F5D140D512A0036A311 /* SkEventSink.cpp */; };
+ 26D910D8140D512A0036A311 /* SkImageView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F5E140D512A0036A311 /* SkImageView.cpp */; };
+ 26D910D9140D512A0036A311 /* SkListView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F5F140D512A0036A311 /* SkListView.cpp */; };
+ 26D910DB140D512A0036A311 /* SkOSMenu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F61140D512A0036A311 /* SkOSMenu.cpp */; };
+ 26D910DC140D512A0036A311 /* SkParsePaint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F62140D512A0036A311 /* SkParsePaint.cpp */; };
+ 26D910E1140D512A0036A311 /* SkStackViewLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F67140D512A0036A311 /* SkStackViewLayout.cpp */; };
+ 26D910E2140D512A0036A311 /* SkStaticTextView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F68140D512A0036A311 /* SkStaticTextView.cpp */; };
+ 26D910E3140D512A0036A311 /* SkTagList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F69140D512A0036A311 /* SkTagList.cpp */; };
+ 26D910E4140D512A0036A311 /* SkTextBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F6B140D512A0036A311 /* SkTextBox.cpp */; };
+ 26D910E5140D512A0036A311 /* SkTouchGesture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F6C140D512A0036A311 /* SkTouchGesture.cpp */; };
+ 26D910E6140D512A0036A311 /* SkView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F6D140D512A0036A311 /* SkView.cpp */; };
+ 26D910E7140D512A0036A311 /* SkViewInflate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F6E140D512A0036A311 /* SkViewInflate.cpp */; };
+ 26D910E8140D512A0036A311 /* SkViewPriv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F6F140D512A0036A311 /* SkViewPriv.cpp */; };
+ 26D910E9140D512A0036A311 /* SkWidget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F71140D512A0036A311 /* SkWidget.cpp */; };
+ 26D910EB140D512A0036A311 /* SkWidgets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F73140D512A0036A311 /* SkWidgets.cpp */; };
+ 26D910EC140D512A0036A311 /* SkWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F74140D512A0036A311 /* SkWindow.cpp */; };
+ 26D910ED140D512A0036A311 /* SkDOM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F7E140D512A0036A311 /* SkDOM.cpp */; };
+ 26D910EE140D512A0036A311 /* SkXMLParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F7F140D512A0036A311 /* SkXMLParser.cpp */; };
+ 26D910EF140D512A0036A311 /* SkXMLWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D90F80140D512A0036A311 /* SkXMLWriter.cpp */; };
+ 26D91120140D52CD0036A311 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26D9111D140D52CD0036A311 /* CoreFoundation.framework */; };
+ 26D91122140D52CD0036A311 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26D9111F140D52CD0036A311 /* CoreText.framework */; };
+ 26D91131140D53C30036A311 /* SkBlitRow_opts_none.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D9112F140D53C30036A311 /* SkBlitRow_opts_none.cpp */; };
+ 26D91132140D53C30036A311 /* SkUtils_opts_none.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D91130140D53C30036A311 /* SkUtils_opts_none.cpp */; };
+ 26D91146140D54720036A311 /* skia_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26D9113B140D54720036A311 /* skia_ios.mm */; };
+ 26D91155140D54E40036A311 /* SkEventNotifier.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26D91154140D54E40036A311 /* SkEventNotifier.mm */; };
+ 26D9118F140D558A0036A311 /* SkOSFile_iOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26D9118E140D558A0036A311 /* SkOSFile_iOS.mm */; };
+ 26D91194140D55980036A311 /* SkOSWindow_iOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26D91193140D55980036A311 /* SkOSWindow_iOS.mm */; };
+ 26D912ED140D5FCC0036A311 /* SkiOSSampleApp-Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 26D912EA140D5FCC0036A311 /* SkiOSSampleApp-Debug.xcconfig */; };
+ 26D912EE140D5FCC0036A311 /* SkiOSSampleApp-Release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 26D912EB140D5FCC0036A311 /* SkiOSSampleApp-Release.xcconfig */; };
+ 26D912EF140D5FCC0036A311 /* SkiOSSampleApp-Base.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 26D912EC140D5FCC0036A311 /* SkiOSSampleApp-Base.xcconfig */; };
+ 26D91304140D60330036A311 /* SimpleApp.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26D91303140D60330036A311 /* SimpleApp.mm */; };
+ 2860E328111B887F00E27156 /* AppDelegate_iPhone.m in Sources */ = {isa = PBXBuildFile; fileRef = 2860E326111B887F00E27156 /* AppDelegate_iPhone.m */; };
+ 2860E329111B887F00E27156 /* MainWindow_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2860E327111B887F00E27156 /* MainWindow_iPhone.xib */; };
+ 2860E32E111B888700E27156 /* AppDelegate_iPad.m in Sources */ = {isa = PBXBuildFile; fileRef = 2860E32C111B888700E27156 /* AppDelegate_iPad.m */; };
+ 2860E32F111B888700E27156 /* MainWindow_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2860E32D111B888700E27156 /* MainWindow_iPad.xib */; };
+ 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ 1D6058910D05DD3D006BFB54 /* SimpleiOSApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SimpleiOSApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ 26371975140D6C19006CC295 /* SkUIView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkUIView.h; path = ../iOSSampleApp/Shared/SkUIView.h; sourceTree = SOURCE_ROOT; };
+ 26371976140D6C19006CC295 /* SkUIView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SkUIView.mm; path = ../iOSSampleApp/Shared/SkUIView.mm; sourceTree = SOURCE_ROOT; };
+ 26D90C44140D51290036A311 /* SkUserConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkUserConfig.h; path = ../../include/config/SkUserConfig.h; sourceTree = SOURCE_ROOT; };
+ 26D90C47140D51290036A311 /* SkAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimator.h; sourceTree = "<group>"; };
+ 26D90C48140D51290036A311 /* SkAnimatorView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimatorView.h; sourceTree = "<group>"; };
+ 26D90C4A140D51290036A311 /* SkAnimate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimate.h; sourceTree = "<group>"; };
+ 26D90C4B140D51290036A311 /* SkAnimateActive.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAnimateActive.cpp; sourceTree = "<group>"; };
+ 26D90C4C140D51290036A311 /* SkAnimateActive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimateActive.h; sourceTree = "<group>"; };
+ 26D90C4D140D51290036A311 /* SkAnimateBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAnimateBase.cpp; sourceTree = "<group>"; };
+ 26D90C4E140D51290036A311 /* SkAnimateBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimateBase.h; sourceTree = "<group>"; };
+ 26D90C4F140D51290036A311 /* SkAnimateField.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAnimateField.cpp; sourceTree = "<group>"; };
+ 26D90C50140D51290036A311 /* SkAnimateMaker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAnimateMaker.cpp; sourceTree = "<group>"; };
+ 26D90C51140D51290036A311 /* SkAnimateMaker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimateMaker.h; sourceTree = "<group>"; };
+ 26D90C52140D51290036A311 /* SkAnimateProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimateProperties.h; sourceTree = "<group>"; };
+ 26D90C53140D51290036A311 /* SkAnimateSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAnimateSet.cpp; sourceTree = "<group>"; };
+ 26D90C54140D51290036A311 /* SkAnimateSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimateSet.h; sourceTree = "<group>"; };
+ 26D90C55140D51290036A311 /* SkAnimator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAnimator.cpp; sourceTree = "<group>"; };
+ 26D90C56140D51290036A311 /* SkAnimatorScript.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAnimatorScript.cpp; sourceTree = "<group>"; };
+ 26D90C57140D51290036A311 /* SkAnimatorScript.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimatorScript.h; sourceTree = "<group>"; };
+ 26D90C58140D51290036A311 /* SkBase64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBase64.cpp; sourceTree = "<group>"; };
+ 26D90C59140D51290036A311 /* SkBase64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBase64.h; sourceTree = "<group>"; };
+ 26D90C5A140D51290036A311 /* SkBoundable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBoundable.cpp; sourceTree = "<group>"; };
+ 26D90C5B140D51290036A311 /* SkBoundable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBoundable.h; sourceTree = "<group>"; };
+ 26D90C5C140D51290036A311 /* SkBuildCondensedInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBuildCondensedInfo.cpp; sourceTree = "<group>"; };
+ 26D90C5D140D51290036A311 /* SkDisplayAdd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayAdd.cpp; sourceTree = "<group>"; };
+ 26D90C5E140D51290036A311 /* SkDisplayAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayAdd.h; sourceTree = "<group>"; };
+ 26D90C5F140D51290036A311 /* SkDisplayApply.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayApply.cpp; sourceTree = "<group>"; };
+ 26D90C60140D51290036A311 /* SkDisplayApply.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayApply.h; sourceTree = "<group>"; };
+ 26D90C61140D51290036A311 /* SkDisplayBounds.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayBounds.cpp; sourceTree = "<group>"; };
+ 26D90C62140D51290036A311 /* SkDisplayBounds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayBounds.h; sourceTree = "<group>"; };
+ 26D90C63140D51290036A311 /* SkDisplayEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayEvent.cpp; sourceTree = "<group>"; };
+ 26D90C64140D51290036A311 /* SkDisplayEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayEvent.h; sourceTree = "<group>"; };
+ 26D90C65140D51290036A311 /* SkDisplayEvents.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayEvents.cpp; sourceTree = "<group>"; };
+ 26D90C66140D51290036A311 /* SkDisplayEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayEvents.h; sourceTree = "<group>"; };
+ 26D90C67140D51290036A311 /* SkDisplayInclude.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayInclude.cpp; sourceTree = "<group>"; };
+ 26D90C68140D51290036A311 /* SkDisplayInclude.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayInclude.h; sourceTree = "<group>"; };
+ 26D90C69140D51290036A311 /* SkDisplayInput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayInput.cpp; sourceTree = "<group>"; };
+ 26D90C6A140D51290036A311 /* SkDisplayInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayInput.h; sourceTree = "<group>"; };
+ 26D90C6B140D51290036A311 /* SkDisplayList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayList.cpp; sourceTree = "<group>"; };
+ 26D90C6C140D51290036A311 /* SkDisplayList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayList.h; sourceTree = "<group>"; };
+ 26D90C6D140D51290036A311 /* SkDisplayMath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayMath.cpp; sourceTree = "<group>"; };
+ 26D90C6E140D51290036A311 /* SkDisplayMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayMath.h; sourceTree = "<group>"; };
+ 26D90C6F140D51290036A311 /* SkDisplayMovie.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayMovie.cpp; sourceTree = "<group>"; };
+ 26D90C70140D51290036A311 /* SkDisplayMovie.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayMovie.h; sourceTree = "<group>"; };
+ 26D90C71140D51290036A311 /* SkDisplayNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayNumber.cpp; sourceTree = "<group>"; };
+ 26D90C72140D51290036A311 /* SkDisplayNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayNumber.h; sourceTree = "<group>"; };
+ 26D90C73140D51290036A311 /* SkDisplayPost.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayPost.cpp; sourceTree = "<group>"; };
+ 26D90C74140D51290036A311 /* SkDisplayPost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayPost.h; sourceTree = "<group>"; };
+ 26D90C75140D51290036A311 /* SkDisplayRandom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayRandom.cpp; sourceTree = "<group>"; };
+ 26D90C76140D51290036A311 /* SkDisplayRandom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayRandom.h; sourceTree = "<group>"; };
+ 26D90C77140D51290036A311 /* SkDisplayScreenplay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayScreenplay.cpp; sourceTree = "<group>"; };
+ 26D90C78140D51290036A311 /* SkDisplayScreenplay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayScreenplay.h; sourceTree = "<group>"; };
+ 26D90C79140D51290036A311 /* SkDisplayType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayType.cpp; sourceTree = "<group>"; };
+ 26D90C7A140D51290036A311 /* SkDisplayType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayType.h; sourceTree = "<group>"; };
+ 26D90C7B140D51290036A311 /* SkDisplayTypes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayTypes.cpp; sourceTree = "<group>"; };
+ 26D90C7C140D51290036A311 /* SkDisplayTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayTypes.h; sourceTree = "<group>"; };
+ 26D90C7D140D51290036A311 /* SkDisplayXMLParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayXMLParser.cpp; sourceTree = "<group>"; };
+ 26D90C7E140D51290036A311 /* SkDisplayXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayXMLParser.h; sourceTree = "<group>"; };
+ 26D90C7F140D51290036A311 /* SkDisplayable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayable.cpp; sourceTree = "<group>"; };
+ 26D90C80140D51290036A311 /* SkDisplayable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayable.h; sourceTree = "<group>"; };
+ 26D90C81140D51290036A311 /* SkDraw3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDraw3D.cpp; sourceTree = "<group>"; };
+ 26D90C82140D51290036A311 /* SkDraw3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDraw3D.h; sourceTree = "<group>"; };
+ 26D90C83140D51290036A311 /* SkDrawBitmap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawBitmap.cpp; sourceTree = "<group>"; };
+ 26D90C84140D51290036A311 /* SkDrawBitmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawBitmap.h; sourceTree = "<group>"; };
+ 26D90C85140D51290036A311 /* SkDrawBlur.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawBlur.cpp; sourceTree = "<group>"; };
+ 26D90C86140D51290036A311 /* SkDrawBlur.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawBlur.h; sourceTree = "<group>"; };
+ 26D90C87140D51290036A311 /* SkDrawClip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawClip.cpp; sourceTree = "<group>"; };
+ 26D90C88140D51290036A311 /* SkDrawClip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawClip.h; sourceTree = "<group>"; };
+ 26D90C89140D51290036A311 /* SkDrawColor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawColor.cpp; sourceTree = "<group>"; };
+ 26D90C8A140D51290036A311 /* SkDrawColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawColor.h; sourceTree = "<group>"; };
+ 26D90C8B140D51290036A311 /* SkDrawDash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawDash.cpp; sourceTree = "<group>"; };
+ 26D90C8C140D51290036A311 /* SkDrawDash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawDash.h; sourceTree = "<group>"; };
+ 26D90C8D140D51290036A311 /* SkDrawDiscrete.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawDiscrete.cpp; sourceTree = "<group>"; };
+ 26D90C8E140D51290036A311 /* SkDrawDiscrete.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawDiscrete.h; sourceTree = "<group>"; };
+ 26D90C8F140D51290036A311 /* SkDrawEmboss.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawEmboss.cpp; sourceTree = "<group>"; };
+ 26D90C90140D51290036A311 /* SkDrawEmboss.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawEmboss.h; sourceTree = "<group>"; };
+ 26D90C91140D51290036A311 /* SkDrawExtraPathEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawExtraPathEffect.cpp; sourceTree = "<group>"; };
+ 26D90C92140D51290036A311 /* SkDrawFull.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawFull.cpp; sourceTree = "<group>"; };
+ 26D90C93140D51290036A311 /* SkDrawFull.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawFull.h; sourceTree = "<group>"; };
+ 26D90C94140D51290036A311 /* SkDrawGradient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawGradient.cpp; sourceTree = "<group>"; };
+ 26D90C95140D51290036A311 /* SkDrawGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawGradient.h; sourceTree = "<group>"; };
+ 26D90C96140D51290036A311 /* SkDrawGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawGroup.cpp; sourceTree = "<group>"; };
+ 26D90C97140D51290036A311 /* SkDrawGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawGroup.h; sourceTree = "<group>"; };
+ 26D90C98140D51290036A311 /* SkDrawLine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawLine.cpp; sourceTree = "<group>"; };
+ 26D90C99140D51290036A311 /* SkDrawLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawLine.h; sourceTree = "<group>"; };
+ 26D90C9A140D51290036A311 /* SkDrawMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawMatrix.cpp; sourceTree = "<group>"; };
+ 26D90C9B140D51290036A311 /* SkDrawMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawMatrix.h; sourceTree = "<group>"; };
+ 26D90C9C140D51290036A311 /* SkDrawOval.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawOval.cpp; sourceTree = "<group>"; };
+ 26D90C9D140D51290036A311 /* SkDrawOval.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawOval.h; sourceTree = "<group>"; };
+ 26D90C9E140D51290036A311 /* SkDrawPaint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawPaint.cpp; sourceTree = "<group>"; };
+ 26D90C9F140D51290036A311 /* SkDrawPaint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawPaint.h; sourceTree = "<group>"; };
+ 26D90CA0140D51290036A311 /* SkDrawPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawPath.cpp; sourceTree = "<group>"; };
+ 26D90CA1140D51290036A311 /* SkDrawPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawPath.h; sourceTree = "<group>"; };
+ 26D90CA2140D51290036A311 /* SkDrawPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawPoint.cpp; sourceTree = "<group>"; };
+ 26D90CA3140D51290036A311 /* SkDrawPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawPoint.h; sourceTree = "<group>"; };
+ 26D90CA4140D51290036A311 /* SkDrawRectangle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawRectangle.cpp; sourceTree = "<group>"; };
+ 26D90CA5140D51290036A311 /* SkDrawRectangle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawRectangle.h; sourceTree = "<group>"; };
+ 26D90CA6140D51290036A311 /* SkDrawSaveLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawSaveLayer.cpp; sourceTree = "<group>"; };
+ 26D90CA7140D51290036A311 /* SkDrawSaveLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawSaveLayer.h; sourceTree = "<group>"; };
+ 26D90CA8140D51290036A311 /* SkDrawShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawShader.cpp; sourceTree = "<group>"; };
+ 26D90CA9140D51290036A311 /* SkDrawShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawShader.h; sourceTree = "<group>"; };
+ 26D90CAA140D51290036A311 /* SkDrawText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawText.cpp; sourceTree = "<group>"; };
+ 26D90CAB140D51290036A311 /* SkDrawText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawText.h; sourceTree = "<group>"; };
+ 26D90CAC140D51290036A311 /* SkDrawTextBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawTextBox.cpp; sourceTree = "<group>"; };
+ 26D90CAD140D51290036A311 /* SkDrawTextBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawTextBox.h; sourceTree = "<group>"; };
+ 26D90CAE140D51290036A311 /* SkDrawTo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawTo.cpp; sourceTree = "<group>"; };
+ 26D90CAF140D51290036A311 /* SkDrawTo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawTo.h; sourceTree = "<group>"; };
+ 26D90CB0140D51290036A311 /* SkDrawTransparentShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawTransparentShader.cpp; sourceTree = "<group>"; };
+ 26D90CB1140D51290036A311 /* SkDrawTransparentShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawTransparentShader.h; sourceTree = "<group>"; };
+ 26D90CB2140D51290036A311 /* SkDrawable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawable.cpp; sourceTree = "<group>"; };
+ 26D90CB3140D51290036A311 /* SkDrawable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawable.h; sourceTree = "<group>"; };
+ 26D90CB4140D51290036A311 /* SkDump.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDump.cpp; sourceTree = "<group>"; };
+ 26D90CB5140D51290036A311 /* SkDump.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDump.h; sourceTree = "<group>"; };
+ 26D90CB6140D51290036A311 /* SkExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkExtras.h; sourceTree = "<group>"; };
+ 26D90CB7140D51290036A311 /* SkGetCondensedInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGetCondensedInfo.cpp; sourceTree = "<group>"; };
+ 26D90CB8140D51290036A311 /* SkHitClear.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkHitClear.cpp; sourceTree = "<group>"; };
+ 26D90CB9140D51290036A311 /* SkHitClear.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkHitClear.h; sourceTree = "<group>"; };
+ 26D90CBA140D51290036A311 /* SkHitTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkHitTest.cpp; sourceTree = "<group>"; };
+ 26D90CBB140D51290036A311 /* SkHitTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkHitTest.h; sourceTree = "<group>"; };
+ 26D90CBC140D51290036A311 /* SkIntArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkIntArray.h; sourceTree = "<group>"; };
+ 26D90CBD140D51290036A311 /* SkMatrixParts.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMatrixParts.cpp; sourceTree = "<group>"; };
+ 26D90CBE140D51290036A311 /* SkMatrixParts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkMatrixParts.h; sourceTree = "<group>"; };
+ 26D90CBF140D51290036A311 /* SkMemberInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMemberInfo.cpp; sourceTree = "<group>"; };
+ 26D90CC0140D51290036A311 /* SkMemberInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkMemberInfo.h; sourceTree = "<group>"; };
+ 26D90CC1140D51290036A311 /* SkOpArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkOpArray.cpp; sourceTree = "<group>"; };
+ 26D90CC2140D51290036A311 /* SkOpArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkOpArray.h; sourceTree = "<group>"; };
+ 26D90CC3140D51290036A311 /* SkOperand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkOperand.h; sourceTree = "<group>"; };
+ 26D90CC4140D51290036A311 /* SkOperand2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkOperand2.h; sourceTree = "<group>"; };
+ 26D90CC5140D51290036A311 /* SkOperandInterpolator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkOperandInterpolator.h; sourceTree = "<group>"; };
+ 26D90CC6140D51290036A311 /* SkOperandIterpolator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkOperandIterpolator.cpp; sourceTree = "<group>"; };
+ 26D90CC7140D51290036A311 /* SkPaintParts.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPaintParts.cpp; sourceTree = "<group>"; };
+ 26D90CC8140D51290036A311 /* SkPaintParts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPaintParts.h; sourceTree = "<group>"; };
+ 26D90CC9140D51290036A311 /* SkParseSVGPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkParseSVGPath.cpp; sourceTree = "<group>"; };
+ 26D90CCA140D51290036A311 /* SkPathParts.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPathParts.cpp; sourceTree = "<group>"; };
+ 26D90CCB140D51290036A311 /* SkPathParts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPathParts.h; sourceTree = "<group>"; };
+ 26D90CCC140D51290036A311 /* SkPostParts.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPostParts.cpp; sourceTree = "<group>"; };
+ 26D90CCD140D51290036A311 /* SkPostParts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPostParts.h; sourceTree = "<group>"; };
+ 26D90CCE140D51290036A311 /* SkScript.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScript.cpp; sourceTree = "<group>"; };
+ 26D90CCF140D51290036A311 /* SkScript.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkScript.h; sourceTree = "<group>"; };
+ 26D90CD0140D51290036A311 /* SkScript2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkScript2.h; sourceTree = "<group>"; };
+ 26D90CD1140D51290036A311 /* SkScriptCallBack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkScriptCallBack.h; sourceTree = "<group>"; };
+ 26D90CD2140D51290036A311 /* SkScriptDecompile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScriptDecompile.cpp; sourceTree = "<group>"; };
+ 26D90CD3140D51290036A311 /* SkScriptRuntime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScriptRuntime.cpp; sourceTree = "<group>"; };
+ 26D90CD4140D51290036A311 /* SkScriptRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkScriptRuntime.h; sourceTree = "<group>"; };
+ 26D90CD5140D51290036A311 /* SkScriptTokenizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScriptTokenizer.cpp; sourceTree = "<group>"; };
+ 26D90CD6140D51290036A311 /* SkSnapshot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSnapshot.cpp; sourceTree = "<group>"; };
+ 26D90CD7140D51290036A311 /* SkSnapshot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSnapshot.h; sourceTree = "<group>"; };
+ 26D90CD8140D51290036A311 /* SkTDArray_Experimental.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTDArray_Experimental.h; sourceTree = "<group>"; };
+ 26D90CD9140D51290036A311 /* SkTextOnPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTextOnPath.cpp; sourceTree = "<group>"; };
+ 26D90CDA140D51290036A311 /* SkTextOnPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTextOnPath.h; sourceTree = "<group>"; };
+ 26D90CDB140D51290036A311 /* SkTextToPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTextToPath.cpp; sourceTree = "<group>"; };
+ 26D90CDC140D51290036A311 /* SkTextToPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTextToPath.h; sourceTree = "<group>"; };
+ 26D90CDD140D51290036A311 /* SkTime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTime.cpp; sourceTree = "<group>"; };
+ 26D90CDE140D51290036A311 /* SkTypedArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTypedArray.cpp; sourceTree = "<group>"; };
+ 26D90CDF140D51290036A311 /* SkTypedArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTypedArray.h; sourceTree = "<group>"; };
+ 26D90CE0140D51290036A311 /* SkXMLAnimatorWriter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkXMLAnimatorWriter.cpp; sourceTree = "<group>"; };
+ 26D90CE1140D51290036A311 /* SkXMLAnimatorWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkXMLAnimatorWriter.h; sourceTree = "<group>"; };
+ 26D90CE3140D51290036A311 /* SkTypeface_mac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTypeface_mac.h; path = include/ports/SkTypeface_mac.h; sourceTree = "<group>"; };
+ 26D90CE5140D51290036A311 /* Sk64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sk64.h; path = core/Sk64.h; sourceTree = "<group>"; };
+ 26D90CE6140D51290036A311 /* SkAdvancedTypefaceMetrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkAdvancedTypefaceMetrics.h; path = core/SkAdvancedTypefaceMetrics.h; sourceTree = "<group>"; };
+ 26D90CE7140D51290036A311 /* SkAutoKern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkAutoKern.h; path = core/SkAutoKern.h; sourceTree = "<group>"; };
+ 26D90CE8140D51290036A311 /* SkBitmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkBitmap.h; path = core/SkBitmap.h; sourceTree = "<group>"; };
+ 26D90CE9140D51290036A311 /* SkBlitRow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkBlitRow.h; path = core/SkBlitRow.h; sourceTree = "<group>"; };
+ 26D90CEA140D51290036A311 /* SkBlitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkBlitter.h; path = core/SkBlitter.h; sourceTree = "<group>"; };
+ 26D90CEB140D51290036A311 /* SkBounder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkBounder.h; path = core/SkBounder.h; sourceTree = "<group>"; };
+ 26D90CEC140D51290036A311 /* SkBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkBuffer.h; path = core/SkBuffer.h; sourceTree = "<group>"; };
+ 26D90CED140D51290036A311 /* SkCanvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkCanvas.h; path = core/SkCanvas.h; sourceTree = "<group>"; };
+ 26D90CEE140D51290036A311 /* SkChunkAlloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkChunkAlloc.h; path = core/SkChunkAlloc.h; sourceTree = "<group>"; };
+ 26D90CEF140D51290036A311 /* SkClampRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkClampRange.h; path = core/SkClampRange.h; sourceTree = "<group>"; };
+ 26D90CF0140D51290036A311 /* SkClipStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkClipStack.h; path = core/SkClipStack.h; sourceTree = "<group>"; };
+ 26D90CF1140D51290036A311 /* SkColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkColor.h; path = core/SkColor.h; sourceTree = "<group>"; };
+ 26D90CF2140D51290036A311 /* SkColorFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkColorFilter.h; path = core/SkColorFilter.h; sourceTree = "<group>"; };
+ 26D90CF3140D51290036A311 /* SkColorPriv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkColorPriv.h; path = core/SkColorPriv.h; sourceTree = "<group>"; };
+ 26D90CF4140D51290036A311 /* SkColorShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkColorShader.h; path = core/SkColorShader.h; sourceTree = "<group>"; };
+ 26D90CF5140D51290036A311 /* SkComposeShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkComposeShader.h; path = core/SkComposeShader.h; sourceTree = "<group>"; };
+ 26D90CF6140D51290036A311 /* SkDeque.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkDeque.h; path = core/SkDeque.h; sourceTree = "<group>"; };
+ 26D90CF7140D51290036A311 /* SkDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkDescriptor.h; path = core/SkDescriptor.h; sourceTree = "<group>"; };
+ 26D90CF8140D51290036A311 /* SkDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkDevice.h; path = core/SkDevice.h; sourceTree = "<group>"; };
+ 26D90CF9140D51290036A311 /* SkDither.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkDither.h; path = core/SkDither.h; sourceTree = "<group>"; };
+ 26D90CFA140D51290036A311 /* SkDraw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkDraw.h; path = core/SkDraw.h; sourceTree = "<group>"; };
+ 26D90CFB140D51290036A311 /* SkDrawFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkDrawFilter.h; path = core/SkDrawFilter.h; sourceTree = "<group>"; };
+ 26D90CFC140D51290036A311 /* SkDrawLooper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkDrawLooper.h; path = core/SkDrawLooper.h; sourceTree = "<group>"; };
+ 26D90CFD140D51290036A311 /* SkEndian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkEndian.h; path = core/SkEndian.h; sourceTree = "<group>"; };
+ 26D90CFE140D51290036A311 /* SkFDot6.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkFDot6.h; path = core/SkFDot6.h; sourceTree = "<group>"; };
+ 26D90CFF140D51290036A311 /* SkFixed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkFixed.h; path = core/SkFixed.h; sourceTree = "<group>"; };
+ 26D90D00140D51290036A311 /* SkFlate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkFlate.h; path = core/SkFlate.h; sourceTree = "<group>"; };
+ 26D90D01140D51290036A311 /* SkFlattenable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkFlattenable.h; path = core/SkFlattenable.h; sourceTree = "<group>"; };
+ 26D90D02140D51290036A311 /* SkFloatBits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkFloatBits.h; path = core/SkFloatBits.h; sourceTree = "<group>"; };
+ 26D90D03140D51290036A311 /* SkFloatingPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkFloatingPoint.h; path = core/SkFloatingPoint.h; sourceTree = "<group>"; };
+ 26D90D04140D51290036A311 /* SkFontHost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkFontHost.h; path = core/SkFontHost.h; sourceTree = "<group>"; };
+ 26D90D05140D51290036A311 /* SkGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkGeometry.h; path = core/SkGeometry.h; sourceTree = "<group>"; };
+ 26D90D06140D51290036A311 /* SkGlobals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkGlobals.h; path = core/SkGlobals.h; sourceTree = "<group>"; };
+ 26D90D07140D51290036A311 /* SkGraphics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkGraphics.h; path = core/SkGraphics.h; sourceTree = "<group>"; };
+ 26D90D08140D51290036A311 /* SkMMapStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkMMapStream.h; path = core/SkMMapStream.h; sourceTree = "<group>"; };
+ 26D90D09140D51290036A311 /* SkMallocPixelRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkMallocPixelRef.h; path = core/SkMallocPixelRef.h; sourceTree = "<group>"; };
+ 26D90D0A140D51290036A311 /* SkMask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkMask.h; path = core/SkMask.h; sourceTree = "<group>"; };
+ 26D90D0B140D51290036A311 /* SkMaskFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkMaskFilter.h; path = core/SkMaskFilter.h; sourceTree = "<group>"; };
+ 26D90D0C140D51290036A311 /* SkMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkMath.h; path = core/SkMath.h; sourceTree = "<group>"; };
+ 26D90D0D140D51290036A311 /* SkMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkMatrix.h; path = core/SkMatrix.h; sourceTree = "<group>"; };
+ 26D90D0E140D51290036A311 /* SkMetaData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkMetaData.h; path = core/SkMetaData.h; sourceTree = "<group>"; };
+ 26D90D0F140D51290036A311 /* SkOSFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkOSFile.h; path = core/SkOSFile.h; sourceTree = "<group>"; };
+ 26D90D10140D51290036A311 /* SkPackBits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPackBits.h; path = core/SkPackBits.h; sourceTree = "<group>"; };
+ 26D90D11140D51290036A311 /* SkPaint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPaint.h; path = core/SkPaint.h; sourceTree = "<group>"; };
+ 26D90D12140D51290036A311 /* SkPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPath.h; path = core/SkPath.h; sourceTree = "<group>"; };
+ 26D90D13140D51290036A311 /* SkPathEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPathEffect.h; path = core/SkPathEffect.h; sourceTree = "<group>"; };
+ 26D90D14140D51290036A311 /* SkPathMeasure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPathMeasure.h; path = core/SkPathMeasure.h; sourceTree = "<group>"; };
+ 26D90D15140D51290036A311 /* SkPerspIter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPerspIter.h; path = core/SkPerspIter.h; sourceTree = "<group>"; };
+ 26D90D16140D51290036A311 /* SkPicture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPicture.h; path = core/SkPicture.h; sourceTree = "<group>"; };
+ 26D90D17140D51290036A311 /* SkPixelRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPixelRef.h; path = core/SkPixelRef.h; sourceTree = "<group>"; };
+ 26D90D18140D51290036A311 /* SkPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPoint.h; path = core/SkPoint.h; sourceTree = "<group>"; };
+ 26D90D19140D51290036A311 /* SkPtrRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPtrRecorder.h; path = core/SkPtrRecorder.h; sourceTree = "<group>"; };
+ 26D90D1A140D51290036A311 /* SkRandom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkRandom.h; path = core/SkRandom.h; sourceTree = "<group>"; };
+ 26D90D1B140D51290036A311 /* SkRasterizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkRasterizer.h; path = core/SkRasterizer.h; sourceTree = "<group>"; };
+ 26D90D1C140D51290036A311 /* SkReader32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkReader32.h; path = core/SkReader32.h; sourceTree = "<group>"; };
+ 26D90D1D140D51290036A311 /* SkRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkRect.h; path = core/SkRect.h; sourceTree = "<group>"; };
+ 26D90D1E140D51290036A311 /* SkRefCnt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkRefCnt.h; path = core/SkRefCnt.h; sourceTree = "<group>"; };
+ 26D90D1F140D51290036A311 /* SkRefDict.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkRefDict.h; path = core/SkRefDict.h; sourceTree = "<group>"; };
+ 26D90D20140D51290036A311 /* SkRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkRegion.h; path = core/SkRegion.h; sourceTree = "<group>"; };
+ 26D90D21140D51290036A311 /* SkScalar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkScalar.h; path = core/SkScalar.h; sourceTree = "<group>"; };
+ 26D90D22140D51290036A311 /* SkScalarCompare.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkScalarCompare.h; path = core/SkScalarCompare.h; sourceTree = "<group>"; };
+ 26D90D23140D51290036A311 /* SkScalerContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkScalerContext.h; path = core/SkScalerContext.h; sourceTree = "<group>"; };
+ 26D90D24140D51290036A311 /* SkScan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkScan.h; path = core/SkScan.h; sourceTree = "<group>"; };
+ 26D90D25140D51290036A311 /* SkShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkShader.h; path = core/SkShader.h; sourceTree = "<group>"; };
+ 26D90D26140D51290036A311 /* SkStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkStream.h; path = core/SkStream.h; sourceTree = "<group>"; };
+ 26D90D27140D51290036A311 /* SkString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkString.h; path = core/SkString.h; sourceTree = "<group>"; };
+ 26D90D28140D51290036A311 /* SkStroke.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkStroke.h; path = core/SkStroke.h; sourceTree = "<group>"; };
+ 26D90D29140D51290036A311 /* SkTDArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTDArray.h; path = core/SkTDArray.h; sourceTree = "<group>"; };
+ 26D90D2A140D51290036A311 /* SkTDStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTDStack.h; path = core/SkTDStack.h; sourceTree = "<group>"; };
+ 26D90D2B140D51290036A311 /* SkTDict.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTDict.h; path = core/SkTDict.h; sourceTree = "<group>"; };
+ 26D90D2C140D51290036A311 /* SkTRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTRegistry.h; path = core/SkTRegistry.h; sourceTree = "<group>"; };
+ 26D90D2E140D51290036A311 /* SkTSearch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTSearch.h; path = core/SkTSearch.h; sourceTree = "<group>"; };
+ 26D90D2F140D51290036A311 /* SkTemplates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTemplates.h; path = core/SkTemplates.h; sourceTree = "<group>"; };
+ 26D90D30140D51290036A311 /* SkThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkThread.h; path = core/SkThread.h; sourceTree = "<group>"; };
+ 26D90D31140D51290036A311 /* SkThread_platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkThread_platform.h; path = core/SkThread_platform.h; sourceTree = "<group>"; };
+ 26D90D32140D51290036A311 /* SkTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTime.h; path = core/SkTime.h; sourceTree = "<group>"; };
+ 26D90D33140D51290036A311 /* SkTypeface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTypeface.h; path = core/SkTypeface.h; sourceTree = "<group>"; };
+ 26D90D34140D51290036A311 /* SkTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTypes.h; path = core/SkTypes.h; sourceTree = "<group>"; };
+ 26D90D35140D51290036A311 /* SkUnPreMultiply.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkUnPreMultiply.h; path = core/SkUnPreMultiply.h; sourceTree = "<group>"; };
+ 26D90D36140D51290036A311 /* SkUnitMapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkUnitMapper.h; path = core/SkUnitMapper.h; sourceTree = "<group>"; };
+ 26D90D37140D51290036A311 /* SkUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkUtils.h; path = core/SkUtils.h; sourceTree = "<group>"; };
+ 26D90D38140D51290036A311 /* SkWriter32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkWriter32.h; path = core/SkWriter32.h; sourceTree = "<group>"; };
+ 26D90D39140D51290036A311 /* SkXfermode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkXfermode.h; path = core/SkXfermode.h; sourceTree = "<group>"; };
+ 26D90D3A140D51290036A311 /* SkEdgeClipper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkEdgeClipper.h; path = core/SkEdgeClipper.h; sourceTree = "<group>"; };
+ 26D90D3B140D51290036A311 /* SkLineClipper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkLineClipper.h; path = core/SkLineClipper.h; sourceTree = "<group>"; };
+ 26D90D3C140D51290036A311 /* SkPostConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPostConfig.h; path = core/SkPostConfig.h; sourceTree = "<group>"; };
+ 26D90D3D140D51290036A311 /* SkPreConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPreConfig.h; path = core/SkPreConfig.h; sourceTree = "<group>"; };
+ 26D90D3E140D51290036A311 /* SkRelay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkRelay.h; path = core/SkRelay.h; sourceTree = "<group>"; };
+ 26D90D3F140D51290036A311 /* SkShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkShape.h; path = core/SkShape.h; sourceTree = "<group>"; };
+ 26D90D40140D51290036A311 /* SkSize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkSize.h; path = core/SkSize.h; sourceTree = "<group>"; };
+ 26D90D41140D51290036A311 /* SkTLazy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTLazy.h; path = core/SkTLazy.h; sourceTree = "<group>"; };
+ 26D90D42140D51290036A311 /* SkData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkData.h; path = core/SkData.h; sourceTree = "<group>"; };
+ 26D90D44140D51290036A311 /* SkCGUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCGUtils.h; sourceTree = "<group>"; };
+ 26D90D46140D51290036A311 /* SkData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkData.cpp; path = core/SkData.cpp; sourceTree = "<group>"; };
+ 26D90D48140D51290036A311 /* ARGB32_Clamp_Bilinear_BitmapShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARGB32_Clamp_Bilinear_BitmapShader.h; sourceTree = "<group>"; };
+ 26D90D49140D51290036A311 /* Sk64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Sk64.cpp; sourceTree = "<group>"; };
+ 26D90D4A140D51290036A311 /* SkAdvancedTypefaceMetrics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAdvancedTypefaceMetrics.cpp; sourceTree = "<group>"; };
+ 26D90D4B140D51290036A311 /* SkAlphaRuns.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAlphaRuns.cpp; sourceTree = "<group>"; };
+ 26D90D4C140D51290036A311 /* SkAntiRun.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAntiRun.h; sourceTree = "<group>"; };
+ 26D90D4D140D51290036A311 /* SkBitmap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBitmap.cpp; sourceTree = "<group>"; };
+ 26D90D4E140D51290036A311 /* SkBitmapProcShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBitmapProcShader.cpp; sourceTree = "<group>"; };
+ 26D90D4F140D51290036A311 /* SkBitmapProcShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapProcShader.h; sourceTree = "<group>"; };
+ 26D90D50140D51290036A311 /* SkBitmapProcState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBitmapProcState.cpp; sourceTree = "<group>"; };
+ 26D90D51140D51290036A311 /* SkBitmapProcState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapProcState.h; sourceTree = "<group>"; };
+ 26D90D52140D51290036A311 /* SkBitmapProcState_matrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapProcState_matrix.h; sourceTree = "<group>"; };
+ 26D90D53140D51290036A311 /* SkBitmapProcState_matrixProcs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBitmapProcState_matrixProcs.cpp; sourceTree = "<group>"; };
+ 26D90D54140D51290036A311 /* SkBitmapProcState_sample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapProcState_sample.h; sourceTree = "<group>"; };
+ 26D90D55140D51290036A311 /* SkBitmapSampler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBitmapSampler.cpp; sourceTree = "<group>"; };
+ 26D90D56140D51290036A311 /* SkBitmapSampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapSampler.h; sourceTree = "<group>"; };
+ 26D90D57140D51290036A311 /* SkBitmapSamplerTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapSamplerTemplate.h; sourceTree = "<group>"; };
+ 26D90D58140D51290036A311 /* SkBitmapShader16BilerpTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapShader16BilerpTemplate.h; sourceTree = "<group>"; };
+ 26D90D59140D51290036A311 /* SkBitmapShaderTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapShaderTemplate.h; sourceTree = "<group>"; };
+ 26D90D5A140D51290036A311 /* SkBitmap_scroll.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBitmap_scroll.cpp; sourceTree = "<group>"; };
+ 26D90D5B140D51290036A311 /* SkBlitBWMaskTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBlitBWMaskTemplate.h; sourceTree = "<group>"; };
+ 26D90D5C140D51290036A311 /* SkBlitRow_D16.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitRow_D16.cpp; sourceTree = "<group>"; };
+ 26D90D5D140D51290036A311 /* SkBlitRow_D32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitRow_D32.cpp; sourceTree = "<group>"; };
+ 26D90D5E140D51290036A311 /* SkBlitRow_D4444.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitRow_D4444.cpp; sourceTree = "<group>"; };
+ 26D90D5F140D51290036A311 /* SkBlitter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitter.cpp; sourceTree = "<group>"; };
+ 26D90D60140D51290036A311 /* SkBlitter_4444.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitter_4444.cpp; sourceTree = "<group>"; };
+ 26D90D61140D51290036A311 /* SkBlitter_A1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitter_A1.cpp; sourceTree = "<group>"; };
+ 26D90D62140D51290036A311 /* SkBlitter_A8.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitter_A8.cpp; sourceTree = "<group>"; };
+ 26D90D63140D51290036A311 /* SkBlitter_ARGB32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitter_ARGB32.cpp; sourceTree = "<group>"; };
+ 26D90D64140D51290036A311 /* SkBlitter_RGB16.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitter_RGB16.cpp; sourceTree = "<group>"; };
+ 26D90D65140D51290036A311 /* SkBlitter_Sprite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitter_Sprite.cpp; sourceTree = "<group>"; };
+ 26D90D66140D51290036A311 /* SkBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBuffer.cpp; sourceTree = "<group>"; };
+ 26D90D67140D51290036A311 /* SkCanvas.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCanvas.cpp; sourceTree = "<group>"; };
+ 26D90D68140D51290036A311 /* SkChunkAlloc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkChunkAlloc.cpp; sourceTree = "<group>"; };
+ 26D90D69140D51290036A311 /* SkClampRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkClampRange.cpp; sourceTree = "<group>"; };
+ 26D90D6A140D51290036A311 /* SkClipStack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkClipStack.cpp; sourceTree = "<group>"; };
+ 26D90D6B140D51290036A311 /* SkColor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkColor.cpp; sourceTree = "<group>"; };
+ 26D90D6C140D51290036A311 /* SkColorFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkColorFilter.cpp; sourceTree = "<group>"; };
+ 26D90D6D140D51290036A311 /* SkColorTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkColorTable.cpp; sourceTree = "<group>"; };
+ 26D90D6E140D51290036A311 /* SkComposeShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkComposeShader.cpp; sourceTree = "<group>"; };
+ 26D90D6F140D51290036A311 /* SkConcaveToTriangles.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkConcaveToTriangles.cpp; sourceTree = "<group>"; };
+ 26D90D70140D51290036A311 /* SkConcaveToTriangles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkConcaveToTriangles.h; sourceTree = "<group>"; };
+ 26D90D71140D51290036A311 /* SkCordic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCordic.cpp; sourceTree = "<group>"; };
+ 26D90D72140D51290036A311 /* SkCordic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCordic.h; sourceTree = "<group>"; };
+ 26D90D73140D51290036A311 /* SkCoreBlitters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCoreBlitters.h; sourceTree = "<group>"; };
+ 26D90D74140D51290036A311 /* SkCubicClipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCubicClipper.cpp; sourceTree = "<group>"; };
+ 26D90D75140D51290036A311 /* SkCubicClipper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCubicClipper.h; sourceTree = "<group>"; };
+ 26D90D76140D51290036A311 /* SkDebug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDebug.cpp; sourceTree = "<group>"; };
+ 26D90D77140D51290036A311 /* SkDeque.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDeque.cpp; sourceTree = "<group>"; };
+ 26D90D78140D51290036A311 /* SkDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDevice.cpp; sourceTree = "<group>"; };
+ 26D90D79140D51290036A311 /* SkDither.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDither.cpp; sourceTree = "<group>"; };
+ 26D90D7A140D51290036A311 /* SkDraw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDraw.cpp; sourceTree = "<group>"; };
+ 26D90D7B140D51290036A311 /* SkDrawProcs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawProcs.h; sourceTree = "<group>"; };
+ 26D90D7C140D51290036A311 /* SkEdge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkEdge.cpp; sourceTree = "<group>"; };
+ 26D90D7D140D51290036A311 /* SkEdge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkEdge.h; sourceTree = "<group>"; };
+ 26D90D7E140D51290036A311 /* SkEdgeBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkEdgeBuilder.cpp; sourceTree = "<group>"; };
+ 26D90D7F140D51290036A311 /* SkEdgeClipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkEdgeClipper.cpp; sourceTree = "<group>"; };
+ 26D90D80140D51290036A311 /* SkFP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkFP.h; sourceTree = "<group>"; };
+ 26D90D81140D51290036A311 /* SkFilterProc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFilterProc.cpp; sourceTree = "<group>"; };
+ 26D90D82140D51290036A311 /* SkFilterProc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkFilterProc.h; sourceTree = "<group>"; };
+ 26D90D83140D51290036A311 /* SkFlate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFlate.cpp; sourceTree = "<group>"; };
+ 26D90D84140D51290036A311 /* SkFlattenable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFlattenable.cpp; sourceTree = "<group>"; };
+ 26D90D85140D51290036A311 /* SkFloat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFloat.cpp; sourceTree = "<group>"; };
+ 26D90D86140D51290036A311 /* SkFloat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkFloat.h; sourceTree = "<group>"; };
+ 26D90D87140D51290036A311 /* SkFloatBits.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFloatBits.cpp; sourceTree = "<group>"; };
+ 26D90D88140D51290036A311 /* SkFontHost.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFontHost.cpp; sourceTree = "<group>"; };
+ 26D90D89140D51290036A311 /* SkGeometry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGeometry.cpp; sourceTree = "<group>"; };
+ 26D90D8A140D51290036A311 /* SkGlobals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGlobals.cpp; sourceTree = "<group>"; };
+ 26D90D8B140D51290036A311 /* SkGlyphCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGlyphCache.cpp; sourceTree = "<group>"; };
+ 26D90D8C140D51290036A311 /* SkGlyphCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkGlyphCache.h; sourceTree = "<group>"; };
+ 26D90D8D140D51290036A311 /* SkGraphics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGraphics.cpp; sourceTree = "<group>"; };
+ 26D90D8E140D51290036A311 /* SkLineClipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkLineClipper.cpp; sourceTree = "<group>"; };
+ 26D90D8F140D51290036A311 /* SkMMapStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMMapStream.cpp; sourceTree = "<group>"; };
+ 26D90D90140D51290036A311 /* SkMallocPixelRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMallocPixelRef.cpp; sourceTree = "<group>"; };
+ 26D90D91140D51290036A311 /* SkMask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMask.cpp; sourceTree = "<group>"; };
+ 26D90D92140D51290036A311 /* SkMaskFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMaskFilter.cpp; sourceTree = "<group>"; };
+ 26D90D93140D51290036A311 /* SkMath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMath.cpp; sourceTree = "<group>"; };
+ 26D90D94140D51290036A311 /* SkMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMatrix.cpp; sourceTree = "<group>"; };
+ 26D90D95140D51290036A311 /* SkMetaData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMetaData.cpp; sourceTree = "<group>"; };
+ 26D90D96140D51290036A311 /* SkPackBits.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPackBits.cpp; sourceTree = "<group>"; };
+ 26D90D97140D51290036A311 /* SkPaint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPaint.cpp; sourceTree = "<group>"; };
+ 26D90D98140D51290036A311 /* SkPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPath.cpp; sourceTree = "<group>"; };
+ 26D90D99140D51290036A311 /* SkPathEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPathEffect.cpp; sourceTree = "<group>"; };
+ 26D90D9A140D51290036A311 /* SkPathHeap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPathHeap.cpp; sourceTree = "<group>"; };
+ 26D90D9B140D51290036A311 /* SkPathHeap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPathHeap.h; sourceTree = "<group>"; };
+ 26D90D9C140D51290036A311 /* SkPathMeasure.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPathMeasure.cpp; sourceTree = "<group>"; };
+ 26D90D9D140D51290036A311 /* SkPicture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPicture.cpp; sourceTree = "<group>"; };
+ 26D90D9E140D51290036A311 /* SkPictureFlat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPictureFlat.cpp; sourceTree = "<group>"; };
+ 26D90D9F140D51290036A311 /* SkPictureFlat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPictureFlat.h; sourceTree = "<group>"; };
+ 26D90DA0140D51290036A311 /* SkPicturePlayback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPicturePlayback.cpp; sourceTree = "<group>"; };
+ 26D90DA1140D51290036A311 /* SkPicturePlayback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPicturePlayback.h; sourceTree = "<group>"; };
+ 26D90DA2140D51290036A311 /* SkPictureRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPictureRecord.cpp; sourceTree = "<group>"; };
+ 26D90DA3140D51290036A311 /* SkPictureRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPictureRecord.h; sourceTree = "<group>"; };
+ 26D90DA4140D51290036A311 /* SkPixelRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPixelRef.cpp; sourceTree = "<group>"; };
+ 26D90DA5140D51290036A311 /* SkPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPoint.cpp; sourceTree = "<group>"; };
+ 26D90DA6140D51290036A311 /* SkProcSpriteBlitter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkProcSpriteBlitter.cpp; sourceTree = "<group>"; };
+ 26D90DA7140D51290036A311 /* SkPtrRecorder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPtrRecorder.cpp; sourceTree = "<group>"; };
+ 26D90DA8140D51290036A311 /* SkQuadClipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkQuadClipper.cpp; sourceTree = "<group>"; };
+ 26D90DA9140D51290036A311 /* SkQuadClipper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkQuadClipper.h; sourceTree = "<group>"; };
+ 26D90DAA140D51290036A311 /* SkRasterizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkRasterizer.cpp; sourceTree = "<group>"; };
+ 26D90DAB140D51290036A311 /* SkRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkRect.cpp; sourceTree = "<group>"; };
+ 26D90DAC140D51290036A311 /* SkRefDict.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkRefDict.cpp; sourceTree = "<group>"; };
+ 26D90DAD140D51290036A311 /* SkRegion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkRegion.cpp; sourceTree = "<group>"; };
+ 26D90DAE140D51290036A311 /* SkRegionPriv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkRegionPriv.h; sourceTree = "<group>"; };
+ 26D90DAF140D51290036A311 /* SkRegion_path.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkRegion_path.cpp; sourceTree = "<group>"; };
+ 26D90DB0140D51290036A311 /* SkScalar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScalar.cpp; sourceTree = "<group>"; };
+ 26D90DB1140D51290036A311 /* SkScalerContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScalerContext.cpp; sourceTree = "<group>"; };
+ 26D90DB2140D51290036A311 /* SkScan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScan.cpp; sourceTree = "<group>"; };
+ 26D90DB3140D51290036A311 /* SkScanPriv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkScanPriv.h; sourceTree = "<group>"; };
+ 26D90DB4140D51290036A311 /* SkScan_AntiPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScan_AntiPath.cpp; sourceTree = "<group>"; };
+ 26D90DB5140D51290036A311 /* SkScan_Antihair.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScan_Antihair.cpp; sourceTree = "<group>"; };
+ 26D90DB6140D51290036A311 /* SkScan_Hairline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScan_Hairline.cpp; sourceTree = "<group>"; };
+ 26D90DB7140D51290036A311 /* SkScan_Path.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScan_Path.cpp; sourceTree = "<group>"; };
+ 26D90DB8140D51290036A311 /* SkShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkShader.cpp; sourceTree = "<group>"; };
+ 26D90DB9140D51290036A311 /* SkShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkShape.cpp; sourceTree = "<group>"; };
+ 26D90DBA140D51290036A311 /* SkSinTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSinTable.h; sourceTree = "<group>"; };
+ 26D90DBB140D51290036A311 /* SkSpriteBlitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSpriteBlitter.h; sourceTree = "<group>"; };
+ 26D90DBC140D51290036A311 /* SkSpriteBlitterTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSpriteBlitterTemplate.h; sourceTree = "<group>"; };
+ 26D90DBD140D51290036A311 /* SkSpriteBlitter_ARGB32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSpriteBlitter_ARGB32.cpp; sourceTree = "<group>"; };
+ 26D90DBE140D51290036A311 /* SkSpriteBlitter_RGB16.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSpriteBlitter_RGB16.cpp; sourceTree = "<group>"; };
+ 26D90DBF140D51290036A311 /* SkStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkStream.cpp; sourceTree = "<group>"; };
+ 26D90DC0140D51290036A311 /* SkString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkString.cpp; sourceTree = "<group>"; };
+ 26D90DC1140D51290036A311 /* SkStroke.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkStroke.cpp; sourceTree = "<group>"; };
+ 26D90DC2140D51290036A311 /* SkStrokerPriv.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkStrokerPriv.cpp; sourceTree = "<group>"; };
+ 26D90DC3140D51290036A311 /* SkStrokerPriv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkStrokerPriv.h; sourceTree = "<group>"; };
+ 26D90DC4140D51290036A311 /* SkTSearch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTSearch.cpp; sourceTree = "<group>"; };
+ 26D90DC5140D51290036A311 /* SkTSort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTSort.h; sourceTree = "<group>"; };
+ 26D90DC6140D51290036A311 /* SkTemplatesPriv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTemplatesPriv.h; sourceTree = "<group>"; };
+ 26D90DC7140D51290036A311 /* SkTextFormatParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTextFormatParams.h; sourceTree = "<group>"; };
+ 26D90DC8140D51290036A311 /* SkTypeface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTypeface.cpp; sourceTree = "<group>"; };
+ 26D90DC9140D51290036A311 /* SkTypefaceCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTypefaceCache.cpp; sourceTree = "<group>"; };
+ 26D90DCA140D51290036A311 /* SkTypefaceCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTypefaceCache.h; sourceTree = "<group>"; };
+ 26D90DCB140D51290036A311 /* SkUnPreMultiply.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkUnPreMultiply.cpp; sourceTree = "<group>"; };
+ 26D90DCC140D51290036A311 /* SkUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkUtils.cpp; sourceTree = "<group>"; };
+ 26D90DCD140D51290036A311 /* SkWriter32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkWriter32.cpp; sourceTree = "<group>"; };
+ 26D90DCE140D51290036A311 /* SkXfermode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkXfermode.cpp; sourceTree = "<group>"; };
+ 26D90DD2140D51290036A311 /* SkDebug_stdio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDebug_stdio.cpp; sourceTree = "<group>"; };
+ 26D90DD3140D51290036A311 /* SkFontHost_mac_coretext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFontHost_mac_coretext.cpp; sourceTree = "<group>"; };
+ 26D90DD4140D51290036A311 /* SkGlobals_global.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGlobals_global.cpp; sourceTree = "<group>"; };
+ 26D90DD5140D51290036A311 /* SkMemory_malloc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMemory_malloc.cpp; sourceTree = "<group>"; };
+ 26D90DD6140D51290036A311 /* SkThread_pthread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkThread_pthread.cpp; sourceTree = "<group>"; };
+ 26D90DD7140D51290036A311 /* SkTime_Unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTime_Unix.cpp; sourceTree = "<group>"; };
+ 26D90DD8140D51290036A311 /* SkXMLParser_empty.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkXMLParser_empty.cpp; sourceTree = "<group>"; };
+ 26D90DD9140D51290036A311 /* sk_predefined_gamma.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sk_predefined_gamma.h; sourceTree = "<group>"; };
+ 26D90DDC140D51290036A311 /* Sk1DPathEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Sk1DPathEffect.h; sourceTree = "<group>"; };
+ 26D90DDD140D51290036A311 /* Sk2DPathEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Sk2DPathEffect.h; sourceTree = "<group>"; };
+ 26D90DDE140D51290036A311 /* SkAvoidXfermode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAvoidXfermode.h; sourceTree = "<group>"; };
+ 26D90DDF140D51290036A311 /* SkBlurDrawLooper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBlurDrawLooper.h; sourceTree = "<group>"; };
+ 26D90DE0140D51290036A311 /* SkBlurMaskFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBlurMaskFilter.h; sourceTree = "<group>"; };
+ 26D90DE1140D51290036A311 /* SkColorMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkColorMatrix.h; sourceTree = "<group>"; };
+ 26D90DE2140D51290036A311 /* SkColorMatrixFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkColorMatrixFilter.h; sourceTree = "<group>"; };
+ 26D90DE3140D51290036A311 /* SkCornerPathEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCornerPathEffect.h; sourceTree = "<group>"; };
+ 26D90DE4140D51290036A311 /* SkDashPathEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDashPathEffect.h; sourceTree = "<group>"; };
+ 26D90DE5140D51290036A311 /* SkDiscretePathEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDiscretePathEffect.h; sourceTree = "<group>"; };
+ 26D90DE6140D51290036A311 /* SkDrawExtraPathEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawExtraPathEffect.h; sourceTree = "<group>"; };
+ 26D90DE7140D51290036A311 /* SkEmbossMaskFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkEmbossMaskFilter.h; sourceTree = "<group>"; };
+ 26D90DE8140D51290036A311 /* SkGradientShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkGradientShader.h; sourceTree = "<group>"; };
+ 26D90DE9140D51290036A311 /* SkGroupShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkGroupShape.h; sourceTree = "<group>"; };
+ 26D90DEA140D51290036A311 /* SkKernel33MaskFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkKernel33MaskFilter.h; sourceTree = "<group>"; };
+ 26D90DEB140D51290036A311 /* SkLayerDrawLooper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkLayerDrawLooper.h; sourceTree = "<group>"; };
+ 26D90DEC140D51290036A311 /* SkLayerRasterizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkLayerRasterizer.h; sourceTree = "<group>"; };
+ 26D90DED140D51290036A311 /* SkPaintFlagsDrawFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPaintFlagsDrawFilter.h; sourceTree = "<group>"; };
+ 26D90DEE140D51290036A311 /* SkPixelXorXfermode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPixelXorXfermode.h; sourceTree = "<group>"; };
+ 26D90DEF140D51290036A311 /* SkPorterDuff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPorterDuff.h; sourceTree = "<group>"; };
+ 26D90DF0140D51290036A311 /* SkRectShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkRectShape.h; sourceTree = "<group>"; };
+ 26D90DF1140D51290036A311 /* SkTransparentShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTransparentShader.h; sourceTree = "<group>"; };
+ 26D90DF3140D51290036A311 /* Sk1DPathEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Sk1DPathEffect.cpp; sourceTree = "<group>"; };
+ 26D90DF4140D51290036A311 /* Sk2DPathEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Sk2DPathEffect.cpp; sourceTree = "<group>"; };
+ 26D90DF5140D51290036A311 /* SkAvoidXfermode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAvoidXfermode.cpp; sourceTree = "<group>"; };
+ 26D90DF6140D51290036A311 /* SkBitmapCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBitmapCache.cpp; sourceTree = "<group>"; };
+ 26D90DF7140D51290036A311 /* SkBitmapCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapCache.h; sourceTree = "<group>"; };
+ 26D90DF8140D51290036A311 /* SkBlurDrawLooper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlurDrawLooper.cpp; sourceTree = "<group>"; };
+ 26D90DF9140D51290036A311 /* SkBlurMask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlurMask.cpp; sourceTree = "<group>"; };
+ 26D90DFA140D51290036A311 /* SkBlurMask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBlurMask.h; sourceTree = "<group>"; };
+ 26D90DFB140D51290036A311 /* SkBlurMaskFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlurMaskFilter.cpp; sourceTree = "<group>"; };
+ 26D90DFC140D51290036A311 /* SkColorFilters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkColorFilters.cpp; sourceTree = "<group>"; };
+ 26D90DFD140D51290036A311 /* SkColorMatrixFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkColorMatrixFilter.cpp; sourceTree = "<group>"; };
+ 26D90DFE140D51290036A311 /* SkCornerPathEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCornerPathEffect.cpp; sourceTree = "<group>"; };
+ 26D90DFF140D51290036A311 /* SkDashPathEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDashPathEffect.cpp; sourceTree = "<group>"; };
+ 26D90E00140D51290036A311 /* SkDiscretePathEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDiscretePathEffect.cpp; sourceTree = "<group>"; };
+ 26D90E01140D51290036A311 /* SkEmbossMask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkEmbossMask.cpp; sourceTree = "<group>"; };
+ 26D90E02140D51290036A311 /* SkEmbossMask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkEmbossMask.h; sourceTree = "<group>"; };
+ 26D90E03140D51290036A311 /* SkEmbossMaskFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkEmbossMaskFilter.cpp; sourceTree = "<group>"; };
+ 26D90E04140D51290036A311 /* SkEmbossMask_Table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkEmbossMask_Table.h; sourceTree = "<group>"; };
+ 26D90E05140D51290036A311 /* SkGradientShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGradientShader.cpp; sourceTree = "<group>"; };
+ 26D90E06140D51290036A311 /* SkGroupShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGroupShape.cpp; sourceTree = "<group>"; };
+ 26D90E07140D51290036A311 /* SkKernel33MaskFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkKernel33MaskFilter.cpp; sourceTree = "<group>"; };
+ 26D90E08140D51290036A311 /* SkLayerDrawLooper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkLayerDrawLooper.cpp; sourceTree = "<group>"; };
+ 26D90E09140D51290036A311 /* SkLayerRasterizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkLayerRasterizer.cpp; sourceTree = "<group>"; };
+ 26D90E0A140D51290036A311 /* SkPaintFlagsDrawFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPaintFlagsDrawFilter.cpp; sourceTree = "<group>"; };
+ 26D90E0B140D51290036A311 /* SkPixelXorXfermode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPixelXorXfermode.cpp; sourceTree = "<group>"; };
+ 26D90E0C140D51290036A311 /* SkPorterDuff.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPorterDuff.cpp; sourceTree = "<group>"; };
+ 26D90E0D140D51290036A311 /* SkRadialGradient_Table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkRadialGradient_Table.h; sourceTree = "<group>"; };
+ 26D90E0E140D51290036A311 /* SkRectShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkRectShape.cpp; sourceTree = "<group>"; };
+ 26D90E0F140D51290036A311 /* SkTransparentShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTransparentShader.cpp; sourceTree = "<group>"; };
+ 26D90E13140D51290036A311 /* FlingState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FlingState.h; sourceTree = "<group>"; };
+ 26D90E14140D51290036A311 /* GrGLDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGLDefines.h; sourceTree = "<group>"; };
+ 26D90E15140D51290036A311 /* GrTemplates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTemplates.h; sourceTree = "<group>"; };
+ 26D90E16140D51290036A311 /* GrAllocPool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrAllocPool.h; sourceTree = "<group>"; };
+ 26D90E17140D51290036A311 /* GrAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrAllocator.h; sourceTree = "<group>"; };
+ 26D90E18140D51290036A311 /* GrAtlas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrAtlas.h; sourceTree = "<group>"; };
+ 26D90E19140D51290036A311 /* GrClip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrClip.h; sourceTree = "<group>"; };
+ 26D90E1A140D51290036A311 /* GrClipIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrClipIterator.h; sourceTree = "<group>"; };
+ 26D90E1B140D51290036A311 /* GrColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrColor.h; sourceTree = "<group>"; };
+ 26D90E1C140D51290036A311 /* GrConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrConfig.h; sourceTree = "<group>"; };
+ 26D90E1D140D51290036A311 /* GrContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrContext.h; sourceTree = "<group>"; };
+ 26D90E1E140D51290036A311 /* GrContext_impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrContext_impl.h; sourceTree = "<group>"; };
+ 26D90E1F140D51290036A311 /* GrDrawTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrDrawTarget.h; sourceTree = "<group>"; };
+ 26D90E20140D51290036A311 /* GrFontScaler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrFontScaler.h; sourceTree = "<group>"; };
+ 26D90E21140D51290036A311 /* GrGLConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGLConfig.h; sourceTree = "<group>"; };
+ 26D90E22140D51290036A311 /* GrGLConfig_chrome.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGLConfig_chrome.h; sourceTree = "<group>"; };
+ 26D90E23140D51290036A311 /* GrGLInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGLInterface.h; sourceTree = "<group>"; };
+ 26D90E24140D51290036A311 /* GrGeometryBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGeometryBuffer.h; sourceTree = "<group>"; };
+ 26D90E25140D51290036A311 /* GrGlyph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGlyph.h; sourceTree = "<group>"; };
+ 26D90E26140D51290036A311 /* GrGpu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGpu.h; sourceTree = "<group>"; };
+ 26D90E27140D51290036A311 /* GrGpuVertex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGpuVertex.h; sourceTree = "<group>"; };
+ 26D90E28140D51290036A311 /* GrIPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrIPoint.h; sourceTree = "<group>"; };
+ 26D90E29140D51290036A311 /* GrInOrderDrawBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrInOrderDrawBuffer.h; sourceTree = "<group>"; };
+ 26D90E2A140D51290036A311 /* GrIndexBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrIndexBuffer.h; sourceTree = "<group>"; };
+ 26D90E2B140D51290036A311 /* GrInstanceCounter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrInstanceCounter.h; sourceTree = "<group>"; };
+ 26D90E2C140D51290036A311 /* GrKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrKey.h; sourceTree = "<group>"; };
+ 26D90E2D140D51290036A311 /* GrMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrMatrix.h; sourceTree = "<group>"; };
+ 26D90E2E140D51290036A311 /* GrMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrMesh.h; sourceTree = "<group>"; };
+ 26D90E2F140D51290036A311 /* GrNoncopyable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrNoncopyable.h; sourceTree = "<group>"; };
+ 26D90E30140D51290036A311 /* GrPaint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPaint.h; sourceTree = "<group>"; };
+ 26D90E31140D51290036A311 /* GrPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPath.h; sourceTree = "<group>"; };
+ 26D90E32140D51290036A311 /* GrPathRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPathRenderer.h; sourceTree = "<group>"; };
+ 26D90E33140D51290036A311 /* GrPathSink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPathSink.h; sourceTree = "<group>"; };
+ 26D90E34140D51290036A311 /* GrPlotMgr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPlotMgr.h; sourceTree = "<group>"; };
+ 26D90E35140D51290036A311 /* GrPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPoint.h; sourceTree = "<group>"; };
+ 26D90E36140D51290036A311 /* GrRandom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrRandom.h; sourceTree = "<group>"; };
+ 26D90E37140D51290036A311 /* GrRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrRect.h; sourceTree = "<group>"; };
+ 26D90E38140D51290036A311 /* GrRectanizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrRectanizer.h; sourceTree = "<group>"; };
+ 26D90E39140D51290036A311 /* GrRefCnt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrRefCnt.h; sourceTree = "<group>"; };
+ 26D90E3A140D51290036A311 /* GrResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrResource.h; sourceTree = "<group>"; };
+ 26D90E3B140D51290036A311 /* GrSamplerState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrSamplerState.h; sourceTree = "<group>"; };
+ 26D90E3C140D51290036A311 /* GrScalar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrScalar.h; sourceTree = "<group>"; };
+ 26D90E3D140D51290036A311 /* GrStencil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrStencil.h; sourceTree = "<group>"; };
+ 26D90E3E140D51290036A311 /* GrStopwatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrStopwatch.h; sourceTree = "<group>"; };
+ 26D90E3F140D51290036A311 /* GrStringBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrStringBuilder.h; sourceTree = "<group>"; };
+ 26D90E40140D51290036A311 /* GrTArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTArray.h; sourceTree = "<group>"; };
+ 26D90E41140D51290036A311 /* GrTBSearch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTBSearch.h; sourceTree = "<group>"; };
+ 26D90E42140D51290036A311 /* GrTDArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTDArray.h; sourceTree = "<group>"; };
+ 26D90E43140D51290036A311 /* GrTHashCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTHashCache.h; sourceTree = "<group>"; };
+ 26D90E44140D51290036A311 /* GrTLList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTLList.h; sourceTree = "<group>"; };
+ 26D90E45140D51290036A311 /* GrTesselatedPathRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTesselatedPathRenderer.h; sourceTree = "<group>"; };
+ 26D90E46140D51290036A311 /* GrTextContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTextContext.h; sourceTree = "<group>"; };
+ 26D90E47140D51290036A311 /* GrTextStrike.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTextStrike.h; sourceTree = "<group>"; };
+ 26D90E48140D51290036A311 /* GrTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTexture.h; sourceTree = "<group>"; };
+ 26D90E49140D51290036A311 /* GrTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTypes.h; sourceTree = "<group>"; };
+ 26D90E4A140D51290036A311 /* GrUserConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrUserConfig.h; sourceTree = "<group>"; };
+ 26D90E4B140D51290036A311 /* GrVertexBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrVertexBuffer.h; sourceTree = "<group>"; };
+ 26D90E4D140D51290036A311 /* GrAddPathRenderers_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrAddPathRenderers_none.cpp; sourceTree = "<group>"; };
+ 26D90E4E140D51290036A311 /* GrDefaultPathRenderer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrDefaultPathRenderer.cpp; sourceTree = "<group>"; };
+ 26D90E4F140D51290036A311 /* GrDefaultPathRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrDefaultPathRenderer.h; sourceTree = "<group>"; };
+ 26D90E50140D51290036A311 /* GrGLStencilBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLStencilBuffer.cpp; sourceTree = "<group>"; };
+ 26D90E51140D51290036A311 /* GrGLStencilBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGLStencilBuffer.h; sourceTree = "<group>"; };
+ 26D90E52140D51290036A311 /* GrPathRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPathRenderer.h; sourceTree = "<group>"; };
+ 26D90E53140D51290036A311 /* GrPathRendererChain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrPathRendererChain.cpp; sourceTree = "<group>"; };
+ 26D90E54140D51290036A311 /* GrPathRendererChain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPathRendererChain.h; sourceTree = "<group>"; };
+ 26D90E55140D51290036A311 /* GrStencilBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrStencilBuffer.cpp; sourceTree = "<group>"; };
+ 26D90E56140D51290036A311 /* GrRenderTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrRenderTarget.cpp; sourceTree = "<group>"; };
+ 26D90E57140D51290036A311 /* GrGLRenderTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLRenderTarget.cpp; sourceTree = "<group>"; };
+ 26D90E58140D51290036A311 /* GrGLRenderTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGLRenderTarget.h; sourceTree = "<group>"; };
+ 26D90E59140D51290036A311 /* GrGLTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGLTexture.h; sourceTree = "<group>"; };
+ 26D90E5A140D51290036A311 /* GrResourceCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrResourceCache.cpp; sourceTree = "<group>"; };
+ 26D90E5B140D51290036A311 /* GrResourceCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrResourceCache.h; sourceTree = "<group>"; };
+ 26D90E5C140D51290036A311 /* FlingState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FlingState.cpp; sourceTree = "<group>"; };
+ 26D90E5D140D51290036A311 /* GrDrawMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrDrawMesh.cpp; sourceTree = "<group>"; };
+ 26D90E5E140D51290036A311 /* GrAllocPool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrAllocPool.cpp; sourceTree = "<group>"; };
+ 26D90E5F140D51290036A311 /* GrAtlas.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrAtlas.cpp; sourceTree = "<group>"; };
+ 26D90E60140D51290036A311 /* GrBinHashKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrBinHashKey.h; sourceTree = "<group>"; };
+ 26D90E61140D51290036A311 /* GrBufferAllocPool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrBufferAllocPool.cpp; sourceTree = "<group>"; };
+ 26D90E62140D51290036A311 /* GrBufferAllocPool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrBufferAllocPool.h; sourceTree = "<group>"; };
+ 26D90E63140D51290036A311 /* GrClip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrClip.cpp; sourceTree = "<group>"; };
+ 26D90E64140D51290036A311 /* GrContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrContext.cpp; sourceTree = "<group>"; };
+ 26D90E65140D51290036A311 /* GrDrawTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrDrawTarget.cpp; sourceTree = "<group>"; };
+ 26D90E66140D51290036A311 /* GrGLDefaultInterface_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLDefaultInterface_none.cpp; sourceTree = "<group>"; };
+ 26D90E67140D51290036A311 /* GrGLIndexBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLIndexBuffer.cpp; sourceTree = "<group>"; };
+ 26D90E68140D51290036A311 /* GrGLInterface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLInterface.cpp; sourceTree = "<group>"; };
+ 26D90E69140D51290036A311 /* GrGLProgram.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLProgram.cpp; sourceTree = "<group>"; };
+ 26D90E6A140D51290036A311 /* GrGLProgram.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGLProgram.h; sourceTree = "<group>"; };
+ 26D90E6B140D51290036A311 /* GrGLTexture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLTexture.cpp; sourceTree = "<group>"; };
+ 26D90E6C140D51290036A311 /* GrGLUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLUtil.cpp; sourceTree = "<group>"; };
+ 26D90E6D140D51290036A311 /* GrGLVertexBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLVertexBuffer.cpp; sourceTree = "<group>"; };
+ 26D90E6E140D51290036A311 /* GrGpu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGpu.cpp; sourceTree = "<group>"; };
+ 26D90E6F140D51290036A311 /* GrGpuFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGpuFactory.cpp; sourceTree = "<group>"; };
+ 26D90E70140D51290036A311 /* GrGpuGL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGpuGL.cpp; sourceTree = "<group>"; };
+ 26D90E71140D51290036A311 /* GrGpuGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGpuGL.h; sourceTree = "<group>"; };
+ 26D90E72140D51290036A311 /* GrGpuGLFixed.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGpuGLFixed.cpp; sourceTree = "<group>"; };
+ 26D90E73140D51290036A311 /* GrGpuGLFixed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGpuGLFixed.h; sourceTree = "<group>"; };
+ 26D90E74140D51290036A311 /* GrGpuGLShaders.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGpuGLShaders.cpp; sourceTree = "<group>"; };
+ 26D90E75140D51290036A311 /* GrGpuGLShaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGpuGLShaders.h; sourceTree = "<group>"; };
+ 26D90E76140D51290036A311 /* GrInOrderDrawBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrInOrderDrawBuffer.cpp; sourceTree = "<group>"; };
+ 26D90E77140D51290036A311 /* GrMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrMatrix.cpp; sourceTree = "<group>"; };
+ 26D90E78140D51290036A311 /* GrMemory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrMemory.cpp; sourceTree = "<group>"; };
+ 26D90E79140D51290036A311 /* GrPathRenderer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrPathRenderer.cpp; sourceTree = "<group>"; };
+ 26D90E7A140D51290036A311 /* GrPathUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrPathUtils.cpp; sourceTree = "<group>"; };
+ 26D90E7B140D51290036A311 /* GrPathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPathUtils.h; sourceTree = "<group>"; };
+ 26D90E7C140D51290036A311 /* GrRectanizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrRectanizer.cpp; sourceTree = "<group>"; };
+ 26D90E7D140D51290036A311 /* GrRedBlackTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrRedBlackTree.h; sourceTree = "<group>"; };
+ 26D90E7E140D51290036A311 /* GrResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrResource.cpp; sourceTree = "<group>"; };
+ 26D90E7F140D51290036A311 /* GrStencil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrStencil.cpp; sourceTree = "<group>"; };
+ 26D90E81140D51290036A311 /* GrTextContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrTextContext.cpp; sourceTree = "<group>"; };
+ 26D90E82140D51290036A311 /* GrTextStrike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrTextStrike.cpp; sourceTree = "<group>"; };
+ 26D90E83140D51290036A311 /* GrTextStrike_impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTextStrike_impl.h; sourceTree = "<group>"; };
+ 26D90E84140D51290036A311 /* GrTexture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrTexture.cpp; sourceTree = "<group>"; };
+ 26D90E85140D51290036A311 /* gr_unittests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gr_unittests.cpp; sourceTree = "<group>"; };
+ 26D90E87140D51290036A311 /* SkGpuCanvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkGpuCanvas.h; sourceTree = "<group>"; };
+ 26D90E88140D51290036A311 /* SkGpuDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkGpuDevice.h; sourceTree = "<group>"; };
+ 26D90E89140D51290036A311 /* SkGr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkGr.h; sourceTree = "<group>"; };
+ 26D90E8A140D51290036A311 /* SkGrTexturePixelRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkGrTexturePixelRef.h; sourceTree = "<group>"; };
+ 26D90E8C140D51290036A311 /* GrPrintf_skia.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrPrintf_skia.cpp; sourceTree = "<group>"; };
+ 26D90E8D140D51290036A311 /* SkGpuCanvas.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGpuCanvas.cpp; sourceTree = "<group>"; };
+ 26D90E8E140D51290036A311 /* SkGpuDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGpuDevice.cpp; sourceTree = "<group>"; };
+ 26D90E8F140D51290036A311 /* SkGr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGr.cpp; sourceTree = "<group>"; };
+ 26D90E90140D51290036A311 /* SkGrFontScaler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGrFontScaler.cpp; sourceTree = "<group>"; };
+ 26D90E91140D51290036A311 /* SkGrTexturePixelRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGrTexturePixelRef.cpp; sourceTree = "<group>"; };
+ 26D90E94140D51290036A311 /* SkFlipPixelRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkFlipPixelRef.h; sourceTree = "<group>"; };
+ 26D90E95140D51290036A311 /* SkImageRef_GlobalPool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkImageRef_GlobalPool.h; sourceTree = "<group>"; };
+ 26D90E96140D51290036A311 /* SkImageRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkImageRef.h; sourceTree = "<group>"; };
+ 26D90E97140D51290036A311 /* SkJpegUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkJpegUtility.h; sourceTree = "<group>"; };
+ 26D90E98140D51290036A311 /* SkMovie.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkMovie.h; sourceTree = "<group>"; };
+ 26D90E99140D51290036A311 /* SkPageFlipper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPageFlipper.h; sourceTree = "<group>"; };
+ 26D90E9A140D51290036A311 /* SkImageDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkImageDecoder.h; sourceTree = "<group>"; };
+ 26D90E9B140D51290036A311 /* SkImageEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkImageEncoder.h; sourceTree = "<group>"; };
+ 26D90E9E140D51290036A311 /* SkMovie.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMovie.cpp; sourceTree = "<group>"; };
+ 26D90E9F140D51290036A311 /* SkBitmap_RLEPixels.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmap_RLEPixels.h; sourceTree = "<group>"; };
+ 26D90EA0140D51290036A311 /* SkCreateRLEPixelRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCreateRLEPixelRef.cpp; sourceTree = "<group>"; };
+ 26D90EA1140D51290036A311 /* SkFDStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFDStream.cpp; sourceTree = "<group>"; };
+ 26D90EA2140D51290036A311 /* SkFlipPixelRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFlipPixelRef.cpp; sourceTree = "<group>"; };
+ 26D90EA3140D51290036A311 /* SkImageDecoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageDecoder.cpp; sourceTree = "<group>"; };
+ 26D90EA4140D51290036A311 /* SkImageEncoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageEncoder.cpp; sourceTree = "<group>"; };
+ 26D90EA5140D51290036A311 /* SkImageDecoder_Factory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageDecoder_Factory.cpp; sourceTree = "<group>"; };
+ 26D90EA6140D51290036A311 /* SkImageEncoder_Factory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageEncoder_Factory.cpp; sourceTree = "<group>"; };
+ 26D90EA7140D51290036A311 /* SkPageFlipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPageFlipper.cpp; sourceTree = "<group>"; };
+ 26D90EA8140D51290036A311 /* SkImageRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageRef.cpp; sourceTree = "<group>"; };
+ 26D90EA9140D51290036A311 /* SkImageRefPool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageRefPool.cpp; sourceTree = "<group>"; };
+ 26D90EAA140D51290036A311 /* SkImageRefPool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkImageRefPool.h; sourceTree = "<group>"; };
+ 26D90EAB140D51290036A311 /* SkImageRef_GlobalPool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageRef_GlobalPool.cpp; sourceTree = "<group>"; };
+ 26D90EB1140D51290036A311 /* SkBitmapProcState_opts_arm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBitmapProcState_opts_arm.cpp; sourceTree = "<group>"; };
+ 26D90EB6140D51290036A311 /* SkBlitRow_opts_SSE2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBlitRow_opts_SSE2.h; sourceTree = "<group>"; };
+ 26D90EB8140D51290036A311 /* SkUtils_opts_SSE2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkUtils_opts_SSE2.h; sourceTree = "<group>"; };
+ 26D90EBD140D51290036A311 /* SkGPipe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkGPipe.h; path = ../../include/pipe/SkGPipe.h; sourceTree = SOURCE_ROOT; };
+ 26D90EBE140D51290036A311 /* SkGPipeRead.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGPipeRead.cpp; sourceTree = "<group>"; };
+ 26D90EBF140D51290036A311 /* SkGPipeWrite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGPipeWrite.cpp; sourceTree = "<group>"; };
+ 26D90EC2140D51290036A311 /* SkBitSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkBitSet.h; path = ../../include/pdf/SkBitSet.h; sourceTree = SOURCE_ROOT; };
+ 26D90EC3140D51290036A311 /* SkPDFCatalog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFCatalog.h; path = ../../include/pdf/SkPDFCatalog.h; sourceTree = SOURCE_ROOT; };
+ 26D90EC4140D51290036A311 /* SkPDFDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFDevice.h; path = ../../include/pdf/SkPDFDevice.h; sourceTree = SOURCE_ROOT; };
+ 26D90EC5140D51290036A311 /* SkPDFDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFDocument.h; path = ../../include/pdf/SkPDFDocument.h; sourceTree = SOURCE_ROOT; };
+ 26D90EC6140D51290036A311 /* SkPDFFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFFont.h; path = ../../include/pdf/SkPDFFont.h; sourceTree = SOURCE_ROOT; };
+ 26D90EC7140D51290036A311 /* SkPDFFormXObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFFormXObject.h; path = ../../include/pdf/SkPDFFormXObject.h; sourceTree = SOURCE_ROOT; };
+ 26D90EC8140D51290036A311 /* SkPDFGraphicState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFGraphicState.h; path = ../../include/pdf/SkPDFGraphicState.h; sourceTree = SOURCE_ROOT; };
+ 26D90EC9140D51290036A311 /* SkPDFImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFImage.h; path = ../../include/pdf/SkPDFImage.h; sourceTree = SOURCE_ROOT; };
+ 26D90ECA140D51290036A311 /* SkPDFPage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFPage.h; path = ../../include/pdf/SkPDFPage.h; sourceTree = SOURCE_ROOT; };
+ 26D90ECB140D51290036A311 /* SkPDFShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFShader.h; path = ../../include/pdf/SkPDFShader.h; sourceTree = SOURCE_ROOT; };
+ 26D90ECC140D51290036A311 /* SkPDFStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFStream.h; path = ../../include/pdf/SkPDFStream.h; sourceTree = SOURCE_ROOT; };
+ 26D90ECD140D51290036A311 /* SkPDFTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFTypes.h; path = ../../include/pdf/SkPDFTypes.h; sourceTree = SOURCE_ROOT; };
+ 26D90ECE140D51290036A311 /* SkPDFUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFUtils.h; path = ../../include/pdf/SkPDFUtils.h; sourceTree = SOURCE_ROOT; };
+ 26D90ED0140D51290036A311 /* SkBitSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkBitSet.cpp; path = ../../src/pdf/SkBitSet.cpp; sourceTree = SOURCE_ROOT; };
+ 26D90ED1140D51290036A311 /* SkPDFCatalog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFCatalog.cpp; path = ../../src/pdf/SkPDFCatalog.cpp; sourceTree = SOURCE_ROOT; };
+ 26D90ED2140D51290036A311 /* SkPDFDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFDevice.cpp; path = ../../src/pdf/SkPDFDevice.cpp; sourceTree = SOURCE_ROOT; };
+ 26D90ED3140D51290036A311 /* SkPDFDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFDocument.cpp; path = ../../src/pdf/SkPDFDocument.cpp; sourceTree = SOURCE_ROOT; };
+ 26D90ED4140D51290036A311 /* SkPDFFont.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFFont.cpp; path = ../../src/pdf/SkPDFFont.cpp; sourceTree = SOURCE_ROOT; };
+ 26D90ED5140D51290036A311 /* SkPDFFormXObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFFormXObject.cpp; path = ../../src/pdf/SkPDFFormXObject.cpp; sourceTree = SOURCE_ROOT; };
+ 26D90ED6140D51290036A311 /* SkPDFGraphicState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFGraphicState.cpp; path = ../../src/pdf/SkPDFGraphicState.cpp; sourceTree = SOURCE_ROOT; };
+ 26D90ED7140D51290036A311 /* SkPDFImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFImage.cpp; path = ../../src/pdf/SkPDFImage.cpp; sourceTree = SOURCE_ROOT; };
+ 26D90ED8140D51290036A311 /* SkPDFPage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFPage.cpp; path = ../../src/pdf/SkPDFPage.cpp; sourceTree = SOURCE_ROOT; };
+ 26D90ED9140D51290036A311 /* SkPDFShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFShader.cpp; path = ../../src/pdf/SkPDFShader.cpp; sourceTree = SOURCE_ROOT; };
+ 26D90EDA140D51290036A311 /* SkPDFStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFStream.cpp; path = ../../src/pdf/SkPDFStream.cpp; sourceTree = SOURCE_ROOT; };
+ 26D90EDB140D51290036A311 /* SkPDFTypes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFTypes.cpp; path = ../../src/pdf/SkPDFTypes.cpp; sourceTree = SOURCE_ROOT; };
+ 26D90EDC140D51290036A311 /* SkPDFUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFUtils.cpp; path = ../../src/pdf/SkPDFUtils.cpp; sourceTree = SOURCE_ROOT; };
+ 26D90EDF140D51290036A311 /* SkSVGAttribute.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGAttribute.h; sourceTree = "<group>"; };
+ 26D90EE0140D51290036A311 /* SkSVGBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGBase.h; sourceTree = "<group>"; };
+ 26D90EE1140D51290036A311 /* SkSVGPaintState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGPaintState.h; sourceTree = "<group>"; };
+ 26D90EE2140D51290036A311 /* SkSVGParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGParser.h; sourceTree = "<group>"; };
+ 26D90EE3140D51290036A311 /* SkSVGTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGTypes.h; sourceTree = "<group>"; };
+ 26D90EE5140D51290036A311 /* SkSVGCircle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGCircle.cpp; sourceTree = "<group>"; };
+ 26D90EE6140D51290036A311 /* SkSVGCircle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGCircle.h; sourceTree = "<group>"; };
+ 26D90EE7140D51290036A311 /* SkSVGClipPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGClipPath.cpp; sourceTree = "<group>"; };
+ 26D90EE8140D51290036A311 /* SkSVGClipPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGClipPath.h; sourceTree = "<group>"; };
+ 26D90EE9140D51290036A311 /* SkSVGDefs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGDefs.cpp; sourceTree = "<group>"; };
+ 26D90EEA140D51290036A311 /* SkSVGDefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGDefs.h; sourceTree = "<group>"; };
+ 26D90EEB140D51290036A311 /* SkSVGElements.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGElements.cpp; sourceTree = "<group>"; };
+ 26D90EEC140D51290036A311 /* SkSVGElements.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGElements.h; sourceTree = "<group>"; };
+ 26D90EED140D51290036A311 /* SkSVGEllipse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGEllipse.cpp; sourceTree = "<group>"; };
+ 26D90EEE140D51290036A311 /* SkSVGEllipse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGEllipse.h; sourceTree = "<group>"; };
+ 26D90EEF140D51290036A311 /* SkSVGFeColorMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGFeColorMatrix.cpp; sourceTree = "<group>"; };
+ 26D90EF0140D51290036A311 /* SkSVGFeColorMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGFeColorMatrix.h; sourceTree = "<group>"; };
+ 26D90EF1140D51290036A311 /* SkSVGFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGFilter.cpp; sourceTree = "<group>"; };
+ 26D90EF2140D51290036A311 /* SkSVGFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGFilter.h; sourceTree = "<group>"; };
+ 26D90EF3140D51290036A311 /* SkSVGG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGG.cpp; sourceTree = "<group>"; };
+ 26D90EF4140D51290036A311 /* SkSVGG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGG.h; sourceTree = "<group>"; };
+ 26D90EF5140D51290036A311 /* SkSVGGradient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGGradient.cpp; sourceTree = "<group>"; };
+ 26D90EF6140D51290036A311 /* SkSVGGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGGradient.h; sourceTree = "<group>"; };
+ 26D90EF7140D51290036A311 /* SkSVGGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGGroup.cpp; sourceTree = "<group>"; };
+ 26D90EF8140D51290036A311 /* SkSVGGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGGroup.h; sourceTree = "<group>"; };
+ 26D90EF9140D51290036A311 /* SkSVGImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGImage.cpp; sourceTree = "<group>"; };
+ 26D90EFA140D51290036A311 /* SkSVGImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGImage.h; sourceTree = "<group>"; };
+ 26D90EFB140D51290036A311 /* SkSVGLine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGLine.cpp; sourceTree = "<group>"; };
+ 26D90EFC140D51290036A311 /* SkSVGLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGLine.h; sourceTree = "<group>"; };
+ 26D90EFD140D51290036A311 /* SkSVGLinearGradient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGLinearGradient.cpp; sourceTree = "<group>"; };
+ 26D90EFE140D51290036A311 /* SkSVGLinearGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGLinearGradient.h; sourceTree = "<group>"; };
+ 26D90EFF140D512A0036A311 /* SkSVGMask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGMask.cpp; sourceTree = "<group>"; };
+ 26D90F00140D512A0036A311 /* SkSVGMask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGMask.h; sourceTree = "<group>"; };
+ 26D90F01140D512A0036A311 /* SkSVGMetadata.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGMetadata.cpp; sourceTree = "<group>"; };
+ 26D90F02140D512A0036A311 /* SkSVGMetadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGMetadata.h; sourceTree = "<group>"; };
+ 26D90F03140D512A0036A311 /* SkSVGPaintState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGPaintState.cpp; sourceTree = "<group>"; };
+ 26D90F04140D512A0036A311 /* SkSVGParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGParser.cpp; sourceTree = "<group>"; };
+ 26D90F05140D512A0036A311 /* SkSVGPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGPath.cpp; sourceTree = "<group>"; };
+ 26D90F06140D512A0036A311 /* SkSVGPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGPath.h; sourceTree = "<group>"; };
+ 26D90F07140D512A0036A311 /* SkSVGPolygon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGPolygon.cpp; sourceTree = "<group>"; };
+ 26D90F08140D512A0036A311 /* SkSVGPolygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGPolygon.h; sourceTree = "<group>"; };
+ 26D90F09140D512A0036A311 /* SkSVGPolyline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGPolyline.cpp; sourceTree = "<group>"; };
+ 26D90F0A140D512A0036A311 /* SkSVGPolyline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGPolyline.h; sourceTree = "<group>"; };
+ 26D90F0B140D512A0036A311 /* SkSVGRadialGradient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGRadialGradient.cpp; sourceTree = "<group>"; };
+ 26D90F0C140D512A0036A311 /* SkSVGRadialGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGRadialGradient.h; sourceTree = "<group>"; };
+ 26D90F0D140D512A0036A311 /* SkSVGRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGRect.cpp; sourceTree = "<group>"; };
+ 26D90F0E140D512A0036A311 /* SkSVGRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGRect.h; sourceTree = "<group>"; };
+ 26D90F0F140D512A0036A311 /* SkSVGSVG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGSVG.cpp; sourceTree = "<group>"; };
+ 26D90F10140D512A0036A311 /* SkSVGSVG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGSVG.h; sourceTree = "<group>"; };
+ 26D90F11140D512A0036A311 /* SkSVGStop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGStop.cpp; sourceTree = "<group>"; };
+ 26D90F12140D512A0036A311 /* SkSVGStop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGStop.h; sourceTree = "<group>"; };
+ 26D90F13140D512A0036A311 /* SkSVGSymbol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGSymbol.cpp; sourceTree = "<group>"; };
+ 26D90F14140D512A0036A311 /* SkSVGSymbol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGSymbol.h; sourceTree = "<group>"; };
+ 26D90F15140D512A0036A311 /* SkSVGText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGText.cpp; sourceTree = "<group>"; };
+ 26D90F16140D512A0036A311 /* SkSVGText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGText.h; sourceTree = "<group>"; };
+ 26D90F17140D512A0036A311 /* SkSVGUse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGUse.cpp; sourceTree = "<group>"; };
+ 26D90F1B140D512A0036A311 /* SkCGUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCGUtils.h; sourceTree = "<group>"; };
+ 26D90F1C140D512A0036A311 /* SkBoundaryPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBoundaryPatch.h; sourceTree = "<group>"; };
+ 26D90F1D140D512A0036A311 /* SkCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCamera.h; sourceTree = "<group>"; };
+ 26D90F1E140D512A0036A311 /* SkCubicInterval.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCubicInterval.h; sourceTree = "<group>"; };
+ 26D90F1F140D512A0036A311 /* SkCullPoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCullPoints.h; sourceTree = "<group>"; };
+ 26D90F20140D512A0036A311 /* SkDumpCanvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDumpCanvas.h; sourceTree = "<group>"; };
+ 26D90F21140D512A0036A311 /* SkEGLContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkEGLContext.h; sourceTree = "<group>"; };
+ 26D90F22140D512A0036A311 /* SkGLCanvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkGLCanvas.h; sourceTree = "<group>"; };
+ 26D90F23140D512A0036A311 /* SkInterpolator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkInterpolator.h; sourceTree = "<group>"; };
+ 26D90F24140D512A0036A311 /* SkLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkLayer.h; sourceTree = "<group>"; };
+ 26D90F25140D512A0036A311 /* SkMatrix44.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkMatrix44.h; sourceTree = "<group>"; };
+ 26D90F26140D512A0036A311 /* SkMeshUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkMeshUtils.h; sourceTree = "<group>"; };
+ 26D90F27140D512A0036A311 /* SkNWayCanvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkNWayCanvas.h; sourceTree = "<group>"; };
+ 26D90F28140D512A0036A311 /* SkNinePatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkNinePatch.h; sourceTree = "<group>"; };
+ 26D90F29140D512A0036A311 /* SkParse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkParse.h; sourceTree = "<group>"; };
+ 26D90F2A140D512A0036A311 /* SkParsePaint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkParsePaint.h; sourceTree = "<group>"; };
+ 26D90F2B140D512A0036A311 /* SkParsePath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkParsePath.h; sourceTree = "<group>"; };
+ 26D90F2C140D512A0036A311 /* SkProxyCanvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkProxyCanvas.h; sourceTree = "<group>"; };
+ 26D90F2D140D512A0036A311 /* SkSfntUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSfntUtils.h; sourceTree = "<group>"; };
+ 26D90F2E140D512A0036A311 /* SkTextBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTextBox.h; sourceTree = "<group>"; };
+ 26D90F2F140D512A0036A311 /* SkUnitMappers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkUnitMappers.h; sourceTree = "<group>"; };
+ 26D90F32140D512A0036A311 /* SkCreateCGImageRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCreateCGImageRef.cpp; sourceTree = "<group>"; };
+ 26D90F33140D512A0036A311 /* SkBoundaryPatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBoundaryPatch.cpp; sourceTree = "<group>"; };
+ 26D90F34140D512A0036A311 /* SkCamera.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCamera.cpp; sourceTree = "<group>"; };
+ 26D90F35140D512A0036A311 /* SkColorMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkColorMatrix.cpp; sourceTree = "<group>"; };
+ 26D90F36140D512A0036A311 /* SkCubicInterval.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCubicInterval.cpp; sourceTree = "<group>"; };
+ 26D90F37140D512A0036A311 /* SkCullPoints.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCullPoints.cpp; sourceTree = "<group>"; };
+ 26D90F38140D512A0036A311 /* SkDumpCanvas.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDumpCanvas.cpp; sourceTree = "<group>"; };
+ 26D90F39140D512A0036A311 /* SkInterpolator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkInterpolator.cpp; sourceTree = "<group>"; };
+ 26D90F3A140D512A0036A311 /* SkLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkLayer.cpp; sourceTree = "<group>"; };
+ 26D90F3B140D512A0036A311 /* SkMatrix44.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMatrix44.cpp; sourceTree = "<group>"; };
+ 26D90F3C140D512A0036A311 /* SkMeshUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMeshUtils.cpp; sourceTree = "<group>"; };
+ 26D90F3D140D512A0036A311 /* SkNWayCanvas.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkNWayCanvas.cpp; sourceTree = "<group>"; };
+ 26D90F3E140D512A0036A311 /* SkNinePatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkNinePatch.cpp; sourceTree = "<group>"; };
+ 26D90F3F140D512A0036A311 /* SkOSFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkOSFile.cpp; sourceTree = "<group>"; };
+ 26D90F40140D512A0036A311 /* SkParse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkParse.cpp; sourceTree = "<group>"; };
+ 26D90F41140D512A0036A311 /* SkParseColor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkParseColor.cpp; sourceTree = "<group>"; };
+ 26D90F42140D512A0036A311 /* SkParsePath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkParsePath.cpp; sourceTree = "<group>"; };
+ 26D90F43140D512A0036A311 /* SkProxyCanvas.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkProxyCanvas.cpp; sourceTree = "<group>"; };
+ 26D90F44140D512A0036A311 /* SkSfntUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSfntUtils.cpp; sourceTree = "<group>"; };
+ 26D90F45140D512A0036A311 /* SkUnitMappers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkUnitMappers.cpp; sourceTree = "<group>"; };
+ 26D90F48140D512A0036A311 /* SkApplication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkApplication.h; sourceTree = "<group>"; };
+ 26D90F49140D512A0036A311 /* SkBGViewArtist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBGViewArtist.h; sourceTree = "<group>"; };
+ 26D90F4A140D512A0036A311 /* SkBorderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBorderView.h; sourceTree = "<group>"; };
+ 26D90F4B140D512A0036A311 /* SkEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkEvent.h; sourceTree = "<group>"; };
+ 26D90F4C140D512A0036A311 /* SkEventSink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkEventSink.h; sourceTree = "<group>"; };
+ 26D90F4D140D512A0036A311 /* SkImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkImageView.h; sourceTree = "<group>"; };
+ 26D90F4E140D512A0036A311 /* SkKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkKey.h; sourceTree = "<group>"; };
+ 26D90F4F140D512A0036A311 /* SkOSMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkOSMenu.h; sourceTree = "<group>"; };
+ 26D90F50140D512A0036A311 /* SkProgressBarView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkProgressBarView.h; sourceTree = "<group>"; };
+ 26D90F51140D512A0036A311 /* SkScrollBarView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkScrollBarView.h; sourceTree = "<group>"; };
+ 26D90F52140D512A0036A311 /* SkStackViewLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkStackViewLayout.h; sourceTree = "<group>"; };
+ 26D90F53140D512A0036A311 /* SkSystemEventTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSystemEventTypes.h; sourceTree = "<group>"; };
+ 26D90F54140D512A0036A311 /* SkTouchGesture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTouchGesture.h; sourceTree = "<group>"; };
+ 26D90F55140D512A0036A311 /* SkView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkView.h; sourceTree = "<group>"; };
+ 26D90F56140D512A0036A311 /* SkViewInflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkViewInflate.h; sourceTree = "<group>"; };
+ 26D90F57140D512A0036A311 /* SkWidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkWidget.h; sourceTree = "<group>"; };
+ 26D90F58140D512A0036A311 /* SkWidgetViews.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkWidgetViews.h; sourceTree = "<group>"; };
+ 26D90F59140D512A0036A311 /* SkWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkWindow.h; sourceTree = "<group>"; };
+ 26D90F5B140D512A0036A311 /* SkBGViewArtist.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBGViewArtist.cpp; sourceTree = "<group>"; };
+ 26D90F5C140D512A0036A311 /* SkEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkEvent.cpp; sourceTree = "<group>"; };
+ 26D90F5D140D512A0036A311 /* SkEventSink.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkEventSink.cpp; sourceTree = "<group>"; };
+ 26D90F5E140D512A0036A311 /* SkImageView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageView.cpp; sourceTree = "<group>"; };
+ 26D90F5F140D512A0036A311 /* SkListView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkListView.cpp; sourceTree = "<group>"; };
+ 26D90F61140D512A0036A311 /* SkOSMenu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkOSMenu.cpp; sourceTree = "<group>"; };
+ 26D90F62140D512A0036A311 /* SkParsePaint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkParsePaint.cpp; sourceTree = "<group>"; };
+ 26D90F67140D512A0036A311 /* SkStackViewLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkStackViewLayout.cpp; sourceTree = "<group>"; };
+ 26D90F68140D512A0036A311 /* SkStaticTextView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkStaticTextView.cpp; sourceTree = "<group>"; };
+ 26D90F69140D512A0036A311 /* SkTagList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTagList.cpp; sourceTree = "<group>"; };
+ 26D90F6A140D512A0036A311 /* SkTagList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTagList.h; sourceTree = "<group>"; };
+ 26D90F6B140D512A0036A311 /* SkTextBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTextBox.cpp; sourceTree = "<group>"; };
+ 26D90F6C140D512A0036A311 /* SkTouchGesture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTouchGesture.cpp; sourceTree = "<group>"; };
+ 26D90F6D140D512A0036A311 /* SkView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkView.cpp; sourceTree = "<group>"; };
+ 26D90F6E140D512A0036A311 /* SkViewInflate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkViewInflate.cpp; sourceTree = "<group>"; };
+ 26D90F6F140D512A0036A311 /* SkViewPriv.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkViewPriv.cpp; sourceTree = "<group>"; };
+ 26D90F70140D512A0036A311 /* SkViewPriv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkViewPriv.h; sourceTree = "<group>"; };
+ 26D90F71140D512A0036A311 /* SkWidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkWidget.cpp; sourceTree = "<group>"; };
+ 26D90F73140D512A0036A311 /* SkWidgets.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkWidgets.cpp; sourceTree = "<group>"; };
+ 26D90F74140D512A0036A311 /* SkWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkWindow.cpp; sourceTree = "<group>"; };
+ 26D90F77140D512A0036A311 /* SkBML_WXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBML_WXMLParser.h; sourceTree = "<group>"; };
+ 26D90F78140D512A0036A311 /* SkBML_XMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBML_XMLParser.h; sourceTree = "<group>"; };
+ 26D90F79140D512A0036A311 /* SkDOM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDOM.h; sourceTree = "<group>"; };
+ 26D90F7A140D512A0036A311 /* SkJS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkJS.h; sourceTree = "<group>"; };
+ 26D90F7B140D512A0036A311 /* SkXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkXMLParser.h; sourceTree = "<group>"; };
+ 26D90F7C140D512A0036A311 /* SkXMLWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkXMLWriter.h; sourceTree = "<group>"; };
+ 26D90F7E140D512A0036A311 /* SkDOM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDOM.cpp; sourceTree = "<group>"; };
+ 26D90F7F140D512A0036A311 /* SkXMLParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkXMLParser.cpp; sourceTree = "<group>"; };
+ 26D90F80140D512A0036A311 /* SkXMLWriter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkXMLWriter.cpp; sourceTree = "<group>"; };
+ 26D9111D140D52CD0036A311 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
+ 26D9111F140D52CD0036A311 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
+ 26D9112F140D53C30036A311 /* SkBlitRow_opts_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitRow_opts_none.cpp; sourceTree = "<group>"; };
+ 26D91130140D53C30036A311 /* SkUtils_opts_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkUtils_opts_none.cpp; sourceTree = "<group>"; };
+ 26D9113B140D54720036A311 /* skia_ios.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = skia_ios.mm; path = ../iOSSampleApp/Shared/skia_ios.mm; sourceTree = SOURCE_ROOT; };
+ 26D91153140D54E40036A311 /* SkEventNotifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkEventNotifier.h; path = ../../src/utils/mac/SkEventNotifier.h; sourceTree = SOURCE_ROOT; };
+ 26D91154140D54E40036A311 /* SkEventNotifier.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SkEventNotifier.mm; path = ../../src/utils/mac/SkEventNotifier.mm; sourceTree = SOURCE_ROOT; };
+ 26D9118E140D558A0036A311 /* SkOSFile_iOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SkOSFile_iOS.mm; path = ../../src/utils/ios/SkOSFile_iOS.mm; sourceTree = SOURCE_ROOT; };
+ 26D91192140D55980036A311 /* SkOSWindow_iOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkOSWindow_iOS.h; path = ../../include/views/SkOSWindow_iOS.h; sourceTree = SOURCE_ROOT; };
+ 26D91193140D55980036A311 /* SkOSWindow_iOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SkOSWindow_iOS.mm; path = ../../src/utils/ios/SkOSWindow_iOS.mm; sourceTree = SOURCE_ROOT; };
+ 26D912EA140D5FCC0036A311 /* SkiOSSampleApp-Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = "SkiOSSampleApp-Debug.xcconfig"; path = "../iOSSampleApp/SkiOSSampleApp-Debug.xcconfig"; sourceTree = SOURCE_ROOT; };
+ 26D912EB140D5FCC0036A311 /* SkiOSSampleApp-Release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = "SkiOSSampleApp-Release.xcconfig"; path = "../iOSSampleApp/SkiOSSampleApp-Release.xcconfig"; sourceTree = SOURCE_ROOT; };
+ 26D912EC140D5FCC0036A311 /* SkiOSSampleApp-Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = "SkiOSSampleApp-Base.xcconfig"; path = "../iOSSampleApp/SkiOSSampleApp-Base.xcconfig"; sourceTree = SOURCE_ROOT; };
+ 26D91302140D60330036A311 /* SimpleApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleApp.h; sourceTree = "<group>"; };
+ 26D91303140D60330036A311 /* SimpleApp.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SimpleApp.mm; sourceTree = "<group>"; };
+ 2860E325111B887F00E27156 /* AppDelegate_iPhone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate_iPhone.h; sourceTree = "<group>"; };
+ 2860E326111B887F00E27156 /* AppDelegate_iPhone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate_iPhone.m; sourceTree = "<group>"; };
+ 2860E327111B887F00E27156 /* MainWindow_iPhone.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow_iPhone.xib; sourceTree = "<group>"; };
+ 2860E32B111B888700E27156 /* AppDelegate_iPad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate_iPad.h; sourceTree = "<group>"; };
+ 2860E32C111B888700E27156 /* AppDelegate_iPad.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate_iPad.m; sourceTree = "<group>"; };
+ 2860E32D111B888700E27156 /* MainWindow_iPad.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow_iPad.xib; sourceTree = "<group>"; };
+ 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+ 8D1107310486CEB800E47090 /* SimpleiOSApp-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "SimpleiOSApp-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
+ 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
+ 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */,
+ 26D91120140D52CD0036A311 /* CoreFoundation.framework in Frameworks */,
+ 26D91122140D52CD0036A311 /* CoreText.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 19C28FACFE9D520D11CA2CBB /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 1D6058910D05DD3D006BFB54 /* SimpleiOSApp.app */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 26D90C43140D51290036A311 /* Skia */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90C44140D51290036A311 /* SkUserConfig.h */,
+ 26D90C45140D51290036A311 /* animator */,
+ 26D90CE2140D51290036A311 /* core */,
+ 26D90DDA140D51290036A311 /* effects */,
+ 26D90E10140D51290036A311 /* gpu */,
+ 26D90E92140D51290036A311 /* images */,
+ 26D90EAF140D51290036A311 /* opts */,
+ 26D90EDD140D51290036A311 /* svg */,
+ 26D90F18140D512A0036A311 /* utils */,
+ 26D90F46140D512A0036A311 /* views */,
+ 26D90F75140D512A0036A311 /* xml */,
+ 26D90EC0140D51290036A311 /* pdf */,
+ 26D90EBC140D51290036A311 /* pipe */,
+ );
+ name = Skia;
+ sourceTree = "<group>";
+ };
+ 26D90C45140D51290036A311 /* animator */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90C46140D51290036A311 /* include */,
+ 26D90C49140D51290036A311 /* src */,
+ );
+ name = animator;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 26D90C46140D51290036A311 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90C47140D51290036A311 /* SkAnimator.h */,
+ 26D90C48140D51290036A311 /* SkAnimatorView.h */,
+ );
+ name = include;
+ path = include/animator;
+ sourceTree = "<group>";
+ };
+ 26D90C49140D51290036A311 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90C4A140D51290036A311 /* SkAnimate.h */,
+ 26D90C4B140D51290036A311 /* SkAnimateActive.cpp */,
+ 26D90C4C140D51290036A311 /* SkAnimateActive.h */,
+ 26D90C4D140D51290036A311 /* SkAnimateBase.cpp */,
+ 26D90C4E140D51290036A311 /* SkAnimateBase.h */,
+ 26D90C4F140D51290036A311 /* SkAnimateField.cpp */,
+ 26D90C50140D51290036A311 /* SkAnimateMaker.cpp */,
+ 26D90C51140D51290036A311 /* SkAnimateMaker.h */,
+ 26D90C52140D51290036A311 /* SkAnimateProperties.h */,
+ 26D90C53140D51290036A311 /* SkAnimateSet.cpp */,
+ 26D90C54140D51290036A311 /* SkAnimateSet.h */,
+ 26D90C55140D51290036A311 /* SkAnimator.cpp */,
+ 26D90C56140D51290036A311 /* SkAnimatorScript.cpp */,
+ 26D90C57140D51290036A311 /* SkAnimatorScript.h */,
+ 26D90C58140D51290036A311 /* SkBase64.cpp */,
+ 26D90C59140D51290036A311 /* SkBase64.h */,
+ 26D90C5A140D51290036A311 /* SkBoundable.cpp */,
+ 26D90C5B140D51290036A311 /* SkBoundable.h */,
+ 26D90C5C140D51290036A311 /* SkBuildCondensedInfo.cpp */,
+ 26D90C5D140D51290036A311 /* SkDisplayAdd.cpp */,
+ 26D90C5E140D51290036A311 /* SkDisplayAdd.h */,
+ 26D90C5F140D51290036A311 /* SkDisplayApply.cpp */,
+ 26D90C60140D51290036A311 /* SkDisplayApply.h */,
+ 26D90C61140D51290036A311 /* SkDisplayBounds.cpp */,
+ 26D90C62140D51290036A311 /* SkDisplayBounds.h */,
+ 26D90C63140D51290036A311 /* SkDisplayEvent.cpp */,
+ 26D90C64140D51290036A311 /* SkDisplayEvent.h */,
+ 26D90C65140D51290036A311 /* SkDisplayEvents.cpp */,
+ 26D90C66140D51290036A311 /* SkDisplayEvents.h */,
+ 26D90C67140D51290036A311 /* SkDisplayInclude.cpp */,
+ 26D90C68140D51290036A311 /* SkDisplayInclude.h */,
+ 26D90C69140D51290036A311 /* SkDisplayInput.cpp */,
+ 26D90C6A140D51290036A311 /* SkDisplayInput.h */,
+ 26D90C6B140D51290036A311 /* SkDisplayList.cpp */,
+ 26D90C6C140D51290036A311 /* SkDisplayList.h */,
+ 26D90C6D140D51290036A311 /* SkDisplayMath.cpp */,
+ 26D90C6E140D51290036A311 /* SkDisplayMath.h */,
+ 26D90C6F140D51290036A311 /* SkDisplayMovie.cpp */,
+ 26D90C70140D51290036A311 /* SkDisplayMovie.h */,
+ 26D90C71140D51290036A311 /* SkDisplayNumber.cpp */,
+ 26D90C72140D51290036A311 /* SkDisplayNumber.h */,
+ 26D90C73140D51290036A311 /* SkDisplayPost.cpp */,
+ 26D90C74140D51290036A311 /* SkDisplayPost.h */,
+ 26D90C75140D51290036A311 /* SkDisplayRandom.cpp */,
+ 26D90C76140D51290036A311 /* SkDisplayRandom.h */,
+ 26D90C77140D51290036A311 /* SkDisplayScreenplay.cpp */,
+ 26D90C78140D51290036A311 /* SkDisplayScreenplay.h */,
+ 26D90C79140D51290036A311 /* SkDisplayType.cpp */,
+ 26D90C7A140D51290036A311 /* SkDisplayType.h */,
+ 26D90C7B140D51290036A311 /* SkDisplayTypes.cpp */,
+ 26D90C7C140D51290036A311 /* SkDisplayTypes.h */,
+ 26D90C7D140D51290036A311 /* SkDisplayXMLParser.cpp */,
+ 26D90C7E140D51290036A311 /* SkDisplayXMLParser.h */,
+ 26D90C7F140D51290036A311 /* SkDisplayable.cpp */,
+ 26D90C80140D51290036A311 /* SkDisplayable.h */,
+ 26D90C81140D51290036A311 /* SkDraw3D.cpp */,
+ 26D90C82140D51290036A311 /* SkDraw3D.h */,
+ 26D90C83140D51290036A311 /* SkDrawBitmap.cpp */,
+ 26D90C84140D51290036A311 /* SkDrawBitmap.h */,
+ 26D90C85140D51290036A311 /* SkDrawBlur.cpp */,
+ 26D90C86140D51290036A311 /* SkDrawBlur.h */,
+ 26D90C87140D51290036A311 /* SkDrawClip.cpp */,
+ 26D90C88140D51290036A311 /* SkDrawClip.h */,
+ 26D90C89140D51290036A311 /* SkDrawColor.cpp */,
+ 26D90C8A140D51290036A311 /* SkDrawColor.h */,
+ 26D90C8B140D51290036A311 /* SkDrawDash.cpp */,
+ 26D90C8C140D51290036A311 /* SkDrawDash.h */,
+ 26D90C8D140D51290036A311 /* SkDrawDiscrete.cpp */,
+ 26D90C8E140D51290036A311 /* SkDrawDiscrete.h */,
+ 26D90C8F140D51290036A311 /* SkDrawEmboss.cpp */,
+ 26D90C90140D51290036A311 /* SkDrawEmboss.h */,
+ 26D90C91140D51290036A311 /* SkDrawExtraPathEffect.cpp */,
+ 26D90C92140D51290036A311 /* SkDrawFull.cpp */,
+ 26D90C93140D51290036A311 /* SkDrawFull.h */,
+ 26D90C94140D51290036A311 /* SkDrawGradient.cpp */,
+ 26D90C95140D51290036A311 /* SkDrawGradient.h */,
+ 26D90C96140D51290036A311 /* SkDrawGroup.cpp */,
+ 26D90C97140D51290036A311 /* SkDrawGroup.h */,
+ 26D90C98140D51290036A311 /* SkDrawLine.cpp */,
+ 26D90C99140D51290036A311 /* SkDrawLine.h */,
+ 26D90C9A140D51290036A311 /* SkDrawMatrix.cpp */,
+ 26D90C9B140D51290036A311 /* SkDrawMatrix.h */,
+ 26D90C9C140D51290036A311 /* SkDrawOval.cpp */,
+ 26D90C9D140D51290036A311 /* SkDrawOval.h */,
+ 26D90C9E140D51290036A311 /* SkDrawPaint.cpp */,
+ 26D90C9F140D51290036A311 /* SkDrawPaint.h */,
+ 26D90CA0140D51290036A311 /* SkDrawPath.cpp */,
+ 26D90CA1140D51290036A311 /* SkDrawPath.h */,
+ 26D90CA2140D51290036A311 /* SkDrawPoint.cpp */,
+ 26D90CA3140D51290036A311 /* SkDrawPoint.h */,
+ 26D90CA4140D51290036A311 /* SkDrawRectangle.cpp */,
+ 26D90CA5140D51290036A311 /* SkDrawRectangle.h */,
+ 26D90CA6140D51290036A311 /* SkDrawSaveLayer.cpp */,
+ 26D90CA7140D51290036A311 /* SkDrawSaveLayer.h */,
+ 26D90CA8140D51290036A311 /* SkDrawShader.cpp */,
+ 26D90CA9140D51290036A311 /* SkDrawShader.h */,
+ 26D90CAA140D51290036A311 /* SkDrawText.cpp */,
+ 26D90CAB140D51290036A311 /* SkDrawText.h */,
+ 26D90CAC140D51290036A311 /* SkDrawTextBox.cpp */,
+ 26D90CAD140D51290036A311 /* SkDrawTextBox.h */,
+ 26D90CAE140D51290036A311 /* SkDrawTo.cpp */,
+ 26D90CAF140D51290036A311 /* SkDrawTo.h */,
+ 26D90CB0140D51290036A311 /* SkDrawTransparentShader.cpp */,
+ 26D90CB1140D51290036A311 /* SkDrawTransparentShader.h */,
+ 26D90CB2140D51290036A311 /* SkDrawable.cpp */,
+ 26D90CB3140D51290036A311 /* SkDrawable.h */,
+ 26D90CB4140D51290036A311 /* SkDump.cpp */,
+ 26D90CB5140D51290036A311 /* SkDump.h */,
+ 26D90CB6140D51290036A311 /* SkExtras.h */,
+ 26D90CB7140D51290036A311 /* SkGetCondensedInfo.cpp */,
+ 26D90CB8140D51290036A311 /* SkHitClear.cpp */,
+ 26D90CB9140D51290036A311 /* SkHitClear.h */,
+ 26D90CBA140D51290036A311 /* SkHitTest.cpp */,
+ 26D90CBB140D51290036A311 /* SkHitTest.h */,
+ 26D90CBC140D51290036A311 /* SkIntArray.h */,
+ 26D90CBD140D51290036A311 /* SkMatrixParts.cpp */,
+ 26D90CBE140D51290036A311 /* SkMatrixParts.h */,
+ 26D90CBF140D51290036A311 /* SkMemberInfo.cpp */,
+ 26D90CC0140D51290036A311 /* SkMemberInfo.h */,
+ 26D90CC1140D51290036A311 /* SkOpArray.cpp */,
+ 26D90CC2140D51290036A311 /* SkOpArray.h */,
+ 26D90CC3140D51290036A311 /* SkOperand.h */,
+ 26D90CC4140D51290036A311 /* SkOperand2.h */,
+ 26D90CC5140D51290036A311 /* SkOperandInterpolator.h */,
+ 26D90CC6140D51290036A311 /* SkOperandIterpolator.cpp */,
+ 26D90CC7140D51290036A311 /* SkPaintParts.cpp */,
+ 26D90CC8140D51290036A311 /* SkPaintParts.h */,
+ 26D90CC9140D51290036A311 /* SkParseSVGPath.cpp */,
+ 26D90CCA140D51290036A311 /* SkPathParts.cpp */,
+ 26D90CCB140D51290036A311 /* SkPathParts.h */,
+ 26D90CCC140D51290036A311 /* SkPostParts.cpp */,
+ 26D90CCD140D51290036A311 /* SkPostParts.h */,
+ 26D90CCE140D51290036A311 /* SkScript.cpp */,
+ 26D90CCF140D51290036A311 /* SkScript.h */,
+ 26D90CD0140D51290036A311 /* SkScript2.h */,
+ 26D90CD1140D51290036A311 /* SkScriptCallBack.h */,
+ 26D90CD2140D51290036A311 /* SkScriptDecompile.cpp */,
+ 26D90CD3140D51290036A311 /* SkScriptRuntime.cpp */,
+ 26D90CD4140D51290036A311 /* SkScriptRuntime.h */,
+ 26D90CD5140D51290036A311 /* SkScriptTokenizer.cpp */,
+ 26D90CD6140D51290036A311 /* SkSnapshot.cpp */,
+ 26D90CD7140D51290036A311 /* SkSnapshot.h */,
+ 26D90CD8140D51290036A311 /* SkTDArray_Experimental.h */,
+ 26D90CD9140D51290036A311 /* SkTextOnPath.cpp */,
+ 26D90CDA140D51290036A311 /* SkTextOnPath.h */,
+ 26D90CDB140D51290036A311 /* SkTextToPath.cpp */,
+ 26D90CDC140D51290036A311 /* SkTextToPath.h */,
+ 26D90CDD140D51290036A311 /* SkTime.cpp */,
+ 26D90CDE140D51290036A311 /* SkTypedArray.cpp */,
+ 26D90CDF140D51290036A311 /* SkTypedArray.h */,
+ 26D90CE0140D51290036A311 /* SkXMLAnimatorWriter.cpp */,
+ 26D90CE1140D51290036A311 /* SkXMLAnimatorWriter.h */,
+ );
+ name = src;
+ path = src/animator;
+ sourceTree = "<group>";
+ };
+ 26D90CE2140D51290036A311 /* core */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90CE3140D51290036A311 /* SkTypeface_mac.h */,
+ 26D90CE4140D51290036A311 /* include */,
+ 26D90D45140D51290036A311 /* src */,
+ );
+ name = core;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 26D90CE4140D51290036A311 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90CE5140D51290036A311 /* Sk64.h */,
+ 26D90CE6140D51290036A311 /* SkAdvancedTypefaceMetrics.h */,
+ 26D90CE7140D51290036A311 /* SkAutoKern.h */,
+ 26D90CE8140D51290036A311 /* SkBitmap.h */,
+ 26D90CE9140D51290036A311 /* SkBlitRow.h */,
+ 26D90CEA140D51290036A311 /* SkBlitter.h */,
+ 26D90CEB140D51290036A311 /* SkBounder.h */,
+ 26D90CEC140D51290036A311 /* SkBuffer.h */,
+ 26D90CED140D51290036A311 /* SkCanvas.h */,
+ 26D90CEE140D51290036A311 /* SkChunkAlloc.h */,
+ 26D90CEF140D51290036A311 /* SkClampRange.h */,
+ 26D90CF0140D51290036A311 /* SkClipStack.h */,
+ 26D90CF1140D51290036A311 /* SkColor.h */,
+ 26D90CF2140D51290036A311 /* SkColorFilter.h */,
+ 26D90CF3140D51290036A311 /* SkColorPriv.h */,
+ 26D90CF4140D51290036A311 /* SkColorShader.h */,
+ 26D90CF5140D51290036A311 /* SkComposeShader.h */,
+ 26D90CF6140D51290036A311 /* SkDeque.h */,
+ 26D90CF7140D51290036A311 /* SkDescriptor.h */,
+ 26D90CF8140D51290036A311 /* SkDevice.h */,
+ 26D90CF9140D51290036A311 /* SkDither.h */,
+ 26D90CFA140D51290036A311 /* SkDraw.h */,
+ 26D90CFB140D51290036A311 /* SkDrawFilter.h */,
+ 26D90CFC140D51290036A311 /* SkDrawLooper.h */,
+ 26D90CFD140D51290036A311 /* SkEndian.h */,
+ 26D90CFE140D51290036A311 /* SkFDot6.h */,
+ 26D90CFF140D51290036A311 /* SkFixed.h */,
+ 26D90D00140D51290036A311 /* SkFlate.h */,
+ 26D90D01140D51290036A311 /* SkFlattenable.h */,
+ 26D90D02140D51290036A311 /* SkFloatBits.h */,
+ 26D90D03140D51290036A311 /* SkFloatingPoint.h */,
+ 26D90D04140D51290036A311 /* SkFontHost.h */,
+ 26D90D05140D51290036A311 /* SkGeometry.h */,
+ 26D90D06140D51290036A311 /* SkGlobals.h */,
+ 26D90D07140D51290036A311 /* SkGraphics.h */,
+ 26D90D08140D51290036A311 /* SkMMapStream.h */,
+ 26D90D09140D51290036A311 /* SkMallocPixelRef.h */,
+ 26D90D0A140D51290036A311 /* SkMask.h */,
+ 26D90D0B140D51290036A311 /* SkMaskFilter.h */,
+ 26D90D0C140D51290036A311 /* SkMath.h */,
+ 26D90D0D140D51290036A311 /* SkMatrix.h */,
+ 26D90D0E140D51290036A311 /* SkMetaData.h */,
+ 26D90D0F140D51290036A311 /* SkOSFile.h */,
+ 26D90D10140D51290036A311 /* SkPackBits.h */,
+ 26D90D11140D51290036A311 /* SkPaint.h */,
+ 26D90D12140D51290036A311 /* SkPath.h */,
+ 26D90D13140D51290036A311 /* SkPathEffect.h */,
+ 26D90D14140D51290036A311 /* SkPathMeasure.h */,
+ 26D90D15140D51290036A311 /* SkPerspIter.h */,
+ 26D90D16140D51290036A311 /* SkPicture.h */,
+ 26D90D17140D51290036A311 /* SkPixelRef.h */,
+ 26D90D18140D51290036A311 /* SkPoint.h */,
+ 26D90D19140D51290036A311 /* SkPtrRecorder.h */,
+ 26D90D1A140D51290036A311 /* SkRandom.h */,
+ 26D90D1B140D51290036A311 /* SkRasterizer.h */,
+ 26D90D1C140D51290036A311 /* SkReader32.h */,
+ 26D90D1D140D51290036A311 /* SkRect.h */,
+ 26D90D1E140D51290036A311 /* SkRefCnt.h */,
+ 26D90D1F140D51290036A311 /* SkRefDict.h */,
+ 26D90D20140D51290036A311 /* SkRegion.h */,
+ 26D90D21140D51290036A311 /* SkScalar.h */,
+ 26D90D22140D51290036A311 /* SkScalarCompare.h */,
+ 26D90D23140D51290036A311 /* SkScalerContext.h */,
+ 26D90D24140D51290036A311 /* SkScan.h */,
+ 26D90D25140D51290036A311 /* SkShader.h */,
+ 26D90D26140D51290036A311 /* SkStream.h */,
+ 26D90D27140D51290036A311 /* SkString.h */,
+ 26D90D28140D51290036A311 /* SkStroke.h */,
+ 26D90D29140D51290036A311 /* SkTDArray.h */,
+ 26D90D2A140D51290036A311 /* SkTDStack.h */,
+ 26D90D2B140D51290036A311 /* SkTDict.h */,
+ 26D90D2C140D51290036A311 /* SkTRegistry.h */,
+ 26D90D2E140D51290036A311 /* SkTSearch.h */,
+ 26D90D2F140D51290036A311 /* SkTemplates.h */,
+ 26D90D30140D51290036A311 /* SkThread.h */,
+ 26D90D31140D51290036A311 /* SkThread_platform.h */,
+ 26D90D32140D51290036A311 /* SkTime.h */,
+ 26D90D33140D51290036A311 /* SkTypeface.h */,
+ 26D90D34140D51290036A311 /* SkTypes.h */,
+ 26D90D35140D51290036A311 /* SkUnPreMultiply.h */,
+ 26D90D36140D51290036A311 /* SkUnitMapper.h */,
+ 26D90D37140D51290036A311 /* SkUtils.h */,
+ 26D90D38140D51290036A311 /* SkWriter32.h */,
+ 26D90D39140D51290036A311 /* SkXfermode.h */,
+ 26D90D3A140D51290036A311 /* SkEdgeClipper.h */,
+ 26D90D3B140D51290036A311 /* SkLineClipper.h */,
+ 26D90D3C140D51290036A311 /* SkPostConfig.h */,
+ 26D90D3D140D51290036A311 /* SkPreConfig.h */,
+ 26D90D3E140D51290036A311 /* SkRelay.h */,
+ 26D90D3F140D51290036A311 /* SkShape.h */,
+ 26D90D40140D51290036A311 /* SkSize.h */,
+ 26D90D41140D51290036A311 /* SkTLazy.h */,
+ 26D90D42140D51290036A311 /* SkData.h */,
+ 26D90D43140D51290036A311 /* mac */,
+ );
+ path = include;
+ sourceTree = "<group>";
+ };
+ 26D90D43140D51290036A311 /* mac */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90D44140D51290036A311 /* SkCGUtils.h */,
+ );
+ name = mac;
+ path = utils/mac;
+ sourceTree = "<group>";
+ };
+ 26D90D45140D51290036A311 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90D46140D51290036A311 /* SkData.cpp */,
+ 26D90D47140D51290036A311 /* core */,
+ 26D90DD1140D51290036A311 /* ports */,
+ );
+ path = src;
+ sourceTree = "<group>";
+ };
+ 26D90D47140D51290036A311 /* core */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90D48140D51290036A311 /* ARGB32_Clamp_Bilinear_BitmapShader.h */,
+ 26D90D49140D51290036A311 /* Sk64.cpp */,
+ 26D90D4A140D51290036A311 /* SkAdvancedTypefaceMetrics.cpp */,
+ 26D90D4B140D51290036A311 /* SkAlphaRuns.cpp */,
+ 26D90D4C140D51290036A311 /* SkAntiRun.h */,
+ 26D90D4D140D51290036A311 /* SkBitmap.cpp */,
+ 26D90D4E140D51290036A311 /* SkBitmapProcShader.cpp */,
+ 26D90D4F140D51290036A311 /* SkBitmapProcShader.h */,
+ 26D90D50140D51290036A311 /* SkBitmapProcState.cpp */,
+ 26D90D51140D51290036A311 /* SkBitmapProcState.h */,
+ 26D90D52140D51290036A311 /* SkBitmapProcState_matrix.h */,
+ 26D90D53140D51290036A311 /* SkBitmapProcState_matrixProcs.cpp */,
+ 26D90D54140D51290036A311 /* SkBitmapProcState_sample.h */,
+ 26D90D55140D51290036A311 /* SkBitmapSampler.cpp */,
+ 26D90D56140D51290036A311 /* SkBitmapSampler.h */,
+ 26D90D57140D51290036A311 /* SkBitmapSamplerTemplate.h */,
+ 26D90D58140D51290036A311 /* SkBitmapShader16BilerpTemplate.h */,
+ 26D90D59140D51290036A311 /* SkBitmapShaderTemplate.h */,
+ 26D90D5A140D51290036A311 /* SkBitmap_scroll.cpp */,
+ 26D90D5B140D51290036A311 /* SkBlitBWMaskTemplate.h */,
+ 26D90D5C140D51290036A311 /* SkBlitRow_D16.cpp */,
+ 26D90D5D140D51290036A311 /* SkBlitRow_D32.cpp */,
+ 26D90D5E140D51290036A311 /* SkBlitRow_D4444.cpp */,
+ 26D90D5F140D51290036A311 /* SkBlitter.cpp */,
+ 26D90D60140D51290036A311 /* SkBlitter_4444.cpp */,
+ 26D90D61140D51290036A311 /* SkBlitter_A1.cpp */,
+ 26D90D62140D51290036A311 /* SkBlitter_A8.cpp */,
+ 26D90D63140D51290036A311 /* SkBlitter_ARGB32.cpp */,
+ 26D90D64140D51290036A311 /* SkBlitter_RGB16.cpp */,
+ 26D90D65140D51290036A311 /* SkBlitter_Sprite.cpp */,
+ 26D90D66140D51290036A311 /* SkBuffer.cpp */,
+ 26D90D67140D51290036A311 /* SkCanvas.cpp */,
+ 26D90D68140D51290036A311 /* SkChunkAlloc.cpp */,
+ 26D90D69140D51290036A311 /* SkClampRange.cpp */,
+ 26D90D6A140D51290036A311 /* SkClipStack.cpp */,
+ 26D90D6B140D51290036A311 /* SkColor.cpp */,
+ 26D90D6C140D51290036A311 /* SkColorFilter.cpp */,
+ 26D90D6D140D51290036A311 /* SkColorTable.cpp */,
+ 26D90D6E140D51290036A311 /* SkComposeShader.cpp */,
+ 26D90D6F140D51290036A311 /* SkConcaveToTriangles.cpp */,
+ 26D90D70140D51290036A311 /* SkConcaveToTriangles.h */,
+ 26D90D71140D51290036A311 /* SkCordic.cpp */,
+ 26D90D72140D51290036A311 /* SkCordic.h */,
+ 26D90D73140D51290036A311 /* SkCoreBlitters.h */,
+ 26D90D74140D51290036A311 /* SkCubicClipper.cpp */,
+ 26D90D75140D51290036A311 /* SkCubicClipper.h */,
+ 26D90D76140D51290036A311 /* SkDebug.cpp */,
+ 26D90D77140D51290036A311 /* SkDeque.cpp */,
+ 26D90D78140D51290036A311 /* SkDevice.cpp */,
+ 26D90D79140D51290036A311 /* SkDither.cpp */,
+ 26D90D7A140D51290036A311 /* SkDraw.cpp */,
+ 26D90D7B140D51290036A311 /* SkDrawProcs.h */,
+ 26D90D7C140D51290036A311 /* SkEdge.cpp */,
+ 26D90D7D140D51290036A311 /* SkEdge.h */,
+ 26D90D7E140D51290036A311 /* SkEdgeBuilder.cpp */,
+ 26D90D7F140D51290036A311 /* SkEdgeClipper.cpp */,
+ 26D90D80140D51290036A311 /* SkFP.h */,
+ 26D90D81140D51290036A311 /* SkFilterProc.cpp */,
+ 26D90D82140D51290036A311 /* SkFilterProc.h */,
+ 26D90D83140D51290036A311 /* SkFlate.cpp */,
+ 26D90D84140D51290036A311 /* SkFlattenable.cpp */,
+ 26D90D85140D51290036A311 /* SkFloat.cpp */,
+ 26D90D86140D51290036A311 /* SkFloat.h */,
+ 26D90D87140D51290036A311 /* SkFloatBits.cpp */,
+ 26D90D88140D51290036A311 /* SkFontHost.cpp */,
+ 26D90D89140D51290036A311 /* SkGeometry.cpp */,
+ 26D90D8A140D51290036A311 /* SkGlobals.cpp */,
+ 26D90D8B140D51290036A311 /* SkGlyphCache.cpp */,
+ 26D90D8C140D51290036A311 /* SkGlyphCache.h */,
+ 26D90D8D140D51290036A311 /* SkGraphics.cpp */,
+ 26D90D8E140D51290036A311 /* SkLineClipper.cpp */,
+ 26D90D8F140D51290036A311 /* SkMMapStream.cpp */,
+ 26D90D90140D51290036A311 /* SkMallocPixelRef.cpp */,
+ 26D90D91140D51290036A311 /* SkMask.cpp */,
+ 26D90D92140D51290036A311 /* SkMaskFilter.cpp */,
+ 26D90D93140D51290036A311 /* SkMath.cpp */,
+ 26D90D94140D51290036A311 /* SkMatrix.cpp */,
+ 26D90D95140D51290036A311 /* SkMetaData.cpp */,
+ 26D90D96140D51290036A311 /* SkPackBits.cpp */,
+ 26D90D97140D51290036A311 /* SkPaint.cpp */,
+ 26D90D98140D51290036A311 /* SkPath.cpp */,
+ 26D90D99140D51290036A311 /* SkPathEffect.cpp */,
+ 26D90D9A140D51290036A311 /* SkPathHeap.cpp */,
+ 26D90D9B140D51290036A311 /* SkPathHeap.h */,
+ 26D90D9C140D51290036A311 /* SkPathMeasure.cpp */,
+ 26D90D9D140D51290036A311 /* SkPicture.cpp */,
+ 26D90D9E140D51290036A311 /* SkPictureFlat.cpp */,
+ 26D90D9F140D51290036A311 /* SkPictureFlat.h */,
+ 26D90DA0140D51290036A311 /* SkPicturePlayback.cpp */,
+ 26D90DA1140D51290036A311 /* SkPicturePlayback.h */,
+ 26D90DA2140D51290036A311 /* SkPictureRecord.cpp */,
+ 26D90DA3140D51290036A311 /* SkPictureRecord.h */,
+ 26D90DA4140D51290036A311 /* SkPixelRef.cpp */,
+ 26D90DA5140D51290036A311 /* SkPoint.cpp */,
+ 26D90DA6140D51290036A311 /* SkProcSpriteBlitter.cpp */,
+ 26D90DA7140D51290036A311 /* SkPtrRecorder.cpp */,
+ 26D90DA8140D51290036A311 /* SkQuadClipper.cpp */,
+ 26D90DA9140D51290036A311 /* SkQuadClipper.h */,
+ 26D90DAA140D51290036A311 /* SkRasterizer.cpp */,
+ 26D90DAB140D51290036A311 /* SkRect.cpp */,
+ 26D90DAC140D51290036A311 /* SkRefDict.cpp */,
+ 26D90DAD140D51290036A311 /* SkRegion.cpp */,
+ 26D90DAE140D51290036A311 /* SkRegionPriv.h */,
+ 26D90DAF140D51290036A311 /* SkRegion_path.cpp */,
+ 26D90DB0140D51290036A311 /* SkScalar.cpp */,
+ 26D90DB1140D51290036A311 /* SkScalerContext.cpp */,
+ 26D90DB2140D51290036A311 /* SkScan.cpp */,
+ 26D90DB3140D51290036A311 /* SkScanPriv.h */,
+ 26D90DB4140D51290036A311 /* SkScan_AntiPath.cpp */,
+ 26D90DB5140D51290036A311 /* SkScan_Antihair.cpp */,
+ 26D90DB6140D51290036A311 /* SkScan_Hairline.cpp */,
+ 26D90DB7140D51290036A311 /* SkScan_Path.cpp */,
+ 26D90DB8140D51290036A311 /* SkShader.cpp */,
+ 26D90DB9140D51290036A311 /* SkShape.cpp */,
+ 26D90DBA140D51290036A311 /* SkSinTable.h */,
+ 26D90DBB140D51290036A311 /* SkSpriteBlitter.h */,
+ 26D90DBC140D51290036A311 /* SkSpriteBlitterTemplate.h */,
+ 26D90DBD140D51290036A311 /* SkSpriteBlitter_ARGB32.cpp */,
+ 26D90DBE140D51290036A311 /* SkSpriteBlitter_RGB16.cpp */,
+ 26D90DBF140D51290036A311 /* SkStream.cpp */,
+ 26D90DC0140D51290036A311 /* SkString.cpp */,
+ 26D90DC1140D51290036A311 /* SkStroke.cpp */,
+ 26D90DC2140D51290036A311 /* SkStrokerPriv.cpp */,
+ 26D90DC3140D51290036A311 /* SkStrokerPriv.h */,
+ 26D90DC4140D51290036A311 /* SkTSearch.cpp */,
+ 26D90DC5140D51290036A311 /* SkTSort.h */,
+ 26D90DC6140D51290036A311 /* SkTemplatesPriv.h */,
+ 26D90DC7140D51290036A311 /* SkTextFormatParams.h */,
+ 26D90DC8140D51290036A311 /* SkTypeface.cpp */,
+ 26D90DC9140D51290036A311 /* SkTypefaceCache.cpp */,
+ 26D90DCA140D51290036A311 /* SkTypefaceCache.h */,
+ 26D90DCB140D51290036A311 /* SkUnPreMultiply.cpp */,
+ 26D90DCC140D51290036A311 /* SkUtils.cpp */,
+ 26D90DCD140D51290036A311 /* SkWriter32.cpp */,
+ 26D90DCE140D51290036A311 /* SkXfermode.cpp */,
+ );
+ path = core;
+ sourceTree = "<group>";
+ };
+ 26D90DD1140D51290036A311 /* ports */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90DD2140D51290036A311 /* SkDebug_stdio.cpp */,
+ 26D90DD3140D51290036A311 /* SkFontHost_mac_coretext.cpp */,
+ 26D90DD4140D51290036A311 /* SkGlobals_global.cpp */,
+ 26D90DD5140D51290036A311 /* SkMemory_malloc.cpp */,
+ 26D90DD6140D51290036A311 /* SkThread_pthread.cpp */,
+ 26D90DD7140D51290036A311 /* SkTime_Unix.cpp */,
+ 26D90DD8140D51290036A311 /* SkXMLParser_empty.cpp */,
+ 26D90DD9140D51290036A311 /* sk_predefined_gamma.h */,
+ );
+ path = ports;
+ sourceTree = "<group>";
+ };
+ 26D90DDA140D51290036A311 /* effects */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90DDB140D51290036A311 /* include */,
+ 26D90DF2140D51290036A311 /* src */,
+ );
+ name = effects;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 26D90DDB140D51290036A311 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90DDC140D51290036A311 /* Sk1DPathEffect.h */,
+ 26D90DDD140D51290036A311 /* Sk2DPathEffect.h */,
+ 26D90DDE140D51290036A311 /* SkAvoidXfermode.h */,
+ 26D90DDF140D51290036A311 /* SkBlurDrawLooper.h */,
+ 26D90DE0140D51290036A311 /* SkBlurMaskFilter.h */,
+ 26D90DE1140D51290036A311 /* SkColorMatrix.h */,
+ 26D90DE2140D51290036A311 /* SkColorMatrixFilter.h */,
+ 26D90DE3140D51290036A311 /* SkCornerPathEffect.h */,
+ 26D90DE4140D51290036A311 /* SkDashPathEffect.h */,
+ 26D90DE5140D51290036A311 /* SkDiscretePathEffect.h */,
+ 26D90DE6140D51290036A311 /* SkDrawExtraPathEffect.h */,
+ 26D90DE7140D51290036A311 /* SkEmbossMaskFilter.h */,
+ 26D90DE8140D51290036A311 /* SkGradientShader.h */,
+ 26D90DE9140D51290036A311 /* SkGroupShape.h */,
+ 26D90DEA140D51290036A311 /* SkKernel33MaskFilter.h */,
+ 26D90DEB140D51290036A311 /* SkLayerDrawLooper.h */,
+ 26D90DEC140D51290036A311 /* SkLayerRasterizer.h */,
+ 26D90DED140D51290036A311 /* SkPaintFlagsDrawFilter.h */,
+ 26D90DEE140D51290036A311 /* SkPixelXorXfermode.h */,
+ 26D90DEF140D51290036A311 /* SkPorterDuff.h */,
+ 26D90DF0140D51290036A311 /* SkRectShape.h */,
+ 26D90DF1140D51290036A311 /* SkTransparentShader.h */,
+ );
+ name = include;
+ path = include/effects;
+ sourceTree = "<group>";
+ };
+ 26D90DF2140D51290036A311 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90DF3140D51290036A311 /* Sk1DPathEffect.cpp */,
+ 26D90DF4140D51290036A311 /* Sk2DPathEffect.cpp */,
+ 26D90DF5140D51290036A311 /* SkAvoidXfermode.cpp */,
+ 26D90DF6140D51290036A311 /* SkBitmapCache.cpp */,
+ 26D90DF7140D51290036A311 /* SkBitmapCache.h */,
+ 26D90DF8140D51290036A311 /* SkBlurDrawLooper.cpp */,
+ 26D90DF9140D51290036A311 /* SkBlurMask.cpp */,
+ 26D90DFA140D51290036A311 /* SkBlurMask.h */,
+ 26D90DFB140D51290036A311 /* SkBlurMaskFilter.cpp */,
+ 26D90DFC140D51290036A311 /* SkColorFilters.cpp */,
+ 26D90DFD140D51290036A311 /* SkColorMatrixFilter.cpp */,
+ 26D90DFE140D51290036A311 /* SkCornerPathEffect.cpp */,
+ 26D90DFF140D51290036A311 /* SkDashPathEffect.cpp */,
+ 26D90E00140D51290036A311 /* SkDiscretePathEffect.cpp */,
+ 26D90E01140D51290036A311 /* SkEmbossMask.cpp */,
+ 26D90E02140D51290036A311 /* SkEmbossMask.h */,
+ 26D90E03140D51290036A311 /* SkEmbossMaskFilter.cpp */,
+ 26D90E04140D51290036A311 /* SkEmbossMask_Table.h */,
+ 26D90E05140D51290036A311 /* SkGradientShader.cpp */,
+ 26D90E06140D51290036A311 /* SkGroupShape.cpp */,
+ 26D90E07140D51290036A311 /* SkKernel33MaskFilter.cpp */,
+ 26D90E08140D51290036A311 /* SkLayerDrawLooper.cpp */,
+ 26D90E09140D51290036A311 /* SkLayerRasterizer.cpp */,
+ 26D90E0A140D51290036A311 /* SkPaintFlagsDrawFilter.cpp */,
+ 26D90E0B140D51290036A311 /* SkPixelXorXfermode.cpp */,
+ 26D90E0C140D51290036A311 /* SkPorterDuff.cpp */,
+ 26D90E0D140D51290036A311 /* SkRadialGradient_Table.h */,
+ 26D90E0E140D51290036A311 /* SkRectShape.cpp */,
+ 26D90E0F140D51290036A311 /* SkTransparentShader.cpp */,
+ );
+ name = src;
+ path = src/effects;
+ sourceTree = "<group>";
+ };
+ 26D90E10140D51290036A311 /* gpu */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90E11140D51290036A311 /* gpu */,
+ 26D90E86140D51290036A311 /* include */,
+ 26D90E8B140D51290036A311 /* src */,
+ );
+ name = gpu;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 26D90E11140D51290036A311 /* gpu */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90E12140D51290036A311 /* include */,
+ 26D90E4C140D51290036A311 /* src */,
+ );
+ path = gpu;
+ sourceTree = "<group>";
+ };
+ 26D90E12140D51290036A311 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90E13140D51290036A311 /* FlingState.h */,
+ 26D90E14140D51290036A311 /* GrGLDefines.h */,
+ 26D90E15140D51290036A311 /* GrTemplates.h */,
+ 26D90E16140D51290036A311 /* GrAllocPool.h */,
+ 26D90E17140D51290036A311 /* GrAllocator.h */,
+ 26D90E18140D51290036A311 /* GrAtlas.h */,
+ 26D90E19140D51290036A311 /* GrClip.h */,
+ 26D90E1A140D51290036A311 /* GrClipIterator.h */,
+ 26D90E1B140D51290036A311 /* GrColor.h */,
+ 26D90E1C140D51290036A311 /* GrConfig.h */,
+ 26D90E1D140D51290036A311 /* GrContext.h */,
+ 26D90E1E140D51290036A311 /* GrContext_impl.h */,
+ 26D90E1F140D51290036A311 /* GrDrawTarget.h */,
+ 26D90E20140D51290036A311 /* GrFontScaler.h */,
+ 26D90E21140D51290036A311 /* GrGLConfig.h */,
+ 26D90E22140D51290036A311 /* GrGLConfig_chrome.h */,
+ 26D90E23140D51290036A311 /* GrGLInterface.h */,
+ 26D90E24140D51290036A311 /* GrGeometryBuffer.h */,
+ 26D90E25140D51290036A311 /* GrGlyph.h */,
+ 26D90E26140D51290036A311 /* GrGpu.h */,
+ 26D90E27140D51290036A311 /* GrGpuVertex.h */,
+ 26D90E28140D51290036A311 /* GrIPoint.h */,
+ 26D90E29140D51290036A311 /* GrInOrderDrawBuffer.h */,
+ 26D90E2A140D51290036A311 /* GrIndexBuffer.h */,
+ 26D90E2B140D51290036A311 /* GrInstanceCounter.h */,
+ 26D90E2C140D51290036A311 /* GrKey.h */,
+ 26D90E2D140D51290036A311 /* GrMatrix.h */,
+ 26D90E2E140D51290036A311 /* GrMesh.h */,
+ 26D90E2F140D51290036A311 /* GrNoncopyable.h */,
+ 26D90E30140D51290036A311 /* GrPaint.h */,
+ 26D90E31140D51290036A311 /* GrPath.h */,
+ 26D90E32140D51290036A311 /* GrPathRenderer.h */,
+ 26D90E33140D51290036A311 /* GrPathSink.h */,
+ 26D90E34140D51290036A311 /* GrPlotMgr.h */,
+ 26D90E35140D51290036A311 /* GrPoint.h */,
+ 26D90E36140D51290036A311 /* GrRandom.h */,
+ 26D90E37140D51290036A311 /* GrRect.h */,
+ 26D90E38140D51290036A311 /* GrRectanizer.h */,
+ 26D90E39140D51290036A311 /* GrRefCnt.h */,
+ 26D90E3A140D51290036A311 /* GrResource.h */,
+ 26D90E3B140D51290036A311 /* GrSamplerState.h */,
+ 26D90E3C140D51290036A311 /* GrScalar.h */,
+ 26D90E3D140D51290036A311 /* GrStencil.h */,
+ 26D90E3E140D51290036A311 /* GrStopwatch.h */,
+ 26D90E3F140D51290036A311 /* GrStringBuilder.h */,
+ 26D90E40140D51290036A311 /* GrTArray.h */,
+ 26D90E41140D51290036A311 /* GrTBSearch.h */,
+ 26D90E42140D51290036A311 /* GrTDArray.h */,
+ 26D90E43140D51290036A311 /* GrTHashCache.h */,
+ 26D90E44140D51290036A311 /* GrTLList.h */,
+ 26D90E45140D51290036A311 /* GrTesselatedPathRenderer.h */,
+ 26D90E46140D51290036A311 /* GrTextContext.h */,
+ 26D90E47140D51290036A311 /* GrTextStrike.h */,
+ 26D90E48140D51290036A311 /* GrTexture.h */,
+ 26D90E49140D51290036A311 /* GrTypes.h */,
+ 26D90E4A140D51290036A311 /* GrUserConfig.h */,
+ 26D90E4B140D51290036A311 /* GrVertexBuffer.h */,
+ );
+ path = include;
+ sourceTree = "<group>";
+ };
+ 26D90E4C140D51290036A311 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90E4D140D51290036A311 /* GrAddPathRenderers_none.cpp */,
+ 26D90E4E140D51290036A311 /* GrDefaultPathRenderer.cpp */,
+ 26D90E4F140D51290036A311 /* GrDefaultPathRenderer.h */,
+ 26D90E50140D51290036A311 /* GrGLStencilBuffer.cpp */,
+ 26D90E51140D51290036A311 /* GrGLStencilBuffer.h */,
+ 26D90E52140D51290036A311 /* GrPathRenderer.h */,
+ 26D90E53140D51290036A311 /* GrPathRendererChain.cpp */,
+ 26D90E54140D51290036A311 /* GrPathRendererChain.h */,
+ 26D90E55140D51290036A311 /* GrStencilBuffer.cpp */,
+ 26D90E56140D51290036A311 /* GrRenderTarget.cpp */,
+ 26D90E57140D51290036A311 /* GrGLRenderTarget.cpp */,
+ 26D90E58140D51290036A311 /* GrGLRenderTarget.h */,
+ 26D90E59140D51290036A311 /* GrGLTexture.h */,
+ 26D90E5A140D51290036A311 /* GrResourceCache.cpp */,
+ 26D90E5B140D51290036A311 /* GrResourceCache.h */,
+ 26D90E5C140D51290036A311 /* FlingState.cpp */,
+ 26D90E5D140D51290036A311 /* GrDrawMesh.cpp */,
+ 26D90E5E140D51290036A311 /* GrAllocPool.cpp */,
+ 26D90E5F140D51290036A311 /* GrAtlas.cpp */,
+ 26D90E60140D51290036A311 /* GrBinHashKey.h */,
+ 26D90E61140D51290036A311 /* GrBufferAllocPool.cpp */,
+ 26D90E62140D51290036A311 /* GrBufferAllocPool.h */,
+ 26D90E63140D51290036A311 /* GrClip.cpp */,
+ 26D90E64140D51290036A311 /* GrContext.cpp */,
+ 26D90E65140D51290036A311 /* GrDrawTarget.cpp */,
+ 26D90E66140D51290036A311 /* GrGLDefaultInterface_none.cpp */,
+ 26D90E67140D51290036A311 /* GrGLIndexBuffer.cpp */,
+ 26D90E68140D51290036A311 /* GrGLInterface.cpp */,
+ 26D90E69140D51290036A311 /* GrGLProgram.cpp */,
+ 26D90E6A140D51290036A311 /* GrGLProgram.h */,
+ 26D90E6B140D51290036A311 /* GrGLTexture.cpp */,
+ 26D90E6C140D51290036A311 /* GrGLUtil.cpp */,
+ 26D90E6D140D51290036A311 /* GrGLVertexBuffer.cpp */,
+ 26D90E6E140D51290036A311 /* GrGpu.cpp */,
+ 26D90E6F140D51290036A311 /* GrGpuFactory.cpp */,
+ 26D90E70140D51290036A311 /* GrGpuGL.cpp */,
+ 26D90E71140D51290036A311 /* GrGpuGL.h */,
+ 26D90E72140D51290036A311 /* GrGpuGLFixed.cpp */,
+ 26D90E73140D51290036A311 /* GrGpuGLFixed.h */,
+ 26D90E74140D51290036A311 /* GrGpuGLShaders.cpp */,
+ 26D90E75140D51290036A311 /* GrGpuGLShaders.h */,
+ 26D90E76140D51290036A311 /* GrInOrderDrawBuffer.cpp */,
+ 26D90E77140D51290036A311 /* GrMatrix.cpp */,
+ 26D90E78140D51290036A311 /* GrMemory.cpp */,
+ 26D90E79140D51290036A311 /* GrPathRenderer.cpp */,
+ 26D90E7A140D51290036A311 /* GrPathUtils.cpp */,
+ 26D90E7B140D51290036A311 /* GrPathUtils.h */,
+ 26D90E7C140D51290036A311 /* GrRectanizer.cpp */,
+ 26D90E7D140D51290036A311 /* GrRedBlackTree.h */,
+ 26D90E7E140D51290036A311 /* GrResource.cpp */,
+ 26D90E7F140D51290036A311 /* GrStencil.cpp */,
+ 26D90E81140D51290036A311 /* GrTextContext.cpp */,
+ 26D90E82140D51290036A311 /* GrTextStrike.cpp */,
+ 26D90E83140D51290036A311 /* GrTextStrike_impl.h */,
+ 26D90E84140D51290036A311 /* GrTexture.cpp */,
+ 26D90E85140D51290036A311 /* gr_unittests.cpp */,
+ );
+ path = src;
+ sourceTree = "<group>";
+ };
+ 26D90E86140D51290036A311 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90E87140D51290036A311 /* SkGpuCanvas.h */,
+ 26D90E88140D51290036A311 /* SkGpuDevice.h */,
+ 26D90E89140D51290036A311 /* SkGr.h */,
+ 26D90E8A140D51290036A311 /* SkGrTexturePixelRef.h */,
+ );
+ name = include;
+ path = include/gpu;
+ sourceTree = "<group>";
+ };
+ 26D90E8B140D51290036A311 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90E8C140D51290036A311 /* GrPrintf_skia.cpp */,
+ 26D90E8D140D51290036A311 /* SkGpuCanvas.cpp */,
+ 26D90E8E140D51290036A311 /* SkGpuDevice.cpp */,
+ 26D90E8F140D51290036A311 /* SkGr.cpp */,
+ 26D90E90140D51290036A311 /* SkGrFontScaler.cpp */,
+ 26D90E91140D51290036A311 /* SkGrTexturePixelRef.cpp */,
+ );
+ name = src;
+ path = src/gpu;
+ sourceTree = "<group>";
+ };
+ 26D90E92140D51290036A311 /* images */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90E93140D51290036A311 /* include */,
+ 26D90E9C140D51290036A311 /* src */,
+ );
+ name = images;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 26D90E93140D51290036A311 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90E94140D51290036A311 /* SkFlipPixelRef.h */,
+ 26D90E95140D51290036A311 /* SkImageRef_GlobalPool.h */,
+ 26D90E96140D51290036A311 /* SkImageRef.h */,
+ 26D90E97140D51290036A311 /* SkJpegUtility.h */,
+ 26D90E98140D51290036A311 /* SkMovie.h */,
+ 26D90E99140D51290036A311 /* SkPageFlipper.h */,
+ 26D90E9A140D51290036A311 /* SkImageDecoder.h */,
+ 26D90E9B140D51290036A311 /* SkImageEncoder.h */,
+ );
+ name = include;
+ path = include/images;
+ sourceTree = "<group>";
+ };
+ 26D90E9C140D51290036A311 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90E9D140D51290036A311 /* images */,
+ );
+ path = src;
+ sourceTree = "<group>";
+ };
+ 26D90E9D140D51290036A311 /* images */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90E9E140D51290036A311 /* SkMovie.cpp */,
+ 26D90E9F140D51290036A311 /* SkBitmap_RLEPixels.h */,
+ 26D90EA0140D51290036A311 /* SkCreateRLEPixelRef.cpp */,
+ 26D90EA1140D51290036A311 /* SkFDStream.cpp */,
+ 26D90EA2140D51290036A311 /* SkFlipPixelRef.cpp */,
+ 26D90EA3140D51290036A311 /* SkImageDecoder.cpp */,
+ 26D90EA4140D51290036A311 /* SkImageEncoder.cpp */,
+ 26D90EA5140D51290036A311 /* SkImageDecoder_Factory.cpp */,
+ 26D90EA6140D51290036A311 /* SkImageEncoder_Factory.cpp */,
+ 26D90EA7140D51290036A311 /* SkPageFlipper.cpp */,
+ 26D90EA8140D51290036A311 /* SkImageRef.cpp */,
+ 26D90EA9140D51290036A311 /* SkImageRefPool.cpp */,
+ 26D90EAA140D51290036A311 /* SkImageRefPool.h */,
+ 26D90EAB140D51290036A311 /* SkImageRef_GlobalPool.cpp */,
+ );
+ path = images;
+ sourceTree = "<group>";
+ };
+ 26D90EAF140D51290036A311 /* opts */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90EB1140D51290036A311 /* SkBitmapProcState_opts_arm.cpp */,
+ 26D9112F140D53C30036A311 /* SkBlitRow_opts_none.cpp */,
+ 26D91130140D53C30036A311 /* SkUtils_opts_none.cpp */,
+ 26D90EB6140D51290036A311 /* SkBlitRow_opts_SSE2.h */,
+ 26D90EB8140D51290036A311 /* SkUtils_opts_SSE2.h */,
+ );
+ name = opts;
+ path = ../../src/opts;
+ sourceTree = SOURCE_ROOT;
+ };
+ 26D90EBC140D51290036A311 /* pipe */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90EBD140D51290036A311 /* SkGPipe.h */,
+ 26D90EBE140D51290036A311 /* SkGPipeRead.cpp */,
+ 26D90EBF140D51290036A311 /* SkGPipeWrite.cpp */,
+ );
+ name = pipe;
+ path = ../../src/pipe;
+ sourceTree = SOURCE_ROOT;
+ };
+ 26D90EC0140D51290036A311 /* pdf */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90ECF140D51290036A311 /* src */,
+ 26D90EC1140D51290036A311 /* include */,
+ );
+ name = pdf;
+ sourceTree = "<group>";
+ };
+ 26D90EC1140D51290036A311 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90EC2140D51290036A311 /* SkBitSet.h */,
+ 26D90EC3140D51290036A311 /* SkPDFCatalog.h */,
+ 26D90EC4140D51290036A311 /* SkPDFDevice.h */,
+ 26D90EC5140D51290036A311 /* SkPDFDocument.h */,
+ 26D90EC6140D51290036A311 /* SkPDFFont.h */,
+ 26D90EC7140D51290036A311 /* SkPDFFormXObject.h */,
+ 26D90EC8140D51290036A311 /* SkPDFGraphicState.h */,
+ 26D90EC9140D51290036A311 /* SkPDFImage.h */,
+ 26D90ECA140D51290036A311 /* SkPDFPage.h */,
+ 26D90ECB140D51290036A311 /* SkPDFShader.h */,
+ 26D90ECC140D51290036A311 /* SkPDFStream.h */,
+ 26D90ECD140D51290036A311 /* SkPDFTypes.h */,
+ 26D90ECE140D51290036A311 /* SkPDFUtils.h */,
+ );
+ name = include;
+ sourceTree = "<group>";
+ };
+ 26D90ECF140D51290036A311 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90ED0140D51290036A311 /* SkBitSet.cpp */,
+ 26D90ED1140D51290036A311 /* SkPDFCatalog.cpp */,
+ 26D90ED2140D51290036A311 /* SkPDFDevice.cpp */,
+ 26D90ED3140D51290036A311 /* SkPDFDocument.cpp */,
+ 26D90ED4140D51290036A311 /* SkPDFFont.cpp */,
+ 26D90ED5140D51290036A311 /* SkPDFFormXObject.cpp */,
+ 26D90ED6140D51290036A311 /* SkPDFGraphicState.cpp */,
+ 26D90ED7140D51290036A311 /* SkPDFImage.cpp */,
+ 26D90ED8140D51290036A311 /* SkPDFPage.cpp */,
+ 26D90ED9140D51290036A311 /* SkPDFShader.cpp */,
+ 26D90EDA140D51290036A311 /* SkPDFStream.cpp */,
+ 26D90EDB140D51290036A311 /* SkPDFTypes.cpp */,
+ 26D90EDC140D51290036A311 /* SkPDFUtils.cpp */,
+ );
+ name = src;
+ sourceTree = "<group>";
+ };
+ 26D90EDD140D51290036A311 /* svg */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90EDE140D51290036A311 /* include */,
+ 26D90EE4140D51290036A311 /* src */,
+ );
+ name = svg;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 26D90EDE140D51290036A311 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90EDF140D51290036A311 /* SkSVGAttribute.h */,
+ 26D90EE0140D51290036A311 /* SkSVGBase.h */,
+ 26D90EE1140D51290036A311 /* SkSVGPaintState.h */,
+ 26D90EE2140D51290036A311 /* SkSVGParser.h */,
+ 26D90EE3140D51290036A311 /* SkSVGTypes.h */,
+ );
+ name = include;
+ path = include/svg;
+ sourceTree = "<group>";
+ };
+ 26D90EE4140D51290036A311 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90EE5140D51290036A311 /* SkSVGCircle.cpp */,
+ 26D90EE6140D51290036A311 /* SkSVGCircle.h */,
+ 26D90EE7140D51290036A311 /* SkSVGClipPath.cpp */,
+ 26D90EE8140D51290036A311 /* SkSVGClipPath.h */,
+ 26D90EE9140D51290036A311 /* SkSVGDefs.cpp */,
+ 26D90EEA140D51290036A311 /* SkSVGDefs.h */,
+ 26D90EEB140D51290036A311 /* SkSVGElements.cpp */,
+ 26D90EEC140D51290036A311 /* SkSVGElements.h */,
+ 26D90EED140D51290036A311 /* SkSVGEllipse.cpp */,
+ 26D90EEE140D51290036A311 /* SkSVGEllipse.h */,
+ 26D90EEF140D51290036A311 /* SkSVGFeColorMatrix.cpp */,
+ 26D90EF0140D51290036A311 /* SkSVGFeColorMatrix.h */,
+ 26D90EF1140D51290036A311 /* SkSVGFilter.cpp */,
+ 26D90EF2140D51290036A311 /* SkSVGFilter.h */,
+ 26D90EF3140D51290036A311 /* SkSVGG.cpp */,
+ 26D90EF4140D51290036A311 /* SkSVGG.h */,
+ 26D90EF5140D51290036A311 /* SkSVGGradient.cpp */,
+ 26D90EF6140D51290036A311 /* SkSVGGradient.h */,
+ 26D90EF7140D51290036A311 /* SkSVGGroup.cpp */,
+ 26D90EF8140D51290036A311 /* SkSVGGroup.h */,
+ 26D90EF9140D51290036A311 /* SkSVGImage.cpp */,
+ 26D90EFA140D51290036A311 /* SkSVGImage.h */,
+ 26D90EFB140D51290036A311 /* SkSVGLine.cpp */,
+ 26D90EFC140D51290036A311 /* SkSVGLine.h */,
+ 26D90EFD140D51290036A311 /* SkSVGLinearGradient.cpp */,
+ 26D90EFE140D51290036A311 /* SkSVGLinearGradient.h */,
+ 26D90EFF140D512A0036A311 /* SkSVGMask.cpp */,
+ 26D90F00140D512A0036A311 /* SkSVGMask.h */,
+ 26D90F01140D512A0036A311 /* SkSVGMetadata.cpp */,
+ 26D90F02140D512A0036A311 /* SkSVGMetadata.h */,
+ 26D90F03140D512A0036A311 /* SkSVGPaintState.cpp */,
+ 26D90F04140D512A0036A311 /* SkSVGParser.cpp */,
+ 26D90F05140D512A0036A311 /* SkSVGPath.cpp */,
+ 26D90F06140D512A0036A311 /* SkSVGPath.h */,
+ 26D90F07140D512A0036A311 /* SkSVGPolygon.cpp */,
+ 26D90F08140D512A0036A311 /* SkSVGPolygon.h */,
+ 26D90F09140D512A0036A311 /* SkSVGPolyline.cpp */,
+ 26D90F0A140D512A0036A311 /* SkSVGPolyline.h */,
+ 26D90F0B140D512A0036A311 /* SkSVGRadialGradient.cpp */,
+ 26D90F0C140D512A0036A311 /* SkSVGRadialGradient.h */,
+ 26D90F0D140D512A0036A311 /* SkSVGRect.cpp */,
+ 26D90F0E140D512A0036A311 /* SkSVGRect.h */,
+ 26D90F0F140D512A0036A311 /* SkSVGSVG.cpp */,
+ 26D90F10140D512A0036A311 /* SkSVGSVG.h */,
+ 26D90F11140D512A0036A311 /* SkSVGStop.cpp */,
+ 26D90F12140D512A0036A311 /* SkSVGStop.h */,
+ 26D90F13140D512A0036A311 /* SkSVGSymbol.cpp */,
+ 26D90F14140D512A0036A311 /* SkSVGSymbol.h */,
+ 26D90F15140D512A0036A311 /* SkSVGText.cpp */,
+ 26D90F16140D512A0036A311 /* SkSVGText.h */,
+ 26D90F17140D512A0036A311 /* SkSVGUse.cpp */,
+ );
+ name = src;
+ path = src/svg;
+ sourceTree = "<group>";
+ };
+ 26D90F18140D512A0036A311 /* utils */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90F19140D512A0036A311 /* include */,
+ 26D90F30140D512A0036A311 /* src */,
+ );
+ name = utils;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 26D90F19140D512A0036A311 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90F1A140D512A0036A311 /* mac */,
+ 26D90F1C140D512A0036A311 /* SkBoundaryPatch.h */,
+ 26D90F1D140D512A0036A311 /* SkCamera.h */,
+ 26D90F1E140D512A0036A311 /* SkCubicInterval.h */,
+ 26D90F1F140D512A0036A311 /* SkCullPoints.h */,
+ 26D90F20140D512A0036A311 /* SkDumpCanvas.h */,
+ 26D90F21140D512A0036A311 /* SkEGLContext.h */,
+ 26D90F22140D512A0036A311 /* SkGLCanvas.h */,
+ 26D90F23140D512A0036A311 /* SkInterpolator.h */,
+ 26D90F24140D512A0036A311 /* SkLayer.h */,
+ 26D90F25140D512A0036A311 /* SkMatrix44.h */,
+ 26D90F26140D512A0036A311 /* SkMeshUtils.h */,
+ 26D90F27140D512A0036A311 /* SkNWayCanvas.h */,
+ 26D90F28140D512A0036A311 /* SkNinePatch.h */,
+ 26D90F29140D512A0036A311 /* SkParse.h */,
+ 26D90F2A140D512A0036A311 /* SkParsePaint.h */,
+ 26D90F2B140D512A0036A311 /* SkParsePath.h */,
+ 26D90F2C140D512A0036A311 /* SkProxyCanvas.h */,
+ 26D90F2D140D512A0036A311 /* SkSfntUtils.h */,
+ 26D90F2E140D512A0036A311 /* SkTextBox.h */,
+ 26D90F2F140D512A0036A311 /* SkUnitMappers.h */,
+ );
+ name = include;
+ path = include/utils;
+ sourceTree = "<group>";
+ };
+ 26D90F1A140D512A0036A311 /* mac */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90F1B140D512A0036A311 /* SkCGUtils.h */,
+ );
+ path = mac;
+ sourceTree = "<group>";
+ };
+ 26D90F30140D512A0036A311 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90F31140D512A0036A311 /* mac */,
+ 26D90F33140D512A0036A311 /* SkBoundaryPatch.cpp */,
+ 26D90F34140D512A0036A311 /* SkCamera.cpp */,
+ 26D90F35140D512A0036A311 /* SkColorMatrix.cpp */,
+ 26D90F36140D512A0036A311 /* SkCubicInterval.cpp */,
+ 26D90F37140D512A0036A311 /* SkCullPoints.cpp */,
+ 26D90F38140D512A0036A311 /* SkDumpCanvas.cpp */,
+ 26D90F39140D512A0036A311 /* SkInterpolator.cpp */,
+ 26D90F3A140D512A0036A311 /* SkLayer.cpp */,
+ 26D90F3B140D512A0036A311 /* SkMatrix44.cpp */,
+ 26D90F3C140D512A0036A311 /* SkMeshUtils.cpp */,
+ 26D90F3D140D512A0036A311 /* SkNWayCanvas.cpp */,
+ 26D90F3E140D512A0036A311 /* SkNinePatch.cpp */,
+ 26D90F3F140D512A0036A311 /* SkOSFile.cpp */,
+ 26D90F40140D512A0036A311 /* SkParse.cpp */,
+ 26D90F41140D512A0036A311 /* SkParseColor.cpp */,
+ 26D90F42140D512A0036A311 /* SkParsePath.cpp */,
+ 26D90F43140D512A0036A311 /* SkProxyCanvas.cpp */,
+ 26D90F44140D512A0036A311 /* SkSfntUtils.cpp */,
+ 26D90F45140D512A0036A311 /* SkUnitMappers.cpp */,
+ );
+ name = src;
+ path = src/utils;
+ sourceTree = "<group>";
+ };
+ 26D90F31140D512A0036A311 /* mac */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90F32140D512A0036A311 /* SkCreateCGImageRef.cpp */,
+ );
+ path = mac;
+ sourceTree = "<group>";
+ };
+ 26D90F46140D512A0036A311 /* views */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90F47140D512A0036A311 /* include */,
+ 26D90F5A140D512A0036A311 /* src */,
+ );
+ name = views;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 26D90F47140D512A0036A311 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90F48140D512A0036A311 /* SkApplication.h */,
+ 26D90F49140D512A0036A311 /* SkBGViewArtist.h */,
+ 26D90F4A140D512A0036A311 /* SkBorderView.h */,
+ 26D90F4B140D512A0036A311 /* SkEvent.h */,
+ 26D90F4C140D512A0036A311 /* SkEventSink.h */,
+ 26D90F4D140D512A0036A311 /* SkImageView.h */,
+ 26D90F4E140D512A0036A311 /* SkKey.h */,
+ 26D90F4F140D512A0036A311 /* SkOSMenu.h */,
+ 26D90F50140D512A0036A311 /* SkProgressBarView.h */,
+ 26D90F51140D512A0036A311 /* SkScrollBarView.h */,
+ 26D90F52140D512A0036A311 /* SkStackViewLayout.h */,
+ 26D90F53140D512A0036A311 /* SkSystemEventTypes.h */,
+ 26D90F54140D512A0036A311 /* SkTouchGesture.h */,
+ 26D90F55140D512A0036A311 /* SkView.h */,
+ 26D90F56140D512A0036A311 /* SkViewInflate.h */,
+ 26D90F57140D512A0036A311 /* SkWidget.h */,
+ 26D90F58140D512A0036A311 /* SkWidgetViews.h */,
+ 26D90F59140D512A0036A311 /* SkWindow.h */,
+ );
+ name = include;
+ path = include/views;
+ sourceTree = "<group>";
+ };
+ 26D90F5A140D512A0036A311 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90F5B140D512A0036A311 /* SkBGViewArtist.cpp */,
+ 26D90F5C140D512A0036A311 /* SkEvent.cpp */,
+ 26D90F5D140D512A0036A311 /* SkEventSink.cpp */,
+ 26D90F5E140D512A0036A311 /* SkImageView.cpp */,
+ 26D90F5F140D512A0036A311 /* SkListView.cpp */,
+ 26D90F61140D512A0036A311 /* SkOSMenu.cpp */,
+ 26D90F62140D512A0036A311 /* SkParsePaint.cpp */,
+ 26D90F67140D512A0036A311 /* SkStackViewLayout.cpp */,
+ 26D90F68140D512A0036A311 /* SkStaticTextView.cpp */,
+ 26D90F69140D512A0036A311 /* SkTagList.cpp */,
+ 26D90F6A140D512A0036A311 /* SkTagList.h */,
+ 26D90F6B140D512A0036A311 /* SkTextBox.cpp */,
+ 26D90F6C140D512A0036A311 /* SkTouchGesture.cpp */,
+ 26D90F6D140D512A0036A311 /* SkView.cpp */,
+ 26D90F6E140D512A0036A311 /* SkViewInflate.cpp */,
+ 26D90F6F140D512A0036A311 /* SkViewPriv.cpp */,
+ 26D90F70140D512A0036A311 /* SkViewPriv.h */,
+ 26D90F71140D512A0036A311 /* SkWidget.cpp */,
+ 26D90F73140D512A0036A311 /* SkWidgets.cpp */,
+ 26D90F74140D512A0036A311 /* SkWindow.cpp */,
+ );
+ name = src;
+ path = src/views;
+ sourceTree = "<group>";
+ };
+ 26D90F75140D512A0036A311 /* xml */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90F76140D512A0036A311 /* include */,
+ 26D90F7D140D512A0036A311 /* src */,
+ );
+ name = xml;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 26D90F76140D512A0036A311 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90F77140D512A0036A311 /* SkBML_WXMLParser.h */,
+ 26D90F78140D512A0036A311 /* SkBML_XMLParser.h */,
+ 26D90F79140D512A0036A311 /* SkDOM.h */,
+ 26D90F7A140D512A0036A311 /* SkJS.h */,
+ 26D90F7B140D512A0036A311 /* SkXMLParser.h */,
+ 26D90F7C140D512A0036A311 /* SkXMLWriter.h */,
+ );
+ name = include;
+ path = include/xml;
+ sourceTree = "<group>";
+ };
+ 26D90F7D140D512A0036A311 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 26D90F7E140D512A0036A311 /* SkDOM.cpp */,
+ 26D90F7F140D512A0036A311 /* SkXMLParser.cpp */,
+ 26D90F80140D512A0036A311 /* SkXMLWriter.cpp */,
+ );
+ name = src;
+ path = src/xml;
+ sourceTree = "<group>";
+ };
+ 26D9113C140D54720036A311 /* iOS */ = {
+ isa = PBXGroup;
+ children = (
+ 26371975140D6C19006CC295 /* SkUIView.h */,
+ 26371976140D6C19006CC295 /* SkUIView.mm */,
+ 26D91153140D54E40036A311 /* SkEventNotifier.h */,
+ 26D91154140D54E40036A311 /* SkEventNotifier.mm */,
+ 26D9118E140D558A0036A311 /* SkOSFile_iOS.mm */,
+ 26D91192140D55980036A311 /* SkOSWindow_iOS.h */,
+ 26D91193140D55980036A311 /* SkOSWindow_iOS.mm */,
+ );
+ name = iOS;
+ sourceTree = "<group>";
+ };
+ 26D912E9140D5FCC0036A311 /* xcconfig */ = {
+ isa = PBXGroup;
+ children = (
+ 26D912EA140D5FCC0036A311 /* SkiOSSampleApp-Debug.xcconfig */,
+ 26D912EB140D5FCC0036A311 /* SkiOSSampleApp-Release.xcconfig */,
+ 26D912EC140D5FCC0036A311 /* SkiOSSampleApp-Base.xcconfig */,
+ );
+ name = xcconfig;
+ sourceTree = "<group>";
+ };
+ 2860E324111B887F00E27156 /* iPhone */ = {
+ isa = PBXGroup;
+ children = (
+ 2860E325111B887F00E27156 /* AppDelegate_iPhone.h */,
+ 2860E326111B887F00E27156 /* AppDelegate_iPhone.m */,
+ 2860E327111B887F00E27156 /* MainWindow_iPhone.xib */,
+ );
+ path = iPhone;
+ sourceTree = "<group>";
+ };
+ 2860E32A111B888700E27156 /* iPad */ = {
+ isa = PBXGroup;
+ children = (
+ 2860E32B111B888700E27156 /* AppDelegate_iPad.h */,
+ 2860E32C111B888700E27156 /* AppDelegate_iPad.m */,
+ 2860E32D111B888700E27156 /* MainWindow_iPad.xib */,
+ );
+ path = iPad;
+ sourceTree = "<group>";
+ };
+ 28EEBF621118D79A00187D67 /* Shared */ = {
+ isa = PBXGroup;
+ children = (
+ 26D9113B140D54720036A311 /* skia_ios.mm */,
+ 26D912E9140D5FCC0036A311 /* xcconfig */,
+ 26D9113C140D54720036A311 /* iOS */,
+ 26D90C43140D51290036A311 /* Skia */,
+ );
+ name = Shared;
+ sourceTree = "<group>";
+ };
+ 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
+ isa = PBXGroup;
+ children = (
+ 26D91302140D60330036A311 /* SimpleApp.h */,
+ 26D91303140D60330036A311 /* SimpleApp.mm */,
+ 2860E32A111B888700E27156 /* iPad */,
+ 2860E324111B887F00E27156 /* iPhone */,
+ 28EEBF621118D79A00187D67 /* Shared */,
+ 29B97315FDCFA39411CA2CEA /* Other Sources */,
+ 29B97323FDCFA39411CA2CEA /* Frameworks */,
+ 19C28FACFE9D520D11CA2CBB /* Products */,
+ );
+ name = CustomTemplate;
+ sourceTree = "<group>";
+ };
+ 29B97315FDCFA39411CA2CEA /* Other Sources */ = {
+ isa = PBXGroup;
+ children = (
+ 8D1107310486CEB800E47090 /* SimpleiOSApp-Info.plist */,
+ );
+ name = "Other Sources";
+ sourceTree = "<group>";
+ };
+ 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 26D9111D140D52CD0036A311 /* CoreFoundation.framework */,
+ 26D9111F140D52CD0036A311 /* CoreText.framework */,
+ 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
+ 1D30AB110D05D00D00671497 /* Foundation.framework */,
+ 288765FC0DF74451002DB57D /* CoreGraphics.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 1D6058900D05DD3D006BFB54 /* SimpleiOSApp */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "SimpleiOSApp" */;
+ buildPhases = (
+ 1D60588D0D05DD3D006BFB54 /* Resources */,
+ 1D60588E0D05DD3D006BFB54 /* Sources */,
+ 1D60588F0D05DD3D006BFB54 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SimpleiOSApp;
+ productName = iosshell;
+ productReference = 1D6058910D05DD3D006BFB54 /* SimpleiOSApp.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 29B97313FDCFA39411CA2CEA /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SimpleiOSApp" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 1;
+ knownRegions = (
+ English,
+ Japanese,
+ French,
+ German,
+ );
+ mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 1D6058900D05DD3D006BFB54 /* SimpleiOSApp */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 1D60588D0D05DD3D006BFB54 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2860E329111B887F00E27156 /* MainWindow_iPhone.xib in Resources */,
+ 2860E32F111B888700E27156 /* MainWindow_iPad.xib in Resources */,
+ 26D912ED140D5FCC0036A311 /* SkiOSSampleApp-Debug.xcconfig in Resources */,
+ 26D912EE140D5FCC0036A311 /* SkiOSSampleApp-Release.xcconfig in Resources */,
+ 26D912EF140D5FCC0036A311 /* SkiOSSampleApp-Base.xcconfig in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 1D60588E0D05DD3D006BFB54 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2860E328111B887F00E27156 /* AppDelegate_iPhone.m in Sources */,
+ 2860E32E111B888700E27156 /* AppDelegate_iPad.m in Sources */,
+ 26D90F81140D512A0036A311 /* SkAnimateActive.cpp in Sources */,
+ 26D90F82140D512A0036A311 /* SkAnimateBase.cpp in Sources */,
+ 26D90F83140D512A0036A311 /* SkAnimateField.cpp in Sources */,
+ 26D90F84140D512A0036A311 /* SkAnimateMaker.cpp in Sources */,
+ 26D90F85140D512A0036A311 /* SkAnimateSet.cpp in Sources */,
+ 26D90F86140D512A0036A311 /* SkAnimator.cpp in Sources */,
+ 26D90F87140D512A0036A311 /* SkAnimatorScript.cpp in Sources */,
+ 26D90F88140D512A0036A311 /* SkBase64.cpp in Sources */,
+ 26D90F89140D512A0036A311 /* SkBoundable.cpp in Sources */,
+ 26D90F8A140D512A0036A311 /* SkBuildCondensedInfo.cpp in Sources */,
+ 26D90F8B140D512A0036A311 /* SkDisplayAdd.cpp in Sources */,
+ 26D90F8C140D512A0036A311 /* SkDisplayApply.cpp in Sources */,
+ 26D90F8D140D512A0036A311 /* SkDisplayBounds.cpp in Sources */,
+ 26D90F8E140D512A0036A311 /* SkDisplayEvent.cpp in Sources */,
+ 26D90F8F140D512A0036A311 /* SkDisplayEvents.cpp in Sources */,
+ 26D90F90140D512A0036A311 /* SkDisplayInclude.cpp in Sources */,
+ 26D90F91140D512A0036A311 /* SkDisplayInput.cpp in Sources */,
+ 26D90F92140D512A0036A311 /* SkDisplayList.cpp in Sources */,
+ 26D90F93140D512A0036A311 /* SkDisplayMath.cpp in Sources */,
+ 26D90F94140D512A0036A311 /* SkDisplayMovie.cpp in Sources */,
+ 26D90F95140D512A0036A311 /* SkDisplayNumber.cpp in Sources */,
+ 26D90F96140D512A0036A311 /* SkDisplayPost.cpp in Sources */,
+ 26D90F97140D512A0036A311 /* SkDisplayRandom.cpp in Sources */,
+ 26D90F98140D512A0036A311 /* SkDisplayScreenplay.cpp in Sources */,
+ 26D90F99140D512A0036A311 /* SkDisplayType.cpp in Sources */,
+ 26D90F9A140D512A0036A311 /* SkDisplayTypes.cpp in Sources */,
+ 26D90F9B140D512A0036A311 /* SkDisplayXMLParser.cpp in Sources */,
+ 26D90F9C140D512A0036A311 /* SkDisplayable.cpp in Sources */,
+ 26D90F9D140D512A0036A311 /* SkDraw3D.cpp in Sources */,
+ 26D90F9E140D512A0036A311 /* SkDrawBitmap.cpp in Sources */,
+ 26D90F9F140D512A0036A311 /* SkDrawBlur.cpp in Sources */,
+ 26D90FA0140D512A0036A311 /* SkDrawClip.cpp in Sources */,
+ 26D90FA1140D512A0036A311 /* SkDrawColor.cpp in Sources */,
+ 26D90FA2140D512A0036A311 /* SkDrawDash.cpp in Sources */,
+ 26D90FA3140D512A0036A311 /* SkDrawDiscrete.cpp in Sources */,
+ 26D90FA4140D512A0036A311 /* SkDrawEmboss.cpp in Sources */,
+ 26D90FA5140D512A0036A311 /* SkDrawExtraPathEffect.cpp in Sources */,
+ 26D90FA6140D512A0036A311 /* SkDrawFull.cpp in Sources */,
+ 26D90FA7140D512A0036A311 /* SkDrawGradient.cpp in Sources */,
+ 26D90FA8140D512A0036A311 /* SkDrawGroup.cpp in Sources */,
+ 26D90FA9140D512A0036A311 /* SkDrawLine.cpp in Sources */,
+ 26D90FAA140D512A0036A311 /* SkDrawMatrix.cpp in Sources */,
+ 26D90FAB140D512A0036A311 /* SkDrawOval.cpp in Sources */,
+ 26D90FAC140D512A0036A311 /* SkDrawPaint.cpp in Sources */,
+ 26D90FAD140D512A0036A311 /* SkDrawPath.cpp in Sources */,
+ 26D90FAE140D512A0036A311 /* SkDrawPoint.cpp in Sources */,
+ 26D90FAF140D512A0036A311 /* SkDrawRectangle.cpp in Sources */,
+ 26D90FB0140D512A0036A311 /* SkDrawSaveLayer.cpp in Sources */,
+ 26D90FB1140D512A0036A311 /* SkDrawShader.cpp in Sources */,
+ 26D90FB2140D512A0036A311 /* SkDrawText.cpp in Sources */,
+ 26D90FB3140D512A0036A311 /* SkDrawTextBox.cpp in Sources */,
+ 26D90FB4140D512A0036A311 /* SkDrawTo.cpp in Sources */,
+ 26D90FB5140D512A0036A311 /* SkDrawTransparentShader.cpp in Sources */,
+ 26D90FB6140D512A0036A311 /* SkDrawable.cpp in Sources */,
+ 26D90FB7140D512A0036A311 /* SkDump.cpp in Sources */,
+ 26D90FB8140D512A0036A311 /* SkGetCondensedInfo.cpp in Sources */,
+ 26D90FB9140D512A0036A311 /* SkHitClear.cpp in Sources */,
+ 26D90FBA140D512A0036A311 /* SkHitTest.cpp in Sources */,
+ 26D90FBB140D512A0036A311 /* SkMatrixParts.cpp in Sources */,
+ 26D90FBC140D512A0036A311 /* SkMemberInfo.cpp in Sources */,
+ 26D90FBD140D512A0036A311 /* SkOpArray.cpp in Sources */,
+ 26D90FBE140D512A0036A311 /* SkOperandIterpolator.cpp in Sources */,
+ 26D90FBF140D512A0036A311 /* SkPaintParts.cpp in Sources */,
+ 26D90FC0140D512A0036A311 /* SkParseSVGPath.cpp in Sources */,
+ 26D90FC1140D512A0036A311 /* SkPathParts.cpp in Sources */,
+ 26D90FC2140D512A0036A311 /* SkPostParts.cpp in Sources */,
+ 26D90FC3140D512A0036A311 /* SkScript.cpp in Sources */,
+ 26D90FC4140D512A0036A311 /* SkScriptDecompile.cpp in Sources */,
+ 26D90FC5140D512A0036A311 /* SkScriptRuntime.cpp in Sources */,
+ 26D90FC6140D512A0036A311 /* SkScriptTokenizer.cpp in Sources */,
+ 26D90FC7140D512A0036A311 /* SkSnapshot.cpp in Sources */,
+ 26D90FC8140D512A0036A311 /* SkTextOnPath.cpp in Sources */,
+ 26D90FC9140D512A0036A311 /* SkTextToPath.cpp in Sources */,
+ 26D90FCA140D512A0036A311 /* SkTime.cpp in Sources */,
+ 26D90FCB140D512A0036A311 /* SkTypedArray.cpp in Sources */,
+ 26D90FCC140D512A0036A311 /* SkXMLAnimatorWriter.cpp in Sources */,
+ 26D90FCD140D512A0036A311 /* SkData.cpp in Sources */,
+ 26D90FCE140D512A0036A311 /* Sk64.cpp in Sources */,
+ 26D90FCF140D512A0036A311 /* SkAdvancedTypefaceMetrics.cpp in Sources */,
+ 26D90FD0140D512A0036A311 /* SkAlphaRuns.cpp in Sources */,
+ 26D90FD1140D512A0036A311 /* SkBitmap.cpp in Sources */,
+ 26D90FD2140D512A0036A311 /* SkBitmapProcShader.cpp in Sources */,
+ 26D90FD3140D512A0036A311 /* SkBitmapProcState.cpp in Sources */,
+ 26D90FD4140D512A0036A311 /* SkBitmapProcState_matrixProcs.cpp in Sources */,
+ 26D90FD5140D512A0036A311 /* SkBitmapSampler.cpp in Sources */,
+ 26D90FD6140D512A0036A311 /* SkBitmap_scroll.cpp in Sources */,
+ 26D90FD7140D512A0036A311 /* SkBlitRow_D16.cpp in Sources */,
+ 26D90FD8140D512A0036A311 /* SkBlitRow_D32.cpp in Sources */,
+ 26D90FD9140D512A0036A311 /* SkBlitRow_D4444.cpp in Sources */,
+ 26D90FDA140D512A0036A311 /* SkBlitter.cpp in Sources */,
+ 26D90FDB140D512A0036A311 /* SkBlitter_4444.cpp in Sources */,
+ 26D90FDC140D512A0036A311 /* SkBlitter_A1.cpp in Sources */,
+ 26D90FDD140D512A0036A311 /* SkBlitter_A8.cpp in Sources */,
+ 26D90FDE140D512A0036A311 /* SkBlitter_ARGB32.cpp in Sources */,
+ 26D90FDF140D512A0036A311 /* SkBlitter_RGB16.cpp in Sources */,
+ 26D90FE0140D512A0036A311 /* SkBlitter_Sprite.cpp in Sources */,
+ 26D90FE1140D512A0036A311 /* SkBuffer.cpp in Sources */,
+ 26D90FE2140D512A0036A311 /* SkCanvas.cpp in Sources */,
+ 26D90FE3140D512A0036A311 /* SkChunkAlloc.cpp in Sources */,
+ 26D90FE4140D512A0036A311 /* SkClampRange.cpp in Sources */,
+ 26D90FE5140D512A0036A311 /* SkClipStack.cpp in Sources */,
+ 26D90FE6140D512A0036A311 /* SkColor.cpp in Sources */,
+ 26D90FE7140D512A0036A311 /* SkColorFilter.cpp in Sources */,
+ 26D90FE8140D512A0036A311 /* SkColorTable.cpp in Sources */,
+ 26D90FE9140D512A0036A311 /* SkComposeShader.cpp in Sources */,
+ 26D90FEA140D512A0036A311 /* SkConcaveToTriangles.cpp in Sources */,
+ 26D90FEB140D512A0036A311 /* SkCordic.cpp in Sources */,
+ 26D90FEC140D512A0036A311 /* SkCubicClipper.cpp in Sources */,
+ 26D90FED140D512A0036A311 /* SkDebug.cpp in Sources */,
+ 26D90FEE140D512A0036A311 /* SkDeque.cpp in Sources */,
+ 26D90FEF140D512A0036A311 /* SkDevice.cpp in Sources */,
+ 26D90FF0140D512A0036A311 /* SkDither.cpp in Sources */,
+ 26D90FF1140D512A0036A311 /* SkDraw.cpp in Sources */,
+ 26D90FF2140D512A0036A311 /* SkEdge.cpp in Sources */,
+ 26D90FF3140D512A0036A311 /* SkEdgeBuilder.cpp in Sources */,
+ 26D90FF4140D512A0036A311 /* SkEdgeClipper.cpp in Sources */,
+ 26D90FF5140D512A0036A311 /* SkFilterProc.cpp in Sources */,
+ 26D90FF6140D512A0036A311 /* SkFlate.cpp in Sources */,
+ 26D90FF7140D512A0036A311 /* SkFlattenable.cpp in Sources */,
+ 26D90FF8140D512A0036A311 /* SkFloat.cpp in Sources */,
+ 26D90FF9140D512A0036A311 /* SkFloatBits.cpp in Sources */,
+ 26D90FFA140D512A0036A311 /* SkFontHost.cpp in Sources */,
+ 26D90FFB140D512A0036A311 /* SkGeometry.cpp in Sources */,
+ 26D90FFC140D512A0036A311 /* SkGlobals.cpp in Sources */,
+ 26D90FFD140D512A0036A311 /* SkGlyphCache.cpp in Sources */,
+ 26D90FFE140D512A0036A311 /* SkGraphics.cpp in Sources */,
+ 26D90FFF140D512A0036A311 /* SkLineClipper.cpp in Sources */,
+ 26D91000140D512A0036A311 /* SkMMapStream.cpp in Sources */,
+ 26D91001140D512A0036A311 /* SkMallocPixelRef.cpp in Sources */,
+ 26D91002140D512A0036A311 /* SkMask.cpp in Sources */,
+ 26D91003140D512A0036A311 /* SkMaskFilter.cpp in Sources */,
+ 26D91004140D512A0036A311 /* SkMath.cpp in Sources */,
+ 26D91005140D512A0036A311 /* SkMatrix.cpp in Sources */,
+ 26D91006140D512A0036A311 /* SkMetaData.cpp in Sources */,
+ 26D91007140D512A0036A311 /* SkPackBits.cpp in Sources */,
+ 26D91008140D512A0036A311 /* SkPaint.cpp in Sources */,
+ 26D91009140D512A0036A311 /* SkPath.cpp in Sources */,
+ 26D9100A140D512A0036A311 /* SkPathEffect.cpp in Sources */,
+ 26D9100B140D512A0036A311 /* SkPathHeap.cpp in Sources */,
+ 26D9100C140D512A0036A311 /* SkPathMeasure.cpp in Sources */,
+ 26D9100D140D512A0036A311 /* SkPicture.cpp in Sources */,
+ 26D9100E140D512A0036A311 /* SkPictureFlat.cpp in Sources */,
+ 26D9100F140D512A0036A311 /* SkPicturePlayback.cpp in Sources */,
+ 26D91010140D512A0036A311 /* SkPictureRecord.cpp in Sources */,
+ 26D91011140D512A0036A311 /* SkPixelRef.cpp in Sources */,
+ 26D91012140D512A0036A311 /* SkPoint.cpp in Sources */,
+ 26D91013140D512A0036A311 /* SkProcSpriteBlitter.cpp in Sources */,
+ 26D91014140D512A0036A311 /* SkPtrRecorder.cpp in Sources */,
+ 26D91015140D512A0036A311 /* SkQuadClipper.cpp in Sources */,
+ 26D91016140D512A0036A311 /* SkRasterizer.cpp in Sources */,
+ 26D91017140D512A0036A311 /* SkRect.cpp in Sources */,
+ 26D91018140D512A0036A311 /* SkRefDict.cpp in Sources */,
+ 26D91019140D512A0036A311 /* SkRegion.cpp in Sources */,
+ 26D9101A140D512A0036A311 /* SkRegion_path.cpp in Sources */,
+ 26D9101B140D512A0036A311 /* SkScalar.cpp in Sources */,
+ 26D9101C140D512A0036A311 /* SkScalerContext.cpp in Sources */,
+ 26D9101D140D512A0036A311 /* SkScan.cpp in Sources */,
+ 26D9101E140D512A0036A311 /* SkScan_AntiPath.cpp in Sources */,
+ 26D9101F140D512A0036A311 /* SkScan_Antihair.cpp in Sources */,
+ 26D91020140D512A0036A311 /* SkScan_Hairline.cpp in Sources */,
+ 26D91021140D512A0036A311 /* SkScan_Path.cpp in Sources */,
+ 26D91022140D512A0036A311 /* SkShader.cpp in Sources */,
+ 26D91023140D512A0036A311 /* SkShape.cpp in Sources */,
+ 26D91024140D512A0036A311 /* SkSpriteBlitter_ARGB32.cpp in Sources */,
+ 26D91025140D512A0036A311 /* SkSpriteBlitter_RGB16.cpp in Sources */,
+ 26D91026140D512A0036A311 /* SkStream.cpp in Sources */,
+ 26D91027140D512A0036A311 /* SkString.cpp in Sources */,
+ 26D91028140D512A0036A311 /* SkStroke.cpp in Sources */,
+ 26D91029140D512A0036A311 /* SkStrokerPriv.cpp in Sources */,
+ 26D9102A140D512A0036A311 /* SkTSearch.cpp in Sources */,
+ 26D9102B140D512A0036A311 /* SkTypeface.cpp in Sources */,
+ 26D9102C140D512A0036A311 /* SkTypefaceCache.cpp in Sources */,
+ 26D9102D140D512A0036A311 /* SkUnPreMultiply.cpp in Sources */,
+ 26D9102E140D512A0036A311 /* SkUtils.cpp in Sources */,
+ 26D9102F140D512A0036A311 /* SkWriter32.cpp in Sources */,
+ 26D91030140D512A0036A311 /* SkXfermode.cpp in Sources */,
+ 26D91032140D512A0036A311 /* SkDebug_stdio.cpp in Sources */,
+ 26D91033140D512A0036A311 /* SkFontHost_mac_coretext.cpp in Sources */,
+ 26D91034140D512A0036A311 /* SkGlobals_global.cpp in Sources */,
+ 26D91035140D512A0036A311 /* SkMemory_malloc.cpp in Sources */,
+ 26D91036140D512A0036A311 /* SkThread_pthread.cpp in Sources */,
+ 26D91037140D512A0036A311 /* SkTime_Unix.cpp in Sources */,
+ 26D91038140D512A0036A311 /* SkXMLParser_empty.cpp in Sources */,
+ 26D91039140D512A0036A311 /* Sk1DPathEffect.cpp in Sources */,
+ 26D9103A140D512A0036A311 /* Sk2DPathEffect.cpp in Sources */,
+ 26D9103B140D512A0036A311 /* SkAvoidXfermode.cpp in Sources */,
+ 26D9103C140D512A0036A311 /* SkBitmapCache.cpp in Sources */,
+ 26D9103D140D512A0036A311 /* SkBlurDrawLooper.cpp in Sources */,
+ 26D9103E140D512A0036A311 /* SkBlurMask.cpp in Sources */,
+ 26D9103F140D512A0036A311 /* SkBlurMaskFilter.cpp in Sources */,
+ 26D91040140D512A0036A311 /* SkColorFilters.cpp in Sources */,
+ 26D91041140D512A0036A311 /* SkColorMatrixFilter.cpp in Sources */,
+ 26D91042140D512A0036A311 /* SkCornerPathEffect.cpp in Sources */,
+ 26D91043140D512A0036A311 /* SkDashPathEffect.cpp in Sources */,
+ 26D91044140D512A0036A311 /* SkDiscretePathEffect.cpp in Sources */,
+ 26D91045140D512A0036A311 /* SkEmbossMask.cpp in Sources */,
+ 26D91046140D512A0036A311 /* SkEmbossMaskFilter.cpp in Sources */,
+ 26D91047140D512A0036A311 /* SkGradientShader.cpp in Sources */,
+ 26D91048140D512A0036A311 /* SkGroupShape.cpp in Sources */,
+ 26D91049140D512A0036A311 /* SkKernel33MaskFilter.cpp in Sources */,
+ 26D9104A140D512A0036A311 /* SkLayerDrawLooper.cpp in Sources */,
+ 26D9104B140D512A0036A311 /* SkLayerRasterizer.cpp in Sources */,
+ 26D9104C140D512A0036A311 /* SkPaintFlagsDrawFilter.cpp in Sources */,
+ 26D9104D140D512A0036A311 /* SkPixelXorXfermode.cpp in Sources */,
+ 26D9104E140D512A0036A311 /* SkPorterDuff.cpp in Sources */,
+ 26D9104F140D512A0036A311 /* SkRectShape.cpp in Sources */,
+ 26D91050140D512A0036A311 /* SkTransparentShader.cpp in Sources */,
+ 26D91051140D512A0036A311 /* GrAddPathRenderers_none.cpp in Sources */,
+ 26D91052140D512A0036A311 /* GrDefaultPathRenderer.cpp in Sources */,
+ 26D91053140D512A0036A311 /* GrGLStencilBuffer.cpp in Sources */,
+ 26D91054140D512A0036A311 /* GrPathRendererChain.cpp in Sources */,
+ 26D91055140D512A0036A311 /* GrStencilBuffer.cpp in Sources */,
+ 26D91056140D512A0036A311 /* GrRenderTarget.cpp in Sources */,
+ 26D91057140D512A0036A311 /* GrGLRenderTarget.cpp in Sources */,
+ 26D91058140D512A0036A311 /* GrResourceCache.cpp in Sources */,
+ 26D91059140D512A0036A311 /* FlingState.cpp in Sources */,
+ 26D9105A140D512A0036A311 /* GrDrawMesh.cpp in Sources */,
+ 26D9105B140D512A0036A311 /* GrAllocPool.cpp in Sources */,
+ 26D9105C140D512A0036A311 /* GrAtlas.cpp in Sources */,
+ 26D9105D140D512A0036A311 /* GrBufferAllocPool.cpp in Sources */,
+ 26D9105E140D512A0036A311 /* GrClip.cpp in Sources */,
+ 26D9105F140D512A0036A311 /* GrContext.cpp in Sources */,
+ 26D91060140D512A0036A311 /* GrDrawTarget.cpp in Sources */,
+ 26D91061140D512A0036A311 /* GrGLDefaultInterface_none.cpp in Sources */,
+ 26D91062140D512A0036A311 /* GrGLIndexBuffer.cpp in Sources */,
+ 26D91063140D512A0036A311 /* GrGLInterface.cpp in Sources */,
+ 26D91064140D512A0036A311 /* GrGLProgram.cpp in Sources */,
+ 26D91065140D512A0036A311 /* GrGLTexture.cpp in Sources */,
+ 26D91066140D512A0036A311 /* GrGLUtil.cpp in Sources */,
+ 26D91067140D512A0036A311 /* GrGLVertexBuffer.cpp in Sources */,
+ 26D91068140D512A0036A311 /* GrGpu.cpp in Sources */,
+ 26D91069140D512A0036A311 /* GrGpuFactory.cpp in Sources */,
+ 26D9106A140D512A0036A311 /* GrGpuGL.cpp in Sources */,
+ 26D9106B140D512A0036A311 /* GrGpuGLFixed.cpp in Sources */,
+ 26D9106C140D512A0036A311 /* GrGpuGLShaders.cpp in Sources */,
+ 26D9106D140D512A0036A311 /* GrInOrderDrawBuffer.cpp in Sources */,
+ 26D9106E140D512A0036A311 /* GrMatrix.cpp in Sources */,
+ 26D9106F140D512A0036A311 /* GrMemory.cpp in Sources */,
+ 26D91070140D512A0036A311 /* GrPathRenderer.cpp in Sources */,
+ 26D91071140D512A0036A311 /* GrPathUtils.cpp in Sources */,
+ 26D91072140D512A0036A311 /* GrRectanizer.cpp in Sources */,
+ 26D91073140D512A0036A311 /* GrResource.cpp in Sources */,
+ 26D91074140D512A0036A311 /* GrStencil.cpp in Sources */,
+ 26D91076140D512A0036A311 /* GrTextContext.cpp in Sources */,
+ 26D91077140D512A0036A311 /* GrTextStrike.cpp in Sources */,
+ 26D91078140D512A0036A311 /* GrTexture.cpp in Sources */,
+ 26D91079140D512A0036A311 /* gr_unittests.cpp in Sources */,
+ 26D9107A140D512A0036A311 /* GrPrintf_skia.cpp in Sources */,
+ 26D9107B140D512A0036A311 /* SkGpuCanvas.cpp in Sources */,
+ 26D9107C140D512A0036A311 /* SkGpuDevice.cpp in Sources */,
+ 26D9107D140D512A0036A311 /* SkGr.cpp in Sources */,
+ 26D9107E140D512A0036A311 /* SkGrFontScaler.cpp in Sources */,
+ 26D9107F140D512A0036A311 /* SkGrTexturePixelRef.cpp in Sources */,
+ 26D91080140D512A0036A311 /* SkMovie.cpp in Sources */,
+ 26D91081140D512A0036A311 /* SkCreateRLEPixelRef.cpp in Sources */,
+ 26D91082140D512A0036A311 /* SkFDStream.cpp in Sources */,
+ 26D91083140D512A0036A311 /* SkFlipPixelRef.cpp in Sources */,
+ 26D91084140D512A0036A311 /* SkImageDecoder.cpp in Sources */,
+ 26D91085140D512A0036A311 /* SkImageEncoder.cpp in Sources */,
+ 26D91086140D512A0036A311 /* SkImageDecoder_Factory.cpp in Sources */,
+ 26D91087140D512A0036A311 /* SkImageEncoder_Factory.cpp in Sources */,
+ 26D91088140D512A0036A311 /* SkPageFlipper.cpp in Sources */,
+ 26D91089140D512A0036A311 /* SkImageRef.cpp in Sources */,
+ 26D9108A140D512A0036A311 /* SkImageRefPool.cpp in Sources */,
+ 26D9108B140D512A0036A311 /* SkImageRef_GlobalPool.cpp in Sources */,
+ 26D9108F140D512A0036A311 /* SkBitmapProcState_opts_arm.cpp in Sources */,
+ 26D91097140D512A0036A311 /* SkGPipeRead.cpp in Sources */,
+ 26D91098140D512A0036A311 /* SkGPipeWrite.cpp in Sources */,
+ 26D91099140D512A0036A311 /* SkBitSet.cpp in Sources */,
+ 26D9109A140D512A0036A311 /* SkPDFCatalog.cpp in Sources */,
+ 26D9109B140D512A0036A311 /* SkPDFDevice.cpp in Sources */,
+ 26D9109C140D512A0036A311 /* SkPDFDocument.cpp in Sources */,
+ 26D9109D140D512A0036A311 /* SkPDFFont.cpp in Sources */,
+ 26D9109E140D512A0036A311 /* SkPDFFormXObject.cpp in Sources */,
+ 26D9109F140D512A0036A311 /* SkPDFGraphicState.cpp in Sources */,
+ 26D910A0140D512A0036A311 /* SkPDFImage.cpp in Sources */,
+ 26D910A1140D512A0036A311 /* SkPDFPage.cpp in Sources */,
+ 26D910A2140D512A0036A311 /* SkPDFShader.cpp in Sources */,
+ 26D910A3140D512A0036A311 /* SkPDFStream.cpp in Sources */,
+ 26D910A4140D512A0036A311 /* SkPDFTypes.cpp in Sources */,
+ 26D910A5140D512A0036A311 /* SkPDFUtils.cpp in Sources */,
+ 26D910A6140D512A0036A311 /* SkSVGCircle.cpp in Sources */,
+ 26D910A7140D512A0036A311 /* SkSVGClipPath.cpp in Sources */,
+ 26D910A8140D512A0036A311 /* SkSVGDefs.cpp in Sources */,
+ 26D910A9140D512A0036A311 /* SkSVGElements.cpp in Sources */,
+ 26D910AA140D512A0036A311 /* SkSVGEllipse.cpp in Sources */,
+ 26D910AB140D512A0036A311 /* SkSVGFeColorMatrix.cpp in Sources */,
+ 26D910AC140D512A0036A311 /* SkSVGFilter.cpp in Sources */,
+ 26D910AD140D512A0036A311 /* SkSVGG.cpp in Sources */,
+ 26D910AE140D512A0036A311 /* SkSVGGradient.cpp in Sources */,
+ 26D910AF140D512A0036A311 /* SkSVGGroup.cpp in Sources */,
+ 26D910B0140D512A0036A311 /* SkSVGImage.cpp in Sources */,
+ 26D910B1140D512A0036A311 /* SkSVGLine.cpp in Sources */,
+ 26D910B2140D512A0036A311 /* SkSVGLinearGradient.cpp in Sources */,
+ 26D910B3140D512A0036A311 /* SkSVGMask.cpp in Sources */,
+ 26D910B4140D512A0036A311 /* SkSVGMetadata.cpp in Sources */,
+ 26D910B5140D512A0036A311 /* SkSVGPaintState.cpp in Sources */,
+ 26D910B6140D512A0036A311 /* SkSVGParser.cpp in Sources */,
+ 26D910B7140D512A0036A311 /* SkSVGPath.cpp in Sources */,
+ 26D910B8140D512A0036A311 /* SkSVGPolygon.cpp in Sources */,
+ 26D910B9140D512A0036A311 /* SkSVGPolyline.cpp in Sources */,
+ 26D910BA140D512A0036A311 /* SkSVGRadialGradient.cpp in Sources */,
+ 26D910BB140D512A0036A311 /* SkSVGRect.cpp in Sources */,
+ 26D910BC140D512A0036A311 /* SkSVGSVG.cpp in Sources */,
+ 26D910BD140D512A0036A311 /* SkSVGStop.cpp in Sources */,
+ 26D910BE140D512A0036A311 /* SkSVGSymbol.cpp in Sources */,
+ 26D910BF140D512A0036A311 /* SkSVGText.cpp in Sources */,
+ 26D910C0140D512A0036A311 /* SkSVGUse.cpp in Sources */,
+ 26D910C1140D512A0036A311 /* SkCreateCGImageRef.cpp in Sources */,
+ 26D910C2140D512A0036A311 /* SkBoundaryPatch.cpp in Sources */,
+ 26D910C3140D512A0036A311 /* SkCamera.cpp in Sources */,
+ 26D910C4140D512A0036A311 /* SkColorMatrix.cpp in Sources */,
+ 26D910C5140D512A0036A311 /* SkCubicInterval.cpp in Sources */,
+ 26D910C6140D512A0036A311 /* SkCullPoints.cpp in Sources */,
+ 26D910C7140D512A0036A311 /* SkDumpCanvas.cpp in Sources */,
+ 26D910C8140D512A0036A311 /* SkInterpolator.cpp in Sources */,
+ 26D910C9140D512A0036A311 /* SkLayer.cpp in Sources */,
+ 26D910CA140D512A0036A311 /* SkMatrix44.cpp in Sources */,
+ 26D910CB140D512A0036A311 /* SkMeshUtils.cpp in Sources */,
+ 26D910CC140D512A0036A311 /* SkNWayCanvas.cpp in Sources */,
+ 26D910CD140D512A0036A311 /* SkNinePatch.cpp in Sources */,
+ 26D910CE140D512A0036A311 /* SkOSFile.cpp in Sources */,
+ 26D910CF140D512A0036A311 /* SkParse.cpp in Sources */,
+ 26D910D0140D512A0036A311 /* SkParseColor.cpp in Sources */,
+ 26D910D1140D512A0036A311 /* SkParsePath.cpp in Sources */,
+ 26D910D2140D512A0036A311 /* SkProxyCanvas.cpp in Sources */,
+ 26D910D3140D512A0036A311 /* SkSfntUtils.cpp in Sources */,
+ 26D910D4140D512A0036A311 /* SkUnitMappers.cpp in Sources */,
+ 26D910D5140D512A0036A311 /* SkBGViewArtist.cpp in Sources */,
+ 26D910D6140D512A0036A311 /* SkEvent.cpp in Sources */,
+ 26D910D7140D512A0036A311 /* SkEventSink.cpp in Sources */,
+ 26D910D8140D512A0036A311 /* SkImageView.cpp in Sources */,
+ 26D910D9140D512A0036A311 /* SkListView.cpp in Sources */,
+ 26D910DB140D512A0036A311 /* SkOSMenu.cpp in Sources */,
+ 26D910DC140D512A0036A311 /* SkParsePaint.cpp in Sources */,
+ 26D910E1140D512A0036A311 /* SkStackViewLayout.cpp in Sources */,
+ 26D910E2140D512A0036A311 /* SkStaticTextView.cpp in Sources */,
+ 26D910E3140D512A0036A311 /* SkTagList.cpp in Sources */,
+ 26D910E4140D512A0036A311 /* SkTextBox.cpp in Sources */,
+ 26D910E5140D512A0036A311 /* SkTouchGesture.cpp in Sources */,
+ 26D910E6140D512A0036A311 /* SkView.cpp in Sources */,
+ 26D910E7140D512A0036A311 /* SkViewInflate.cpp in Sources */,
+ 26D910E8140D512A0036A311 /* SkViewPriv.cpp in Sources */,
+ 26D910E9140D512A0036A311 /* SkWidget.cpp in Sources */,
+ 26D910EB140D512A0036A311 /* SkWidgets.cpp in Sources */,
+ 26D910EC140D512A0036A311 /* SkWindow.cpp in Sources */,
+ 26D910ED140D512A0036A311 /* SkDOM.cpp in Sources */,
+ 26D910EE140D512A0036A311 /* SkXMLParser.cpp in Sources */,
+ 26D910EF140D512A0036A311 /* SkXMLWriter.cpp in Sources */,
+ 26D91131140D53C30036A311 /* SkBlitRow_opts_none.cpp in Sources */,
+ 26D91132140D53C30036A311 /* SkUtils_opts_none.cpp in Sources */,
+ 26D91146140D54720036A311 /* skia_ios.mm in Sources */,
+ 26D91155140D54E40036A311 /* SkEventNotifier.mm in Sources */,
+ 26D9118F140D558A0036A311 /* SkOSFile_iOS.mm in Sources */,
+ 26D91194140D55980036A311 /* SkOSWindow_iOS.mm in Sources */,
+ 26D91304140D60330036A311 /* SimpleApp.mm in Sources */,
+ 26371977140D6C19006CC295 /* SkUIView.mm in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 1D6058940D05DD3E006BFB54 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ COPY_PHASE_STRIP = NO;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = SimpleiOSApp_Prefix.pch;
+ INFOPLIST_FILE = "SimpleiOSApp-Info.plist";
+ PRODUCT_NAME = SimpleiOSApp;
+ };
+ name = Debug;
+ };
+ 1D6058950D05DD3E006BFB54 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ COPY_PHASE_STRIP = YES;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = SimpleiOSApp_Prefix.pch;
+ INFOPLIST_FILE = "SimpleiOSApp-Info.plist";
+ PRODUCT_NAME = SimpleiOSApp;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ C01FCF4F08A954540054247B /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 26D912EA140D5FCC0036A311 /* SkiOSSampleApp-Debug.xcconfig */;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_PREFIX_HEADER = "";
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = NO;
+ PREBINDING = NO;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ C01FCF5008A954540054247B /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 26D912EB140D5FCC0036A311 /* SkiOSSampleApp-Release.xcconfig */;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_PREFIX_HEADER = "";
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = NO;
+ OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
+ PREBINDING = NO;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "SimpleiOSApp" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1D6058940D05DD3E006BFB54 /* Debug */,
+ 1D6058950D05DD3E006BFB54 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SimpleiOSApp" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C01FCF4F08A954540054247B /* Debug */,
+ C01FCF5008A954540054247B /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
+}
diff --git a/chromium/third_party/skia/experimental/SimpleiOSApp/SimpleiOSApp_Prefix.pch b/chromium/third_party/skia/experimental/SimpleiOSApp/SimpleiOSApp_Prefix.pch
new file mode 100644
index 00000000000..0791950c1f5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SimpleiOSApp/SimpleiOSApp_Prefix.pch
@@ -0,0 +1,8 @@
+//
+// Prefix header for all source files of the 'iosshell' target in the 'iosshell' project
+//
+
+#ifdef __OBJC__
+ #import <Foundation/Foundation.h>
+ #import <UIKit/UIKit.h>
+#endif
diff --git a/chromium/third_party/skia/experimental/SimpleiOSApp/iPad/AppDelegate_iPad.h b/chromium/third_party/skia/experimental/SimpleiOSApp/iPad/AppDelegate_iPad.h
new file mode 100644
index 00000000000..844d953121d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SimpleiOSApp/iPad/AppDelegate_iPad.h
@@ -0,0 +1,17 @@
+//
+// AppDelegate_iPad.h
+// iosshell
+//
+// Created by Yang Su on 6/30/11.
+// Copyright 2011 Google Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface AppDelegate_iPad : NSObject <UIApplicationDelegate> {
+ UIWindow *window;
+}
+
+@property (nonatomic, retain) IBOutlet UIWindow *window;
+
+@end
diff --git a/chromium/third_party/skia/experimental/SimpleiOSApp/iPad/AppDelegate_iPad.m b/chromium/third_party/skia/experimental/SimpleiOSApp/iPad/AppDelegate_iPad.m
new file mode 100644
index 00000000000..1792658b92f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SimpleiOSApp/iPad/AppDelegate_iPad.m
@@ -0,0 +1,67 @@
+//
+// AppDelegate_iPad.m
+// iosshell
+//
+// Created by Yang Su on 6/30/11.
+// Copyright 2011 Google Inc. All rights reserved.
+//
+
+#import "AppDelegate_iPad.h"
+
+@implementation AppDelegate_iPad
+
+@synthesize window;
+
+
+#pragma mark -
+#pragma mark Application lifecycle
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+
+ // Override point for customization after application launch.
+
+ [self.window makeKeyAndVisible];
+
+ return YES;
+}
+
+
+- (void)applicationWillResignActive:(UIApplication *)application {
+ /*
+ Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+ Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+ */
+}
+
+
+- (void)applicationDidBecomeActive:(UIApplication *)application {
+ /*
+ Restart any tasks that were paused (or not yet started) while the application was inactive.
+ */
+}
+
+
+- (void)applicationWillTerminate:(UIApplication *)application {
+ /*
+ Called when the application is about to terminate.
+ */
+}
+
+
+#pragma mark -
+#pragma mark Memory management
+
+- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
+ /*
+ Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later.
+ */
+}
+
+
+- (void)dealloc {
+ [window release];
+ [super dealloc];
+}
+
+
+@end
diff --git a/chromium/third_party/skia/experimental/SimpleiOSApp/iPad/MainWindow_iPad.xib b/chromium/third_party/skia/experimental/SimpleiOSApp/iPad/MainWindow_iPad.xib
new file mode 100644
index 00000000000..a5348b85d69
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SimpleiOSApp/iPad/MainWindow_iPad.xib
@@ -0,0 +1,439 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10">
+ <data>
+ <int key="IBDocument.SystemTarget">1056</int>
+ <string key="IBDocument.SystemVersion">10K540</string>
+ <string key="IBDocument.InterfaceBuilderVersion">851</string>
+ <string key="IBDocument.AppKitVersion">1038.36</string>
+ <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="NS.object.0">141</string>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBProxyObject" id="841351856">
+ <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ </object>
+ <object class="IBProxyObject" id="606714003">
+ <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ </object>
+ <object class="IBUIWindow" id="62075450">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">292</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBUIView" id="470150200">
+ <reference key="NSNextResponder" ref="62075450"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrame">{{0, 10}, {768, 1004}}</string>
+ <reference key="NSSuperview" ref="62075450"/>
+ <object class="NSColor" key="IBUIBackgroundColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MQA</bytes>
+ <object class="NSColorSpace" key="NSCustomColorSpace">
+ <int key="NSID">2</int>
+ </object>
+ </object>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ </object>
+ </object>
+ <string key="NSFrameSize">{768, 1024}</string>
+ <object class="NSColor" key="IBUIBackgroundColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MSAxIDEAA</bytes>
+ </object>
+ <bool key="IBUIOpaque">NO</bool>
+ <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics">
+ <int key="IBUIStatusBarStyle">2</int>
+ </object>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ <bool key="IBUIResizesToFullScreen">YES</bool>
+ </object>
+ <object class="IBUICustomObject" id="250404236">
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">window</string>
+ <reference key="source" ref="250404236"/>
+ <reference key="destination" ref="62075450"/>
+ </object>
+ <int key="connectionID">7</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="841351856"/>
+ <reference key="destination" ref="250404236"/>
+ </object>
+ <int key="connectionID">8</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <reference key="object" ref="0"/>
+ <reference key="children" ref="1000"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="841351856"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="606714003"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2</int>
+ <reference key="object" ref="62075450"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="470150200"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">6</int>
+ <reference key="object" ref="250404236"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">10</int>
+ <reference key="object" ref="470150200"/>
+ <reference key="parent" ref="62075450"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-1.CustomClassName</string>
+ <string>-2.CustomClassName</string>
+ <string>10.CustomClassName</string>
+ <string>10.IBPluginDependency</string>
+ <string>10.IBViewBoundsToFrameTransform</string>
+ <string>2.IBEditorWindowLastContentRect</string>
+ <string>2.IBPluginDependency</string>
+ <string>6.CustomClassName</string>
+ <string>6.IBPluginDependency</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>UIApplication</string>
+ <string>UIResponder</string>
+ <string>SimpleApp</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <object class="NSAffineTransform">
+ <bytes key="NSTransformStruct">P4AAAL+AAAAAAAAAxHqAAA</bytes>
+ </object>
+ <string>{{903, 55}, {768, 1024}}</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>AppDelegate_iPad</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">12</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">AppDelegate_iPad</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">window</string>
+ <string key="NS.object.0">UIWindow</string>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <string key="NS.key.0">window</string>
+ <object class="IBToOneOutletInfo" key="NS.object.0">
+ <string key="name">window</string>
+ <string key="candidateClassName">UIWindow</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">iPad/AppDelegate_iPad.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SimpleApp</string>
+ <string key="superclassName">SkUIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">SimpleApp.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkUIView</string>
+ <string key="superclassName">UIView</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">fOptionsDelegate</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <string key="NS.key.0">fOptionsDelegate</string>
+ <object class="IBToOneOutletInfo" key="NS.object.0">
+ <string key="name">fOptionsDelegate</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../iOSSampleApp/Shared/SkUIView.h</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="786211723">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIApplication</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIApplication.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIResponder</string>
+ <string key="superclassName">NSObject</string>
+ <reference key="sourceIdentifier" ref="786211723"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UISearchBar</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UISearchDisplayController</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIWindow</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIWindow.h</string>
+ </object>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
+ <integer value="1056" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
+ <integer value="3100" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <string key="IBDocument.LastKnownRelativeProjectPath">../SimpleiOSApp.xcodeproj</string>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <string key="IBCocoaTouchPluginVersion">141</string>
+ </data>
+</archive>
diff --git a/chromium/third_party/skia/experimental/SimpleiOSApp/iPhone/AppDelegate_iPhone.h b/chromium/third_party/skia/experimental/SimpleiOSApp/iPhone/AppDelegate_iPhone.h
new file mode 100644
index 00000000000..e7e7b84dbb5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SimpleiOSApp/iPhone/AppDelegate_iPhone.h
@@ -0,0 +1,17 @@
+//
+// AppDelegate_iPhone.h
+// iosshell
+//
+// Created by Yang Su on 6/30/11.
+// Copyright 2011 Google Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface AppDelegate_iPhone : NSObject <UIApplicationDelegate> {
+ UIWindow *window;
+}
+
+@property (nonatomic, retain) IBOutlet UIWindow *window;
+
+@end
diff --git a/chromium/third_party/skia/experimental/SimpleiOSApp/iPhone/AppDelegate_iPhone.m b/chromium/third_party/skia/experimental/SimpleiOSApp/iPhone/AppDelegate_iPhone.m
new file mode 100644
index 00000000000..dcf14f21a8c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SimpleiOSApp/iPhone/AppDelegate_iPhone.m
@@ -0,0 +1,83 @@
+//
+// AppDelegate_iPhone.m
+// iosshell
+//
+// Created by Yang Su on 6/30/11.
+// Copyright 2011 Google Inc. All rights reserved.
+//
+
+#import "AppDelegate_iPhone.h"
+
+@implementation AppDelegate_iPhone
+
+@synthesize window;
+
+
+#pragma mark -
+#pragma mark Application lifecycle
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+
+ // Override point for customization after application launch.
+
+ [self.window makeKeyAndVisible];
+
+ return YES;
+}
+
+
+- (void)applicationWillResignActive:(UIApplication *)application {
+ /*
+ Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+ Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+ */
+}
+
+
+- (void)applicationDidEnterBackground:(UIApplication *)application {
+ /*
+ Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
+ If your application supports background execution, called instead of applicationWillTerminate: when the user quits.
+ */
+}
+
+
+- (void)applicationWillEnterForeground:(UIApplication *)application {
+ /*
+ Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background.
+ */
+}
+
+
+- (void)applicationDidBecomeActive:(UIApplication *)application {
+ /*
+ Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+ */
+}
+
+
+- (void)applicationWillTerminate:(UIApplication *)application {
+ /*
+ Called when the application is about to terminate.
+ See also applicationDidEnterBackground:.
+ */
+}
+
+
+#pragma mark -
+#pragma mark Memory management
+
+- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
+ /*
+ Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later.
+ */
+}
+
+
+- (void)dealloc {
+ [window release];
+ [super dealloc];
+}
+
+
+@end
diff --git a/chromium/third_party/skia/experimental/SimpleiOSApp/iPhone/MainWindow_iPhone.xib b/chromium/third_party/skia/experimental/SimpleiOSApp/iPhone/MainWindow_iPhone.xib
new file mode 100644
index 00000000000..1bd5b56f634
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SimpleiOSApp/iPhone/MainWindow_iPhone.xib
@@ -0,0 +1,449 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
+ <data>
+ <int key="IBDocument.SystemTarget">1056</int>
+ <string key="IBDocument.SystemVersion">10K540</string>
+ <string key="IBDocument.InterfaceBuilderVersion">851</string>
+ <string key="IBDocument.AppKitVersion">1038.36</string>
+ <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="NS.object.0">141</string>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBProxyObject" id="841351856">
+ <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBProxyObject" id="450319686">
+ <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBUICustomObject" id="987256611">
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBUIWindow" id="380026005">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">1316</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBUIView" id="268100401">
+ <reference key="NSNextResponder" ref="380026005"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{0, 10}, {320, 460}}</string>
+ <reference key="NSSuperview" ref="380026005"/>
+ <object class="NSColor" key="IBUIBackgroundColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MQA</bytes>
+ <object class="NSColorSpace" key="NSCustomColorSpace">
+ <int key="NSID">2</int>
+ </object>
+ </object>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ </object>
+ <object class="NSPSMatrix" key="NSFrameMatrix"/>
+ <string key="NSFrameSize">{320, 480}</string>
+ <object class="NSColor" key="IBUIBackgroundColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MSAxIDEAA</bytes>
+ </object>
+ <bool key="IBUIOpaque">NO</bool>
+ <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIResizesToFullScreen">YES</bool>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="841351856"/>
+ <reference key="destination" ref="987256611"/>
+ </object>
+ <int key="connectionID">5</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">window</string>
+ <reference key="source" ref="987256611"/>
+ <reference key="destination" ref="380026005"/>
+ </object>
+ <int key="connectionID">6</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <reference key="object" ref="0"/>
+ <reference key="children" ref="1000"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2</int>
+ <reference key="object" ref="380026005"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="268100401"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="841351856"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4</int>
+ <reference key="object" ref="987256611"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">App Delegate</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="450319686"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">12</int>
+ <reference key="object" ref="268100401"/>
+ <reference key="parent" ref="380026005"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-1.CustomClassName</string>
+ <string>-2.CustomClassName</string>
+ <string>12.CustomClassName</string>
+ <string>12.IBPluginDependency</string>
+ <string>12.IBViewBoundsToFrameTransform</string>
+ <string>2.IBAttributePlaceholdersKey</string>
+ <string>2.IBEditorWindowLastContentRect</string>
+ <string>2.IBPluginDependency</string>
+ <string>2.UIWindow.visibleAtLaunch</string>
+ <string>4.CustomClassName</string>
+ <string>4.IBPluginDependency</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>UIApplication</string>
+ <string>UIResponder</string>
+ <string>SimpleApp</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <object class="NSAffineTransform">
+ <bytes key="NSTransformStruct">P4AAAL+AAABC6AAAxCbAAA</bytes>
+ </object>
+ <object class="NSMutableDictionary">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <string>{{520, 376}, {320, 480}}</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <integer value="1"/>
+ <string>AppDelegate_iPhone</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">12</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">AppDelegate_iPhone</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">window</string>
+ <string key="NS.object.0">UIWindow</string>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <string key="NS.key.0">window</string>
+ <object class="IBToOneOutletInfo" key="NS.object.0">
+ <string key="name">window</string>
+ <string key="candidateClassName">UIWindow</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">iPhone/AppDelegate_iPhone.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SimpleApp</string>
+ <string key="superclassName">SkUIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">SimpleApp.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkUIView</string>
+ <string key="superclassName">UIView</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">fOptionsDelegate</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <string key="NS.key.0">fOptionsDelegate</string>
+ <object class="IBToOneOutletInfo" key="NS.object.0">
+ <string key="name">fOptionsDelegate</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../iOSSampleApp/Shared/SkUIView.h</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="565734826">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIApplication</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIApplication.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIResponder</string>
+ <string key="superclassName">NSObject</string>
+ <reference key="sourceIdentifier" ref="565734826"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UISearchBar</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UISearchDisplayController</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIWindow</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIWindow.h</string>
+ </object>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
+ <integer value="1056" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
+ <integer value="3100" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <string key="IBDocument.LastKnownRelativeProjectPath">../SimpleiOSApp.xcodeproj</string>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <string key="IBCocoaTouchPluginVersion">141</string>
+ </data>
+</archive>
diff --git a/chromium/third_party/skia/experimental/SimpleiOSApp/tool-Info.plist b/chromium/third_party/skia/experimental/SimpleiOSApp/tool-Info.plist
new file mode 100644
index 00000000000..6f8c6d8bd1e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SimpleiOSApp/tool-Info.plist
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleDisplayName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>com.google.${EXECUTABLE_NAME}</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>LSRequiresIPhoneOS</key>
+ <true/>
+ <key>NSMainNibFile</key>
+ <string>MainWindow_iPhone</string>
+ <key>NSMainNibFile~ipad</key>
+ <string>MainWindow_iPad</string>
+ <key>UISupportedInterfaceOrientations</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ </array>
+ <key>UISupportedInterfaceOrientations~ipad</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationPortraitUpsideDown</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+</dict>
+</plist>
diff --git a/chromium/third_party/skia/experimental/SkSetPoly3To3.cpp b/chromium/third_party/skia/experimental/SkSetPoly3To3.cpp
new file mode 100644
index 00000000000..750db3074f1
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkSetPoly3To3.cpp
@@ -0,0 +1,69 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "SkMatrix.h"
+
+// FIXME: needs to be in a header
+bool SkSetPoly3To3(SkMatrix* matrix, const SkPoint src[3], const SkPoint dst[3]);
+
+static void computeOuterProduct(SkScalar op[4],
+ const SkPoint pts0[3], const SkPoint& ave0,
+ const SkPoint pts1[3], const SkPoint& ave1) {
+ sk_bzero(op, 4 * sizeof(op[0]));
+ for (int i = 0; i < 3; i++) {
+ SkScalar x0 = pts0[i].fX - ave0.fX;
+ SkScalar y0 = pts0[i].fY - ave0.fY;
+ SkScalar x1 = pts1[i].fX - ave1.fX;
+ SkScalar y1 = pts1[i].fY - ave1.fY;
+ op[0] += SkScalarMul(x0, x1);
+ op[1] += SkScalarMul(x0, y1);
+ op[2] += SkScalarMul(y0, x1);
+ op[3] += SkScalarMul(y0, y1);
+ }
+}
+
+static SkScalar dot(SkScalar ax, SkScalar ay, SkScalar bx, SkScalar by) {
+ return SkScalarMul(ax, bx) + SkScalarMul(ay, by);
+}
+
+bool SkSetPoly3To3(SkMatrix* matrix, const SkPoint src[3], const SkPoint dst[3]) {
+ const SkPoint& srcAve = src[0];
+ const SkPoint& dstAve = dst[0];
+
+ SkScalar srcOP[4], dstOP[4];
+
+ computeOuterProduct(srcOP, src, srcAve, src, srcAve);
+ computeOuterProduct(dstOP, src, srcAve, dst, dstAve);
+
+ SkScalar det = SkScalarMul(srcOP[0], srcOP[3]) - SkScalarMul(srcOP[1], srcOP[2]);
+
+ // need SkScalarNearlyZeroSquared for this (to match Chrome's fix)
+ if (SkScalarNearlyZero(det)) {
+ return false;
+ }
+
+ SkScalar invDet = SkScalarInvert(det);
+
+ // now compute invDet * [srcOP]T * [dstOP]
+
+ // scale and transpose
+ const SkScalar srcOP0 = SkScalarMul( srcOP[3], invDet);
+ const SkScalar srcOP1 = SkScalarMul(-srcOP[1], invDet);
+ const SkScalar srcOP2 = SkScalarMul(-srcOP[2], invDet);
+ const SkScalar srcOP3 = SkScalarMul( srcOP[0], invDet);
+
+ matrix->reset();
+ matrix->setScaleX(dot(srcOP0, srcOP1, dstOP[0], dstOP[2]));
+ matrix->setSkewX( dot(srcOP2, srcOP3, dstOP[0], dstOP[2]));
+ matrix->setSkewY (dot(srcOP0, srcOP1, dstOP[1], dstOP[3]));
+ matrix->setScaleY(dot(srcOP2, srcOP3, dstOP[1], dstOP[3]));
+ matrix->setTranslateX(dstAve.fX - dot(srcAve.fX, srcAve.fY,
+ matrix->getScaleX(), matrix->getSkewX()));
+ matrix->setTranslateY(dstAve.fY - dot(srcAve.fX, srcAve.fY,
+ matrix->getSkewY(), matrix->getScaleY()));
+ return true;
+}
diff --git a/chromium/third_party/skia/experimental/SkSetPoly3To3_A.cpp b/chromium/third_party/skia/experimental/SkSetPoly3To3_A.cpp
new file mode 100644
index 00000000000..18777a77b5b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkSetPoly3To3_A.cpp
@@ -0,0 +1,84 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "SkMatrix.h"
+
+// FIXME: needs to be in a header
+bool SkSetPoly3To3_A(SkMatrix* matrix, const SkPoint src[3], const SkPoint dst[3]);
+
+typedef double SkDScalar;
+
+static SkScalar SkDScalar_toScalar(SkDScalar value) {
+ return static_cast<float>(value);
+}
+static SkScalar divide(SkDScalar numer, SkDScalar denom) {
+ return static_cast<float>(numer / denom);
+}
+
+static SkDScalar SkDScalar_setMul(SkScalar a, SkScalar b) {
+ return (SkDScalar) ((SkDScalar) a * b);
+}
+
+static void computeOuterProduct(SkScalar op[4],
+ const SkPoint pts0[3], const SkPoint& ave0,
+ const SkPoint pts1[3], const SkPoint& ave1) {
+ sk_bzero(op, 4 * sizeof(op[0]));
+ for (int i = 0; i < 3; i++) {
+ SkScalar x0 = pts0[i].fX - ave0.fX;
+ SkScalar y0 = pts0[i].fY - ave0.fY;
+ SkScalar x1 = pts1[i].fX - ave1.fX;
+ SkScalar y1 = pts1[i].fY - ave1.fY;
+ op[0] += SkScalarMul(x0, x1);
+ op[1] += SkScalarMul(x0, y1);
+ op[2] += SkScalarMul(y0, x1);
+ op[3] += SkScalarMul(y0, y1);
+ }
+}
+
+static SkDScalar ddot(SkScalar ax, SkScalar ay, SkScalar bx, SkScalar by) {
+ return SkDScalar_setMul(ax, bx) + SkDScalar_setMul(ay, by);
+}
+
+static SkScalar dot(SkScalar ax, SkScalar ay, SkScalar bx, SkScalar by) {
+ return SkDScalar_toScalar(ddot(ax, ay, bx, by));
+}
+
+bool SkSetPoly3To3_A(SkMatrix* matrix, const SkPoint src[3], const SkPoint dst[3]) {
+ const SkPoint& srcAve = src[0];
+ const SkPoint& dstAve = dst[0];
+
+ SkScalar srcOP[4], dstOP[4];
+
+ computeOuterProduct(srcOP, src, srcAve, src, srcAve);
+ computeOuterProduct(dstOP, src, srcAve, dst, dstAve);
+
+ SkDScalar det = SkDScalar_setMul(srcOP[0], srcOP[3]) -
+ SkDScalar_setMul(srcOP[1], srcOP[2]);
+
+ SkDScalar M[4];
+
+ const SkScalar srcOP0 = srcOP[3];
+ const SkScalar srcOP1 = -srcOP[1];
+ const SkScalar srcOP2 = -srcOP[2];
+ const SkScalar srcOP3 = srcOP[0];
+
+ M[0] = ddot(srcOP0, srcOP1, dstOP[0], dstOP[2]);
+ M[1] = ddot(srcOP2, srcOP3, dstOP[0], dstOP[2]);
+ M[2] = ddot(srcOP0, srcOP1, dstOP[1], dstOP[3]);
+ M[3] = ddot(srcOP2, srcOP3, dstOP[1], dstOP[3]);
+
+ matrix->reset();
+ matrix->setScaleX(divide(M[0], det));
+ matrix->setSkewX( divide(M[1], det));
+ matrix->setSkewY (divide(M[2], det));
+ matrix->setScaleY(divide(M[3], det));
+ matrix->setTranslateX(dstAve.fX - dot(srcAve.fX, srcAve.fY,
+ matrix->getScaleX(), matrix->getSkewX()));
+ matrix->setTranslateY(dstAve.fY - dot(srcAve.fX, srcAve.fY,
+ matrix->getSkewY(), matrix->getScaleY()));
+ return true;
+}
diff --git a/chromium/third_party/skia/experimental/SkSetPoly3To3_D.cpp b/chromium/third_party/skia/experimental/SkSetPoly3To3_D.cpp
new file mode 100644
index 00000000000..2fb99d87514
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkSetPoly3To3_D.cpp
@@ -0,0 +1,74 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "SkMatrix.h"
+
+// FIXME: needs to be in a header
+bool SkSetPoly3To3_D(SkMatrix* matrix, const SkPoint src[3], const SkPoint dst[3]);
+
+typedef int64_t SkDScalar;
+
+static SkScalar SkDScalar_toScalar(SkDScalar value) {
+ SkDScalar result = (value + (1 << 15)) >> 16;
+ SkDEBUGCODE(int top = static_cast<int>(result >> 31);)
+ SkASSERT(top == 0 || top == -1);
+ return (SkScalar)result;
+}
+
+static SkDScalar SkDScalar_setMul(SkScalar a, SkScalar b) {
+ return (SkDScalar) ((SkDScalar) a * (SkDScalar) b);
+}
+
+static void computeOuterProduct(SkMatrix* matrix,
+ const SkPoint pts0[3], const SkPoint& ave0,
+ const SkPoint pts1[3], const SkPoint& ave1) {
+ SkDScalar tmp[4];
+ sk_bzero(tmp, sizeof(tmp));
+
+ for (int i = 0; i < 3; i++) {
+ SkScalar x0 = pts0[i].fX - ave0.fX;
+ SkScalar y0 = pts0[i].fY - ave0.fY;
+ SkScalar x1 = pts1[i].fX - ave1.fX;
+ SkScalar y1 = pts1[i].fY - ave1.fY;
+ tmp[0] += SkDScalar_setMul(x0, x1);
+ tmp[1] += SkDScalar_setMul(x0, y1);
+ tmp[2] += SkDScalar_setMul(y0, x1);
+ tmp[3] += SkDScalar_setMul(y0, y1);
+ }
+ matrix->reset();
+ matrix->setScaleX(SkDScalar_toScalar(tmp[0]));
+ matrix->setSkewY( SkDScalar_toScalar(tmp[1]));
+ matrix->setSkewX( SkDScalar_toScalar(tmp[2]));
+ matrix->setScaleY(SkDScalar_toScalar(tmp[3]));
+}
+
+static SkScalar dot(SkScalar ax, SkScalar ay, SkScalar bx, SkScalar by) {
+ return SkDScalar_toScalar(SkDScalar_setMul(ax, bx) +
+ SkDScalar_setMul(ay, by));
+}
+
+bool SkSetPoly3To3_D(SkMatrix* matrix, const SkPoint src[3], const SkPoint dst[3]) {
+ const SkPoint& srcAve = src[0];
+ const SkPoint& dstAve = dst[0];
+
+ SkMatrix srcOP, dstOP;
+
+ computeOuterProduct(&srcOP, src, srcAve, src, srcAve);
+
+ if (!srcOP.invert(&srcOP)) {
+ return false;
+ }
+
+ computeOuterProduct(&dstOP, src, srcAve, dst, dstAve);
+
+ matrix->setConcat(dstOP, srcOP);
+ matrix->setTranslateX(dstAve.fX - dot(srcAve.fX, srcAve.fY,
+ matrix->getScaleX(), matrix->getSkewX()));
+ matrix->setTranslateY(dstAve.fY - dot(srcAve.fX, srcAve.fY,
+ matrix->getSkewY(), matrix->getScaleY()));
+ return true;
+}
diff --git a/chromium/third_party/skia/experimental/SkV8Example/BaseContext.cpp b/chromium/third_party/skia/experimental/SkV8Example/BaseContext.cpp
new file mode 100644
index 00000000000..486474e397b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/BaseContext.cpp
@@ -0,0 +1,286 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ */
+#include <v8.h>
+
+using namespace v8;
+
+#include "Global.h"
+#include "BaseContext.h"
+#include "Path2D.h"
+#include "SkCanvas.h"
+
+
+BaseContext* BaseContext::Unwrap(Handle<Object> obj) {
+ Handle<External> field = Handle<External>::Cast(obj->GetInternalField(0));
+ void* ptr = field->Value();
+ return static_cast<BaseContext*>(ptr);
+}
+
+void BaseContext::FillRect(const v8::FunctionCallbackInfo<Value>& args) {
+ BaseContext* BaseContext = Unwrap(args.This());
+ SkCanvas* canvas = BaseContext->getCanvas();
+ if (NULL == canvas) {
+ return;
+ }
+
+ if (args.Length() != 4) {
+ args.GetIsolate()->ThrowException(
+ v8::String::NewFromUtf8(
+ args.GetIsolate(), "Error: 4 arguments required."));
+ return;
+ }
+ double x = args[0]->NumberValue();
+ double y = args[1]->NumberValue();
+ double w = args[2]->NumberValue();
+ double h = args[3]->NumberValue();
+
+ SkRect rect = {
+ SkDoubleToScalar(x),
+ SkDoubleToScalar(y),
+ SkDoubleToScalar(x) + SkDoubleToScalar(w),
+ SkDoubleToScalar(y) + SkDoubleToScalar(h)
+ };
+ canvas->drawRect(rect, BaseContext->fFillStyle);
+}
+
+void BaseContext::Save(const v8::FunctionCallbackInfo<Value>& args) {
+ BaseContext* BaseContext = Unwrap(args.This());
+ SkCanvas* canvas = BaseContext->getCanvas();
+ if (NULL == canvas) {
+ return;
+ }
+
+ canvas->save();
+}
+
+void BaseContext::Restore(const v8::FunctionCallbackInfo<Value>& args) {
+ BaseContext* BaseContext = Unwrap(args.This());
+ SkCanvas* canvas = BaseContext->getCanvas();
+ if (NULL == canvas) {
+ return;
+ }
+
+ canvas->restore();
+}
+
+void BaseContext::Rotate(const v8::FunctionCallbackInfo<Value>& args) {
+ BaseContext* BaseContext = Unwrap(args.This());
+ SkCanvas* canvas = BaseContext->getCanvas();
+ if (NULL == canvas) {
+ return;
+ }
+
+ if (args.Length() != 1) {
+ args.GetIsolate()->ThrowException(
+ v8::String::NewFromUtf8(
+ args.GetIsolate(), "Error: 1 arguments required."));
+ return;
+ }
+ double angle = args[0]->NumberValue();
+ canvas->rotate(SkRadiansToDegrees(angle));
+}
+
+void BaseContext::Translate(const v8::FunctionCallbackInfo<Value>& args) {
+ BaseContext* BaseContext = Unwrap(args.This());
+ SkCanvas* canvas = BaseContext->getCanvas();
+ if (NULL == canvas) {
+ return;
+ }
+
+ if (args.Length() != 2) {
+ args.GetIsolate()->ThrowException(
+ v8::String::NewFromUtf8(
+ args.GetIsolate(), "Error: 2 arguments required."));
+ return;
+ }
+ double dx = args[0]->NumberValue();
+ double dy = args[1]->NumberValue();
+ canvas->translate(SkDoubleToScalar(dx), SkDoubleToScalar(dy));
+}
+
+void BaseContext::ResetTransform(const v8::FunctionCallbackInfo<Value>& args) {
+ BaseContext* BaseContext = Unwrap(args.This());
+ SkCanvas* canvas = BaseContext->getCanvas();
+ if (NULL == canvas) {
+ return;
+ }
+
+ canvas->resetMatrix();
+}
+
+void BaseContext::Stroke(const v8::FunctionCallbackInfo<Value>& args) {
+ BaseContext* BaseContext = Unwrap(args.This());
+ SkCanvas* canvas = BaseContext->getCanvas();
+ if (NULL == canvas) {
+ return;
+ }
+
+ if (args.Length() != 1) {
+ args.GetIsolate()->ThrowException(
+ v8::String::NewFromUtf8(
+ args.GetIsolate(), "Error: 1 arguments required."));
+ return;
+ }
+
+ Handle<External> field = Handle<External>::Cast(
+ args[0]->ToObject()->GetInternalField(0));
+ void* ptr = field->Value();
+ Path2D* path = static_cast<Path2D*>(ptr);
+
+ canvas->drawPath(path->getSkPath(), BaseContext->fStrokeStyle);
+}
+
+void BaseContext::Fill(const v8::FunctionCallbackInfo<Value>& args) {
+ BaseContext* BaseContext = Unwrap(args.This());
+ SkCanvas* canvas = BaseContext->getCanvas();
+ if (NULL == canvas) {
+ return;
+ }
+
+ if (args.Length() != 1) {
+ args.GetIsolate()->ThrowException(
+ v8::String::NewFromUtf8(
+ args.GetIsolate(), "Error: 1 arguments required."));
+ return;
+ }
+
+ Handle<External> field = Handle<External>::Cast(
+ args[0]->ToObject()->GetInternalField(0));
+ void* ptr = field->Value();
+ Path2D* path = static_cast<Path2D*>(ptr);
+
+ canvas->drawPath(path->getSkPath(), BaseContext->fFillStyle);
+}
+
+void BaseContext::GetStyle(Local<String> name,
+ const PropertyCallbackInfo<Value>& info,
+ const SkPaint& style) {
+ char buf[8];
+ SkColor color = style.getColor();
+ sprintf(buf, "#%02X%02X%02X", SkColorGetR(color), SkColorGetG(color),
+ SkColorGetB(color));
+
+ info.GetReturnValue().Set(String::NewFromUtf8(info.GetIsolate(), buf));
+}
+
+void BaseContext::SetStyle(Local<String> name, Local<Value> value,
+ const PropertyCallbackInfo<void>& info,
+ SkPaint& style) {
+ Local<String> s = value->ToString();
+ if (s->Length() != 7 && s->Length() != 9) {
+ info.GetIsolate()->ThrowException(
+ v8::String::NewFromUtf8(
+ info.GetIsolate(),
+ "Invalid fill style format length."));
+ return;
+ }
+ char buf[10];
+ s->WriteUtf8(buf, sizeof(buf));
+
+ if (buf[0] != '#') {
+ info.GetIsolate()->ThrowException(
+ v8::String::NewFromUtf8(
+ info.GetIsolate(), "Invalid fill style format."));
+ return;
+ }
+
+ // Colors can be RRGGBBAA, but SkColor uses ARGB.
+ long color = strtol(buf+1, NULL, 16);
+ uint32_t alpha = SK_AlphaOPAQUE;
+ if (s->Length() == 9) {
+ alpha = color & 0xFF;
+ color >>= 8;
+ }
+ style.setColor(SkColorSetA(SkColor(color), alpha));
+}
+
+void BaseContext::GetFillStyle(Local<String> name,
+ const PropertyCallbackInfo<Value>& info) {
+ BaseContext* baseContext = Unwrap(info.This());
+ GetStyle(name, info, baseContext->fFillStyle);
+}
+
+void BaseContext::GetStrokeStyle(Local<String> name,
+ const PropertyCallbackInfo<Value>& info) {
+ BaseContext* baseContext = Unwrap(info.This());
+ GetStyle(name, info, baseContext->fStrokeStyle);
+}
+
+void BaseContext::SetFillStyle(Local<String> name, Local<Value> value,
+ const PropertyCallbackInfo<void>& info) {
+ BaseContext* baseContext = Unwrap(info.This());
+ SetStyle(name, value, info, baseContext->fFillStyle);
+}
+
+void BaseContext::SetStrokeStyle(Local<String> name, Local<Value> value,
+ const PropertyCallbackInfo<void>& info) {
+ BaseContext* baseContext = Unwrap(info.This());
+ SetStyle(name, value, info, baseContext->fStrokeStyle);
+}
+
+
+void BaseContext::GetWidth(Local<String> name,
+ const PropertyCallbackInfo<Value>& info) {
+ BaseContext* baseContext = Unwrap(info.This());
+ SkCanvas* canvas = baseContext->getCanvas();
+ if (NULL == canvas) {
+ return;
+ }
+ SkISize size = canvas->getDeviceSize();
+
+ info.GetReturnValue().Set(
+ Int32::New(baseContext->fGlobal->getIsolate(), size.fWidth));
+}
+
+void BaseContext::GetHeight(Local<String> name,
+ const PropertyCallbackInfo<Value>& info) {
+ BaseContext* baseContext = Unwrap(info.This());
+ SkCanvas* canvas = baseContext->getCanvas();
+ if (NULL == canvas) {
+ return;
+ }
+ SkISize size = canvas->getDeviceSize();
+
+ info.GetReturnValue().Set(
+ Int32::New(baseContext->fGlobal->getIsolate(), size.fHeight));
+}
+
+#define ADD_METHOD(name, fn) \
+ tmpl->Set(String::NewFromUtf8( \
+ fGlobal->getIsolate(), name, \
+ String::kInternalizedString), \
+ FunctionTemplate::New(fGlobal->getIsolate(), fn))
+
+void BaseContext::addAttributesAndMethods(Handle<ObjectTemplate> tmpl) {
+ HandleScope scope(fGlobal->getIsolate());
+
+ // Add accessors for each of the fields of the context object.
+ tmpl->SetAccessor(String::NewFromUtf8(
+ fGlobal->getIsolate(), "fillStyle", String::kInternalizedString),
+ GetFillStyle, SetFillStyle);
+ tmpl->SetAccessor(String::NewFromUtf8(
+ fGlobal->getIsolate(), "strokeStyle", String::kInternalizedString),
+ GetStrokeStyle, SetStrokeStyle);
+ tmpl->SetAccessor(String::NewFromUtf8(
+ fGlobal->getIsolate(), "width", String::kInternalizedString),
+ GetWidth);
+ tmpl->SetAccessor(String::NewFromUtf8(
+ fGlobal->getIsolate(), "height", String::kInternalizedString),
+ GetHeight);
+
+ // Add methods.
+ ADD_METHOD("fillRect", FillRect);
+ ADD_METHOD("stroke", Stroke);
+ ADD_METHOD("fill", Fill);
+ ADD_METHOD("rotate", Rotate);
+ ADD_METHOD("save", Save);
+ ADD_METHOD("restore", Restore);
+ ADD_METHOD("translate", Translate);
+ ADD_METHOD("resetTransform", ResetTransform);
+}
diff --git a/chromium/third_party/skia/experimental/SkV8Example/BaseContext.h b/chromium/third_party/skia/experimental/SkV8Example/BaseContext.h
new file mode 100644
index 00000000000..b7fe3815a6a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/BaseContext.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ */
+
+#ifndef SkV8Example_BaseContext_DEFINED
+#define SkV8Example_BaseContext_DEFINED
+
+#include <v8.h>
+
+#include "SkPaint.h"
+
+using namespace v8;
+
+class SkCanvas;
+class Global;
+
+// BaseContext contains common functionality for both JsContext
+// and DisplayList.
+class BaseContext {
+public:
+ BaseContext(Global* global)
+ : fGlobal(global)
+ {
+ fFillStyle.setColor(SK_ColorBLACK);
+ fFillStyle.setAntiAlias(true);
+ fFillStyle.setStyle(SkPaint::kFill_Style);
+ fStrokeStyle.setColor(SK_ColorBLACK);
+ fStrokeStyle.setAntiAlias(true);
+ fStrokeStyle.setStyle(SkPaint::kStroke_Style);
+ }
+ virtual ~BaseContext() {}
+
+ // Retrieve the SkCanvas to draw on. May return NULL.
+ virtual SkCanvas* getCanvas() = 0;
+
+ // Add the Javascript attributes and methods that BaseContext implements to the ObjectTemplate.
+ void addAttributesAndMethods(Handle<ObjectTemplate> tmpl);
+
+protected:
+ // Get the pointer out of obj.
+ static BaseContext* Unwrap(Handle<Object> obj);
+
+ Global* fGlobal;
+ SkPaint fFillStyle;
+ SkPaint fStrokeStyle;
+
+private:
+ static void GetStyle(Local<String> name,
+ const PropertyCallbackInfo<Value>& info,
+ const SkPaint& style);
+ static void SetStyle(Local<String> name, Local<Value> value,
+ const PropertyCallbackInfo<void>& info,
+ SkPaint& style);
+ // JS Attributes
+ static void GetFillStyle(Local<String> name,
+ const PropertyCallbackInfo<Value>& info);
+ static void SetFillStyle(Local<String> name, Local<Value> value,
+ const PropertyCallbackInfo<void>& info);
+ static void GetStrokeStyle(Local<String> name,
+ const PropertyCallbackInfo<Value>& info);
+ static void SetStrokeStyle(Local<String> name, Local<Value> value,
+ const PropertyCallbackInfo<void>& info);
+ static void GetWidth(Local<String> name,
+ const PropertyCallbackInfo<Value>& info);
+ static void GetHeight(Local<String> name,
+ const PropertyCallbackInfo<Value>& info);
+
+ // JS Methods
+ static void FillRect(const v8::FunctionCallbackInfo<Value>& args);
+ static void Stroke(const v8::FunctionCallbackInfo<Value>& args);
+ static void Fill(const v8::FunctionCallbackInfo<Value>& args);
+ static void Rotate(const v8::FunctionCallbackInfo<Value>& args);
+ static void Save(const v8::FunctionCallbackInfo<Value>& args);
+ static void Restore(const v8::FunctionCallbackInfo<Value>& args);
+ static void Translate(const v8::FunctionCallbackInfo<Value>& args);
+ static void ResetTransform(const v8::FunctionCallbackInfo<Value>& args);
+};
+
+#endif
diff --git a/chromium/third_party/skia/experimental/SkV8Example/Global.cpp b/chromium/third_party/skia/experimental/SkV8Example/Global.cpp
new file mode 100644
index 00000000000..e8ad318d402
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/Global.cpp
@@ -0,0 +1,245 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ */
+#include "Global.h"
+
+#include "SkWindow.h"
+#include "SkEvent.h"
+
+
+Global* Global::gGlobal = NULL;
+
+// Extracts a C string from a V8 Utf8Value.
+static const char* to_cstring(const v8::String::Utf8Value& value) {
+ return *value ? *value : "<string conversion failed>";
+}
+
+int32_t Global::getNextTimerID() {
+ do {
+ fLastTimerID++;
+ if (fLastTimerID < 0) {
+ fLastTimerID = 0;
+ }
+ } while (fTimeouts.find(fLastTimerID) != fTimeouts.end());
+ return fLastTimerID;
+}
+
+// Slight modification to an original function found in the V8 sample shell.cc.
+void Global::reportException(TryCatch* tryCatch) {
+ HandleScope handleScope(fIsolate);
+ String::Utf8Value exception(tryCatch->Exception());
+ const char* exceptionString = to_cstring(exception);
+ Handle<Message> message = tryCatch->Message();
+ if (message.IsEmpty()) {
+ // V8 didn't provide any extra information about this error; just
+ // print the exception.
+ fprintf(stderr, "%s\n", exceptionString);
+ } else {
+ // Print (filename):(line number): (message).
+ String::Utf8Value filename(message->GetScriptResourceName());
+ const char* filenameString = to_cstring(filename);
+ int linenum = message->GetLineNumber();
+ fprintf(stderr,
+ "%s:%i: %s\n", filenameString, linenum, exceptionString);
+ // Print line of source code.
+ String::Utf8Value sourceline(message->GetSourceLine());
+ const char* sourceLineString = to_cstring(sourceline);
+ fprintf(stderr, "%s\n", sourceLineString);
+ // Print wavy underline.
+ int start = message->GetStartColumn();
+ for (int i = 0; i < start; i++) {
+ fprintf(stderr, " ");
+ }
+ int end = message->GetEndColumn();
+ for (int i = start; i < end; i++) {
+ fprintf(stderr, "^");
+ }
+ fprintf(stderr, "\n");
+ String::Utf8Value stackTrace(tryCatch->StackTrace());
+ if (stackTrace.length() > 0) {
+ const char* stackTraceString = to_cstring(stackTrace);
+ fprintf(stderr, "%s\n", stackTraceString);
+ }
+ }
+}
+
+// The callback that implements the JavaScript 'inval' function.
+// Invalidates the current window, forcing a redraw.
+//
+// JS: inval();
+void Global::Inval(const v8::FunctionCallbackInfo<Value>& args) {
+ gGlobal->getWindow()->inval(NULL);
+}
+
+// The callback that is invoked by v8 whenever the JavaScript 'print'
+// function is called. Prints its arguments on stdout separated by
+// spaces and ending with a newline.
+//
+// JS: print("foo", "bar");
+void Global::Print(const v8::FunctionCallbackInfo<v8::Value>& args) {
+ bool first = true;
+ HandleScope handleScope(args.GetIsolate());
+ for (int i = 0; i < args.Length(); i++) {
+ if (first) {
+ first = false;
+ } else {
+ printf(" ");
+ }
+ v8::String::Utf8Value str(args[i]);
+ printf("%s", to_cstring(str));
+ }
+ printf("\n");
+ fflush(stdout);
+}
+
+// The callback that is invoked by v8 whenever the JavaScript 'setTimeout'
+// function is called.
+//
+// JS: setTimeout(on_timeout, 500);
+void Global::SetTimeout(const v8::FunctionCallbackInfo<v8::Value>& args) {
+ if (args.Length() != 2) {
+ args.GetIsolate()->ThrowException(
+ v8::String::NewFromUtf8(
+ args.GetIsolate(), "Error: 2 arguments required."));
+ return;
+ }
+
+ // Pull out the first arg, make sure it's a function.
+ if (!args[0]->IsFunction()) {
+ printf("Not a function passed to setTimeout.\n");
+ return;
+ }
+ Handle<Function> timeoutFn = Handle<Function>::Cast(args[0]);
+
+ double delay = args[1]->NumberValue();
+ int32_t id = gGlobal->getNextTimerID();
+
+ gGlobal->fTimeouts[id].Reset(gGlobal->fIsolate, timeoutFn);
+
+ // Create an SkEvent and add it with the right delay.
+ SkEvent* evt = new SkEvent();
+ evt->setTargetProc(Global::TimeOutProc);
+ evt->setFast32(id);
+ evt->postDelay(delay);
+
+ args.GetReturnValue().Set(Integer::New(gGlobal->fIsolate, id));
+}
+
+// Callback function for SkEvents used to implement timeouts.
+bool Global::TimeOutProc(const SkEvent& evt) {
+ // Create a handle scope to keep the temporary object references.
+ HandleScope handleScope(gGlobal->getIsolate());
+
+ // Create a local context from our global context.
+ Local<Context> context = gGlobal->getContext();
+
+ // Enter the context so all the remaining operations take place there.
+ Context::Scope contextScope(context);
+
+ // Set up an exception handler before calling the Process function.
+ TryCatch tryCatch;
+
+ int32_t id = evt.getFast32();
+ if (gGlobal->fTimeouts.find(gGlobal->fLastTimerID) == gGlobal->fTimeouts.end()) {
+ printf("Not a valid timer ID.\n");
+ return true;
+ }
+
+ const int argc = 0;
+ Local<Function> onTimeout =
+ Local<Function>::New(gGlobal->getIsolate(), gGlobal->fTimeouts[id]);
+ Handle<Value> result = onTimeout->Call(context->Global(), argc, NULL);
+ gGlobal->fTimeouts.erase(id);
+
+ // Handle any exceptions or output.
+ if (result.IsEmpty()) {
+ SkASSERT(tryCatch.HasCaught());
+ // Print errors that happened during execution.
+ gGlobal->reportException(&tryCatch);
+ } else {
+ SkASSERT(!tryCatch.HasCaught());
+ if (!result->IsUndefined()) {
+ // If all went well and the result wasn't undefined then print the
+ // returned value.
+ String::Utf8Value str(result);
+ const char* cstr = to_cstring(str);
+ printf("%s\n", cstr);
+ }
+ }
+ return true;
+}
+
+// Creates a new execution environment containing the built-in functions.
+Handle<Context> Global::createRootContext() {
+ // Create a template for the global object.
+ Handle<ObjectTemplate> global = ObjectTemplate::New();
+
+ global->Set(v8::String::NewFromUtf8(fIsolate, "print"),
+ v8::FunctionTemplate::New(fIsolate, Global::Print));
+ global->Set(v8::String::NewFromUtf8(fIsolate, "setTimeout"),
+ v8::FunctionTemplate::New(fIsolate, Global::SetTimeout));
+ global->Set(v8::String::NewFromUtf8(fIsolate, "inval"),
+ v8::FunctionTemplate::New(fIsolate, Global::Inval));
+
+
+ return Context::New(fIsolate, NULL, global);
+}
+
+void Global::initialize() {
+ // Create a stack-allocated handle scope.
+ HandleScope handleScope(fIsolate);
+
+ // Create a new context.
+ Handle<Context> context = this->createRootContext();
+
+ // Make the context persistent.
+ fContext.Reset(fIsolate, context);
+}
+
+
+// Creates the root context, parses the script into it, then stores the
+// context in a global.
+//
+// TODO(jcgregorio) Currently only handles one script. Need to move
+// createRootContext to another call that's only done once.
+bool Global::parseScript(const char script[]) {
+
+ // Create a stack-allocated handle scope.
+ HandleScope handleScope(fIsolate);
+
+ // Get the global context.
+ Handle<Context> context = this->getContext();
+
+ // Enter the scope so all operations take place in the scope.
+ Context::Scope contextScope(context);
+
+ v8::TryCatch tryCatch;
+
+ // Compile the source code.
+ Handle<String> source = String::NewFromUtf8(fIsolate, script);
+ Handle<Script> compiledScript = Script::Compile(source);
+
+ if (compiledScript.IsEmpty()) {
+ // Print errors that happened during compilation.
+ this->reportException(&tryCatch);
+ return false;
+ }
+
+ // Try running it now to create the onDraw function.
+ Handle<Value> result = compiledScript->Run();
+
+ // Handle any exceptions or output.
+ if (result.IsEmpty()) {
+ SkASSERT(tryCatch.HasCaught());
+ // Print errors that happened during execution.
+ this->reportException(&tryCatch);
+ return false;
+ }
+
+ return true;
+}
diff --git a/chromium/third_party/skia/experimental/SkV8Example/Global.h b/chromium/third_party/skia/experimental/SkV8Example/Global.h
new file mode 100644
index 00000000000..6bd3c709623
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/Global.h
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ */
+
+#ifndef SkV8Example_Global_DEFINED
+#define SkV8Example_Global_DEFINED
+
+#include <map>
+
+#include <v8.h>
+
+using namespace v8;
+
+#include "SkTypes.h"
+#include "SkEvent.h"
+
+class SkOSWindow;
+
+typedef Persistent<Function, CopyablePersistentTraits<Function> > CopyablePersistentFn;
+
+// Provides the global isolate and context for our V8 instance.
+// Also implements all the global level functions.
+class Global : SkNoncopyable {
+public:
+ Global(Isolate* isolate)
+ : fIsolate(isolate)
+ , fWindow(NULL)
+ , fLastTimerID(0)
+ {
+ gGlobal = this;
+ this->initialize();
+ }
+ virtual ~Global() {}
+
+ // The script will be parsed into the context this Global contains.
+ bool parseScript(const char script[]);
+
+ Local<Context> getContext() {
+ return Local<Context>::New(fIsolate, fContext);
+ }
+
+ Isolate* getIsolate() {
+ return fIsolate;
+ }
+
+ void setWindow(SkOSWindow* win) {
+ fWindow = win;
+ }
+ SkOSWindow* getWindow() {
+ return fWindow;
+ }
+
+ void reportException(TryCatch* tryCatch);
+
+private:
+ void initialize();
+ Handle<Context> createRootContext();
+ int32_t getNextTimerID();
+
+ static bool TimeOutProc(const SkEvent& evt);
+
+ // Static functions that implement the global JS functions we add to
+ // the context.
+ static void SetTimeout(const v8::FunctionCallbackInfo<v8::Value>& args);
+ static void Print(const v8::FunctionCallbackInfo<v8::Value>& args);
+ static void Inval(const v8::FunctionCallbackInfo<Value>& args);
+
+ Persistent<Context> fContext;
+ Isolate* fIsolate;
+ SkOSWindow* fWindow;
+ static Global* gGlobal;
+
+ // Handle to the functions to call when a timeout triggers as indexed by id.
+ std::map<int32_t, CopyablePersistentFn > fTimeouts;
+
+ // Last timer ID generated.
+ int32_t fLastTimerID;
+};
+
+#endif
diff --git a/chromium/third_party/skia/experimental/SkV8Example/JsContext.cpp b/chromium/third_party/skia/experimental/SkV8Example/JsContext.cpp
new file mode 100644
index 00000000000..8b0b0729797
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/JsContext.cpp
@@ -0,0 +1,140 @@
+
+/*
+ * Copyright 2013 Google Inc.
+ *
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ */
+#include <v8.h>
+
+using namespace v8;
+
+#include "Global.h"
+#include "JsContext.h"
+#include "Path2D.h"
+#include "SkCanvas.h"
+
+
+// Extracts a C string from a V8 Utf8Value.
+// TODO(jcgregrio) Currently dup'd in two files, fix.
+static const char* to_cstring(const v8::String::Utf8Value& value) {
+ return *value ? *value : "<string conversion failed>";
+}
+
+Persistent<ObjectTemplate> JsContext::gContextTemplate;
+
+// Wraps 'this' in a Javascript object.
+Handle<Object> JsContext::wrap() {
+ // Handle scope for temporary handles.
+ EscapableHandleScope handleScope(fGlobal->getIsolate());
+
+ // Fetch the template for creating JavaScript JsContext wrappers.
+ // It only has to be created once, which we do on demand.
+ if (gContextTemplate.IsEmpty()) {
+ Local<ObjectTemplate> localTemplate = ObjectTemplate::New();
+
+ // Add a field to store the pointer to a JsContext instance.
+ localTemplate->SetInternalFieldCount(1);
+
+ this->addAttributesAndMethods(localTemplate);
+
+ gContextTemplate.Reset(fGlobal->getIsolate(), localTemplate);
+ }
+ Handle<ObjectTemplate> templ =
+ Local<ObjectTemplate>::New(fGlobal->getIsolate(), gContextTemplate);
+
+ // Create an empty JsContext wrapper.
+ Local<Object> result = templ->NewInstance();
+
+ // Wrap the raw C++ pointer in an External so it can be referenced
+ // from within JavaScript.
+ Handle<External> contextPtr = External::New(fGlobal->getIsolate(), this);
+
+ // Store the context pointer in the JavaScript wrapper.
+ result->SetInternalField(0, contextPtr);
+
+ // Return the result through the current handle scope. Since each
+ // of these handles will go away when the handle scope is deleted
+ // we need to call Close to let one, the result, escape into the
+ // outer handle scope.
+ return handleScope.Escape(result);
+}
+
+void JsContext::onDraw(SkCanvas* canvas) {
+ // Record canvas and window in this.
+ fCanvas = canvas;
+
+ // Create a handle scope to keep the temporary object references.
+ HandleScope handleScope(fGlobal->getIsolate());
+
+ // Create a local context from our global context.
+ Local<Context> context = fGlobal->getContext();
+
+ // Enter the context so all the remaining operations take place there.
+ Context::Scope contextScope(context);
+
+ // Wrap the C++ this pointer in a JavaScript wrapper.
+ Handle<Object> contextObj = this->wrap();
+
+ // Set up an exception handler before calling the Process function.
+ TryCatch tryCatch;
+
+ // Invoke the process function, giving the global object as 'this'
+ // and one argument, this JsContext.
+ const int argc = 1;
+ Handle<Value> argv[argc] = { contextObj };
+ Local<Function> onDraw =
+ Local<Function>::New(fGlobal->getIsolate(), fOnDraw);
+ Handle<Value> result = onDraw->Call(context->Global(), argc, argv);
+
+ // Handle any exceptions or output.
+ if (result.IsEmpty()) {
+ SkASSERT(tryCatch.HasCaught());
+ // Print errors that happened during execution.
+ fGlobal->reportException(&tryCatch);
+ } else {
+ SkASSERT(!tryCatch.HasCaught());
+ if (!result->IsUndefined()) {
+ // If all went well and the result wasn't undefined then print
+ // the returned value.
+ String::Utf8Value str(result);
+ const char* cstr = to_cstring(str);
+ printf("%s\n", cstr);
+ }
+ }
+}
+
+// Fetch the onDraw function from the global context.
+bool JsContext::initialize() {
+
+ // Create a stack-allocated handle scope.
+ HandleScope handleScope(fGlobal->getIsolate());
+
+ // Create a local context from our global context.
+ Local<Context> context = fGlobal->getContext();
+
+ // Enter the scope so all operations take place in the scope.
+ Context::Scope contextScope(context);
+
+ v8::TryCatch try_catch;
+
+ Handle<String> fn_name = String::NewFromUtf8(
+ fGlobal->getIsolate(), "onDraw");
+ Handle<Value> fn_val = context->Global()->Get(fn_name);
+
+ if (!fn_val->IsFunction()) {
+ printf("Not a function.\n");
+ return false;
+ }
+
+ // It is a function; cast it to a Function.
+ Handle<Function> fn_fun = Handle<Function>::Cast(fn_val);
+
+ // Store the function in a Persistent handle, since we also want that to
+ // remain after this call returns.
+ fOnDraw.Reset(fGlobal->getIsolate(), fn_fun);
+
+ return true;
+}
diff --git a/chromium/third_party/skia/experimental/SkV8Example/JsContext.h b/chromium/third_party/skia/experimental/SkV8Example/JsContext.h
new file mode 100644
index 00000000000..d3993ee6c7d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/JsContext.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ */
+
+#ifndef SkV8Example_JsContext_DEFINED
+#define SkV8Example_JsContext_DEFINED
+
+#include <v8.h>
+
+#include "SkPaint.h"
+#include "BaseContext.h"
+
+using namespace v8;
+
+class SkCanvas;
+class Global;
+
+// Provides the canvas context implementation in JS, and the OnDraw() method in
+// C++ that's used to bridge from C++ to JS. Should be used in JS as:
+//
+// function onDraw(context) {
+// context.fillStyle="#FF0000";
+// context.fillRect(x, y, w, h);
+// }
+class JsContext : public BaseContext {
+public:
+ JsContext(Global* global)
+ : INHERITED(global)
+ , fCanvas(NULL)
+ {
+ }
+ virtual ~JsContext() {}
+
+ // Parse the script.
+ bool initialize();
+
+ // Call this with the SkCanvas you want onDraw to draw on.
+ void onDraw(SkCanvas* canvas);
+
+ virtual SkCanvas* getCanvas() { return fCanvas; };
+
+private:
+
+ // Wrap the 'this' pointer into an Object. Can be retrieved via Unwrap.
+ Handle<Object> wrap();
+
+ // A handle to the onDraw function defined in the script.
+ Persistent<Function> fOnDraw;
+
+ // The template for what a canvas context object looks like. The canvas
+ // context object is what's passed into the JS onDraw() function.
+ static Persistent<ObjectTemplate> gContextTemplate;
+
+ // Only valid when inside OnDraw().
+ SkCanvas* fCanvas;
+
+ typedef BaseContext INHERITED;
+};
+
+#endif
diff --git a/chromium/third_party/skia/experimental/SkV8Example/Path2D.cpp b/chromium/third_party/skia/experimental/SkV8Example/Path2D.cpp
new file mode 100644
index 00000000000..4118a22b807
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/Path2D.cpp
@@ -0,0 +1,244 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ */
+
+#include "Path2D.h"
+#include "Global.h"
+
+Global* Path2D::gGlobal = NULL;
+
+void Path2D::ConstructPath(const v8::FunctionCallbackInfo<Value>& args) {
+ HandleScope handleScope(gGlobal->getIsolate());
+ Path2D* path = new Path2D();
+ args.This()->SetInternalField(
+ 0, External::New(gGlobal->getIsolate(), path));
+}
+
+#define ADD_METHOD(name, fn) \
+ constructor->InstanceTemplate()->Set( \
+ String::NewFromUtf8( \
+ global->getIsolate(), name, \
+ String::kInternalizedString), \
+ FunctionTemplate::New(global->getIsolate(), fn))
+
+// Install the constructor in the global scope so Path2Ds can be constructed
+// in JS.
+void Path2D::AddToGlobal(Global* global) {
+ gGlobal = global;
+
+ // Create a stack-allocated handle scope.
+ HandleScope handleScope(gGlobal->getIsolate());
+
+ Handle<Context> context = gGlobal->getContext();
+
+ // Enter the scope so all operations take place in the scope.
+ Context::Scope contextScope(context);
+
+ Local<FunctionTemplate> constructor = FunctionTemplate::New(
+ gGlobal->getIsolate(), Path2D::ConstructPath);
+ constructor->InstanceTemplate()->SetInternalFieldCount(1);
+
+ ADD_METHOD("closePath", ClosePath);
+ ADD_METHOD("moveTo", MoveTo);
+ ADD_METHOD("lineTo", LineTo);
+ ADD_METHOD("quadraticCurveTo", QuadraticCurveTo);
+ ADD_METHOD("bezierCurveTo", BezierCurveTo);
+ ADD_METHOD("arc", Arc);
+ ADD_METHOD("rect", Rect);
+ ADD_METHOD("oval", Oval);
+ ADD_METHOD("conicTo", ConicTo);
+
+ context->Global()->Set(String::NewFromUtf8(
+ gGlobal->getIsolate(), "Path2D"), constructor->GetFunction());
+}
+
+Path2D* Path2D::Unwrap(const v8::FunctionCallbackInfo<Value>& args) {
+ Handle<External> field = Handle<External>::Cast(
+ args.This()->GetInternalField(0));
+ void* ptr = field->Value();
+ return static_cast<Path2D*>(ptr);
+}
+
+void Path2D::ClosePath(const v8::FunctionCallbackInfo<Value>& args) {
+ Path2D* path = Unwrap(args);
+ path->fSkPath.close();
+}
+
+void Path2D::MoveTo(const v8::FunctionCallbackInfo<Value>& args) {
+ if (args.Length() != 2) {
+ args.GetIsolate()->ThrowException(
+ v8::String::NewFromUtf8(
+ args.GetIsolate(), "Error: 2 arguments required."));
+ return;
+ }
+ double x = args[0]->NumberValue();
+ double y = args[1]->NumberValue();
+ Path2D* path = Unwrap(args);
+ path->fSkPath.moveTo(SkDoubleToScalar(x), SkDoubleToScalar(y));
+}
+
+void Path2D::LineTo(const v8::FunctionCallbackInfo<Value>& args) {
+ if (args.Length() != 2) {
+ args.GetIsolate()->ThrowException(
+ v8::String::NewFromUtf8(
+ args.GetIsolate(), "Error: 2 arguments required."));
+ return;
+ }
+ double x = args[0]->NumberValue();
+ double y = args[1]->NumberValue();
+ Path2D* path = Unwrap(args);
+ path->fSkPath.lineTo(SkDoubleToScalar(x), SkDoubleToScalar(y));
+}
+
+void Path2D::QuadraticCurveTo(const v8::FunctionCallbackInfo<Value>& args) {
+ if (args.Length() != 4) {
+ args.GetIsolate()->ThrowException(
+ v8::String::NewFromUtf8(
+ args.GetIsolate(), "Error: 4 arguments required."));
+ return;
+ }
+ double cpx = args[0]->NumberValue();
+ double cpy = args[1]->NumberValue();
+ double x = args[2]->NumberValue();
+ double y = args[3]->NumberValue();
+ Path2D* path = Unwrap(args);
+ // TODO(jcgregorio) Doesn't handle the empty last path case correctly per
+ // the HTML 5 spec.
+ path->fSkPath.quadTo(
+ SkDoubleToScalar(cpx), SkDoubleToScalar(cpy),
+ SkDoubleToScalar(x), SkDoubleToScalar(y));
+}
+
+void Path2D::BezierCurveTo(const v8::FunctionCallbackInfo<Value>& args) {
+ if (args.Length() != 6) {
+ args.GetIsolate()->ThrowException(
+ v8::String::NewFromUtf8(
+ args.GetIsolate(), "Error: 6 arguments required."));
+ return;
+ }
+ double cp1x = args[0]->NumberValue();
+ double cp1y = args[1]->NumberValue();
+ double cp2x = args[2]->NumberValue();
+ double cp2y = args[3]->NumberValue();
+ double x = args[4]->NumberValue();
+ double y = args[5]->NumberValue();
+ Path2D* path = Unwrap(args);
+ // TODO(jcgregorio) Doesn't handle the empty last path case correctly per
+ // the HTML 5 spec.
+ path->fSkPath.cubicTo(
+ SkDoubleToScalar(cp1x), SkDoubleToScalar(cp1y),
+ SkDoubleToScalar(cp2x), SkDoubleToScalar(cp2y),
+ SkDoubleToScalar(x), SkDoubleToScalar(y));
+}
+
+void Path2D::Arc(const v8::FunctionCallbackInfo<Value>& args) {
+ if (args.Length() != 5 && args.Length() != 6) {
+ args.GetIsolate()->ThrowException(
+ v8::String::NewFromUtf8(
+ args.GetIsolate(), "Error: 5 or 6 args required."));
+ return;
+ }
+ double x = args[0]->NumberValue();
+ double y = args[1]->NumberValue();
+ double radius = args[2]->NumberValue();
+ double startAngle = args[3]->NumberValue();
+ double endAngle = args[4]->NumberValue();
+ bool antiClockwise = false;
+ if (args.Length() == 6) {
+ antiClockwise = args[5]->BooleanValue();
+ }
+ double sweepAngle;
+ if (!antiClockwise) {
+ sweepAngle = endAngle - startAngle;
+ } else {
+ sweepAngle = startAngle - endAngle;
+ startAngle = endAngle;
+ }
+
+ Path2D* path = Unwrap(args);
+ SkRect rect = {
+ SkDoubleToScalar(x-radius),
+ SkDoubleToScalar(y-radius),
+ SkDoubleToScalar(x+radius),
+ SkDoubleToScalar(y+radius)
+ };
+
+ path->fSkPath.addArc(rect, SkRadiansToDegrees(startAngle),
+ SkRadiansToDegrees(sweepAngle));
+}
+
+void Path2D::Rect(const v8::FunctionCallbackInfo<Value>& args) {
+ if (args.Length() != 4) {
+ args.GetIsolate()->ThrowException(
+ v8::String::NewFromUtf8(
+ args.GetIsolate(), "Error: 4 arguments required."));
+ return;
+ }
+ double x = args[0]->NumberValue();
+ double y = args[1]->NumberValue();
+ double w = args[2]->NumberValue();
+ double h = args[3]->NumberValue();
+
+ SkRect rect = {
+ SkDoubleToScalar(x),
+ SkDoubleToScalar(y),
+ SkDoubleToScalar(x) + SkDoubleToScalar(w),
+ SkDoubleToScalar(y) + SkDoubleToScalar(h)
+ };
+ Path2D* path = Unwrap(args);
+ path->fSkPath.addRect(rect);
+}
+
+void Path2D::Oval(const v8::FunctionCallbackInfo<Value>& args) {
+ if (args.Length() != 4 && args.Length() != 5) {
+ args.GetIsolate()->ThrowException(
+ v8::String::NewFromUtf8(
+ args.GetIsolate(), "Error: 4 or 5 args required."));
+ return;
+ }
+ double x = args[0]->NumberValue();
+ double y = args[1]->NumberValue();
+ double radiusX = args[2]->NumberValue();
+ double radiusY = args[3]->NumberValue();
+ SkPath::Direction dir = SkPath::kCW_Direction;
+ if (args.Length() == 5 && !args[4]->BooleanValue()) {
+ dir = SkPath::kCCW_Direction;
+ }
+ Path2D* path = Unwrap(args);
+ SkRect rect = {
+ SkDoubleToScalar(x-radiusX),
+ SkDoubleToScalar(y-radiusX),
+ SkDoubleToScalar(x+radiusY),
+ SkDoubleToScalar(y+radiusY)
+ };
+
+ path->fSkPath.addOval(rect, dir);
+}
+
+void Path2D::ConicTo(const v8::FunctionCallbackInfo<Value>& args) {
+ if (args.Length() != 5) {
+ args.GetIsolate()->ThrowException(
+ v8::String::NewFromUtf8(
+ args.GetIsolate(), "Error: 5 args required."));
+ return;
+ }
+ double x1 = args[0]->NumberValue();
+ double y1 = args[1]->NumberValue();
+ double x2 = args[2]->NumberValue();
+ double y2 = args[3]->NumberValue();
+ double w = args[4]->NumberValue();
+ Path2D* path = Unwrap(args);
+
+ path->fSkPath.conicTo(
+ SkDoubleToScalar(x1),
+ SkDoubleToScalar(y1),
+ SkDoubleToScalar(x2),
+ SkDoubleToScalar(y2),
+ SkDoubleToScalar(w)
+ );
+}
diff --git a/chromium/third_party/skia/experimental/SkV8Example/Path2D.h b/chromium/third_party/skia/experimental/SkV8Example/Path2D.h
new file mode 100644
index 00000000000..93c1299c61e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/Path2D.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ */
+
+#ifndef SkV8Example_Path2D_DEFINED
+#define SkV8Example_Path2D_DEFINED
+
+#include <v8.h>
+
+#include "SkPath.h"
+#include "SkTypes.h"
+
+class Global;
+
+class Path2D : SkNoncopyable {
+public:
+ Path2D() : fSkPath() {}
+ virtual ~Path2D() {}
+
+ const SkPath& getSkPath() { return fSkPath; }
+
+ // The JS Path2D constuctor implementation.
+ static void ConstructPath(const v8::FunctionCallbackInfo<v8::Value>& args);
+
+ // Add the Path2D JS constructor to the global context.
+ static void AddToGlobal(Global* global);
+
+ // Path2D JS methods.
+ static void ClosePath(const v8::FunctionCallbackInfo<v8::Value>& args);
+ static void MoveTo(const v8::FunctionCallbackInfo<v8::Value>& args);
+ static void LineTo(const v8::FunctionCallbackInfo<v8::Value>& args);
+ static void QuadraticCurveTo(
+ const v8::FunctionCallbackInfo<v8::Value>& args);
+ static void BezierCurveTo(const v8::FunctionCallbackInfo<v8::Value>& args);
+ static void Arc(const v8::FunctionCallbackInfo<v8::Value>& args);
+ static void Rect(const v8::FunctionCallbackInfo<v8::Value>& args);
+ static void Oval(const v8::FunctionCallbackInfo<v8::Value>& args);
+ static void ConicTo(const v8::FunctionCallbackInfo<v8::Value>& args);
+private:
+ SkPath fSkPath;
+
+ static Path2D* Unwrap(const v8::FunctionCallbackInfo<v8::Value>& args);
+
+ static Global* gGlobal;
+};
+
+#endif
diff --git a/chromium/third_party/skia/experimental/SkV8Example/README b/chromium/third_party/skia/experimental/SkV8Example/README
new file mode 100644
index 00000000000..da031146925
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/README
@@ -0,0 +1,16 @@
+Build Instructions
+==================
+
+V8 gyp is not quite standard and Chromium uses a Python script
+to work around that, for now we have some manual steps to do
+before you can compile and run this sample:
+
+1. Uncomment out the v8 dep in DEPS and re-run gclient sync.
+2. Run 'make dependencies' in third_pary/externals/v8.
+3. Run 'make native' in third_pary/externals/v8.
+4. Uncomment SkV8Example in gyp/everything.gyp.
+5. Run 'ninja -C out/Debug SkV8Example'
+6. Run the sample as:
+ ./out/Debug/SkV8Example --infile experimental/SkV8Example/speed.js
+
+
diff --git a/chromium/third_party/skia/experimental/SkV8Example/SkV8Example.cpp b/chromium/third_party/skia/experimental/SkV8Example/SkV8Example.cpp
new file mode 100644
index 00000000000..00fa2773512
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/SkV8Example.cpp
@@ -0,0 +1,225 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ */
+#include <v8.h>
+
+using namespace v8;
+
+#include "SkV8Example.h"
+#include "Global.h"
+#include "JsContext.h"
+#include "Path2D.h"
+
+#include "gl/GrGLUtil.h"
+#include "gl/GrGLDefines.h"
+#include "gl/GrGLInterface.h"
+#include "GrRenderTarget.h"
+#include "GrContext.h"
+#include "SkApplication.h"
+#include "SkCommandLineFlags.h"
+#include "SkData.h"
+#include "SkDraw.h"
+#include "SkGpuDevice.h"
+#include "SkGraphics.h"
+#include "SkScalar.h"
+#include "SkSurface.h"
+
+
+DEFINE_string2(infile, i, NULL, "Name of file to load JS from.\n");
+DEFINE_bool(gpu, true, "Use the GPU for rendering.");
+
+void application_init() {
+ SkGraphics::Init();
+ SkEvent::Init();
+}
+
+void application_term() {
+ SkEvent::Term();
+ SkGraphics::Term();
+}
+
+SkV8ExampleWindow::SkV8ExampleWindow(void* hwnd, JsContext* context)
+ : INHERITED(hwnd)
+ , fJsContext(context)
+#if SK_SUPPORT_GPU
+ , fCurContext(NULL)
+ , fCurIntf(NULL)
+ , fCurRenderTarget(NULL)
+ , fCurSurface(NULL)
+#endif
+{
+ this->setColorType(kBGRA_8888_SkColorType);
+ this->setVisibleP(true);
+ this->setClipToBounds(false);
+
+#if SK_SUPPORT_GPU
+ this->windowSizeChanged();
+#endif
+}
+
+SkV8ExampleWindow::~SkV8ExampleWindow() {
+#if SK_SUPPORT_GPU
+ SkSafeUnref(fCurContext);
+ SkSafeUnref(fCurIntf);
+ SkSafeUnref(fCurRenderTarget);
+ SkSafeUnref(fCurSurface);
+#endif
+}
+
+#if SK_SUPPORT_GPU
+void SkV8ExampleWindow::windowSizeChanged() {
+ if (FLAGS_gpu) {
+ SkOSWindow::AttachmentInfo attachmentInfo;
+ bool result = this->attach(
+ SkOSWindow::kNativeGL_BackEndType, 0, &attachmentInfo);
+ if (!result) {
+ printf("Failed to attach.");
+ exit(1);
+ }
+
+ fCurIntf = GrGLCreateNativeInterface();
+ fCurContext = GrContext::Create(
+ kOpenGL_GrBackend, (GrBackendContext) fCurIntf);
+ if (NULL == fCurIntf || NULL == fCurContext) {
+ printf("Failed to initialize GL.");
+ exit(1);
+ }
+
+ GrBackendRenderTargetDesc desc;
+ desc.fWidth = SkScalarRoundToInt(this->width());
+ desc.fHeight = SkScalarRoundToInt(this->height());
+ desc.fConfig = kSkia8888_GrPixelConfig;
+ desc.fOrigin = kBottomLeft_GrSurfaceOrigin;
+ desc.fSampleCnt = attachmentInfo.fSampleCount;
+ desc.fStencilBits = attachmentInfo.fStencilBits;
+ GrGLint buffer;
+ GR_GL_GetIntegerv(fCurIntf, GR_GL_FRAMEBUFFER_BINDING, &buffer);
+ desc.fRenderTargetHandle = buffer;
+
+ SkSafeUnref(fCurRenderTarget);
+ fCurRenderTarget = fCurContext->wrapBackendRenderTarget(desc);
+ SkSafeUnref(fCurSurface);
+ fCurSurface = SkSurface::NewRenderTargetDirect(fCurRenderTarget);
+ }
+}
+#endif
+
+#if SK_SUPPORT_GPU
+SkCanvas* SkV8ExampleWindow::createCanvas() {
+ if (FLAGS_gpu) {
+ SkCanvas* c = fCurSurface->getCanvas();
+ // Increase the ref count since the surface keeps a reference
+ // to the canvas, but callers of createCanvas put the results
+ // in a SkAutoTUnref.
+ c->ref();
+ return c;
+ } else {
+ return this->INHERITED::createCanvas();
+ }
+}
+#endif
+
+void SkV8ExampleWindow::onSizeChange() {
+ this->INHERITED::onSizeChange();
+
+#if SK_SUPPORT_GPU
+ this->windowSizeChanged();
+#endif
+}
+
+void SkV8ExampleWindow::onDraw(SkCanvas* canvas) {
+
+ canvas->save();
+ canvas->drawColor(SK_ColorWHITE);
+
+ // Now jump into JS and call the onDraw(canvas) method defined there.
+ fJsContext->onDraw(canvas);
+
+ canvas->restore();
+
+ this->INHERITED::onDraw(canvas);
+
+#if SK_SUPPORT_GPU
+ if (FLAGS_gpu) {
+ fCurContext->flush();
+ this->present();
+ }
+#endif
+}
+
+#ifdef SK_BUILD_FOR_WIN
+void SkV8ExampleWindow::onHandleInval(const SkIRect& rect) {
+ RECT winRect;
+ winRect.top = rect.top();
+ winRect.bottom = rect.bottom();
+ winRect.right = rect.right();
+ winRect.left = rect.left();
+ InvalidateRect((HWND)this->getHWND(), &winRect, false);
+}
+#endif
+
+SkOSWindow* create_sk_window(void* hwnd, int argc, char** argv) {
+ printf("Started\n");
+
+ SkCommandLineFlags::Parse(argc, argv);
+
+ // Get the default Isolate created at startup.
+ Isolate* isolate = Isolate::GetCurrent();
+ Global* global = new Global(isolate);
+
+
+ // Set up things to look like a browser by creating
+ // a console object that invokes our print function.
+ const char* startupScript =
+ "function Console() {}; \n"
+ "Console.prototype.log = function() { \n"
+ " var args = Array.prototype.slice.call(arguments).join(' '); \n"
+ " print(args); \n"
+ "}; \n"
+ "console = new Console(); \n";
+
+ if (!global->parseScript(startupScript)) {
+ printf("Failed to parse startup script: %s.\n", FLAGS_infile[0]);
+ exit(1);
+ }
+
+ const char* script =
+ "function onDraw(canvas) { \n"
+ " canvas.fillStyle = '#00FF00'; \n"
+ " canvas.fillRect(20, 20, 100, 100); \n"
+ " canvas.inval(); \n"
+ "} \n";
+
+ SkAutoTUnref<SkData> data;
+ if (FLAGS_infile.count()) {
+ data.reset(SkData::NewFromFileName(FLAGS_infile[0]));
+ script = static_cast<const char*>(data->data());
+ }
+ if (NULL == script) {
+ printf("Could not load file: %s.\n", FLAGS_infile[0]);
+ exit(1);
+ }
+ Path2D::AddToGlobal(global);
+
+ if (!global->parseScript(script)) {
+ printf("Failed to parse file: %s.\n", FLAGS_infile[0]);
+ exit(1);
+ }
+
+
+ JsContext* jsContext = new JsContext(global);
+
+ if (!jsContext->initialize()) {
+ printf("Failed to initialize.\n");
+ exit(1);
+ }
+ SkV8ExampleWindow* win = new SkV8ExampleWindow(hwnd, jsContext);
+ global->setWindow(win);
+
+ return win;
+}
diff --git a/chromium/third_party/skia/experimental/SkV8Example/SkV8Example.h b/chromium/third_party/skia/experimental/SkV8Example/SkV8Example.h
new file mode 100644
index 00000000000..5e1400564c9
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/SkV8Example.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ */
+
+#ifndef SkV8Example_DEFINED
+#define SkV8Example_DEFINED
+
+#include "SkWindow.h"
+
+class GrContext;
+class GrGLInterface;
+class GrRenderTarget;
+class SkSurface;
+
+class JsContext;
+
+class SkV8ExampleWindow : public SkOSWindow {
+public:
+ SkV8ExampleWindow(void* hwnd, JsContext* canvas);
+ virtual ~SkV8ExampleWindow();
+
+protected:
+ virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE;
+ virtual void onSizeChange() SK_OVERRIDE;
+
+#if SK_SUPPORT_GPU
+ virtual SkCanvas* createCanvas() SK_OVERRIDE;
+#endif
+
+#ifdef SK_BUILD_FOR_WIN
+ virtual void onHandleInval(const SkIRect&) SK_OVERRIDE;
+#endif
+
+ void windowSizeChanged();
+
+private:
+ typedef SkOSWindow INHERITED;
+ JsContext* fJsContext;
+
+#if SK_SUPPORT_GPU
+ GrContext* fCurContext;
+ const GrGLInterface* fCurIntf;
+ GrRenderTarget* fCurRenderTarget;
+ SkSurface* fCurSurface;
+#endif
+};
+
+#endif
diff --git a/chromium/third_party/skia/experimental/SkV8Example/compare/gears.html b/chromium/third_party/skia/experimental/SkV8Example/compare/gears.html
new file mode 100644
index 00000000000..a53789c9dc6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/compare/gears.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Gears</title>
+ <meta charset="utf-8" />
+</head>
+<body>
+ <canvas id=gears width=500 height=500>
+ <script src="../gears.js" type="text/javascript" charset="utf-8"></script>
+</body>
+</html>
diff --git a/chromium/third_party/skia/experimental/SkV8Example/compare/snow.html b/chromium/third_party/skia/experimental/SkV8Example/compare/snow.html
new file mode 100644
index 00000000000..cc5ad0cb75b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/compare/snow.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Snow</title>
+ <meta charset="utf-8" />
+</head>
+<body>
+ <canvas id=snow width=500 height=500>
+ <script src="../snow.js" type="text/javascript" charset="utf-8"></script>
+</body>
+</html>
diff --git a/chromium/third_party/skia/experimental/SkV8Example/gears.js b/chromium/third_party/skia/experimental/SkV8Example/gears.js
new file mode 100644
index 00000000000..a901f9d9211
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/gears.js
@@ -0,0 +1,183 @@
+var IS_SKV8 = typeof document == "undefined";
+var HAS_PATH = typeof Path2D != "undefined";
+var HAS_DISPLAY_LIST = typeof DisplayList != "undefined";
+
+var NumTeeth = 24;
+var NumGears = 60;
+var DeltaTheta = Math.PI/90;
+var FaceColors = ["#000099", "#006600", "#990000", "#EEEE00"];
+var SideColors = ["#0000FF", "#009900", "#FF0000", "#CCCC00"];
+
+function makeGear(pathLike, r) {
+ var dT = Math.PI*2/NumTeeth;
+ var dTq = dT/4;
+ var outer = r;
+ var inner = 0.7 * r;
+ pathLike.moveTo(Math.sin(-2*dTq)*outer, Math.cos(-2*dTq)*outer);
+ for (var i=0; i<NumTeeth; i+=2) {
+ pathLike.lineTo(Math.sin(dT*i-dTq)*outer, Math.cos(dT*i-dTq)*outer);
+ pathLike.lineTo(Math.sin(dT*i+dTq)*inner, Math.cos(dT*i+dTq)*inner);
+ pathLike.lineTo(Math.sin(dT*(i+1)-dTq)*inner, Math.cos(dT*(i+1)-dTq)*inner);
+ pathLike.lineTo(Math.sin(dT*(i+1)+dTq)*outer, Math.cos(dT*(i+1)+dTq)*outer);
+ }
+}
+
+function gearPath(r) {
+ if (HAS_PATH) {
+ p = new Path2D();
+ makeGear(p, r)
+ p.closePath();
+ return p;
+ } else {
+ return null;
+ }
+}
+
+function gearDisplayListStroke(r, color) {
+ if (HAS_DISPLAY_LIST) {
+ p = new Path2D();
+ makeGear(p, r)
+ p.closePath();
+ var dl = new DisplayList();
+ dl.strokeStyle = color;
+ dl.stroke(p);
+ dl.finalize()
+ return dl;
+ } else {
+ return null;
+ }
+}
+
+function gearDisplayListFill(r, color) {
+ if (HAS_DISPLAY_LIST) {
+ p = new Path2D();
+ makeGear(p, r)
+ p.closePath();
+ var dl = new DisplayList();
+ dl.fillStyle = color;
+ dl.fill(p);
+ dl.finalize()
+ return dl;
+ } else {
+ return null;
+ }
+}
+
+function strokeGear(ctx, gear) {
+ if (HAS_PATH) {
+ ctx.stroke(gear.path);
+ } else {
+ ctx.beginPath();
+ makeGear(ctx, gear.r);
+ ctx.closePath();
+ ctx.stroke();
+ }
+}
+
+function fillGear(ctx) {
+ if (HAS_PATH) {
+ ctx.fill(gear.path);
+ } else {
+ ctx.beginPath();
+ makeGear(ctx, gear.r);
+ ctx.closePath();
+ ctx.fill();
+ }
+}
+
+function draw3DGear(ctx, angle, gear) {
+ ctx.strokeStyle = gear.sideColor;
+ ctx.fillStyle = gear.faceColor;
+ ctx.rotate(angle);
+ strokeGear(ctx, gear);
+ for (var i=0; i < 20; i++) {
+ ctx.rotate(-angle);
+ ctx.translate(0.707, 0.707);
+ ctx.rotate(angle);
+ if (HAS_DISPLAY_LIST) {
+ ctx.draw(gear.gearStroke);
+ } else {
+ strokeGear(ctx, gear);
+ }
+ }
+ if (HAS_DISPLAY_LIST) {
+ ctx.draw(gear.gearFill);
+ } else {
+ fillGear(ctx, gear);
+ }
+ ctx.rotate(-angle);
+}
+
+function draw3DGearAt(ctx, angle, gear) {
+ ctx.save();
+ ctx.translate(gear.x, gear.y);
+ draw3DGear(ctx, angle, gear);
+ ctx.restore();
+}
+
+var onDraw = function() {
+ var ticks=0;
+ var rotation = 0;
+ var gears = [];
+
+ for (var i=0; i<NumGears; i++) {
+ color = Math.floor(Math.random()*FaceColors.length);
+ r = Math.random()*100+5;
+ gears.push({
+ x: Math.random()*500,
+ y: Math.random()*500,
+ path: gearPath(r),
+ gearFill: gearDisplayListFill(r, FaceColors[color]),
+ gearStroke: gearDisplayListStroke(r, SideColors[color]),
+ r: r,
+ faceColor: FaceColors[color],
+ sideColor: SideColors[color]
+ });
+ }
+
+ function draw(ctx) {
+ ctx.resetTransform();
+
+ ctx.fillStyle = "#FFFFFF";
+ ctx.fillRect(0, 0, 499, 499);
+
+ rotation += DeltaTheta;
+ if (rotation >= Math.PI*2) {
+ rotation = 0;
+ }
+
+ for (var i=0; i < gears.length; i++) {
+ gear = gears[i];
+ draw3DGearAt(ctx, rotation, gear);
+ }
+
+ ticks++;
+ if (IS_SKV8) {
+ inval();
+ }
+ };
+
+ function fps() {
+ console.log(ticks);
+ ticks = 0;
+ setTimeout(fps, 1000);
+ };
+
+ setTimeout(fps, 1000);
+
+ return draw;
+}();
+
+if (!IS_SKV8) {
+ window.onload = function(){
+ var canvas = document.getElementById("gears");
+ var ctx = canvas.getContext("2d");
+ function drawCallback() {
+ onDraw(ctx);
+ setTimeout(drawCallback, 1);
+ }
+ setTimeout(drawCallback, 1);
+ }
+}
+
+console.log("HAS_PATH: " + HAS_PATH);
diff --git a/chromium/third_party/skia/experimental/SkV8Example/path.js b/chromium/third_party/skia/experimental/SkV8Example/path.js
new file mode 100644
index 00000000000..81eb0d772bf
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/path.js
@@ -0,0 +1,33 @@
+/**
+ * @fileoverview Sample onDraw script for use with SkV8Example.
+ */
+var onDraw = function(){
+ var p = new Path2D();
+ p.moveTo(0, 0);
+ p.bezierCurveTo(0, 100, 100, 0, 200, 200);
+ p.close();
+ p.moveTo(0, 300);
+ p.arc(0, 300, 40, Math.PI/2, 3/2*Math.PI);
+ function f(context) {
+ context.translate(10, 10);
+ for (var i=0; i<256; i++) {
+ context.strokeStyle = '#0000' + toHex(i);
+ context.stroke(p);
+ context.translate(1, 0);
+ }
+ context.fillStyle = '#ff0000';
+ print(context.width, context.height);
+ context.resetTransform();
+ context.fillRect(context.width/2, context.height/2, 20, 20);
+ };
+ return f;
+}();
+
+
+function toHex(n) {
+ var s = n.toString(16);
+ if (s.length == 1) {
+ s = "0" + s;
+ }
+ return s;
+}
diff --git a/chromium/third_party/skia/experimental/SkV8Example/sample.js b/chromium/third_party/skia/experimental/SkV8Example/sample.js
new file mode 100644
index 00000000000..81c717c7e82
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/sample.js
@@ -0,0 +1,19 @@
+/**
+ * @fileoverview Sample onDraw script for use with SkV8Example.
+ */
+var onDraw = function(){
+ var tick = 0;
+ function f(context) {
+ tick += 0.1;
+ context.fillStyle = '#0000ff';
+ context.fillRect(100, 100, Math.sin(tick)*100, Math.cos(tick)*100);
+ };
+ return f;
+}();
+
+function onTimeout() {
+ inval();
+ print(setTimeout(onTimeout, 33));
+}
+
+setTimeout(onTimeout, 33);
diff --git a/chromium/third_party/skia/experimental/SkV8Example/snow.js b/chromium/third_party/skia/experimental/SkV8Example/snow.js
new file mode 100644
index 00000000000..4640fd69f7e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/snow.js
@@ -0,0 +1,95 @@
+var IS_SKV8 = typeof document == "undefined";
+var HAS_PATH = typeof Path2D != "undefined";
+
+function circlePath(r) {
+ if (HAS_PATH) {
+ var p = new Path2D();
+ p.arc(0, 0, r, 0, 2*Math.PI);
+ p.closePath();
+ return p;
+ } else {
+ return null;
+ }
+}
+
+var onDraw = function() {
+ var W = 500;
+ var H = 500;
+ var NumParticles = 100;
+
+ var angle = 0;
+ var ticks = 0;
+ var particles =[];
+
+ for (var i = 0; i < NumParticles; i++) {
+ particles[i] = {
+ x: Math.floor(Math.random()*W),
+ y: Math.floor(Math.random()*H),
+ r: Math.floor(Math.random()*7+1),
+ path: circlePath(Math.random()*7+1),
+ }
+ }
+
+ function draw(ctx) {
+ ctx.fillStyle = "#ADD8E6";
+ ctx.fillRect(0, 0, W-1, H-1);
+ ctx.fillStyle = "#FFFFFF";
+
+ angle += 0.0039;
+ for (var i = 0; i < particles.length; i++) {
+ var p = particles[i];
+ p.x += Math.floor(Math.sin(angle)*5.0);
+ p.y += 0.6*p.r;
+ if (p.x > W) {
+ p.x-=W;
+ }
+ if (p.x < 0) {
+ p.x += W;
+ }
+ if(p.y>(H+1)){
+ p.y = 0;
+ }
+ if (HAS_PATH) {
+ ctx.save();
+ ctx.translate(p.x, p.y);
+ ctx.fill(p.path);
+ ctx.restore();
+ } else {
+ ctx.beginPath();
+ ctx.moveTo(p.x, p.y);
+ ctx.arc(p.x, p.y, p.r, 0, 2*Math.PI, true);
+ ctx.closePath();
+ ctx.fill();
+ }
+ };
+
+ ticks++;
+ if (IS_SKV8) {
+ inval();
+ }
+ }
+
+ function fps() {
+ console.log(ticks);
+ ticks = 0;
+ setTimeout(fps, 1000);
+ }
+
+ setTimeout(fps, 1000);
+
+ return draw;
+}();
+
+if (!IS_SKV8) {
+ window.onload = function(){
+ var canvas = document.getElementById("snow");
+ var ctx = canvas.getContext("2d");
+ function drawCallback() {
+ onDraw(ctx);
+ setTimeout(drawCallback, 1);
+ }
+ setTimeout(drawCallback, 1);
+ }
+}
+
+console.log("HAS_PATH: " + HAS_PATH);
diff --git a/chromium/third_party/skia/experimental/SkV8Example/speed.js b/chromium/third_party/skia/experimental/SkV8Example/speed.js
new file mode 100644
index 00000000000..5b0f0013546
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkV8Example/speed.js
@@ -0,0 +1,23 @@
+/**
+ * @fileoverview Sample onDraw script for use with SkV8Example.
+ */
+var onDraw = function(){
+ var tick = 0;
+ function f(canvas) {
+ tick += 0.1;
+ canvas.fillStyle = '#0000ff';
+ canvas.fillRect(100, 100, Math.sin(tick)*100, Math.cos(tick)*100);
+ inval();
+ };
+
+ function onTimeout() {
+ print(tick*10, " FPS");
+ setTimeout(onTimeout, 1000);
+ tick=0;
+ }
+
+ setTimeout(onTimeout, 1000);
+
+ return f;
+}();
+
diff --git a/chromium/third_party/skia/experimental/SkiaExamples/HelloSkiaExample.cpp b/chromium/third_party/skia/experimental/SkiaExamples/HelloSkiaExample.cpp
new file mode 100644
index 00000000000..6fd2624c18b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkiaExamples/HelloSkiaExample.cpp
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ */
+
+#include "SkExample.h"
+
+#include "SkApplication.h"
+#include "SkDraw.h"
+#include "SkGradientShader.h"
+#include "SkGraphics.h"
+
+class HelloSkia : public SkExample {
+public:
+ HelloSkia(SkExampleWindow* window) : SkExample(window) {
+ fName = "HelloSkia";
+ fBGColor = SK_ColorWHITE;
+ fRotationAngle = SkIntToScalar(0);
+
+ fWindow->setupBackend(SkExampleWindow::kGPU_DeviceType);
+ // Another option is software rendering:
+ // fWindow->setupBackend(SkExampleWindow::kRaster_DeviceType);
+ }
+
+protected:
+ void draw(SkCanvas* canvas) {
+ // Clear background
+ canvas->drawColor(fBGColor);
+
+ SkPaint paint;
+ paint.setColor(SK_ColorRED);
+
+ // Draw a rectangle with blue paint
+ SkRect rect = {
+ SkIntToScalar(10), SkIntToScalar(10),
+ SkIntToScalar(128), SkIntToScalar(128)
+ };
+ canvas->drawRect(rect, paint);
+
+ // Set up a linear gradient and draw a circle
+ {
+ SkPoint linearPoints[] = {
+ {SkIntToScalar(0), SkIntToScalar(0)},
+ {SkIntToScalar(300), SkIntToScalar(300)}
+ };
+ SkColor linearColors[] = {SK_ColorGREEN, SK_ColorBLACK};
+
+ SkShader* shader = SkGradientShader::CreateLinear(
+ linearPoints, linearColors, NULL, 2,
+ SkShader::kMirror_TileMode);
+ SkAutoUnref shader_deleter(shader);
+
+ paint.setShader(shader);
+ paint.setFlags(SkPaint::kAntiAlias_Flag);
+
+ canvas->drawCircle(SkIntToScalar(200), SkIntToScalar(200),
+ SkIntToScalar(64), paint);
+
+ // Detach shader
+ paint.setShader(NULL);
+ }
+
+ // Draw a message with a nice black paint.
+ paint.setFlags(
+ SkPaint::kAntiAlias_Flag |
+ SkPaint::kSubpixelText_Flag | // ... avoid waggly text when rotating.
+ SkPaint::kUnderlineText_Flag);
+ paint.setColor(SK_ColorBLACK);
+ paint.setTextSize(SkIntToScalar(20));
+
+ canvas->save();
+
+ static const char message[] = "Hello Skia!!!";
+
+ // Translate and rotate
+ canvas->translate(SkIntToScalar(300), SkIntToScalar(300));
+ fRotationAngle += SkDoubleToScalar(0.2);
+ if (fRotationAngle > SkDoubleToScalar(360.0)) {
+ fRotationAngle -= SkDoubleToScalar(360.0);
+ }
+ canvas->rotate(fRotationAngle);
+
+ // Draw the text:
+ canvas->drawText(message, strlen(message), SkIntToScalar(0), SkIntToScalar(0), paint);
+
+ canvas->restore();
+
+ // Invalidate the window to force a redraw. Poor man's animation mechanism.
+ this->fWindow->inval(NULL);
+ }
+
+private:
+ SkScalar fRotationAngle;
+ SkColor fBGColor;
+};
+
+static SkExample* MyFactory(SkExampleWindow* window) {
+ return new HelloSkia(window);
+}
+
+// Register this class as a Skia Example.
+SkExample::Registry registry(MyFactory);
diff --git a/chromium/third_party/skia/experimental/SkiaExamples/SkExample.cpp b/chromium/third_party/skia/experimental/SkiaExamples/SkExample.cpp
new file mode 100644
index 00000000000..637ec9df538
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkiaExamples/SkExample.cpp
@@ -0,0 +1,194 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ */
+
+#include "SkExample.h"
+
+#include "gl/GrGLUtil.h"
+#include "gl/GrGLDefines.h"
+#include "gl/GrGLInterface.h"
+#include "SkApplication.h"
+#include "SkCommandLineFlags.h"
+#include "SkGpuDevice.h"
+#include "SkGraphics.h"
+
+DEFINE_string2(match, m, NULL, "[~][^]substring[$] [...] of test name to run.\n" \
+ "Multiple matches may be separated by spaces.\n" \
+ "~ causes a matching test to always be skipped\n" \
+ "^ requires the start of the test to match\n" \
+ "$ requires the end of the test to match\n" \
+ "^ and $ requires an exact match\n" \
+ "If a test does not match any list entry,\n" \
+ "it is skipped unless some list entry starts with ~");
+
+void application_init() {
+ SkGraphics::Init();
+ SkEvent::Init();
+}
+
+void application_term() {
+ SkEvent::Term();
+ SkGraphics::Term();
+}
+
+SkExampleWindow::SkExampleWindow(void* hwnd)
+ : INHERITED(hwnd) {
+ fRegistry = SkExample::Registry::Head();
+ fCurrExample = fRegistry->factory()(this);
+
+ if (FLAGS_match.count()) {
+ // Start with the a matching sample if possible.
+ bool found = this->findNextMatch();
+ if (!found) {
+ SkDebugf("No matching SkExample found.\n");
+ }
+ }
+}
+
+void SkExampleWindow::tearDownBackend() {
+ if (kGPU_DeviceType == fType) {
+ SkSafeUnref(fContext);
+ fContext = NULL;
+
+ SkSafeUnref(fInterface);
+ fInterface = NULL;
+
+ SkSafeUnref(fRenderTarget);
+ fRenderTarget = NULL;
+
+ detach();
+ }
+}
+
+bool SkExampleWindow::setupBackend(DeviceType type) {
+ fType = type;
+
+ this->setColorType(kRGBA_8888_SkColorType);
+ this->setVisibleP(true);
+ this->setClipToBounds(false);
+
+ bool result = attach(kNativeGL_BackEndType, 0 /*msaa*/, &fAttachmentInfo);
+ if (false == result) {
+ SkDebugf("Not possible to create backend.\n");
+ detach();
+ return false;
+ }
+
+ fInterface = GrGLCreateNativeInterface();
+
+ SkASSERT(NULL != fInterface);
+
+ fContext = GrContext::Create(kOpenGL_GrBackend, (GrBackendContext)fInterface);
+ SkASSERT(NULL != fContext);
+
+ setupRenderTarget();
+
+ return true;
+}
+
+void SkExampleWindow::setupRenderTarget() {
+ GrBackendRenderTargetDesc desc;
+ desc.fWidth = SkScalarRoundToInt(width());
+ desc.fHeight = SkScalarRoundToInt(height());
+ desc.fConfig = kSkia8888_GrPixelConfig;
+ desc.fOrigin = kBottomLeft_GrSurfaceOrigin;
+ desc.fSampleCnt = fAttachmentInfo.fSampleCount;
+ desc.fStencilBits = fAttachmentInfo.fStencilBits;
+
+ GrGLint buffer;
+ GR_GL_GetIntegerv(fInterface, GR_GL_FRAMEBUFFER_BINDING, &buffer);
+ desc.fRenderTargetHandle = buffer;
+
+ fRenderTarget = fContext->wrapBackendRenderTarget(desc);
+
+ fContext->setRenderTarget(fRenderTarget);
+}
+
+SkCanvas* SkExampleWindow::createCanvas() {
+ if (fType == kGPU_DeviceType) {
+ if (NULL != fContext && NULL != fRenderTarget) {
+ SkAutoTUnref<SkBaseDevice> device(new SkGpuDevice(fContext, fRenderTarget));
+ return new SkCanvas(device);
+ }
+ tearDownBackend();
+ setupBackend(kRaster_DeviceType);
+ }
+ return INHERITED::createCanvas();
+}
+
+void SkExampleWindow::draw(SkCanvas* canvas) {
+ if (NULL != fCurrExample) {
+ fCurrExample->draw(canvas);
+ }
+ if (fType == kGPU_DeviceType) {
+
+ SkASSERT(NULL != fContext);
+ fContext->flush();
+ }
+ if (fType == kRaster_DeviceType) {
+ // need to send the raster bits to the (gpu) window
+ fContext->setRenderTarget(fRenderTarget);
+ const SkBitmap& bm = getBitmap();
+ fRenderTarget->writePixels(0, 0, bm.width(), bm.height(),
+ kSkia8888_GrPixelConfig,
+ bm.getPixels(),
+ bm.rowBytes());
+ }
+ INHERITED::present();
+}
+
+void SkExampleWindow::onSizeChange() {
+ setupRenderTarget();
+}
+
+#ifdef SK_BUILD_FOR_WIN
+void SkExampleWindow::onHandleInval(const SkIRect& rect) {
+ RECT winRect;
+ winRect.top = rect.top();
+ winRect.bottom = rect.bottom();
+ winRect.right = rect.right();
+ winRect.left = rect.left();
+ InvalidateRect((HWND)this->getHWND(), &winRect, false);
+}
+#endif
+
+bool SkExampleWindow::findNextMatch() {
+ bool found = false;
+ // Avoid infinite loop by knowing where we started.
+ const SkExample::Registry* begin = fRegistry;
+ while (!found) {
+ fRegistry = fRegistry->next();
+ if (NULL == fRegistry) { // Reached the end of the registered samples. GOTO head.
+ fRegistry = SkExample::Registry::Head();
+ }
+ SkExample* next = fRegistry->factory()(this);
+ if (!SkCommandLineFlags::ShouldSkip(FLAGS_match, next->getName().c_str())) {
+ fCurrExample = next;
+ found = true;
+ }
+ if (begin == fRegistry) { // We looped through every sample without finding anything.
+ break;
+ }
+ }
+ return found;
+}
+
+bool SkExampleWindow::onHandleChar(SkUnichar unichar) {
+ if ('n' == unichar) {
+ bool found = findNextMatch();
+ if (!found) {
+ SkDebugf("No SkExample that matches your query\n");
+ }
+ }
+ return true;
+}
+
+SkOSWindow* create_sk_window(void* hwnd, int argc, char** argv) {
+ SkCommandLineFlags::Parse(argc, argv);
+ return new SkExampleWindow(hwnd);
+}
diff --git a/chromium/third_party/skia/experimental/SkiaExamples/SkExample.h b/chromium/third_party/skia/experimental/SkiaExamples/SkExample.h
new file mode 100644
index 00000000000..ea734dcdc69
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkiaExamples/SkExample.h
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ */
+
+#ifndef SkExample_DEFINED
+#define SkExample_DEFINED
+
+#include "SkWindow.h"
+#include "SkTRegistry.h"
+
+class GrContext;
+struct GrGLInterface;
+class GrRenderTarget;
+class SkCanvas;
+class SkExampleWindow;
+
+class SkExample : SkNoncopyable {
+public:
+ SkExample(SkExampleWindow* window) : fWindow(window) {}
+
+ virtual ~SkExample() {}
+
+ // Your class should override this method to do its thing.
+ virtual void draw(SkCanvas* canvas) = 0;
+
+ SkString getName() { return fName; };
+ // Use this public registry to tell the world about your sample.
+ typedef SkTRegistry<SkExample*(*)(SkExampleWindow*)> Registry;
+
+protected:
+ SkExampleWindow* fWindow;
+ SkString fName;
+};
+
+class SkExampleWindow : public SkOSWindow {
+public:
+ enum DeviceType {
+ kRaster_DeviceType,
+ kGPU_DeviceType,
+ };
+ SkExampleWindow(void* hwnd);
+
+ // Changes the device type of the object.
+ bool setupBackend(DeviceType type);
+ void tearDownBackend();
+
+ DeviceType getDeviceType() const { return fType; }
+
+protected:
+ virtual void draw(SkCanvas* canvas) SK_OVERRIDE;
+
+ virtual void onSizeChange() SK_OVERRIDE;
+
+#ifdef SK_BUILD_FOR_WIN
+ virtual void onHandleInval(const SkIRect&) SK_OVERRIDE;
+#endif
+
+ SkCanvas* createCanvas() SK_OVERRIDE;
+
+private:
+ bool findNextMatch(); // Set example to the first one that matches FLAGS_match.
+ void setupRenderTarget();
+ bool onHandleChar(SkUnichar unichar) SK_OVERRIDE;
+
+ DeviceType fType;
+
+ SkExample* fCurrExample;
+ const SkExample::Registry* fRegistry;
+ GrContext* fContext;
+ GrRenderTarget* fRenderTarget;
+ AttachmentInfo fAttachmentInfo;
+ const GrGLInterface* fInterface;
+
+ typedef SkOSWindow INHERITED;
+};
+
+#endif
diff --git a/chromium/third_party/skia/experimental/SkiaExamples/SkExampleNSView.h b/chromium/third_party/skia/experimental/SkiaExamples/SkExampleNSView.h
new file mode 100644
index 00000000000..755fcdeb496
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkiaExamples/SkExampleNSView.h
@@ -0,0 +1,13 @@
+
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#import "SkNSView.h"
+
+@interface SkExampleNSView : SkNSView
+
+@end
diff --git a/chromium/third_party/skia/experimental/SkiaExamples/SkExampleNSView.mm b/chromium/third_party/skia/experimental/SkiaExamples/SkExampleNSView.mm
new file mode 100644
index 00000000000..f014fa31c9d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkiaExamples/SkExampleNSView.mm
@@ -0,0 +1,28 @@
+//
+// SkExampleNSView.m
+// SkiaExamples
+//
+// Created by Sergio González on 6/11/13.
+//
+//
+
+#import "SkExampleNSView.h"
+
+#include "SkApplication.h"
+#include <crt_externs.h>
+
+@implementation SkExampleNSView
+
+- (id)initWithDefaults {
+ if ((self = [super initWithDefaults])) {
+ fWind = create_sk_window(self, *_NSGetArgc(), *_NSGetArgv());
+ }
+ return self;
+}
+
+- (void)dealloc {
+ delete fWind;
+ [super dealloc];
+}
+
+@end
diff --git a/chromium/third_party/skia/experimental/SkiaExamples/SkiaExamples-Info.plist b/chromium/third_party/skia/experimental/SkiaExamples/SkiaExamples-Info.plist
new file mode 100644
index 00000000000..f3da4ac2ec4
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkiaExamples/SkiaExamples-Info.plist
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>com.googlecode.skia.${PRODUCT_NAME:rfc1034identifier}</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>${MACOSX_DEPLOYMENT_TARGET}</string>
+ <key>NSMainNibFile</key>
+ <string>SkiaExamples</string>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+</dict>
+</plist>
diff --git a/chromium/third_party/skia/experimental/SkiaExamples/SkiaExamples.xib b/chromium/third_party/skia/experimental/SkiaExamples/SkiaExamples.xib
new file mode 100644
index 00000000000..dcd887dbb8f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/SkiaExamples/SkiaExamples.xib
@@ -0,0 +1,3703 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
+ <data>
+ <int key="IBDocument.SystemTarget">1070</int>
+ <string key="IBDocument.SystemVersion">12D78</string>
+ <string key="IBDocument.InterfaceBuilderVersion">3084</string>
+ <string key="IBDocument.AppKitVersion">1187.37</string>
+ <string key="IBDocument.HIToolboxVersion">626.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">3084</string>
+ </object>
+ <array key="IBDocument.IntegratedClassDependencies">
+ <string>NSCustomObject</string>
+ <string>NSCustomView</string>
+ <string>NSDrawer</string>
+ <string>NSMenu</string>
+ <string>NSMenuItem</string>
+ <string>NSScrollView</string>
+ <string>NSScroller</string>
+ <string>NSTableColumn</string>
+ <string>NSTableView</string>
+ <string>NSTextFieldCell</string>
+ <string>NSView</string>
+ <string>NSWindowTemplate</string>
+ </array>
+ <array key="IBDocument.PluginDependencies">
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </array>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+ <integer value="1" key="NS.object.0"/>
+ </object>
+ <array class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
+ <object class="NSCustomObject" id="1021">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSCustomObject" id="1014">
+ <string key="NSClassName">FirstResponder</string>
+ </object>
+ <object class="NSCustomObject" id="1050">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSCustomObject" id="976324537">
+ <string key="NSClassName">SampleAppDelegate</string>
+ </object>
+ <object class="NSCustomObject" id="76290771">
+ <string key="NSClassName">NSWindowController</string>
+ </object>
+ <object class="NSWindowTemplate" id="972006081">
+ <int key="NSWindowStyleMask">15</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{335, 288}, {640, 480}}</string>
+ <int key="NSWTFlags">1417150464</int>
+ <string key="NSWindowTitle">Skia Examples</string>
+ <string key="NSWindowClass">NSWindow</string>
+ <nil key="NSViewClass"/>
+ <nil key="NSUserInterfaceItemIdentifier"/>
+ <object class="NSView" key="NSWindowView" id="439893737">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{640, 480}</string>
+ <reference key="NSSuperview"/>
+ <reference key="NSWindow"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
+ <string key="NSMaxSize">{10000000000000, 10000000000000}</string>
+ <bool key="NSWindowIsRestorable">YES</bool>
+ </object>
+ <object class="NSCustomView" id="758604943">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">4352</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="NSScrollView" id="1038370525">
+ <reference key="NSNextResponder" ref="758604943"/>
+ <int key="NSvFlags">274</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="NSClipView" id="250930136">
+ <reference key="NSNextResponder" ref="1038370525"/>
+ <int key="NSvFlags">2304</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="NSTableView" id="429436769">
+ <reference key="NSNextResponder" ref="250930136"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{339, 319}</string>
+ <reference key="NSSuperview" ref="250930136"/>
+ <bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <bool key="NSControlAllowsExpansionToolTips">YES</bool>
+ <object class="_NSCornerView" key="NSCornerView">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{224, 0}, {16, 17}}</string>
+ </object>
+ <array class="NSMutableArray" key="NSTableColumns">
+ <object class="NSTableColumn" id="691918008">
+ <string key="NSIdentifier">Labels</string>
+ <double key="NSWidth">100</double>
+ <double key="NSMinWidth">40</double>
+ <double key="NSMaxWidth">1000</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75497536</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents"/>
+ <object class="NSFont" key="NSSupport" id="26">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">11</double>
+ <int key="NSfFlags">3100</int>
+ </object>
+ <object class="NSColor" key="NSBackgroundColor" id="805714581">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="372600372">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">headerTextColor</string>
+ <object class="NSColor" key="NSColor" id="1032326875">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MAA</bytes>
+ </object>
+ </object>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell" id="241301801">
+ <int key="NSCellFlags">68157504</int>
+ <int key="NSCellFlags2">67241216</int>
+ <string key="NSContents">Text Cell</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="429436769"/>
+ <object class="NSColor" key="NSBackgroundColor" id="598476436">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlBackgroundColor</string>
+ <object class="NSColor" key="NSColor" id="319525538">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="1055469070">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlTextColor</string>
+ <reference key="NSColor" ref="1032326875"/>
+ </object>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <bool key="NSIsEditable">YES</bool>
+ <reference key="NSTableView" ref="429436769"/>
+ </object>
+ <object class="NSTableColumn" id="394988372">
+ <string key="NSIdentifier">Controls</string>
+ <double key="NSWidth">233</double>
+ <double key="NSMinWidth">40</double>
+ <double key="NSMaxWidth">1000</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75497536</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSBackgroundColor" ref="805714581"/>
+ <reference key="NSTextColor" ref="372600372"/>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell" id="88358594">
+ <int key="NSCellFlags">67108928</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">Text</string>
+ <object class="NSFont" key="NSSupport">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">1044</int>
+ </object>
+ <reference key="NSControlView" ref="429436769"/>
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlColor</string>
+ <reference key="NSColor" ref="319525538"/>
+ </object>
+ <reference key="NSTextColor" ref="1055469070"/>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <bool key="NSIsEditable">YES</bool>
+ <reference key="NSTableView" ref="429436769"/>
+ </object>
+ </array>
+ <double key="NSIntercellSpacingWidth">3</double>
+ <double key="NSIntercellSpacingHeight">2</double>
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">_sourceListBackgroundColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">alternateSelectedControlColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MCAwIDEAA</bytes>
+ </object>
+ </object>
+ </object>
+ <object class="NSColor" key="NSGridColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">gridColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC41AA</bytes>
+ </object>
+ </object>
+ <double key="NSRowHeight">35</double>
+ <int key="NSTvFlags">1665138688</int>
+ <reference key="NSDelegate"/>
+ <reference key="NSDataSource"/>
+ <int key="NSGridStyleMask">2</int>
+ <int key="NSColumnAutoresizingStyle">4</int>
+ <int key="NSDraggingSourceMaskForLocal">15</int>
+ <int key="NSDraggingSourceMaskForNonLocal">0</int>
+ <bool key="NSAllowsTypeSelect">NO</bool>
+ <int key="NSTableViewSelectionHighlightStyle">1</int>
+ <int key="NSTableViewDraggingDestinationStyle">1</int>
+ <int key="NSTableViewGroupRowStyle">1</int>
+ </object>
+ </array>
+ <string key="NSFrame">{{1, 1}, {339, 319}}</string>
+ <reference key="NSSuperview" ref="1038370525"/>
+ <reference key="NSNextKeyView" ref="429436769"/>
+ <reference key="NSDocView" ref="429436769"/>
+ <reference key="NSBGColor" ref="598476436"/>
+ <int key="NScvFlags">4</int>
+ </object>
+ <object class="NSScroller" id="617550661">
+ <reference key="NSNextResponder" ref="1038370525"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{317, 1}, {15, 574}}</string>
+ <reference key="NSSuperview" ref="1038370525"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <reference key="NSTarget" ref="1038370525"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSPercent">0.99687498807907104</double>
+ </object>
+ <object class="NSScroller" id="977018641">
+ <reference key="NSNextResponder" ref="1038370525"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{1, 263}, {157, 15}}</string>
+ <reference key="NSSuperview" ref="1038370525"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="1038370525"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSPercent">0.99705880880355835</double>
+ </object>
+ </array>
+ <string key="NSFrameSize">{341, 321}</string>
+ <reference key="NSSuperview" ref="758604943"/>
+ <reference key="NSNextKeyView" ref="250930136"/>
+ <int key="NSsFlags">133682</int>
+ <reference key="NSVScroller" ref="617550661"/>
+ <reference key="NSHScroller" ref="977018641"/>
+ <reference key="NSContentView" ref="250930136"/>
+ <bytes key="NSScrollAmts">QSAAAEEgAABCFAAAQhQAAA</bytes>
+ <double key="NSMinMagnification">0.25</double>
+ <double key="NSMaxMagnification">4</double>
+ <double key="NSMagnification">1</double>
+ </object>
+ </array>
+ <string key="NSFrameSize">{341, 321}</string>
+ <bool key="NSViewCanDrawConcurrently">YES</bool>
+ <string key="NSClassName">NSView</string>
+ </object>
+ <object class="NSDrawer" id="764451088">
+ <nil key="NSNextResponder"/>
+ <string key="NSContentSize">{300, 100}</string>
+ <string key="NSMinContentSize">{0, 0}</string>
+ <string key="NSMaxContentSize">{10000, 10000}</string>
+ <int key="NSPreferredEdge">2</int>
+ <double key="NSLeadingOffset">0.0</double>
+ <double key="NSTrailingOffset">15</double>
+ <nil key="NSParentWindow"/>
+ <nil key="NSDelegate"/>
+ </object>
+ <object class="NSMenu" id="649796088">
+ <string key="NSTitle">AMainMenu</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="694149608">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">SimpleCocoaApp</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <object class="NSCustomResource" key="NSOnImage" id="35465992">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuCheckmark</string>
+ </object>
+ <object class="NSCustomResource" key="NSMixedImage" id="502551668">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuMixedState</string>
+ </object>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="110575045">
+ <string key="NSTitle">SimpleCocoaApp</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="238522557">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">About SimpleCocoaApp</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="24092627">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="622903446">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Show Options</string>
+ <string key="NSKeyEquiv"></string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="304266470">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="609285721">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Preferences…</string>
+ <string key="NSKeyEquiv">,</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="481834944">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1046388886">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Services</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="752062318">
+ <string key="NSTitle">Services</string>
+ <array class="NSMutableArray" key="NSMenuItems"/>
+ <string key="NSName">_NSServicesMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="646227648">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="755159360">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Hide SimpleCocoaApp</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="342932134">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Hide Others</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="908899353">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Show All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1056857174">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="632727374">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Quit SimpleCocoaApp</string>
+ <string key="NSKeyEquiv">q</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ <string key="NSName">_NSAppleMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="379814623">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">File</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="720053764">
+ <string key="NSTitle">File</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="705341025">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">New</string>
+ <string key="NSKeyEquiv">n</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="722745758">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Open…</string>
+ <string key="NSKeyEquiv">o</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1025936716">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Open Recent</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="1065607017">
+ <string key="NSTitle">Open Recent</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="759406840">
+ <reference key="NSMenu" ref="1065607017"/>
+ <string key="NSTitle">Clear Menu</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ <string key="NSName">_NSRecentDocumentsMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="425164168">
+ <reference key="NSMenu" ref="720053764"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="776162233">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Close</string>
+ <string key="NSKeyEquiv">w</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1023925487">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Save</string>
+ <string key="NSKeyEquiv">s</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="117038363">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Save As…</string>
+ <string key="NSKeyEquiv">S</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="579971712">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Revert to Saved</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1010469920">
+ <reference key="NSMenu" ref="720053764"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="294629803">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Page Setup...</string>
+ <string key="NSKeyEquiv">P</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSToolTip"/>
+ </object>
+ <object class="NSMenuItem" id="49223823">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Print…</string>
+ <string key="NSKeyEquiv">p</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="952259628">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Edit</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="789758025">
+ <string key="NSTitle">Edit</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="1058277027">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Undo</string>
+ <string key="NSKeyEquiv">z</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="790794224">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Redo</string>
+ <string key="NSKeyEquiv">Z</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1040322652">
+ <reference key="NSMenu" ref="789758025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="296257095">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Cut</string>
+ <string key="NSKeyEquiv">x</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="860595796">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Copy</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="29853731">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Paste</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="82994268">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Paste and Match Style</string>
+ <string key="NSKeyEquiv">V</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="437104165">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Delete</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="583158037">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Select All</string>
+ <string key="NSKeyEquiv">a</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="212016141">
+ <reference key="NSMenu" ref="789758025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="892235320">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Find</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="963351320">
+ <string key="NSTitle">Find</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="447796847">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find…</string>
+ <string key="NSKeyEquiv">f</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="326711663">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find Next</string>
+ <string key="NSKeyEquiv">g</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="270902937">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find Previous</string>
+ <string key="NSKeyEquiv">G</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="159080638">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Use Selection for Find</string>
+ <string key="NSKeyEquiv">e</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">7</int>
+ </object>
+ <object class="NSMenuItem" id="88285865">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Jump to Selection</string>
+ <string key="NSKeyEquiv">j</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="972420730">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Spelling and Grammar</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="769623530">
+ <string key="NSTitle">Spelling and Grammar</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="679648819">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Show Spelling and Grammar</string>
+ <string key="NSKeyEquiv">:</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="96193923">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Document Now</string>
+ <string key="NSKeyEquiv">;</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="859480356">
+ <reference key="NSMenu" ref="769623530"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="948374510">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Spelling While Typing</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="967646866">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Grammar With Spelling</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="795346622">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Correct Spelling Automatically</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="507821607">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Substitutions</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="698887838">
+ <string key="NSTitle">Substitutions</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="65139061">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Show Substitutions</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="19036812">
+ <reference key="NSMenu" ref="698887838"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="605118523">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Copy/Paste</string>
+ <string key="NSKeyEquiv">f</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="197661976">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Quotes</string>
+ <string key="NSKeyEquiv">g</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="672708820">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Dashes</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="708854459">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Links</string>
+ <string key="NSKeyEquiv">G</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="537092702">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Text Replacement</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="288088188">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Transformations</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="579392910">
+ <string key="NSTitle">Transformations</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="1060694897">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Make Upper Case</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="879586729">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Make Lower Case</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="56570060">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Capitalize</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="676164635">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Speech</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="785027613">
+ <string key="NSTitle">Speech</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="731782645">
+ <reference key="NSMenu" ref="785027613"/>
+ <string key="NSTitle">Start Speaking</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="680220178">
+ <reference key="NSMenu" ref="785027613"/>
+ <string key="NSTitle">Stop Speaking</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="586577488">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">View</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="466310130">
+ <string key="NSTitle">View</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="87708234">
+ <reference key="NSMenu" ref="466310130"/>
+ <string key="NSTitle">Show Menu Key Equivalents</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <int key="NSState">1</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="102151532">
+ <reference key="NSMenu" ref="466310130"/>
+ <string key="NSTitle">Show Toolbar</string>
+ <string key="NSKeyEquiv">t</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="237841660">
+ <reference key="NSMenu" ref="466310130"/>
+ <string key="NSTitle">Customize Toolbar…</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="302598603">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Format</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="941447902">
+ <string key="NSTitle">Format</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="792887677">
+ <reference key="NSMenu" ref="941447902"/>
+ <string key="NSTitle">Font</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="786677654">
+ <string key="NSTitle">Font</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="159677712">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Show Fonts</string>
+ <string key="NSKeyEquiv">t</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="305399458">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Bold</string>
+ <string key="NSKeyEquiv">b</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="814362025">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Italic</string>
+ <string key="NSKeyEquiv">i</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="330926929">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Underline</string>
+ <string key="NSKeyEquiv">u</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="533507878">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="158063935">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Bigger</string>
+ <string key="NSKeyEquiv">+</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="885547335">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Smaller</string>
+ <string key="NSKeyEquiv">-</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">4</int>
+ </object>
+ <object class="NSMenuItem" id="901062459">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="767671776">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Kern</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="175441468">
+ <string key="NSTitle">Kern</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="252969304">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="766922938">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Use None</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="677519740">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Tighten</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="238351151">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Loosen</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="691570813">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Ligature</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="1058217995">
+ <string key="NSTitle">Ligature</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="706297211">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="568384683">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use None</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="663508465">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="769124883">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Baseline</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="18263474">
+ <string key="NSTitle">Baseline</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="257962622">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="644725453">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Superscript</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1037576581">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Subscript</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="941806246">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Raise</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1045724900">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Lower</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="739652853">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1012600125">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Show Colors</string>
+ <string key="NSKeyEquiv">C</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="214559597">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="596732606">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Copy Style</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="393423671">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Paste Style</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ <string key="NSName">_NSFontMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="215659978">
+ <reference key="NSMenu" ref="941447902"/>
+ <string key="NSTitle">Text</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="446991534">
+ <string key="NSTitle">Text</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="875092757">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Align Left</string>
+ <string key="NSKeyEquiv">{</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="630155264">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Center</string>
+ <string key="NSKeyEquiv">|</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="945678886">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Justify</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="512868991">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Align Right</string>
+ <string key="NSKeyEquiv">}</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="163117631">
+ <reference key="NSMenu" ref="446991534"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="31516759">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Writing Direction</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="956096989">
+ <string key="NSTitle">Writing Direction</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="257099033">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <string key="NSTitle">Paragraph</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="551969625">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="249532473">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="607364498">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="508151438">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="981751889">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <string key="NSTitle">Selection</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="380031999">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="825984362">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="560145579">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="908105787">
+ <reference key="NSMenu" ref="446991534"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="644046920">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Show Ruler</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="231811626">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Copy Ruler</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1310720</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="883618387">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Paste Ruler</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1310720</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="713487014">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Window</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="835318025">
+ <string key="NSTitle">Window</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="1011231497">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Minimize</string>
+ <string key="NSKeyEquiv">m</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="575023229">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Zoom</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="92029792">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">768 x 1024</string>
+ <string key="NSKeyEquiv">=</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="299356726">
+ <reference key="NSMenu" ref="835318025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="625202149">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Bring All to Front</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ <string key="NSName">_NSWindowsMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="448692316">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Help</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="992780483">
+ <string key="NSTitle">Help</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="105068016">
+ <reference key="NSMenu" ref="992780483"/>
+ <string key="NSTitle">SimpleCocoaApp Help</string>
+ <string key="NSKeyEquiv">?</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ <string key="NSName">_NSHelpMenu</string>
+ </object>
+ </object>
+ </array>
+ <string key="NSName">_NSMainMenu</string>
+ </object>
+ <object class="NSCustomObject" id="755631768">
+ <string key="NSClassName">NSFontManager</string>
+ </object>
+ </array>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <array class="NSMutableArray" key="connectionRecords">
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">terminate:</string>
+ <reference key="source" ref="1050"/>
+ <reference key="destination" ref="632727374"/>
+ </object>
+ <int key="connectionID">449</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontStandardAboutPanel:</string>
+ <reference key="source" ref="1021"/>
+ <reference key="destination" ref="238522557"/>
+ </object>
+ <int key="connectionID">142</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="1021"/>
+ <reference key="destination" ref="976324537"/>
+ </object>
+ <int key="connectionID">656</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performMiniaturize:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1011231497"/>
+ </object>
+ <int key="connectionID">37</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">arrangeInFront:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="625202149"/>
+ </object>
+ <int key="connectionID">39</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">print:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="49223823"/>
+ </object>
+ <int key="connectionID">86</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">runPageLayout:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="294629803"/>
+ </object>
+ <int key="connectionID">87</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">clearRecentDocuments:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="759406840"/>
+ </object>
+ <int key="connectionID">127</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performClose:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="776162233"/>
+ </object>
+ <int key="connectionID">193</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleContinuousSpellChecking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="948374510"/>
+ </object>
+ <int key="connectionID">222</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">undo:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1058277027"/>
+ </object>
+ <int key="connectionID">223</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copy:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="860595796"/>
+ </object>
+ <int key="connectionID">224</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">checkSpelling:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="96193923"/>
+ </object>
+ <int key="connectionID">225</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">paste:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="29853731"/>
+ </object>
+ <int key="connectionID">226</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">stopSpeaking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="680220178"/>
+ </object>
+ <int key="connectionID">227</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cut:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="296257095"/>
+ </object>
+ <int key="connectionID">228</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showGuessPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="679648819"/>
+ </object>
+ <int key="connectionID">230</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">redo:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="790794224"/>
+ </object>
+ <int key="connectionID">231</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">selectAll:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="583158037"/>
+ </object>
+ <int key="connectionID">232</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">startSpeaking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="731782645"/>
+ </object>
+ <int key="connectionID">233</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">delete:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="437104165"/>
+ </object>
+ <int key="connectionID">235</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performZoom:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="575023229"/>
+ </object>
+ <int key="connectionID">240</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="447796847"/>
+ </object>
+ <int key="connectionID">241</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">centerSelectionInVisibleArea:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="88285865"/>
+ </object>
+ <int key="connectionID">245</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleGrammarChecking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="967646866"/>
+ </object>
+ <int key="connectionID">347</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleSmartInsertDelete:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="605118523"/>
+ </object>
+ <int key="connectionID">355</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticQuoteSubstitution:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="197661976"/>
+ </object>
+ <int key="connectionID">356</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticLinkDetection:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="708854459"/>
+ </object>
+ <int key="connectionID">357</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">saveDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1023925487"/>
+ </object>
+ <int key="connectionID">362</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">saveDocumentAs:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="117038363"/>
+ </object>
+ <int key="connectionID">363</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">revertDocumentToSaved:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="579971712"/>
+ </object>
+ <int key="connectionID">364</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">runToolbarCustomizationPalette:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="237841660"/>
+ </object>
+ <int key="connectionID">365</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleToolbarShown:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="102151532"/>
+ </object>
+ <int key="connectionID">366</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">hide:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="755159360"/>
+ </object>
+ <int key="connectionID">367</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">hideOtherApplications:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="342932134"/>
+ </object>
+ <int key="connectionID">368</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">unhideAllApplications:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="908899353"/>
+ </object>
+ <int key="connectionID">370</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">newDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="705341025"/>
+ </object>
+ <int key="connectionID">373</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="722745758"/>
+ </object>
+ <int key="connectionID">374</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">raiseBaseline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="941806246"/>
+ </object>
+ <int key="connectionID">426</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">lowerBaseline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1045724900"/>
+ </object>
+ <int key="connectionID">427</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copyFont:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="596732606"/>
+ </object>
+ <int key="connectionID">428</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">subscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1037576581"/>
+ </object>
+ <int key="connectionID">429</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">superscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="644725453"/>
+ </object>
+ <int key="connectionID">430</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">tightenKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="677519740"/>
+ </object>
+ <int key="connectionID">431</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">underline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="330926929"/>
+ </object>
+ <int key="connectionID">432</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontColorPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1012600125"/>
+ </object>
+ <int key="connectionID">433</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useAllLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="663508465"/>
+ </object>
+ <int key="connectionID">434</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">loosenKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="238351151"/>
+ </object>
+ <int key="connectionID">435</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteFont:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="393423671"/>
+ </object>
+ <int key="connectionID">436</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">unscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="257962622"/>
+ </object>
+ <int key="connectionID">437</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useStandardKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="252969304"/>
+ </object>
+ <int key="connectionID">438</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useStandardLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="706297211"/>
+ </object>
+ <int key="connectionID">439</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">turnOffLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="568384683"/>
+ </object>
+ <int key="connectionID">440</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">turnOffKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="766922938"/>
+ </object>
+ <int key="connectionID">441</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticSpellingCorrection:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="795346622"/>
+ </object>
+ <int key="connectionID">456</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontSubstitutionsPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="65139061"/>
+ </object>
+ <int key="connectionID">458</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticDashSubstitution:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="672708820"/>
+ </object>
+ <int key="connectionID">461</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticTextReplacement:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="537092702"/>
+ </object>
+ <int key="connectionID">463</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">uppercaseWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1060694897"/>
+ </object>
+ <int key="connectionID">464</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">capitalizeWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="56570060"/>
+ </object>
+ <int key="connectionID">467</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">lowercaseWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="879586729"/>
+ </object>
+ <int key="connectionID">468</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteAsPlainText:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="82994268"/>
+ </object>
+ <int key="connectionID">486</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="326711663"/>
+ </object>
+ <int key="connectionID">487</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="270902937"/>
+ </object>
+ <int key="connectionID">488</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="159080638"/>
+ </object>
+ <int key="connectionID">489</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showHelp:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="105068016"/>
+ </object>
+ <int key="connectionID">493</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignCenter:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="630155264"/>
+ </object>
+ <int key="connectionID">518</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="883618387"/>
+ </object>
+ <int key="connectionID">519</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="644046920"/>
+ </object>
+ <int key="connectionID">520</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="512868991"/>
+ </object>
+ <int key="connectionID">521</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copyRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="231811626"/>
+ </object>
+ <int key="connectionID">522</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignJustified:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="945678886"/>
+ </object>
+ <int key="connectionID">523</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="875092757"/>
+ </object>
+ <int key="connectionID">524</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionNatural:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="551969625"/>
+ </object>
+ <int key="connectionID">525</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionLeftToRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="249532473"/>
+ </object>
+ <int key="connectionID">526</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionRightToLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="607364498"/>
+ </object>
+ <int key="connectionID">527</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionNatural:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="380031999"/>
+ </object>
+ <int key="connectionID">528</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionLeftToRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="825984362"/>
+ </object>
+ <int key="connectionID">529</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionRightToLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="560145579"/>
+ </object>
+ <int key="connectionID">530</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">fOptionsDelegate</string>
+ <reference key="source" ref="439893737"/>
+ <reference key="destination" ref="429436769"/>
+ </object>
+ <int key="connectionID">667</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addFontTrait:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="305399458"/>
+ </object>
+ <int key="connectionID">421</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addFontTrait:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="814362025"/>
+ </object>
+ <int key="connectionID">422</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">modifyFont:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="885547335"/>
+ </object>
+ <int key="connectionID">423</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontFontPanel:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="159677712"/>
+ </object>
+ <int key="connectionID">424</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">modifyFont:</string>
+ <reference key="source" ref="755631768"/>
+ <reference key="destination" ref="158063935"/>
+ </object>
+ <int key="connectionID">425</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">fWindow</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="972006081"/>
+ </object>
+ <int key="connectionID">673</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">fOptions</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="429436769"/>
+ </object>
+ <int key="connectionID">674</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">fView</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="439893737"/>
+ </object>
+ <int key="connectionID">682</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toiPadSize:</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="92029792"/>
+ </object>
+ <int key="connectionID">721</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">contentView</string>
+ <reference key="source" ref="764451088"/>
+ <reference key="destination" ref="758604943"/>
+ </object>
+ <int key="connectionID">542</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">parentWindow</string>
+ <reference key="source" ref="764451088"/>
+ <reference key="destination" ref="972006081"/>
+ </object>
+ <int key="connectionID">651</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggle:</string>
+ <reference key="source" ref="764451088"/>
+ <reference key="destination" ref="622903446"/>
+ </object>
+ <int key="connectionID">707</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleKeyEquivalents:</string>
+ <reference key="source" ref="429436769"/>
+ <reference key="destination" ref="87708234"/>
+ </object>
+ <int key="connectionID">719</int>
+ </object>
+ </array>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <array key="orderedObjects">
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <array key="object" id="0"/>
+ <reference key="children" ref="1048"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="1021"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="1014"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">First Responder</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="1050"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">29</int>
+ <reference key="object" ref="649796088"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="713487014"/>
+ <reference ref="694149608"/>
+ <reference ref="952259628"/>
+ <reference ref="379814623"/>
+ <reference ref="586577488"/>
+ <reference ref="448692316"/>
+ <reference ref="302598603"/>
+ </array>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">19</int>
+ <reference key="object" ref="713487014"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="835318025"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">56</int>
+ <reference key="object" ref="694149608"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="110575045"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">217</int>
+ <reference key="object" ref="952259628"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="789758025"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">83</int>
+ <reference key="object" ref="379814623"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="720053764"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">81</int>
+ <reference key="object" ref="720053764"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="1023925487"/>
+ <reference ref="117038363"/>
+ <reference ref="49223823"/>
+ <reference ref="722745758"/>
+ <reference ref="705341025"/>
+ <reference ref="1025936716"/>
+ <reference ref="294629803"/>
+ <reference ref="776162233"/>
+ <reference ref="425164168"/>
+ <reference ref="579971712"/>
+ <reference ref="1010469920"/>
+ </array>
+ <reference key="parent" ref="379814623"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">75</int>
+ <reference key="object" ref="1023925487"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">80</int>
+ <reference key="object" ref="117038363"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">78</int>
+ <reference key="object" ref="49223823"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">72</int>
+ <reference key="object" ref="722745758"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">82</int>
+ <reference key="object" ref="705341025"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">124</int>
+ <reference key="object" ref="1025936716"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="1065607017"/>
+ </array>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">77</int>
+ <reference key="object" ref="294629803"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">73</int>
+ <reference key="object" ref="776162233"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">79</int>
+ <reference key="object" ref="425164168"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">112</int>
+ <reference key="object" ref="579971712"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">74</int>
+ <reference key="object" ref="1010469920"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">125</int>
+ <reference key="object" ref="1065607017"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="759406840"/>
+ </array>
+ <reference key="parent" ref="1025936716"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">126</int>
+ <reference key="object" ref="759406840"/>
+ <reference key="parent" ref="1065607017"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">205</int>
+ <reference key="object" ref="789758025"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="437104165"/>
+ <reference ref="583158037"/>
+ <reference ref="1058277027"/>
+ <reference ref="212016141"/>
+ <reference ref="296257095"/>
+ <reference ref="29853731"/>
+ <reference ref="860595796"/>
+ <reference ref="1040322652"/>
+ <reference ref="790794224"/>
+ <reference ref="892235320"/>
+ <reference ref="972420730"/>
+ <reference ref="676164635"/>
+ <reference ref="507821607"/>
+ <reference ref="288088188"/>
+ <reference ref="82994268"/>
+ </array>
+ <reference key="parent" ref="952259628"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">202</int>
+ <reference key="object" ref="437104165"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">198</int>
+ <reference key="object" ref="583158037"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">207</int>
+ <reference key="object" ref="1058277027"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">214</int>
+ <reference key="object" ref="212016141"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">199</int>
+ <reference key="object" ref="296257095"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">203</int>
+ <reference key="object" ref="29853731"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">197</int>
+ <reference key="object" ref="860595796"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">206</int>
+ <reference key="object" ref="1040322652"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">215</int>
+ <reference key="object" ref="790794224"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">218</int>
+ <reference key="object" ref="892235320"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="963351320"/>
+ </array>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">216</int>
+ <reference key="object" ref="972420730"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="769623530"/>
+ </array>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">200</int>
+ <reference key="object" ref="769623530"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="948374510"/>
+ <reference ref="96193923"/>
+ <reference ref="679648819"/>
+ <reference ref="967646866"/>
+ <reference ref="859480356"/>
+ <reference ref="795346622"/>
+ </array>
+ <reference key="parent" ref="972420730"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">219</int>
+ <reference key="object" ref="948374510"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">201</int>
+ <reference key="object" ref="96193923"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">204</int>
+ <reference key="object" ref="679648819"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">220</int>
+ <reference key="object" ref="963351320"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="270902937"/>
+ <reference ref="88285865"/>
+ <reference ref="159080638"/>
+ <reference ref="326711663"/>
+ <reference ref="447796847"/>
+ </array>
+ <reference key="parent" ref="892235320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">213</int>
+ <reference key="object" ref="270902937"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">210</int>
+ <reference key="object" ref="88285865"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">221</int>
+ <reference key="object" ref="159080638"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">208</int>
+ <reference key="object" ref="326711663"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">209</int>
+ <reference key="object" ref="447796847"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">57</int>
+ <reference key="object" ref="110575045"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="238522557"/>
+ <reference ref="755159360"/>
+ <reference ref="908899353"/>
+ <reference ref="632727374"/>
+ <reference ref="646227648"/>
+ <reference ref="609285721"/>
+ <reference ref="481834944"/>
+ <reference ref="304266470"/>
+ <reference ref="1046388886"/>
+ <reference ref="1056857174"/>
+ <reference ref="342932134"/>
+ <reference ref="622903446"/>
+ <reference ref="24092627"/>
+ </array>
+ <reference key="parent" ref="694149608"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">58</int>
+ <reference key="object" ref="238522557"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">134</int>
+ <reference key="object" ref="755159360"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">150</int>
+ <reference key="object" ref="908899353"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">136</int>
+ <reference key="object" ref="632727374"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">144</int>
+ <reference key="object" ref="646227648"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">129</int>
+ <reference key="object" ref="609285721"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">143</int>
+ <reference key="object" ref="481834944"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">236</int>
+ <reference key="object" ref="304266470"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">131</int>
+ <reference key="object" ref="1046388886"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="752062318"/>
+ </array>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">149</int>
+ <reference key="object" ref="1056857174"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">145</int>
+ <reference key="object" ref="342932134"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">130</int>
+ <reference key="object" ref="752062318"/>
+ <reference key="parent" ref="1046388886"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">24</int>
+ <reference key="object" ref="835318025"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="299356726"/>
+ <reference ref="625202149"/>
+ <reference ref="575023229"/>
+ <reference ref="1011231497"/>
+ <reference ref="92029792"/>
+ </array>
+ <reference key="parent" ref="713487014"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">92</int>
+ <reference key="object" ref="299356726"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5</int>
+ <reference key="object" ref="625202149"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">239</int>
+ <reference key="object" ref="575023229"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">23</int>
+ <reference key="object" ref="1011231497"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">295</int>
+ <reference key="object" ref="586577488"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="466310130"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">296</int>
+ <reference key="object" ref="466310130"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="102151532"/>
+ <reference ref="237841660"/>
+ <reference ref="87708234"/>
+ </array>
+ <reference key="parent" ref="586577488"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">297</int>
+ <reference key="object" ref="102151532"/>
+ <reference key="parent" ref="466310130"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">298</int>
+ <reference key="object" ref="237841660"/>
+ <reference key="parent" ref="466310130"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">211</int>
+ <reference key="object" ref="676164635"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="785027613"/>
+ </array>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">212</int>
+ <reference key="object" ref="785027613"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="680220178"/>
+ <reference ref="731782645"/>
+ </array>
+ <reference key="parent" ref="676164635"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">195</int>
+ <reference key="object" ref="680220178"/>
+ <reference key="parent" ref="785027613"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">196</int>
+ <reference key="object" ref="731782645"/>
+ <reference key="parent" ref="785027613"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">346</int>
+ <reference key="object" ref="967646866"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">348</int>
+ <reference key="object" ref="507821607"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="698887838"/>
+ </array>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">349</int>
+ <reference key="object" ref="698887838"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="605118523"/>
+ <reference ref="197661976"/>
+ <reference ref="708854459"/>
+ <reference ref="65139061"/>
+ <reference ref="19036812"/>
+ <reference ref="672708820"/>
+ <reference ref="537092702"/>
+ </array>
+ <reference key="parent" ref="507821607"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">350</int>
+ <reference key="object" ref="605118523"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">351</int>
+ <reference key="object" ref="197661976"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">354</int>
+ <reference key="object" ref="708854459"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">371</int>
+ <reference key="object" ref="972006081"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="439893737"/>
+ </array>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">372</int>
+ <reference key="object" ref="439893737"/>
+ <array class="NSMutableArray" key="children"/>
+ <reference key="parent" ref="972006081"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">375</int>
+ <reference key="object" ref="302598603"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="941447902"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">376</int>
+ <reference key="object" ref="941447902"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="792887677"/>
+ <reference ref="215659978"/>
+ </array>
+ <reference key="parent" ref="302598603"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">377</int>
+ <reference key="object" ref="792887677"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="786677654"/>
+ </array>
+ <reference key="parent" ref="941447902"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">388</int>
+ <reference key="object" ref="786677654"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="159677712"/>
+ <reference ref="305399458"/>
+ <reference ref="814362025"/>
+ <reference ref="330926929"/>
+ <reference ref="533507878"/>
+ <reference ref="158063935"/>
+ <reference ref="885547335"/>
+ <reference ref="901062459"/>
+ <reference ref="767671776"/>
+ <reference ref="691570813"/>
+ <reference ref="769124883"/>
+ <reference ref="739652853"/>
+ <reference ref="1012600125"/>
+ <reference ref="214559597"/>
+ <reference ref="596732606"/>
+ <reference ref="393423671"/>
+ </array>
+ <reference key="parent" ref="792887677"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">389</int>
+ <reference key="object" ref="159677712"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">390</int>
+ <reference key="object" ref="305399458"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">391</int>
+ <reference key="object" ref="814362025"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">392</int>
+ <reference key="object" ref="330926929"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">393</int>
+ <reference key="object" ref="533507878"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">394</int>
+ <reference key="object" ref="158063935"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">395</int>
+ <reference key="object" ref="885547335"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">396</int>
+ <reference key="object" ref="901062459"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">397</int>
+ <reference key="object" ref="767671776"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="175441468"/>
+ </array>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">398</int>
+ <reference key="object" ref="691570813"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="1058217995"/>
+ </array>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">399</int>
+ <reference key="object" ref="769124883"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="18263474"/>
+ </array>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">400</int>
+ <reference key="object" ref="739652853"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">401</int>
+ <reference key="object" ref="1012600125"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">402</int>
+ <reference key="object" ref="214559597"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">403</int>
+ <reference key="object" ref="596732606"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">404</int>
+ <reference key="object" ref="393423671"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">405</int>
+ <reference key="object" ref="18263474"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="257962622"/>
+ <reference ref="644725453"/>
+ <reference ref="1037576581"/>
+ <reference ref="941806246"/>
+ <reference ref="1045724900"/>
+ </array>
+ <reference key="parent" ref="769124883"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">406</int>
+ <reference key="object" ref="257962622"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">407</int>
+ <reference key="object" ref="644725453"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">408</int>
+ <reference key="object" ref="1037576581"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">409</int>
+ <reference key="object" ref="941806246"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">410</int>
+ <reference key="object" ref="1045724900"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">411</int>
+ <reference key="object" ref="1058217995"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="706297211"/>
+ <reference ref="568384683"/>
+ <reference ref="663508465"/>
+ </array>
+ <reference key="parent" ref="691570813"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">412</int>
+ <reference key="object" ref="706297211"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">413</int>
+ <reference key="object" ref="568384683"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">414</int>
+ <reference key="object" ref="663508465"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">415</int>
+ <reference key="object" ref="175441468"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="252969304"/>
+ <reference ref="766922938"/>
+ <reference ref="677519740"/>
+ <reference ref="238351151"/>
+ </array>
+ <reference key="parent" ref="767671776"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">416</int>
+ <reference key="object" ref="252969304"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">417</int>
+ <reference key="object" ref="766922938"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">418</int>
+ <reference key="object" ref="677519740"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">419</int>
+ <reference key="object" ref="238351151"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">420</int>
+ <reference key="object" ref="755631768"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">450</int>
+ <reference key="object" ref="288088188"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="579392910"/>
+ </array>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">451</int>
+ <reference key="object" ref="579392910"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="1060694897"/>
+ <reference ref="879586729"/>
+ <reference ref="56570060"/>
+ </array>
+ <reference key="parent" ref="288088188"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">452</int>
+ <reference key="object" ref="1060694897"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">453</int>
+ <reference key="object" ref="859480356"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">454</int>
+ <reference key="object" ref="795346622"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">457</int>
+ <reference key="object" ref="65139061"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">459</int>
+ <reference key="object" ref="19036812"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">460</int>
+ <reference key="object" ref="672708820"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">462</int>
+ <reference key="object" ref="537092702"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">465</int>
+ <reference key="object" ref="879586729"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">466</int>
+ <reference key="object" ref="56570060"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">485</int>
+ <reference key="object" ref="82994268"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">490</int>
+ <reference key="object" ref="448692316"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="992780483"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">491</int>
+ <reference key="object" ref="992780483"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="105068016"/>
+ </array>
+ <reference key="parent" ref="448692316"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">492</int>
+ <reference key="object" ref="105068016"/>
+ <reference key="parent" ref="992780483"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">496</int>
+ <reference key="object" ref="215659978"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="446991534"/>
+ </array>
+ <reference key="parent" ref="941447902"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">497</int>
+ <reference key="object" ref="446991534"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="875092757"/>
+ <reference ref="630155264"/>
+ <reference ref="945678886"/>
+ <reference ref="512868991"/>
+ <reference ref="163117631"/>
+ <reference ref="31516759"/>
+ <reference ref="908105787"/>
+ <reference ref="644046920"/>
+ <reference ref="231811626"/>
+ <reference ref="883618387"/>
+ </array>
+ <reference key="parent" ref="215659978"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">498</int>
+ <reference key="object" ref="875092757"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">499</int>
+ <reference key="object" ref="630155264"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">500</int>
+ <reference key="object" ref="945678886"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">501</int>
+ <reference key="object" ref="512868991"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">502</int>
+ <reference key="object" ref="163117631"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">503</int>
+ <reference key="object" ref="31516759"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="956096989"/>
+ </array>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">504</int>
+ <reference key="object" ref="908105787"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">505</int>
+ <reference key="object" ref="644046920"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">506</int>
+ <reference key="object" ref="231811626"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">507</int>
+ <reference key="object" ref="883618387"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">508</int>
+ <reference key="object" ref="956096989"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="257099033"/>
+ <reference ref="551969625"/>
+ <reference ref="249532473"/>
+ <reference ref="607364498"/>
+ <reference ref="508151438"/>
+ <reference ref="981751889"/>
+ <reference ref="380031999"/>
+ <reference ref="825984362"/>
+ <reference ref="560145579"/>
+ </array>
+ <reference key="parent" ref="31516759"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">509</int>
+ <reference key="object" ref="257099033"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">510</int>
+ <reference key="object" ref="551969625"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">511</int>
+ <reference key="object" ref="249532473"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">512</int>
+ <reference key="object" ref="607364498"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">513</int>
+ <reference key="object" ref="508151438"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">514</int>
+ <reference key="object" ref="981751889"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">515</int>
+ <reference key="object" ref="380031999"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">516</int>
+ <reference key="object" ref="825984362"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">517</int>
+ <reference key="object" ref="560145579"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">538</int>
+ <reference key="object" ref="758604943"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="1038370525"/>
+ </array>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Drawer Content View</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">539</int>
+ <reference key="object" ref="764451088"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">629</int>
+ <reference key="object" ref="1038370525"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="617550661"/>
+ <reference ref="977018641"/>
+ <reference ref="429436769"/>
+ </array>
+ <reference key="parent" ref="758604943"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">630</int>
+ <reference key="object" ref="617550661"/>
+ <reference key="parent" ref="1038370525"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">631</int>
+ <reference key="object" ref="977018641"/>
+ <reference key="parent" ref="1038370525"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">632</int>
+ <reference key="object" ref="429436769"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="691918008"/>
+ <reference ref="394988372"/>
+ </array>
+ <reference key="parent" ref="1038370525"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">634</int>
+ <reference key="object" ref="691918008"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="241301801"/>
+ </array>
+ <reference key="parent" ref="429436769"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">637</int>
+ <reference key="object" ref="241301801"/>
+ <reference key="parent" ref="691918008"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">494</int>
+ <reference key="object" ref="976324537"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">661</int>
+ <reference key="object" ref="76290771"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">635</int>
+ <reference key="object" ref="394988372"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="88358594"/>
+ </array>
+ <reference key="parent" ref="429436769"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">698</int>
+ <reference key="object" ref="88358594"/>
+ <reference key="parent" ref="394988372"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">705</int>
+ <reference key="object" ref="622903446"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">706</int>
+ <reference key="object" ref="24092627"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">718</int>
+ <reference key="object" ref="87708234"/>
+ <reference key="parent" ref="466310130"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">720</int>
+ <reference key="object" ref="92029792"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ </array>
+ </object>
+ <dictionary class="NSMutableDictionary" key="flattenedProperties">
+ <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="112.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="124.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="125.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="126.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="129.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="130.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="131.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="136.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="143.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="144.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="145.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="149.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="150.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="195.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="196.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="197.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="198.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="199.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="200.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="201.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="202.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="203.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="204.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="205.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="206.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="207.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="208.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="209.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="210.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="211.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="212.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="213.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="214.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="215.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="216.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="217.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="218.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="219.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="220.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="221.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="23.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="236.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="239.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="24.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="295.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="296.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="297.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="298.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="346.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="348.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="349.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="350.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="351.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="354.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="371.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="371.IBWindowTemplateEditedContentRect">{{254, 23}, {640, 480}}</string>
+ <integer value="1" key="371.NSWindowTemplate.visibleAtLaunch"/>
+ <string key="372.CustomClassName">SkExampleNSView</string>
+ <string key="372.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="375.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="376.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="377.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="388.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="389.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="390.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="391.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="392.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="393.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="394.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="395.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="396.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="397.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="398.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="399.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="400.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="401.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="402.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="403.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="404.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="405.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="406.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="407.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="408.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="409.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="410.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="411.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="412.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="413.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="414.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="415.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="416.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="417.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="418.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="419.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="420.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="450.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="451.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="452.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="453.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="454.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="457.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="459.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="460.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="462.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="465.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="466.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="485.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="490.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="491.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="492.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="494.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="496.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="497.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="498.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="499.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="500.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="501.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="502.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="503.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="504.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="505.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="506.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="507.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="508.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="509.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="510.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="511.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="512.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="513.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="514.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="515.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="516.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="517.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="538.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="539.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="56.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="58.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="629.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="630.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="631.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="632.CustomClassName">SkOptionsTableView</string>
+ <string key="632.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="634.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="635.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="637.CustomClassName">SkTextFieldCell</string>
+ <string key="637.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="661.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="698.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="705.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="706.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="718.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="72.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="720.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="73.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="74.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="75.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="77.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="78.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="79.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="80.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="81.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="82.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="83.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="92.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
+ <nil key="activeLocalization"/>
+ <dictionary class="NSMutableDictionary" key="localizations"/>
+ <nil key="sourceID"/>
+ <int key="maxID">721</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <array class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <object class="IBPartialClassDescription">
+ <string key="className">SampleAppDelegate</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <string key="NS.key.0">toiPadSize:</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <string key="NS.key.0">toiPadSize:</string>
+ <object class="IBActionInfo" key="NS.object.0">
+ <string key="name">toiPadSize:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <dictionary class="NSMutableDictionary" key="outlets">
+ <string key="fOptions">SkOptionsTableView</string>
+ <string key="fView">SkSampleNSView</string>
+ <string key="fWindow">NSWindow</string>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <object class="IBToOneOutletInfo" key="fOptions">
+ <string key="name">fOptions</string>
+ <string key="candidateClassName">SkOptionsTableView</string>
+ </object>
+ <object class="IBToOneOutletInfo" key="fView">
+ <string key="name">fView</string>
+ <string key="candidateClassName">SkSampleNSView</string>
+ </object>
+ <object class="IBToOneOutletInfo" key="fWindow">
+ <string key="name">fWindow</string>
+ <string key="candidateClassName">NSWindow</string>
+ </object>
+ </dictionary>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/SampleAppDelegate.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkExampleNSView</string>
+ <string key="superclassName">SkNSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/SkExampleNSView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkNSView</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/SkNSView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkOptionsTableView</string>
+ <string key="superclassName">NSTableView</string>
+ <object class="NSMutableDictionary" key="actions">
+ <string key="NS.key.0">toggleKeyEquivalents:</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <string key="NS.key.0">toggleKeyEquivalents:</string>
+ <object class="IBActionInfo" key="NS.object.0">
+ <string key="name">toggleKeyEquivalents:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/SkOptionsTableView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkTextFieldCell</string>
+ <string key="superclassName">NSTextFieldCell</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/SkTextFieldCell.h</string>
+ </object>
+ </object>
+ </array>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <real value="1070" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+ <string key="NSMenuCheckmark">{11, 11}</string>
+ <string key="NSMenuMixedState">{10, 3}</string>
+ </dictionary>
+ </data>
+</archive>
diff --git a/chromium/third_party/skia/experimental/StrokePathRenderer/GrStrokePathRenderer.cpp b/chromium/third_party/skia/experimental/StrokePathRenderer/GrStrokePathRenderer.cpp
new file mode 100644
index 00000000000..4b41dba5b16
--- /dev/null
+++ b/chromium/third_party/skia/experimental/StrokePathRenderer/GrStrokePathRenderer.cpp
@@ -0,0 +1,300 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "GrStrokePathRenderer.h"
+
+#include "GrDrawTarget.h"
+#include "SkPath.h"
+#include "SkStrokeRec.h"
+
+static bool is_clockwise(const SkVector& before, const SkVector& after) {
+ return before.cross(after) > 0;
+}
+
+enum IntersectionType {
+ kNone_IntersectionType,
+ kIn_IntersectionType,
+ kOut_IntersectionType
+};
+
+static IntersectionType intersection(const SkPoint& p1, const SkPoint& p2,
+ const SkPoint& p3, const SkPoint& p4,
+ SkPoint& res) {
+ // Store the values for fast access and easy
+ // equations-to-code conversion
+ SkScalar x1 = p1.x(), x2 = p2.x(), x3 = p3.x(), x4 = p4.x();
+ SkScalar y1 = p1.y(), y2 = p2.y(), y3 = p3.y(), y4 = p4.y();
+
+ SkScalar d = SkScalarMul(x1 - x2, y3 - y4) - SkScalarMul(y1 - y2, x3 - x4);
+ // If d is zero, there is no intersection
+ if (SkScalarNearlyZero(d)) {
+ return kNone_IntersectionType;
+ }
+
+ // Get the x and y
+ SkScalar pre = SkScalarMul(x1, y2) - SkScalarMul(y1, x2),
+ post = SkScalarMul(x3, y4) - SkScalarMul(y3, x4);
+ // Compute the point of intersection
+ res.set(SkScalarDiv(SkScalarMul(pre, x3 - x4) - SkScalarMul(x1 - x2, post), d),
+ SkScalarDiv(SkScalarMul(pre, y3 - y4) - SkScalarMul(y1 - y2, post), d));
+
+ // Check if the x and y coordinates are within both lines
+ return (res.x() < GrMin(x1, x2) || res.x() > GrMax(x1, x2) ||
+ res.x() < GrMin(x3, x4) || res.x() > GrMax(x3, x4) ||
+ res.y() < GrMin(y1, y2) || res.y() > GrMax(y1, y2) ||
+ res.y() < GrMin(y3, y4) || res.y() > GrMax(y3, y4)) ?
+ kOut_IntersectionType : kIn_IntersectionType;
+}
+
+GrStrokePathRenderer::GrStrokePathRenderer() {
+}
+
+bool GrStrokePathRenderer::canDrawPath(const SkPath& path,
+ const SkStrokeRec& stroke,
+ const GrDrawTarget* target,
+ bool antiAlias) const {
+ // FIXME : put the proper condition once GrDrawTarget::isOpaque is implemented
+ const bool isOpaque = true; // target->isOpaque();
+
+ // FIXME : remove this requirement once we have AA circles and implement the
+ // circle joins/caps appropriately in the ::onDrawPath() function.
+ const bool requiresAACircle = (stroke.getCap() == SkPaint::kRound_Cap) ||
+ (stroke.getJoin() == SkPaint::kRound_Join);
+
+ // Indices being stored in uint16, we don't want to overflow the indices capacity
+ static const int maxVBSize = 1 << 16;
+ const int maxNbVerts = (path.countPoints() + 1) * 5;
+
+ // Check that the path contains no curved lines, only straight lines
+ static const uint32_t unsupportedMask = SkPath::kQuad_SegmentMask | SkPath::kCubic_SegmentMask;
+
+ // Must not be filled nor hairline nor semi-transparent
+ // Note : May require a check to path.isConvex() if AA is supported
+ return ((stroke.getStyle() == SkStrokeRec::kStroke_Style) && (maxNbVerts < maxVBSize) &&
+ !path.isInverseFillType() && isOpaque && !requiresAACircle && !antiAlias &&
+ ((path.getSegmentMasks() & unsupportedMask) == 0));
+}
+
+bool GrStrokePathRenderer::onDrawPath(const SkPath& origPath,
+ const SkStrokeRec& stroke,
+ GrDrawTarget* target,
+ bool antiAlias) {
+ if (origPath.isEmpty()) {
+ return true;
+ }
+
+ SkScalar width = stroke.getWidth();
+ if (width <= 0) {
+ return false;
+ }
+
+ // Get the join type
+ SkPaint::Join join = stroke.getJoin();
+ SkScalar miterLimit = stroke.getMiter();
+ SkScalar sqMiterLimit = SkScalarMul(miterLimit, miterLimit);
+ if ((join == SkPaint::kMiter_Join) && (miterLimit <= SK_Scalar1)) {
+ // If the miter limit is small, treat it as a bevel join
+ join = SkPaint::kBevel_Join;
+ }
+ const bool isMiter = (join == SkPaint::kMiter_Join);
+ const bool isBevel = (join == SkPaint::kBevel_Join);
+ SkScalar invMiterLimit = isMiter ? SK_Scalar1 / miterLimit : 0;
+ SkScalar invMiterLimitSq = SkScalarMul(invMiterLimit, invMiterLimit);
+
+ // Allocate vertices
+ const int nbQuads = origPath.countPoints() + 1; // Could be "-1" if path is not closed
+ const int extraVerts = isMiter || isBevel ? 1 : 0;
+ const int maxVertexCount = nbQuads * (4 + extraVerts);
+ const int maxIndexCount = nbQuads * (6 + extraVerts * 3); // Each extra vert adds a triangle
+ target->drawState()->setDefaultVertexAttribs();
+ GrDrawTarget::AutoReleaseGeometry arg(target, maxVertexCount, maxIndexCount);
+ if (!arg.succeeded()) {
+ return false;
+ }
+ SkPoint* verts = reinterpret_cast<SkPoint*>(arg.vertices());
+ uint16_t* idxs = reinterpret_cast<uint16_t*>(arg.indices());
+ int vCount = 0, iCount = 0;
+
+ // Transform the path into a list of triangles
+ SkPath::Iter iter(origPath, false);
+ SkPoint pts[4];
+ const SkScalar radius = SkScalarMul(width, 0.5f);
+ SkPoint *firstPt = verts, *lastPt = NULL;
+ SkVector firstDir, dir;
+ firstDir.set(0, 0);
+ dir.set(0, 0);
+ bool isOpen = true;
+ for(SkPath::Verb v = iter.next(pts); v != SkPath::kDone_Verb; v = iter.next(pts)) {
+ switch(v) {
+ case SkPath::kMove_Verb:
+ // This will already be handled as pts[0] of the 1st line
+ break;
+ case SkPath::kClose_Verb:
+ isOpen = (lastPt == NULL);
+ break;
+ case SkPath::kLine_Verb:
+ {
+ SkVector v0 = dir;
+ dir = pts[1] - pts[0];
+ if (dir.setLength(radius)) {
+ SkVector dirT;
+ dirT.set(dir.fY, -dir.fX); // Get perpendicular direction
+ SkPoint l1a = pts[0]+dirT, l1b = pts[1]+dirT,
+ l2a = pts[0]-dirT, l2b = pts[1]-dirT;
+ SkPoint miterPt[2];
+ bool useMiterPoint = false;
+ int idx0(-1), idx1(-1);
+ if (NULL == lastPt) {
+ firstDir = dir;
+ } else {
+ SkVector v1 = dir;
+ if (v0.normalize() && v1.normalize()) {
+ SkScalar dotProd = v0.dot(v1);
+ // No need for bevel or miter join if the angle
+ // is either 0 or 180 degrees
+ if (!SkScalarNearlyZero(dotProd + SK_Scalar1) &&
+ !SkScalarNearlyZero(dotProd - SK_Scalar1)) {
+ bool ccw = !is_clockwise(v0, v1);
+ int offset = ccw ? 1 : 0;
+ idx0 = vCount-2+offset;
+ idx1 = vCount+offset;
+ const SkPoint* pt0 = &(lastPt[offset]);
+ const SkPoint* pt1 = ccw ? &l2a : &l1a;
+ switch(join) {
+ case SkPaint::kMiter_Join:
+ {
+ // *Note : Logic is from MiterJoiner
+
+ // FIXME : Special case if we have a right angle ?
+ // if (SkScalarNearlyZero(dotProd)) {...}
+
+ SkScalar sinHalfAngleSq =
+ SkScalarHalf(SK_Scalar1 + dotProd);
+ if (sinHalfAngleSq >= invMiterLimitSq) {
+ // Find the miter point (or points if it is further
+ // than the miter limit)
+ const SkPoint pt2 = *pt0+v0, pt3 = *pt1+v1;
+ if (intersection(*pt0, pt2, *pt1, pt3, miterPt[0]) !=
+ kNone_IntersectionType) {
+ SkPoint miterPt0 = miterPt[0] - *pt0;
+ SkPoint miterPt1 = miterPt[0] - *pt1;
+ SkScalar sqDist0 = miterPt0.dot(miterPt0);
+ SkScalar sqDist1 = miterPt1.dot(miterPt1);
+ const SkScalar rSq =
+ SkScalarDiv(SkScalarMul(radius, radius),
+ sinHalfAngleSq);
+ const SkScalar sqRLimit =
+ SkScalarMul(sqMiterLimit, rSq);
+ if (sqDist0 > sqRLimit || sqDist1 > sqRLimit) {
+ if (sqDist1 > sqRLimit) {
+ v1.setLength(SkScalarSqrt(sqRLimit));
+ miterPt[1] = *pt1+v1;
+ } else {
+ miterPt[1] = miterPt[0];
+ }
+ if (sqDist0 > sqRLimit) {
+ v0.setLength(SkScalarSqrt(sqRLimit));
+ miterPt[0] = *pt0+v0;
+ }
+ } else {
+ miterPt[1] = miterPt[0];
+ }
+ useMiterPoint = true;
+ }
+ }
+ if (useMiterPoint && (miterPt[1] == miterPt[0])) {
+ break;
+ }
+ }
+ default:
+ case SkPaint::kBevel_Join:
+ {
+ // Note : This currently causes some overdraw where both
+ // lines initially intersect. We'd need to add
+ // another line intersection check here if the
+ // overdraw becomes an issue instead of using the
+ // current point directly.
+
+ // Add center point
+ *verts++ = pts[0]; // Use current point directly
+ // This idx is passed the current point so increment it
+ ++idx1;
+ // Add center triangle
+ *idxs++ = idx0;
+ *idxs++ = vCount;
+ *idxs++ = idx1;
+ vCount++;
+ iCount += 3;
+ }
+ break;
+ }
+ }
+ }
+ }
+ *verts++ = l1a;
+ *verts++ = l2a;
+ lastPt = verts;
+ *verts++ = l1b;
+ *verts++ = l2b;
+
+ if (useMiterPoint && (idx0 >= 0) && (idx1 >= 0)) {
+ firstPt[idx0] = miterPt[0];
+ firstPt[idx1] = miterPt[1];
+ }
+
+ // 1st triangle
+ *idxs++ = vCount+0;
+ *idxs++ = vCount+2;
+ *idxs++ = vCount+1;
+ // 2nd triangle
+ *idxs++ = vCount+1;
+ *idxs++ = vCount+2;
+ *idxs++ = vCount+3;
+
+ vCount += 4;
+ iCount += 6;
+ }
+ }
+ break;
+ case SkPath::kQuad_Verb:
+ case SkPath::kCubic_Verb:
+ SkDEBUGFAIL("Curves not supported!");
+ default:
+ // Unhandled cases
+ SkASSERT(false);
+ }
+ }
+
+ if (isOpen) {
+ // Add caps
+ switch (stroke.getCap()) {
+ case SkPaint::kSquare_Cap:
+ firstPt[0] -= firstDir;
+ firstPt[1] -= firstDir;
+ lastPt [0] += dir;
+ lastPt [1] += dir;
+ break;
+ case SkPaint::kRound_Cap:
+ SkDEBUGFAIL("Round caps not supported!");
+ default: // No cap
+ break;
+ }
+ }
+
+ SkASSERT(vCount <= maxVertexCount);
+ SkASSERT(iCount <= maxIndexCount);
+
+ if (vCount > 0) {
+ target->drawIndexed(kTriangles_GrPrimitiveType,
+ 0, // start vertex
+ 0, // start index
+ vCount,
+ iCount);
+ }
+
+ return true;
+}
diff --git a/chromium/third_party/skia/experimental/StrokePathRenderer/GrStrokePathRenderer.h b/chromium/third_party/skia/experimental/StrokePathRenderer/GrStrokePathRenderer.h
new file mode 100644
index 00000000000..9cf34d87121
--- /dev/null
+++ b/chromium/third_party/skia/experimental/StrokePathRenderer/GrStrokePathRenderer.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "GrPathRenderer.h"
+
+// This path renderer is made to create geometry (i.e. primitives) from the original path (before
+// the path is stroked) and render using the GPU directly rather than using any software rendering
+// step. It can be rendered in a single pass for simple cases and use multiple passes for features
+// like AA or opacity support.
+
+class GrStrokePathRenderer : public GrPathRenderer {
+
+public:
+ GrStrokePathRenderer();
+
+ virtual bool canDrawPath(const SkPath& path,
+ const SkStrokeRec& stroke,
+ const GrDrawTarget* target,
+ bool antiAlias) const SK_OVERRIDE;
+
+protected:
+ virtual bool onDrawPath(const SkPath& path,
+ const SkStrokeRec& stroke,
+ GrDrawTarget* target,
+ bool antiAlias) SK_OVERRIDE;
+};
diff --git a/chromium/third_party/skia/experimental/benchtools/greenify.py b/chromium/third_party/skia/experimental/benchtools/greenify.py
new file mode 100755
index 00000000000..bd257d98898
--- /dev/null
+++ b/chromium/third_party/skia/experimental/benchtools/greenify.py
@@ -0,0 +1,205 @@
+#!/usr/bin/env python
+
+
+# Copyright (c) 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+"""greenify.py: standalone script to correct flaky bench expectations.
+
+ Requires Rietveld credentials on the running machine.
+
+ Usage:
+ Copy script to a separate dir outside Skia repo. The script will create a
+ skia dir on the first run to host the repo, and will create/delete
+ temp dirs as needed.
+ ./greenify.py --url <the stdio url from failed CheckForRegressions step>
+"""
+
+import argparse
+import filecmp
+import os
+import re
+import shutil
+import subprocess
+import time
+import urllib2
+
+
+# Regular expression for matching exception data.
+EXCEPTION_RE = ('Bench (\S+) out of range \[(\d+.\d+), (\d+.\d+)\] \((\d+.\d+) '
+ 'vs (\d+.\d+), ')
+EXCEPTION_RE_COMPILED = re.compile(EXCEPTION_RE)
+
+
+def clean_dir(d):
+ if os.path.exists(d):
+ shutil.rmtree(d)
+ os.makedirs(d)
+
+def checkout_or_update_skia(repo_dir):
+ status = True
+ old_cwd = os.getcwd()
+ os.chdir(repo_dir)
+ print 'CHECK SKIA REPO...'
+ if subprocess.call(['git', 'pull'],
+ stderr=subprocess.PIPE):
+ print 'Checking out Skia from git, please be patient...'
+ os.chdir(old_cwd)
+ clean_dir(repo_dir)
+ os.chdir(repo_dir)
+ if subprocess.call(['git', 'clone', '-q', '--depth=50', '--single-branch',
+ 'https://skia.googlesource.com/skia.git', '.']):
+ status = False
+ subprocess.call(['git', 'checkout', 'master'])
+ subprocess.call(['git', 'pull'])
+ os.chdir(old_cwd)
+ return status
+
+def git_commit_expectations(repo_dir, exp_dir, bot, build, commit):
+ commit_msg = """Greenify bench bot %s at build %s
+
+TBR=bsalomon@google.com
+
+Bypassing trybots:
+NOTRY=true""" % (bot, build)
+ old_cwd = os.getcwd()
+ os.chdir(repo_dir)
+ upload = ['git', 'cl', 'upload', '-f', '--bypass-hooks',
+ '--bypass-watchlists', '-m', commit_msg]
+ if commit:
+ upload.append('--use-commit-queue')
+ branch = exp_dir[exp_dir.rfind('/') + 1:]
+ filename = 'bench_expectations_%s.txt' % bot
+ cmds = ([['git', 'checkout', 'master'],
+ ['git', 'pull'],
+ ['git', 'checkout', '-b', branch, '-t', 'origin/master'],
+ ['cp', '%s/%s' % (exp_dir, filename), 'expectations/bench'],
+ ['git', 'add', 'expectations/bench/' + filename],
+ ['git', 'commit', '-m', commit_msg],
+ upload,
+ ['git', 'checkout', 'master'],
+ ['git', 'branch', '-D', branch],
+ ])
+ status = True
+ for cmd in cmds:
+ print 'Running ' + ' '.join(cmd)
+ if subprocess.call(cmd):
+ print 'FAILED. Please check if skia git repo is present.'
+ subprocess.call(['git', 'checkout', 'master'])
+ status = False
+ break
+ os.chdir(old_cwd)
+ return status
+
+def delete_dirs(li):
+ for d in li:
+ print 'Deleting directory %s' % d
+ shutil.rmtree(d)
+
+def widen_bench_ranges(url, bot, repo_dir, exp_dir):
+ fname = 'bench_expectations_%s.txt' % bot
+ src = os.path.join(repo_dir, 'expectations', 'bench', fname)
+ if not os.path.isfile(src):
+ print 'This bot has no expectations! %s' % bot
+ return False
+ row_dic = {}
+ for l in urllib2.urlopen(url).read().split('\n'):
+ data = EXCEPTION_RE_COMPILED.search(l)
+ if data:
+ row = data.group(1)
+ lb = float(data.group(2))
+ ub = float(data.group(3))
+ actual = float(data.group(4))
+ exp = float(data.group(5))
+ avg = (actual + exp) / 2
+ shift = avg - exp
+ lb = lb + shift
+ ub = ub + shift
+ # In case outlier really fluctuates a lot
+ if actual < lb:
+ lb = actual - abs(shift) * 0.1 + 0.5
+ elif actual > ub:
+ ub = actual + abs(shift) * 0.1 + 0.5
+ row_dic[row] = '%.2f,%.2f,%.2f' % (avg, lb, ub)
+ if not row_dic:
+ print 'NO out-of-range benches found at %s' % url
+ return False
+
+ changed = 0
+ li = []
+ for l in open(src).readlines():
+ parts = l.strip().split(',')
+ if parts[0].startswith('#') or len(parts) != 5:
+ li.append(l.strip())
+ continue
+ if ','.join(parts[:2]) in row_dic:
+ li.append(','.join(parts[:2]) + ',' + row_dic[','.join(parts[:2])])
+ changed += 1
+ else:
+ li.append(l.strip())
+ if not changed:
+ print 'Not in source file:\n' + '\n'.join(row_dic.keys())
+ return False
+
+ dst = os.path.join(exp_dir, fname)
+ with open(dst, 'w+') as f:
+ f.write('\n'.join(li))
+ return True
+
+
+def main():
+ d = os.path.dirname(os.path.abspath(__file__))
+ os.chdir(d)
+ if not subprocess.call(['git', 'rev-parse'], stderr=subprocess.PIPE):
+ print 'Please copy script to a separate dir outside git repos to use.'
+ return
+ ts_str = '%s' % time.time()
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--url',
+ help='Broken bench build CheckForRegressions page url.')
+ parser.add_argument('--commit', action='store_true',
+ help='Whether to commit changes automatically.')
+ args = parser.parse_args()
+ repo_dir = os.path.join(d, 'skia')
+ if not os.path.exists(repo_dir):
+ os.makedirs(repo_dir)
+ if not checkout_or_update_skia(repo_dir):
+ print 'ERROR setting up Skia repo at %s' % repo_dir
+ return 1
+
+ file_in_repo = os.path.join(d, 'skia/experimental/benchtools/greenify.py')
+ if not filecmp.cmp(__file__, file_in_repo):
+ shutil.copy(file_in_repo, __file__)
+ print 'Updated this script from repo; please run again.'
+ return
+
+ if not args.url:
+ raise Exception('Please provide a url with broken CheckForRegressions.')
+ path = args.url.split('/')
+ if len(path) != 11 or not path[6].isdigit():
+ raise Exception('Unexpected url format: %s' % args.url)
+ bot = path[4]
+ build = path[6]
+ commit = False
+ if args.commit:
+ commit = True
+
+ exp_dir = os.path.join(d, 'exp' + ts_str)
+ clean_dir(exp_dir)
+ if not widen_bench_ranges(args.url, bot, repo_dir, exp_dir):
+ print 'NO bench exceptions found! %s' % args.url
+ elif not git_commit_expectations(
+ repo_dir, exp_dir, bot, build, commit):
+ print 'ERROR uploading expectations using git.'
+ elif not commit:
+ print 'CL created. Please take a look at the link above.'
+ else:
+ print 'New bench baselines should be in CQ now.'
+ delete_dirs([exp_dir])
+
+
+if __name__ == "__main__":
+ main()
diff --git a/chromium/third_party/skia/experimental/benchtools/rebase.py b/chromium/third_party/skia/experimental/benchtools/rebase.py
new file mode 100755
index 00000000000..85290d79754
--- /dev/null
+++ b/chromium/third_party/skia/experimental/benchtools/rebase.py
@@ -0,0 +1,248 @@
+#!/usr/bin/env python
+# Copyright (c) 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+"""rebase.py: standalone script to batch update bench expectations.
+
+ Requires gsutil to access gs://chromium-skia-gm and Rietveld credentials.
+
+ Usage:
+ Copy script to a separate dir outside Skia repo. The script will create a
+ skia dir on the first run to host the repo, and will create/delete
+ temp dirs as needed.
+ ./rebase.py --githash <githash prefix to use for getting bench data>
+"""
+
+
+import argparse
+import filecmp
+import os
+import re
+import shutil
+import subprocess
+import time
+import urllib2
+
+
+# googlesource url that has most recent Skia git hash info.
+SKIA_GIT_HEAD_URL = 'https://skia.googlesource.com/skia/+log/HEAD'
+
+# Google Storage bench file prefix.
+GS_PREFIX = 'gs://chromium-skia-gm/perfdata'
+
+# List of Perf platforms we want to process. Populate from expectations/bench.
+PLATFORMS = []
+
+# Regular expression for matching githash data.
+HA_RE = '<a href="/skia/\+/([0-9a-f]+)">'
+HA_RE_COMPILED = re.compile(HA_RE)
+
+
+def get_git_hashes():
+ print 'Getting recent git hashes...'
+ hashes = HA_RE_COMPILED.findall(
+ urllib2.urlopen(SKIA_GIT_HEAD_URL).read())
+
+ return hashes
+
+def filter_file(f):
+ if f.find('_msaa') > 0 or f.find('_record') > 0:
+ return True
+
+ return False
+
+def clean_dir(d):
+ if os.path.exists(d):
+ shutil.rmtree(d)
+ os.makedirs(d)
+
+def get_gs_filelist(p, h):
+ print 'Looking up for the closest bench files in Google Storage...'
+ proc = subprocess.Popen(['gsutil', 'ls',
+ '/'.join([GS_PREFIX, p, 'bench_' + h + '_data_skp_*'])],
+ stdout=subprocess.PIPE)
+ out, err = proc.communicate()
+ if err or not out:
+ return []
+ return [i for i in out.strip().split('\n') if not filter_file(i)]
+
+def download_gs_files(p, h, gs_dir):
+ print 'Downloading raw bench files from Google Storage...'
+ proc = subprocess.Popen(['gsutil', 'cp',
+ '/'.join([GS_PREFIX, p, 'bench_' + h + '_data_skp_*']),
+ '%s/%s' % (gs_dir, p)],
+ stdout=subprocess.PIPE)
+ out, err = proc.communicate()
+ if err:
+ clean_dir(gs_dir)
+ return False
+ files = 0
+ for f in os.listdir(os.path.join(gs_dir, p)):
+ if filter_file(f):
+ os.remove(os.path.join(gs_dir, p, f))
+ else:
+ files += 1
+ if files:
+ return True
+ return False
+
+def calc_expectations(p, h, gs_dir, exp_dir, repo_dir):
+ exp_filename = 'bench_expectations_%s.txt' % p
+ proc = subprocess.Popen(['python', 'skia/bench/gen_bench_expectations.py',
+ '-r', h, '-b', p, '-d', os.path.join(gs_dir, p), '-o',
+ os.path.join(exp_dir, exp_filename)],
+ stdout=subprocess.PIPE)
+ out, err = proc.communicate()
+ if err:
+ print 'ERR_CALCULATING_EXPECTATIONS: ' + err
+ return False
+ print 'CALCULATED_EXPECTATIONS: ' + out
+ repo_file = os.path.join(repo_dir, 'expectations', 'bench', exp_filename)
+ if (os.path.isfile(repo_file) and
+ filecmp.cmp(repo_file, os.path.join(exp_dir, exp_filename))):
+ print 'NO CHANGE ON %s' % repo_file
+ return False
+ return True
+
+def checkout_or_update_skia(repo_dir):
+ status = True
+ old_cwd = os.getcwd()
+ os.chdir(repo_dir)
+ print 'CHECK SKIA REPO...'
+ if subprocess.call(['git', 'pull'],
+ stderr=subprocess.PIPE):
+ print 'Checking out Skia from git, please be patient...'
+ os.chdir(old_cwd)
+ clean_dir(repo_dir)
+ os.chdir(repo_dir)
+ if subprocess.call(['git', 'clone', '-q', '--depth=50', '--single-branch',
+ 'https://skia.googlesource.com/skia.git', '.']):
+ status = False
+ subprocess.call(['git', 'checkout', 'master'])
+ subprocess.call(['git', 'pull'])
+ os.chdir(old_cwd)
+ return status
+
+def git_commit_expectations(repo_dir, exp_dir, update_li, h, commit):
+ commit_msg = """manual bench rebase after %s
+
+TBR=robertphillips@google.com
+
+Bypassing trybots:
+NOTRY=true""" % h
+ old_cwd = os.getcwd()
+ os.chdir(repo_dir)
+ upload = ['git', 'cl', 'upload', '-f', '--bypass-hooks',
+ '--bypass-watchlists', '-m', commit_msg]
+ branch = exp_dir.split('/')[-1]
+ if commit:
+ upload.append('--use-commit-queue')
+ cmds = ([['git', 'checkout', 'master'],
+ ['git', 'pull'],
+ ['git', 'checkout', '-b', branch, '-t', 'origin/master']] +
+ [['cp', '%s/%s' % (exp_dir, f), 'expectations/bench'] for f in
+ update_li] +
+ [['git', 'add'] + ['expectations/bench/%s' % i for i in update_li],
+ ['git', 'commit', '-m', commit_msg],
+ upload,
+ ['git', 'checkout', 'master'],
+ ['git', 'branch', '-D', branch],
+ ])
+ status = True
+ for cmd in cmds:
+ print 'Running ' + ' '.join(cmd)
+ if subprocess.call(cmd):
+ print 'FAILED. Please check if skia git repo is present.'
+ subprocess.call(['git', 'checkout', 'master'])
+ status = False
+ break
+ os.chdir(old_cwd)
+ return status
+
+def delete_dirs(li):
+ for d in li:
+ print 'Deleting directory %s' % d
+ shutil.rmtree(d)
+
+
+def main():
+ d = os.path.dirname(os.path.abspath(__file__))
+ os.chdir(d)
+ if not subprocess.call(['git', 'rev-parse'], stderr=subprocess.PIPE):
+ print 'Please copy script to a separate dir outside git repos to use.'
+ return
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--githash',
+ help='Githash prefix (7+ chars) to rebaseline to.')
+ parser.add_argument('--commit', action='store_true',
+ help='Whether to commit changes automatically.')
+ args = parser.parse_args()
+
+ repo_dir = os.path.join(d, 'skia')
+ if not os.path.exists(repo_dir):
+ os.makedirs(repo_dir)
+ if not checkout_or_update_skia(repo_dir):
+ print 'ERROR setting up Skia repo at %s' % repo_dir
+ return 1
+
+ file_in_repo = os.path.join(d, 'skia/experimental/benchtools/rebase.py')
+ if not filecmp.cmp(__file__, file_in_repo):
+ shutil.copy(file_in_repo, __file__)
+ print 'Updated this script from repo; please run again.'
+ return
+
+ for item in os.listdir(os.path.join(d, 'skia/expectations/bench')):
+ PLATFORMS.append(
+ item.replace('bench_expectations_', '').replace('.txt', ''))
+
+ if not args.githash or len(args.githash) < 7:
+ raise Exception('Please provide --githash with a longer prefix (7+).')
+ commit = False
+ if args.commit:
+ commit = True
+ rebase_hash = args.githash[:7]
+ hashes = get_git_hashes()
+ short_hashes = [h[:7] for h in hashes]
+ if rebase_hash not in short_hashes:
+ raise Exception('Provided --githash not found in recent history!')
+ hashes = hashes[:short_hashes.index(rebase_hash) + 1]
+ update_li = []
+
+ ts_str = '%s' % time.time()
+ gs_dir = os.path.join(d, 'gs' + ts_str)
+ exp_dir = os.path.join(d, 'exp' + ts_str)
+ clean_dir(gs_dir)
+ clean_dir(exp_dir)
+ for p in PLATFORMS:
+ clean_dir(os.path.join(gs_dir, p))
+ hash_to_use = ''
+ for h in reversed(hashes):
+ li = get_gs_filelist(p, h)
+ if not len(li): # no data
+ continue
+ if download_gs_files(p, h, gs_dir):
+ print 'Copied %s/%s' % (p, h)
+ hash_to_use = h
+ break
+ else:
+ print 'DOWNLOAD BENCH FAILED %s/%s' % (p, h)
+ break
+ if hash_to_use:
+ if calc_expectations(p, h, gs_dir, exp_dir, repo_dir):
+ update_li.append('bench_expectations_%s.txt' % p)
+ if not update_li:
+ print 'No bench data to update after %s!' % args.githash
+ elif not git_commit_expectations(
+ repo_dir, exp_dir, update_li, args.githash[:7], commit):
+ print 'ERROR uploading expectations using git.'
+ elif not commit:
+ print 'CL created. Please take a look at the link above.'
+ else:
+ print 'New bench baselines should be in CQ now.'
+ delete_dirs([gs_dir, exp_dir])
+
+
+if __name__ == "__main__":
+ main()
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkOptionListController.h b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkOptionListController.h
new file mode 100644
index 00000000000..87c044bfe28
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkOptionListController.h
@@ -0,0 +1,16 @@
+#import <UIKit/UIKit.h>
+
+@interface SkOptionListController : UITableViewController {
+ NSMutableArray* fOptions;
+ NSInteger fSelectedIndex;
+ UITableViewCell* fSelectedCell;
+ UITableViewCell* fParentCell;
+}
+@property (nonatomic, retain) NSMutableArray* fOptions;
+@property (nonatomic, assign) NSInteger fSelectedIndex;
+@property (nonatomic, retain) UITableViewCell* fSelectedCell;
+@property (nonatomic, retain) UITableViewCell* fParentCell;
+
+- (void)addOption:(NSString*)option;
+- (NSString*)getSelectedOption;
+@end
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkOptionListController.mm b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkOptionListController.mm
new file mode 100644
index 00000000000..d5241348b10
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkOptionListController.mm
@@ -0,0 +1,78 @@
+#import "SkOptionListController.h"
+
+@implementation SkOptionListController
+
+@synthesize fOptions, fSelectedIndex, fSelectedCell, fParentCell;
+
+#pragma mark -
+#pragma mark Initialization
+
+- (id)initWithStyle:(UITableViewStyle)style {
+ self = [super initWithStyle:style];
+ if (self) {
+ self.fOptions = [[NSMutableArray alloc] init];
+ self.fSelectedIndex = 0;
+ self.fSelectedCell = nil;
+ }
+ return self;
+}
+
+- (void)addOption:(NSString*)option {
+ [fOptions addObject:option];
+}
+
+- (NSString*)getSelectedOption {
+ return (NSString*)[fOptions objectAtIndex:self.fSelectedIndex];
+}
+
+#pragma mark -
+#pragma mark Table view data source
+
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
+ return 1;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+ return [fOptions count];
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+
+ static NSString *CellIdentifier = @"Cell";
+
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+ if (cell == nil) {
+ cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
+ }
+
+ cell.textLabel.text = [fOptions objectAtIndex:indexPath.row];
+ if (indexPath.row == fSelectedIndex) {
+ cell.accessoryType = UITableViewCellAccessoryCheckmark;
+ self.fSelectedCell = cell;
+ }
+ else
+ cell.accessoryType = UITableViewCellAccessoryNone;
+
+ return cell;
+}
+
+#pragma mark -
+#pragma mark Table view delegate
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+ UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
+ self.fSelectedCell.accessoryType = UITableViewCellAccessoryNone;
+ self.fSelectedCell = cell;
+ cell.accessoryType = UITableViewCellAccessoryCheckmark;
+ self.fParentCell.detailTextLabel.text = cell.textLabel.text;;
+ self.fSelectedIndex = indexPath.row;
+ [self.navigationController popViewControllerAnimated:YES];
+}
+
+- (void)dealloc {
+ self.fOptions = nil;
+ self.fSelectedCell = nil;
+ [super dealloc];
+}
+
+@end
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkOptionsTableViewController.h b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkOptionsTableViewController.h
new file mode 100644
index 00000000000..13d6c1b8a47
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkOptionsTableViewController.h
@@ -0,0 +1,42 @@
+#import <UIKit/UIKit.h>
+#import "SkOptionListController.h"
+#import "SkOSMenu.h"
+#import "SkEvent.h"
+#import "SkUIView.h"
+@interface SkOptionItem : NSObject {
+ UITableViewCell* fCell;
+ const SkOSMenu::Item* fItem;
+}
+@property (nonatomic, assign) const SkOSMenu::Item* fItem;
+@property (nonatomic, retain) UITableViewCell* fCell;
+
+@end
+
+@interface SkOptionListItem : SkOptionItem{
+ SkOptionListController* fOptions;
+}
+@property (nonatomic, retain) SkOptionListController* fOptions;
+
+@end
+
+@interface SkOptionsTableViewController : UITableViewController <UINavigationControllerDelegate, SkUIViewOptionsDelegate> {
+ NSMutableArray* fItems;
+ const SkTDArray<SkOSMenu*>* fMenus;
+ SkOptionListItem* fCurrentList;
+}
+
+@property (nonatomic, retain) NSMutableArray* fItems;
+@property (nonatomic, retain) SkOptionListItem* fCurrentList;
+
+- (void)registerMenus:(const SkTDArray<SkOSMenu*>*)menus;
+- (void)updateMenu:(SkOSMenu*)menu;
+- (void)loadMenu:(SkOSMenu*)menu;
+
+- (UITableViewCell*)createAction:(NSString*)title;
+- (UITableViewCell*)createSlider:(NSString*)title min:(float)min max:(float)max default:(float)value;
+- (UITableViewCell*)createSwitch:(NSString*)title default:(BOOL)state;
+- (UITableViewCell*)createTriState:(NSString*)title default:(int)index;
+- (UITableViewCell*)createTextField:(NSString*)title default:(NSString*)value;
+- (UITableViewCell*)createList:(NSString*)title default:(NSString*)value;
+
+@end
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkOptionsTableViewController.mm b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkOptionsTableViewController.mm
new file mode 100644
index 00000000000..e6adfd0bd1f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkOptionsTableViewController.mm
@@ -0,0 +1,339 @@
+#import "SkOptionsTableViewController.h"
+#include "SkEvent.h"
+#include "SkTArray.h"
+
+@implementation SkOptionItem
+@synthesize fCell, fItem;
+- (void)dealloc {
+ [fCell release];
+ [super dealloc];
+}
+@end
+
+@implementation SkOptionListItem
+@synthesize fOptions;
+- (void)dealloc {
+ [fOptions release];
+ [super dealloc];
+}
+@end
+
+@implementation SkOptionsTableViewController
+
+@synthesize fItems, fCurrentList;
+
+- (id)initWithStyle:(UITableViewStyle)style {
+ self = [super initWithStyle:style];
+ if (self) {
+ self.fItems = [NSMutableArray array];
+ }
+ return self;
+}
+
+//SkUIViewOptionsDelegate
+- (void) view:(SkUIView*)view didAddMenu:(const SkOSMenu*)menu {}
+- (void) view:(SkUIView*)view didUpdateMenu:(SkOSMenu*)menu {
+ [self updateMenu:menu];
+}
+
+- (NSUInteger)convertPathToIndex:(NSIndexPath*)path {
+ NSUInteger index = 0;
+ for (NSInteger i = 0; i < path.section; ++i) {
+ index += (*fMenus)[i]->getCount();
+ }
+ return index + path.row;
+}
+
+- (void)registerMenus:(const SkTDArray<SkOSMenu*>*)menus {
+ fMenus = menus;
+ for (NSUInteger i = 0; i < fMenus->count(); ++i) {
+ [self loadMenu:(*fMenus)[i]];
+ }
+}
+
+- (void)updateMenu:(SkOSMenu*)menu {
+ // the first menu is always assumed to be the static, the second is
+ // repopulated every time over and over again
+ int menuIndex = fMenus->find(menu);
+ if (menuIndex >= 0 && menuIndex < fMenus->count()) {
+ NSUInteger first = 0;
+ for (NSInteger i = 0; i < menuIndex; ++i) {
+ first += (*fMenus)[i]->getCount();
+ }
+ [fItems removeObjectsInRange:NSMakeRange(first, [fItems count] - first)];
+ [self loadMenu:menu];
+ }
+ [self.tableView reloadData];
+}
+
+- (void)loadMenu:(SkOSMenu*)menu {
+ const SkOSMenu::Item* menuitems[menu->getCount()];
+ menu->getItems(menuitems);
+ for (int i = 0; i < menu->getCount(); ++i) {
+ const SkOSMenu::Item* item = menuitems[i];
+ NSString* title = [NSString stringWithUTF8String:item->getLabel()];
+
+ if (SkOSMenu::kList_Type == item->getType()) {
+ int value = 0;
+ SkOptionListItem* List = [[SkOptionListItem alloc] init];
+
+ List.fItem = item;
+ List.fOptions = [[SkOptionListController alloc] initWithStyle:UITableViewStyleGrouped];
+
+ int count = 0;
+ SkOSMenu::FindListItemCount(*item->getEvent(), &count);
+ SkTArray<SkString> options;
+ options.resize_back(count);
+ SkOSMenu::FindListItems(*item->getEvent(), &options.front());
+ for (int i = 0; i < count; ++i)
+ [List.fOptions addOption:[NSString stringWithUTF8String:options[i].c_str()]];
+ SkOSMenu::FindListIndex(*item->getEvent(), item->getSlotName(), &value);
+
+ List.fOptions.fSelectedIndex = value;
+ List.fCell = [self createList:title
+ default:[List.fOptions getSelectedOption]];
+ List.fOptions.fParentCell = List.fCell;
+ [fItems addObject:List];
+ [List release];
+ }
+ else {
+ SkOptionItem* option = [[SkOptionItem alloc] init];
+ option.fItem = item;
+
+ bool state = false;
+ SkString str;
+ SkOSMenu::TriState tristate;
+ switch (item->getType()) {
+ case SkOSMenu::kAction_Type:
+ option.fCell = [self createAction:title];
+ break;
+ case SkOSMenu::kSwitch_Type:
+ SkOSMenu::FindSwitchState(*item->getEvent(), item->getSlotName(), &state);
+ option.fCell = [self createSwitch:title default:(BOOL)state];
+ break;
+ case SkOSMenu::kSlider_Type:
+ SkScalar min, max, value;
+ SkOSMenu::FindSliderValue(*item->getEvent(), item->getSlotName(), &value);
+ SkOSMenu::FindSliderMin(*item->getEvent(), &min);
+ SkOSMenu::FindSliderMax(*item->getEvent(), &max);
+ option.fCell = [self createSlider:title
+ min:min
+ max:max
+ default:value];
+ break;
+ case SkOSMenu::kTriState_Type:
+ SkOSMenu::FindTriState(*item->getEvent(), item->getSlotName(), &tristate);
+ option.fCell = [self createTriState:title default:(int)tristate];
+ break;
+ case SkOSMenu::kTextField_Type:
+ SkOSMenu::FindText(*item->getEvent(), item->getSlotName(), &str);
+ option.fCell = [self createTextField:title
+ default:[NSString stringWithUTF8String:str.c_str()]];
+ break;
+ default:
+ break;
+ }
+ [fItems addObject:option];
+ [option release];
+ }
+ }
+}
+
+- (void)valueChanged:(id)sender {
+ UITableViewCell* cell = (UITableViewCell*)(((UIView*)sender).superview);
+ NSUInteger index = [self convertPathToIndex:[self.tableView indexPathForCell:cell]];
+ SkOptionItem* item = (SkOptionItem*)[fItems objectAtIndex:index];
+ if ([sender isKindOfClass:[UISlider class]]) {//Slider
+ UISlider* slider = (UISlider *)sender;
+ cell.detailTextLabel.text = [NSString stringWithFormat:@"%1.1f", slider.value];
+ item.fItem->setScalar(slider.value);
+ }
+ else if ([sender isKindOfClass:[UISwitch class]]) {//Switch
+ UISwitch* switch_ = (UISwitch *)sender;
+ item.fItem->setBool(switch_.on);
+ }
+ else if ([sender isKindOfClass:[UITextField class]]) { //TextField
+ UITextField* textField = (UITextField *)sender;
+ [textField resignFirstResponder];
+ item.fItem->setString([textField.text UTF8String]);
+ }
+ else if ([sender isKindOfClass:[UISegmentedControl class]]) { //Action
+ UISegmentedControl* segmented = (UISegmentedControl *)sender;
+ SkOSMenu::TriState state;
+ if (2 == segmented.selectedSegmentIndex) {
+ state = SkOSMenu::kMixedState;
+ } else {
+ state = (SkOSMenu::TriState)segmented.selectedSegmentIndex;
+ }
+ item.fItem->setTriState(state);
+ }
+ else{
+ NSLog(@"unknown");
+ }
+ item.fItem->postEvent();
+}
+
+- (UITableViewCell*)createAction:(NSString*)title {
+ UITableViewCell* cell = [[[UITableViewCell alloc]
+ initWithStyle:UITableViewCellStyleValue1
+ reuseIdentifier:nil] autorelease];
+ cell.textLabel.text = title;
+ return cell;
+}
+
+- (UITableViewCell*)createSwitch:(NSString*)title default:(BOOL)state {
+ UITableViewCell* cell = [[[UITableViewCell alloc]
+ initWithStyle:UITableViewCellStyleValue1
+ reuseIdentifier:nil] autorelease];
+ cell.textLabel.text = title;
+ cell.selectionStyle = UITableViewCellSelectionStyleNone;
+ UISwitch* switchView = [[UISwitch alloc] initWithFrame:CGRectZero];
+ [switchView setOn:state animated:NO];
+ [switchView addTarget:self
+ action:@selector(valueChanged:)
+ forControlEvents:UIControlEventValueChanged];
+ cell.accessoryView = switchView;
+ [switchView release];
+ return cell;
+}
+
+- (UITableViewCell*)createSlider:(NSString*)title
+ min:(float)min
+ max:(float)max
+ default:(float)value {
+ UITableViewCell* cell = [[[UITableViewCell alloc]
+ initWithStyle:UITableViewCellStyleValue1
+ reuseIdentifier:nil] autorelease];
+ cell.textLabel.text = title;
+ cell.selectionStyle = UITableViewCellSelectionStyleNone;
+ UISlider* sliderView = [[UISlider alloc] init];
+ sliderView.value = value;
+ sliderView.minimumValue = min;
+ sliderView.maximumValue = max;
+ [sliderView addTarget:self
+ action:@selector(valueChanged:)
+ forControlEvents:UIControlEventValueChanged];
+ cell.detailTextLabel.text = [NSString stringWithFormat:@"%1.1f", value];
+ cell.accessoryView = sliderView;
+ [sliderView release];
+ return cell;
+}
+
+- (UITableViewCell*)createTriState:(NSString*)title default:(int)index {
+ UITableViewCell* cell = [[[UITableViewCell alloc]
+ initWithStyle:UITableViewCellStyleValue1
+ reuseIdentifier:nil] autorelease];
+ cell.textLabel.text = title;
+ cell.selectionStyle = UITableViewCellSelectionStyleNone;
+ NSArray* items = [NSArray arrayWithObjects:@"Off", @"On", @"Mixed", nil];
+ UISegmentedControl* segmented = [[UISegmentedControl alloc] initWithItems:items];
+ segmented.selectedSegmentIndex = (index == -1) ? 2 : index;
+ segmented.segmentedControlStyle = UISegmentedControlStyleBar;
+ [segmented addTarget:self
+ action:@selector(valueChanged:)
+ forControlEvents:UIControlEventValueChanged];
+ cell.accessoryView = segmented;
+ [segmented release];
+ return cell;
+}
+
+- (UITableViewCell*)createTextField:(NSString*)title
+ default:(NSString*)value {
+ UITableViewCell* cell = [[[UITableViewCell alloc]
+ initWithStyle:UITableViewCellStyleValue1
+ reuseIdentifier:nil] autorelease];
+ cell.textLabel.text = title;
+ cell.selectionStyle = UITableViewCellSelectionStyleNone;
+ UITextField* textField = [[UITextField alloc]
+ initWithFrame:CGRectMake(0, 10, 150, 25)];
+ textField.adjustsFontSizeToFitWidth = YES;
+ textField.textAlignment = NSTextAlignmentRight;
+ textField.textColor = cell.detailTextLabel.textColor;
+ textField.placeholder = value;
+ textField.returnKeyType = UIReturnKeyDone;
+ [textField addTarget:self
+ action:@selector(valueChanged:)
+ forControlEvents:UIControlEventEditingDidEndOnExit];
+ cell.accessoryView = textField;
+ [textField release];
+ return cell;
+}
+
+- (UITableViewCell*)createList:(NSString*)title default:(NSString*)value{
+ UITableViewCell* cell = [[[UITableViewCell alloc]
+ initWithStyle:UITableViewCellStyleValue1
+ reuseIdentifier:nil] autorelease];
+ cell.textLabel.text = title;
+ cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
+ cell.detailTextLabel.text = value;
+ return cell;
+}
+
+#pragma mark -
+#pragma mark Table view data source
+
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
+ return fMenus->count();
+}
+
+- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
+ return [NSString stringWithUTF8String:(*fMenus)[section]->getTitle()];
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+ return (*fMenus)[section]->getCount();
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+ return ((SkOptionItem*)[fItems objectAtIndex:[self convertPathToIndex:indexPath]]).fCell;
+}
+
+#pragma mark -
+#pragma mark Table view delegate
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+ UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
+ id item = [fItems objectAtIndex:[self convertPathToIndex:indexPath]];
+
+ if ([item isKindOfClass:[SkOptionListItem class]]) {
+ SkOptionListItem* list = (SkOptionListItem*)item;
+ self.fCurrentList = list;
+ self.navigationController.delegate = self;
+ [self.navigationController pushViewController:list.fOptions animated:YES];
+ }
+ else if ([item isKindOfClass:[SkOptionItem class]]) {
+ if (UITableViewCellSelectionStyleNone != cell.selectionStyle) { //Actions
+ SkOptionItem* action = (SkOptionItem*)item;
+ action.fItem->postEvent();
+ }
+ }
+ else{
+ NSLog(@"unknown");
+ }
+
+ [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
+}
+
+#pragma mark -
+#pragma mark Navigation controller delegate
+
+- (void)navigationController:(UINavigationController *)navigationController
+ willShowViewController:(UIViewController *)viewController
+ animated:(BOOL)animated {
+ if (self == viewController) { //when a List option is popped, trigger event
+ NSString* selectedOption = [fCurrentList.fOptions getSelectedOption];
+ fCurrentList.fCell.detailTextLabel.text = selectedOption;
+ fCurrentList.fItem->setInt(fCurrentList.fOptions.fSelectedIndex);
+ fCurrentList.fItem->postEvent();
+ }
+}
+
+#pragma mark -
+#pragma mark Memory management
+
+- (void)dealloc {
+ self.fItems = nil;
+ [super dealloc];
+}
+
+@end \ No newline at end of file
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIDetailViewController.h b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIDetailViewController.h
new file mode 100644
index 00000000000..7435a9dc69f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIDetailViewController.h
@@ -0,0 +1,42 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#import <UIKit/UIKit.h>
+#import "SkOptionsTableViewController.h"
+#import "SkUIRootViewController.h"
+#import "SkUIView.h"
+
+class SampleWindow;
+class SkData;
+@interface SkUIDetailViewController : UIViewController {
+ UIPopoverController* fPopOverController;
+ SkOptionsTableViewController* fOptionsController;
+ UIBarButtonItem* fPrintButton;
+ UIBarButtonItem* fOptionsButton;
+ SkData* fData;
+ SkUIView* fSkUIView;
+ SampleWindow* fWind;
+}
+
+@property (nonatomic, retain) UIBarButtonItem* fPrintButton;
+@property (nonatomic, retain) UIBarButtonItem* fOptionsButton;
+@property (nonatomic, retain) SkOptionsTableViewController* fOptionsController;
+@property (nonatomic, assign) UIPopoverController* fPopOverController;
+
+//Instance methods
+- (void)populateRoot:(SkUIRootViewController*)root;
+- (void)goToItem:(NSUInteger)index;
+- (void)createButtons;
+//UI actions
+- (void)printContent;
+- (void)presentOptions;
+
+//SplitView popover management
+- (void)showRootPopoverButtonItem:(UIBarButtonItem *)barButtonItem;
+- (void)invalidateRootPopoverButtonItem:(UIBarButtonItem *)barButtonItem;
+
+@end
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIDetailViewController.mm b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIDetailViewController.mm
new file mode 100644
index 00000000000..7c2aef4d4fe
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIDetailViewController.mm
@@ -0,0 +1,175 @@
+#import "SkUIDetailViewController.h"
+#include "SampleApp.h"
+#include "SkCGUtils.h"
+#include "SkData.h"
+#include "SkOSMenu.h"
+@implementation SkUIDetailViewController
+@synthesize fPrintButton, fOptionsButton, fPopOverController, fOptionsController;
+
+//Overwritten from UIViewController
+- (void)viewDidLoad {
+ [super viewDidLoad];
+
+ fSkUIView = (SkUIView*)self.view;
+
+ fWind = (SampleWindow*)fSkUIView.fWind;
+ fSkUIView.fTitleItem = self.navigationItem;
+
+ [self createButtons];
+
+ UISwipeGestureRecognizer* swipe = [[UISwipeGestureRecognizer alloc]
+ initWithTarget:self
+ action:@selector(handleSwipe:)];
+ [self.navigationController.navigationBar addGestureRecognizer:swipe];
+ [swipe release];
+ swipe = [[UISwipeGestureRecognizer alloc]
+ initWithTarget:self
+ action:@selector(handleSwipe:)];
+ swipe.direction = UISwipeGestureRecognizerDirectionLeft;
+ [self.navigationController.navigationBar addGestureRecognizer:swipe];
+ [swipe release];
+
+ fOptionsController = [[SkOptionsTableViewController alloc]
+ initWithStyle:UITableViewStyleGrouped];
+ fSkUIView.fOptionsDelegate = fOptionsController;
+ [fOptionsController registerMenus:fWind->getMenus()];
+
+}
+
+- (void)createButtons {
+ UIToolbar* toolbar = [[UIToolbar alloc]
+ initWithFrame:CGRectMake(0, 0, 125, 45)];
+ [toolbar setBarStyle: UIBarStyleBlackOpaque];
+
+ UIBarButtonItem* flexibleSpace = [[UIBarButtonItem alloc]
+ initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
+ target:nil
+ action:nil];
+
+ fOptionsButton = [[UIBarButtonItem alloc]
+ initWithTitle:@"Options"
+ style:UIBarButtonItemStylePlain
+ target:self
+ action:@selector(presentOptions)];
+ UIBarButtonItem* fixedSpace = [[UIBarButtonItem alloc]
+ initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
+ target:nil
+ action:nil];
+ fixedSpace.width = 10;
+
+ fPrintButton = [[UIBarButtonItem alloc]
+ initWithBarButtonSystemItem:UIBarButtonSystemItemAction
+ target:self
+ action:@selector(printContent)];
+ fPrintButton.style = UIBarButtonItemStylePlain;
+
+ [toolbar setItems:[NSArray arrayWithObjects:flexibleSpace, fOptionsButton, fixedSpace, fPrintButton, nil]
+ animated:NO];
+
+ self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]
+ initWithCustomView:toolbar];
+ [flexibleSpace release];
+ [fixedSpace release];
+ [toolbar release];
+}
+
+- (void)handleSwipe:(UISwipeGestureRecognizer *)sender {
+ if (UISwipeGestureRecognizerDirectionRight == sender.direction)
+ fWind->previousSample();
+ else
+ fWind->nextSample();
+}
+
+- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
+ return YES; // Overriden to allow auto rotation for any direction
+}
+
+- (void)dealloc {
+ [fPrintButton release];
+ [fOptionsButton release];
+ [fPopOverController release];
+ [fOptionsController release];
+ [super dealloc];
+}
+
+//Instance Methods
+- (void)populateRoot:(SkUIRootViewController*)rootVC {
+ for (int i = 0; i < fWind->sampleCount(); ++i) {
+ [rootVC addItem:[NSString stringWithUTF8String:fWind->getSampleTitle(i).c_str()]];
+ }
+}
+
+- (void)goToItem:(NSUInteger)index {
+ fWind->goToSample(index);
+}
+
+- (void)printContent {
+ UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];
+ UIPrintInfo *printInfo = [UIPrintInfo printInfo];
+ printInfo.jobName = @"Skia iOS SampleApp";
+ printInfo.duplex = UIPrintInfoDuplexLongEdge;
+ printInfo.outputType = UIPrintInfoOutputGeneral;
+ fWind->saveToPdf();
+ [fSkUIView forceRedraw];
+ fData = fWind->getPDFData();
+ NSData* data = [NSData dataWithBytesNoCopy:(void*)fData->data() length:fData->size()];
+ controller.printInfo = printInfo;
+ controller.printingItem = data;
+ //Add ref because data pointer retains a pointer to data
+ fData->ref();
+
+ void (^SkCompletionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
+ ^(UIPrintInteractionController *pic, BOOL completed, NSError *error) {
+ fData->unref();
+ if (!completed && error)
+ NSLog(@"FAILED! due to error in domain %@ with error code %u",
+ error.domain, error.code);
+ };
+
+ if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
+ [controller presentFromBarButtonItem:fPrintButton animated:YES
+ completionHandler:SkCompletionHandler];
+ } else {
+ [controller presentAnimated:YES completionHandler:SkCompletionHandler];
+ }
+}
+
+- (void)presentOptions {
+ if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
+ if (nil == fPopOverController) {
+ UINavigationController* navigation = [[UINavigationController alloc]
+ initWithRootViewController:fOptionsController];
+ navigation.navigationBar.topItem.title = @"Options";
+ fPopOverController = [[UIPopoverController alloc] initWithContentViewController:navigation];
+ [navigation release];
+ }
+
+ if (fPopOverController.isPopoverVisible)
+ [fPopOverController dismissPopoverAnimated:YES];
+ else
+ [fPopOverController presentPopoverFromBarButtonItem:fOptionsButton
+ permittedArrowDirections:UIPopoverArrowDirectionAny
+ animated:YES];
+
+ } else {
+ UIBarButtonItem* backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back"
+ style:UIBarButtonItemStyleBordered
+ target:nil
+ action:nil];
+ self.navigationItem.backBarButtonItem = backButton;
+ [backButton release];
+ [self.navigationController pushViewController:fOptionsController animated:YES];
+ self.navigationController.navigationBar.topItem.title = @"Options";
+ }
+}
+
+//Popover Management
+- (void)showRootPopoverButtonItem:(UIBarButtonItem *)barButtonItem {
+ [self.navigationItem setLeftBarButtonItem:barButtonItem animated:NO];
+}
+
+- (void)invalidateRootPopoverButtonItem:(UIBarButtonItem *)barButtonItem {
+ [self.navigationItem setLeftBarButtonItem:nil animated:NO];
+}
+
+@end \ No newline at end of file
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIRootViewController.h b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIRootViewController.h
new file mode 100644
index 00000000000..e4deec13f95
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIRootViewController.h
@@ -0,0 +1,21 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#import <UIKit/UIKit.h>
+
+@interface SkUIRootViewController : UITableViewController <UITableViewDataSource> {
+@private
+ UIPopoverController *popoverController;
+ UIBarButtonItem *popoverButtonItem;
+ NSMutableArray* fSamples;
+}
+@property (nonatomic, retain) UIPopoverController *popoverController;
+@property (nonatomic, retain) UIBarButtonItem *popoverButtonItem;
+
+- (void)addItem:(NSString*)anItem;
+
+@end
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIRootViewController.mm b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIRootViewController.mm
new file mode 100644
index 00000000000..255a2711dd6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIRootViewController.mm
@@ -0,0 +1,61 @@
+#import "SkUIRootViewController.h"
+#import "SkUISplitViewController.h"
+@implementation SkUIRootViewController
+@synthesize popoverController, popoverButtonItem;
+
+//Overwritten from UIViewController
+- (void)viewDidLoad {
+ [super viewDidLoad];
+ self.contentSizeForViewInPopover = CGSizeMake(200, self.view.bounds.size.height);
+ fSamples = [[NSMutableArray alloc] init];
+}
+
+- (void)viewDidUnload {
+ [super viewDidUnload];
+ self.popoverButtonItem = nil;
+}
+
+- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
+ return YES;
+}
+
+- (void)dealloc {
+ [popoverController release];
+ [popoverButtonItem release];
+ [fSamples release];
+ [super dealloc];
+}
+
+
+//Table View Delegate Methods
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
+ // Return the number of sections.
+ return 1;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+ // Return the number of rows in the section.
+ return [fSamples count];
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+
+ static NSString *CellIdentifier = @"Cell";
+
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+ if (cell == nil) {
+ cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
+ reuseIdentifier:CellIdentifier] autorelease];
+ }
+
+ cell.textLabel.text = [fSamples objectAtIndex:indexPath.row];
+ return cell;
+}
+
+//Instance methods
+- (void)addItem:(NSString*)anItem {
+ [fSamples addObject:anItem];
+}
+
+@end
+
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIView.h b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIView.h
new file mode 100644
index 00000000000..45c4df0abdc
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIView.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#import <OpenGLES/EAGL.h>
+#import <OpenGLES/ES1/gl.h>
+#import <OpenGLES/ES1/glext.h>
+#import <OpenGLES/ES2/gl.h>
+#import <OpenGLES/ES2/glext.h>
+#import <QuartzCore/QuartzCore.h>
+#import <UIKit/UIKit.h>
+#include "SkOSWindow_ios.h"
+
+class SkEvent;
+@class SkUIView;
+
+@protocol SkUIViewOptionsDelegate <NSObject>
+@optional
+// Called when the view needs to handle adding an SkOSMenu
+- (void) view:(SkUIView*)view didAddMenu:(const SkOSMenu*)menu;
+- (void) view:(SkUIView*)view didUpdateMenu:(SkOSMenu*)menu;
+@end
+
+@interface SkUIView : UIView {
+ UINavigationItem* fTitleItem;
+ SkOSWindow* fWind;
+ id<SkUIViewOptionsDelegate> fOptionsDelegate;
+}
+
+@property (nonatomic, readonly) SkOSWindow *fWind;
+@property (nonatomic, retain) UINavigationItem* fTitleItem;
+@property (nonatomic, assign) id<SkUIViewOptionsDelegate> fOptionsDelegate;
+
+- (id)initWithDefaults;
+- (void)setUpWindow;
+- (void)forceRedraw;
+- (void)drawInRaster;
+
+- (void)setSkTitle:(const char*)title;
+- (void)onAddMenu:(const SkOSMenu*)menu;
+- (void)onUpdateMenu:(SkOSMenu*)menu;
+- (void)postInvalWithRect:(const SkIRect*)rectOrNil;
+- (BOOL)onHandleEvent:(const SkEvent&)event;
+- (void)getAttachmentInfo:(SkOSWindow::AttachmentInfo*)info;
+
+@end
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIView.mm b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIView.mm
new file mode 100644
index 00000000000..e2dce54a693
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/SkUIView.mm
@@ -0,0 +1,115 @@
+#import "SkUIView.h"
+#include "SkCanvas.h"
+#include "SkCGUtils.h"
+@implementation SkUIView
+
+@synthesize fWind, fTitleItem, fOptionsDelegate;
+
+- (id)initWithDefaults {
+ fWind = NULL;
+ return self;
+}
+
+- (id)initWithCoder:(NSCoder*)coder {
+ if ((self = [super initWithCoder:coder])) {
+ self = [self initWithDefaults];
+ [self setUpWindow];
+ }
+ return self;
+}
+
+- (id)initWithFrame:(CGRect)frame {
+ if (self = [super initWithFrame:frame]) {
+ self = [self initWithDefaults];
+ [self setUpWindow];
+ }
+ return self;
+}
+
+- (void)setUpWindow {
+ if (NULL != fWind) {
+ fWind->setVisibleP(true);
+ fWind->resize(self.frame.size.width, self.frame.size.height,
+ kN32_SkColorType);
+ }
+}
+
+- (void)dealloc {
+ delete fWind;
+ [fTitleItem release];
+ [super dealloc];
+}
+
+- (void)forceRedraw {
+ [self drawInRaster];
+}
+
+- (void)drawInRaster {
+ SkCanvas canvas(fWind->getBitmap());
+ fWind->draw(&canvas);
+ CGImageRef cgimage = SkCreateCGImageRef(fWind->getBitmap());
+ self.layer.contents = (id)cgimage;
+ CGImageRelease(cgimage);
+}
+
+//Gesture Handlers
+- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
+ for (UITouch *touch in touches) {
+ CGPoint loc = [touch locationInView:self];
+ fWind->handleClick(loc.x, loc.y, SkView::Click::kDown_State, touch);
+ }
+}
+
+- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
+ for (UITouch *touch in touches) {
+ CGPoint loc = [touch locationInView:self];
+ fWind->handleClick(loc.x, loc.y, SkView::Click::kMoved_State, touch);
+ }
+}
+
+- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
+ for (UITouch *touch in touches) {
+ CGPoint loc = [touch locationInView:self];
+ fWind->handleClick(loc.x, loc.y, SkView::Click::kUp_State, touch);
+ }
+}
+
+- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
+ for (UITouch *touch in touches) {
+ CGPoint loc = [touch locationInView:self];
+ fWind->handleClick(loc.x, loc.y, SkView::Click::kUp_State, touch);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+- (void)setSkTitle:(const char *)title {
+ if (fTitleItem) {
+ fTitleItem.title = [NSString stringWithUTF8String:title];
+ }
+}
+
+- (BOOL)onHandleEvent:(const SkEvent&)evt {
+ return false;
+}
+
+- (void)getAttachmentInfo:(SkOSWindow::AttachmentInfo*)info {
+ // we don't have a GL context.
+ info->fSampleCount = 0;
+ info->fStencilBits = 0;
+}
+
+#include "SkOSMenu.h"
+- (void)onAddMenu:(const SkOSMenu*)menu {
+ [self.fOptionsDelegate view:self didAddMenu:menu];
+}
+- (void)onUpdateMenu:(SkOSMenu*)menu {
+ [self.fOptionsDelegate view:self didUpdateMenu:menu];
+}
+
+- (void)postInvalWithRect:(const SkIRect*)r {
+ [self performSelector:@selector(drawInRaster) withObject:nil afterDelay:0];
+ [self setNeedsDisplay];
+}
+
+@end
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/Shared/skia_ios.mm b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/skia_ios.mm
new file mode 100644
index 00000000000..65b3e8a034c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/Shared/skia_ios.mm
@@ -0,0 +1,15 @@
+#import <UIKit/UIKit.h>
+#include "SkApplication.h"
+
+extern void save_args(int argc, char *argv[]);
+
+int main(int argc, char *argv[]) {
+ signal(SIGPIPE, SIG_IGN);
+ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
+ application_init();
+ save_args(argc, argv);
+ int retVal = UIApplicationMain(argc, argv, nil, nil);
+ application_term();
+ [pool release];
+ return retVal;
+}
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/SkSampleUIView.h b/chromium/third_party/skia/experimental/iOSSampleApp/SkSampleUIView.h
new file mode 100644
index 00000000000..a1009b84da2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/SkSampleUIView.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SampleApp.h"
+#import "SkUIView.h"
+
+class SkiOSDeviceManager;
+class SkOSWindow;
+class SkEvent;
+struct FPSState;
+
+@interface SkSampleUIView : SkUIView {
+ BOOL fRedrawRequestPending;
+
+ struct {
+ EAGLContext* fContext;
+ GLuint fRenderbuffer;
+ GLuint fStencilbuffer;
+ GLuint fFramebuffer;
+ GLint fWidth;
+ GLint fHeight;
+ } fGL;
+
+ NSString* fTitle;
+ CALayer* fRasterLayer;
+ CAEAGLLayer* fGLLayer;
+
+ FPSState* fFPSState;
+ SkiOSDeviceManager* fDevManager;
+}
+
+@property (nonatomic, copy) NSString* fTitle;
+@property (nonatomic, retain) CALayer* fRasterLayer;
+@property (nonatomic, retain) CAEAGLLayer* fGLLayer;
+
+- (id)initWithDefaults;
+- (void)drawInRaster;
+- (void)forceRedraw;
+
+- (void)setSkTitle:(const char*)title;
+- (void)postInvalWithRect:(const SkIRect*)rectOrNil;
+- (void)getAttachmentInfo:(SkOSWindow::AttachmentInfo*)info;
+
+@end
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/SkSampleUIView.mm b/chromium/third_party/skia/experimental/iOSSampleApp/SkSampleUIView.mm
new file mode 100644
index 00000000000..a9defbe610f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/SkSampleUIView.mm
@@ -0,0 +1,494 @@
+#import "SkSampleUIView.h"
+
+#define SKGL_CONFIG kEAGLColorFormatRGB565
+//#define SKGL_CONFIG kEAGLColorFormatRGBA8
+
+#define FORCE_REDRAW
+
+#include "SkCanvas.h"
+#include "SkCGUtils.h"
+#include "SampleApp.h"
+
+#if SK_SUPPORT_GPU
+//#define USE_GL_1
+#define USE_GL_2
+
+#include "gl/GrGLInterface.h"
+#include "GrContext.h"
+#include "SkGpuDevice.h"
+#endif
+
+class SkiOSDeviceManager : public SampleWindow::DeviceManager {
+public:
+ SkiOSDeviceManager(GLint layerFBO) {
+#if SK_SUPPORT_GPU
+ fCurContext = NULL;
+ fCurIntf = NULL;
+ fCurRenderTarget = NULL;
+ fMSAASampleCount = 0;
+ fLayerFBO = layerFBO;
+#endif
+ fBackend = SkOSWindow::kNone_BackEndType;
+ }
+
+ virtual ~SkiOSDeviceManager() {
+#if SK_SUPPORT_GPU
+ SkSafeUnref(fCurContext);
+ SkSafeUnref(fCurIntf);
+ SkSafeUnref(fCurRenderTarget);
+#endif
+ }
+
+ virtual void setUpBackend(SampleWindow* win, int msaaSampleCount) SK_OVERRIDE {
+ SkASSERT(SkOSWindow::kNone_BackEndType == fBackend);
+
+ fBackend = SkOSWindow::kNone_BackEndType;
+
+#if SK_SUPPORT_GPU
+ switch (win->getDeviceType()) {
+ // these two don't use GL
+ case SampleWindow::kRaster_DeviceType:
+ case SampleWindow::kPicture_DeviceType:
+ break;
+ // these guys use the native backend
+ case SampleWindow::kGPU_DeviceType:
+ case SampleWindow::kNullGPU_DeviceType:
+ fBackend = SkOSWindow::kNativeGL_BackEndType;
+ break;
+ default:
+ SkASSERT(false);
+ break;
+ }
+ SkOSWindow::AttachmentInfo info;
+ bool result = win->attach(fBackend, msaaSampleCount, &info);
+ if (!result) {
+ SkDebugf("Failed to initialize GL");
+ return;
+ }
+ fMSAASampleCount = msaaSampleCount;
+
+ SkASSERT(NULL == fCurIntf);
+ switch (win->getDeviceType()) {
+ // these two don't use GL
+ case SampleWindow::kRaster_DeviceType:
+ case SampleWindow::kPicture_DeviceType:
+ fCurIntf = NULL;
+ break;
+ case SampleWindow::kGPU_DeviceType:
+ fCurIntf = GrGLCreateNativeInterface();
+ break;
+ case SampleWindow::kNullGPU_DeviceType:
+ fCurIntf = GrGLCreateNullInterface();
+ break;
+ default:
+ SkASSERT(false);
+ break;
+ }
+
+ SkASSERT(NULL == fCurContext);
+ if (SkOSWindow::kNone_BackEndType != fBackend) {
+ fCurContext = GrContext::Create(kOpenGL_GrBackend,
+ (GrBackendContext) fCurIntf);
+ }
+
+ if ((NULL == fCurContext || NULL == fCurIntf) &&
+ SkOSWindow::kNone_BackEndType != fBackend) {
+ // We need some context and interface to see results if we're using a GL backend
+ SkSafeUnref(fCurContext);
+ SkSafeUnref(fCurIntf);
+ SkDebugf("Failed to setup 3D");
+ win->detach();
+ }
+#endif // SK_SUPPORT_GPU
+ // call windowSizeChanged to create the render target
+ this->windowSizeChanged(win);
+ }
+
+ virtual void tearDownBackend(SampleWindow *win) SK_OVERRIDE {
+#if SK_SUPPORT_GPU
+ SkSafeUnref(fCurContext);
+ fCurContext = NULL;
+
+ SkSafeUnref(fCurIntf);
+ fCurIntf = NULL;
+
+ SkSafeUnref(fCurRenderTarget);
+ fCurRenderTarget = NULL;
+#endif
+ win->detach();
+ fBackend = SampleWindow::kNone_BackEndType;
+ }
+
+ virtual SkCanvas* createCanvas(SampleWindow::DeviceType dType,
+ SampleWindow* win) {
+ switch (dType) {
+ case SampleWindow::kRaster_DeviceType:
+ // fallthrough
+ case SampleWindow::kPicture_DeviceType:
+ // fallthrough
+#if SK_ANGLE
+ case SampleWindow::kANGLE_DeviceType:
+#endif
+ break;
+#if SK_SUPPORT_GPU
+ case SampleWindow::kGPU_DeviceType:
+ case SampleWindow::kNullGPU_DeviceType:
+ if (fCurContext) {
+ SkAutoTUnref<SkBaseDevice> device(new SkGpuDevice(fCurContext,
+ fCurRenderTarget));
+ return new SkCanvas(device);
+ } else {
+ return NULL;
+ }
+ break;
+#endif
+ default:
+ SkASSERT(false);
+ return NULL;
+ }
+ return NULL;
+ }
+
+ virtual void publishCanvas(SampleWindow::DeviceType dType,
+ SkCanvas* canvas,
+ SampleWindow* win) SK_OVERRIDE {
+#if SK_SUPPORT_GPU
+ if (NULL != fCurContext) {
+ fCurContext->flush();
+ }
+#endif
+ win->present();
+ }
+
+ virtual void windowSizeChanged(SampleWindow* win) SK_OVERRIDE {
+#if SK_SUPPORT_GPU
+ if (NULL != fCurContext) {
+ SkOSWindow::AttachmentInfo info;
+
+ win->attach(fBackend, fMSAASampleCount, &info);
+
+ glBindFramebuffer(GL_FRAMEBUFFER, fLayerFBO);
+ GrBackendRenderTargetDesc desc;
+ desc.fWidth = SkScalarRoundToInt(win->width());
+ desc.fHeight = SkScalarRoundToInt(win->height());
+ desc.fConfig = kSkia8888_GrPixelConfig;
+ desc.fRenderTargetHandle = fLayerFBO;
+ desc.fSampleCnt = info.fSampleCount;
+ desc.fStencilBits = info.fStencilBits;
+
+ SkSafeUnref(fCurRenderTarget);
+ fCurRenderTarget = fCurContext->wrapBackendRenderTarget(desc);
+ }
+#endif
+ }
+
+ virtual GrContext* getGrContext() SK_OVERRIDE {
+#if SK_SUPPORT_GPU
+ return fCurContext;
+#else
+ return NULL;
+#endif
+ }
+
+ virtual GrRenderTarget* getGrRenderTarget() SK_OVERRIDE {
+#if SK_SUPPORT_GPU
+ return fCurRenderTarget;
+#else
+ return NULL;
+#endif
+ }
+
+ bool isUsingGL() const { return SkOSWindow::kNone_BackEndType != fBackend; }
+
+private:
+
+#if SK_SUPPORT_GPU
+ GrContext* fCurContext;
+ const GrGLInterface* fCurIntf;
+ GrRenderTarget* fCurRenderTarget;
+ int fMSAASampleCount;
+ GLint fLayerFBO;
+#endif
+
+ SkOSWindow::SkBackEndTypes fBackend;
+
+ typedef SampleWindow::DeviceManager INHERITED;
+};
+
+////////////////////////////////////////////////////////////////////////////////
+@implementation SkSampleUIView
+
+@synthesize fTitle, fRasterLayer, fGLLayer;
+
+#include "SkApplication.h"
+#include "SkEvent.h"
+#include "SkWindow.h"
+
+struct FPSState {
+ static const int FRAME_COUNT = 60;
+
+ CFTimeInterval fNow0, fNow1;
+ CFTimeInterval fTime0, fTime1, fTotalTime;
+ int fFrameCounter;
+ SkString str;
+ FPSState() {
+ fTime0 = fTime1 = fTotalTime = 0;
+ fFrameCounter = 0;
+ }
+
+ void startDraw() {
+ fNow0 = CACurrentMediaTime();
+ }
+
+ void endDraw() {
+ fNow1 = CACurrentMediaTime();
+ }
+
+ void flush(SkOSWindow* hwnd) {
+ CFTimeInterval now2 = CACurrentMediaTime();
+
+ fTime0 += fNow1 - fNow0;
+ fTime1 += now2 - fNow1;
+
+ if (++fFrameCounter == FRAME_COUNT) {
+ CFTimeInterval totalNow = CACurrentMediaTime();
+ fTotalTime = totalNow - fTotalTime;
+
+ //SkMSec ms0 = (int)(1000 * fTime0 / FRAME_COUNT);
+ //SkMSec msTotal = (int)(1000 * fTotalTime / FRAME_COUNT);
+ //str.printf(" ms: %d [%d], fps: %3.1f", msTotal, ms0,
+ // FRAME_COUNT / fTotalTime);
+ str.printf(" fps:%3.1f", FRAME_COUNT / fTotalTime);
+ hwnd->setTitle(NULL);
+ fTotalTime = totalNow;
+ fTime0 = fTime1 = 0;
+ fFrameCounter = 0;
+ }
+ }
+};
+
+static FPSState gFPS;
+
+#define FPS_StartDraw() gFPS.startDraw()
+#define FPS_EndDraw() gFPS.endDraw()
+#define FPS_Flush(wind) gFPS.flush(wind)
+
+///////////////////////////////////////////////////////////////////////////////
+
+- (id)initWithDefaults {
+ if (self = [super initWithDefaults]) {
+ fRedrawRequestPending = false;
+ fFPSState = new FPSState;
+
+#ifdef USE_GL_1
+ fGL.fContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];
+#else
+ fGL.fContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
+#endif
+
+ if (!fGL.fContext || ![EAGLContext setCurrentContext:fGL.fContext])
+ {
+ [self release];
+ return nil;
+ }
+
+ // Create default framebuffer object. The backing will be allocated for the current layer in -resizeFromLayer
+ glGenFramebuffers(1, &fGL.fFramebuffer);
+ glBindFramebuffer(GL_FRAMEBUFFER, fGL.fFramebuffer);
+
+ glGenRenderbuffers(1, &fGL.fRenderbuffer);
+ glGenRenderbuffers(1, &fGL.fStencilbuffer);
+
+ glBindRenderbuffer(GL_RENDERBUFFER, fGL.fRenderbuffer);
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, fGL.fRenderbuffer);
+
+ glBindRenderbuffer(GL_RENDERBUFFER, fGL.fStencilbuffer);
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, fGL.fStencilbuffer);
+
+ self.fGLLayer = [CAEAGLLayer layer];
+ fGLLayer.bounds = self.bounds;
+ fGLLayer.anchorPoint = CGPointMake(0, 0);
+ fGLLayer.opaque = TRUE;
+ [self.layer addSublayer:fGLLayer];
+ fGLLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithBool:NO],
+ kEAGLDrawablePropertyRetainedBacking,
+ SKGL_CONFIG,
+ kEAGLDrawablePropertyColorFormat,
+ nil];
+
+ self.fRasterLayer = [CALayer layer];
+ fRasterLayer.anchorPoint = CGPointMake(0, 0);
+ fRasterLayer.opaque = TRUE;
+ [self.layer addSublayer:fRasterLayer];
+
+ NSMutableDictionary *newActions = [[NSMutableDictionary alloc] initWithObjectsAndKeys:[NSNull null], @"onOrderIn",
+ [NSNull null], @"onOrderOut",
+ [NSNull null], @"sublayers",
+ [NSNull null], @"contents",
+ [NSNull null], @"bounds",
+ nil];
+ fGLLayer.actions = newActions;
+ fRasterLayer.actions = newActions;
+ [newActions release];
+
+ fDevManager = new SkiOSDeviceManager(fGL.fFramebuffer);
+ static char* kDummyArgv = const_cast<char*>("dummyExecutableName");
+ fWind = new SampleWindow(self, 1, &kDummyArgv, fDevManager);
+
+ fWind->resize(self.frame.size.width, self.frame.size.height,
+ kN32_SkColorType);
+ }
+ return self;
+}
+
+- (void)dealloc {
+ delete fDevManager;
+ delete fFPSState;
+ self.fRasterLayer = nil;
+ self.fGLLayer = nil;
+ [fGL.fContext release];
+ [super dealloc];
+}
+
+- (void)layoutSubviews {
+ int W, H;
+
+ // Allocate color buffer backing based on the current layer size
+ glBindRenderbuffer(GL_RENDERBUFFER, fGL.fRenderbuffer);
+ [fGL.fContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:fGLLayer];
+
+ glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &fGL.fWidth);
+ glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &fGL.fHeight);
+
+ glBindRenderbuffer(GL_RENDERBUFFER, fGL.fStencilbuffer);
+ glRenderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX8, fGL.fWidth, fGL.fHeight);
+
+ if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
+ NSLog(@"Failed to make complete framebuffer object %x", glCheckFramebufferStatus(GL_FRAMEBUFFER));
+ }
+
+ if (fDevManager->isUsingGL()) {
+ W = fGL.fWidth;
+ H = fGL.fHeight;
+ CGRect rect = CGRectMake(0, 0, W, H);
+ fGLLayer.bounds = rect;
+ }
+ else {
+ CGRect rect = self.bounds;
+ W = (int)CGRectGetWidth(rect);
+ H = (int)CGRectGetHeight(rect);
+ fRasterLayer.bounds = rect;
+ }
+
+ printf("---- layoutSubviews %d %d\n", W, H);
+ fWind->resize(W, H);
+ fWind->inval(NULL);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+- (void)drawWithCanvas:(SkCanvas*)canvas {
+ fRedrawRequestPending = false;
+ fFPSState->startDraw();
+ fWind->draw(canvas);
+ fFPSState->endDraw();
+#ifdef FORCE_REDRAW
+ fWind->inval(NULL);
+#endif
+ fFPSState->flush(fWind);
+}
+
+- (void)drawInGL {
+ // This application only creates a single context which is already set current at this point.
+ // This call is redundant, but needed if dealing with multiple contexts.
+ [EAGLContext setCurrentContext:fGL.fContext];
+
+ // This application only creates a single default framebuffer which is already bound at this point.
+ // This call is redundant, but needed if dealing with multiple framebuffers.
+ glBindFramebuffer(GL_FRAMEBUFFER, fGL.fFramebuffer);
+
+ GLint scissorEnable;
+ glGetIntegerv(GL_SCISSOR_TEST, &scissorEnable);
+ glDisable(GL_SCISSOR_TEST);
+ glClearColor(0,0,0,0);
+ glClear(GL_COLOR_BUFFER_BIT);
+ if (scissorEnable) {
+ glEnable(GL_SCISSOR_TEST);
+ }
+ glViewport(0, 0, fGL.fWidth, fGL.fHeight);
+
+
+ SkAutoTUnref<SkCanvas> canvas(fWind->createCanvas());
+ // if we're not "retained", then we have to always redraw everything.
+ // This call forces us to ignore the fDirtyRgn, and draw everywhere.
+ // If we are "retained", we can skip this call (as the raster case does)
+ fWind->forceInvalAll();
+
+ [self drawWithCanvas:canvas];
+
+ // This application only creates a single color renderbuffer which is already bound at this point.
+ // This call is redundant, but needed if dealing with multiple renderbuffers.
+ glBindRenderbuffer(GL_RENDERBUFFER, fGL.fRenderbuffer);
+ [fGL.fContext presentRenderbuffer:GL_RENDERBUFFER];
+
+}
+
+- (void)drawInRaster {
+ SkAutoTUnref<SkCanvas> canvas(fWind->createCanvas());
+ [self drawWithCanvas:canvas];
+ CGImageRef cgimage = SkCreateCGImageRef(fWind->getBitmap());
+ fRasterLayer.contents = (id)cgimage;
+ CGImageRelease(cgimage);
+}
+
+- (void)forceRedraw {
+ if (fDevManager->isUsingGL())
+ [self drawInGL];
+ else
+ [self drawInRaster];
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+- (void)setSkTitle:(const char *)title {
+ NSString* text = [NSString stringWithUTF8String:title];
+ if ([text length] > 0)
+ self.fTitle = text;
+
+ if (fTitleItem && fTitle) {
+ fTitleItem.title = [NSString stringWithFormat:@"%@%@", fTitle,
+ [NSString stringWithUTF8String:fFPSState->str.c_str()]];
+ }
+}
+
+- (void)postInvalWithRect:(const SkIRect*)r {
+ if (!fRedrawRequestPending) {
+ fRedrawRequestPending = true;
+ bool gl = fDevManager->isUsingGL();
+ [CATransaction begin];
+ [CATransaction setAnimationDuration:0];
+ fRasterLayer.hidden = gl;
+ fGLLayer.hidden = !gl;
+ [CATransaction commit];
+ if (gl) {
+ [self performSelector:@selector(drawInGL) withObject:nil afterDelay:0];
+ }
+ else {
+ [self performSelector:@selector(drawInRaster) withObject:nil afterDelay:0];
+ [self setNeedsDisplay];
+ }
+ }
+}
+
+- (void)getAttachmentInfo:(SkOSWindow::AttachmentInfo*)info {
+ glBindRenderbuffer(GL_RENDERBUFFER, fGL.fRenderbuffer);
+ glGetRenderbufferParameteriv(GL_RENDERBUFFER,
+ GL_RENDERBUFFER_STENCIL_SIZE,
+ &info->fStencilBits);
+ glGetRenderbufferParameteriv(GL_RENDERBUFFER,
+ GL_RENDERBUFFER_SAMPLES_APPLE,
+ &info->fSampleCount);
+}
+
+@end
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/SkiOSSampleApp-Base.xcconfig b/chromium/third_party/skia/experimental/iOSSampleApp/SkiOSSampleApp-Base.xcconfig
new file mode 100644
index 00000000000..a219e728563
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/SkiOSSampleApp-Base.xcconfig
@@ -0,0 +1,17 @@
+//
+// SkiOSSampleApp-Base.xcconfig
+// iOSSampleApp
+//
+// Created by Yang Su on 6/30/11.
+// Copyright 2011 Google Inc.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+ARCHS=armv6 armv7
+IPHONEOS_DEPLOYMENT_TARGET=4.2
+SDKROOT=iphoneos
+TARGETED_DEVICE_FAMILY=1,2
+
+USER_HEADER_SEARCH_PATHS=../../gpu/include/** ../../include/**
+CODE_SIGN_IDENTITY=iPhone Developer
+
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/SkiOSSampleApp-Debug.xcconfig b/chromium/third_party/skia/experimental/iOSSampleApp/SkiOSSampleApp-Debug.xcconfig
new file mode 100644
index 00000000000..eafd949235a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/SkiOSSampleApp-Debug.xcconfig
@@ -0,0 +1,13 @@
+//
+// SkiOSSampleApp.xcconfig
+// iOSSampleApp
+//
+// Created by Yang Su on 6/30/11.
+// Copyright 2011 Google Inc.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+#include "SkiOSSampleApp-Base"
+
+GCC_PREPROCESSOR_DEFINITIONS=SK_DEBUG SK_BUILD_FOR_IOS
+GCC_OPTIMIZATION_LEVEL=0
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/SkiOSSampleApp-Release.xcconfig b/chromium/third_party/skia/experimental/iOSSampleApp/SkiOSSampleApp-Release.xcconfig
new file mode 100644
index 00000000000..1720318823a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/SkiOSSampleApp-Release.xcconfig
@@ -0,0 +1,12 @@
+//
+// SkiOSSampleApp-Release.xcconfig
+// iOSSampleApp
+//
+// Created by Yang Su on 6/30/11.
+// Copyright 2011 Google Inc.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+#include "SkiOSSampleApp-Base"
+GCC_PREPROCESSOR_DEFINITIONS=SK_RELEASE SK_BUILD_FOR_IOS
+GCC_OPTIMIZATION_LEVEL=s
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/iOSSampleApp-Info.plist b/chromium/third_party/skia/experimental/iOSSampleApp/iOSSampleApp-Info.plist
new file mode 100644
index 00000000000..47a923f82ca
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/iOSSampleApp-Info.plist
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleDisplayName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>com.google.SkiaSampleApp</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>LSRequiresIPhoneOS</key>
+ <true/>
+ <key>NSMainNibFile</key>
+ <string>MainWindow_iPhone</string>
+ <key>NSMainNibFile~ipad</key>
+ <string>MainWindow_iPad</string>
+ <key>UISupportedInterfaceOrientations</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ </array>
+ <key>UISupportedInterfaceOrientations~ipad</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationPortraitUpsideDown</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+</dict>
+</plist>
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/iOSSampleApp.xcodeproj/project.pbxproj b/chromium/third_party/skia/experimental/iOSSampleApp/iOSSampleApp.xcodeproj/project.pbxproj
new file mode 100755
index 00000000000..b0016f8ad98
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/iOSSampleApp.xcodeproj/project.pbxproj
@@ -0,0 +1,3487 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
+ 2605F44213F18B1B0044A072 /* DebuggerContentView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2605F43C13F18B1B0044A072 /* DebuggerContentView.cpp */; };
+ 2605F44313F18B1B0044A072 /* DebuggerCommandsView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2605F43E13F18B1B0044A072 /* DebuggerCommandsView.cpp */; };
+ 2605F44413F18B1B0044A072 /* SkDebugDumper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2605F43F13F18B1B0044A072 /* SkDebugDumper.cpp */; };
+ 2605F44513F18B1B0044A072 /* DebuggerStateView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2605F44113F18B1B0044A072 /* DebuggerStateView.cpp */; };
+ 2605F65D13F19D1D0044A072 /* SamplePicture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E005913B11F5B0064D447 /* SamplePicture.cpp */; };
+ 2605F66513F19EB80044A072 /* GrStencilBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2605F66413F19EB80044A072 /* GrStencilBuffer.cpp */; };
+ 2605F83013F1AE4B0044A072 /* xfermodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E002213B11F5B0064D447 /* xfermodes.cpp */; };
+ 2605F83113F1AE4C0044A072 /* tilemodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E002113B11F5B0064D447 /* tilemodes.cpp */; };
+ 2605F83213F1AE4C0044A072 /* shapes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E002013B11F5B0064D447 /* shapes.cpp */; };
+ 2605F83313F1AE4D0044A072 /* shadows.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E001F13B11F5B0064D447 /* shadows.cpp */; };
+ 2605F83413F1AE4D0044A072 /* shadertext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E001E13B11F5B0064D447 /* shadertext.cpp */; };
+ 2605F83513F1AE4E0044A072 /* poly2poly.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E001D13B11F5B0064D447 /* poly2poly.cpp */; };
+ 2605F83613F1AE4F0044A072 /* nocolorbleed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E001B13B11F5B0064D447 /* nocolorbleed.cpp */; };
+ 2605F83713F1AE500044A072 /* points.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E001C13B11F5B0064D447 /* points.cpp */; };
+ 2605F83813F1AE500044A072 /* gradients.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E001A13B11F5B0064D447 /* gradients.cpp */; };
+ 2605F83913F1AE510044A072 /* filltypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E001813B11F5B0064D447 /* filltypes.cpp */; };
+ 2605F83A13F1AE520044A072 /* complexclip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E001713B11F5B0064D447 /* complexclip.cpp */; };
+ 2605F83B13F1AE520044A072 /* blurs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E001613B11F5B0064D447 /* blurs.cpp */; };
+ 2605F83C13F1AE530044A072 /* bitmapfilters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E001513B11F5B0064D447 /* bitmapfilters.cpp */; };
+ 260E00E313B11F5B0064D447 /* OverView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E002513B11F5B0064D447 /* OverView.cpp */; };
+ 260E00E813B11F5B0064D447 /* SampleArc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E002A13B11F5B0064D447 /* SampleArc.cpp */; };
+ 260E00E913B11F5B0064D447 /* SampleAvoid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E002B13B11F5B0064D447 /* SampleAvoid.cpp */; };
+ 260E00EC13B11F5B0064D447 /* SampleBlur.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E002E13B11F5B0064D447 /* SampleBlur.cpp */; };
+ 260E00EE13B11F5B0064D447 /* SampleCircle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E003013B11F5B0064D447 /* SampleCircle.cpp */; };
+ 260E00F013B11F5B0064D447 /* SampleComplexClip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E003313B11F5B0064D447 /* SampleComplexClip.cpp */; };
+ 260E00F213B11F5B0064D447 /* SampleCull.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E003513B11F5B0064D447 /* SampleCull.cpp */; };
+ 260E00FB13B11F5B0064D447 /* SampleFillType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E003E13B11F5B0064D447 /* SampleFillType.cpp */; };
+ 260E010613B11F5B0064D447 /* SampleLCD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E004913B11F5B0064D447 /* SampleLCD.cpp */; };
+ 260E011313B11F5B0064D447 /* SamplePath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E005613B11F5B0064D447 /* SamplePath.cpp */; };
+ 260E011413B11F5B0064D447 /* SamplePathClip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E005713B11F5B0064D447 /* SamplePathClip.cpp */; };
+ 260E011513B11F5B0064D447 /* SamplePathEffects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E005813B11F5B0064D447 /* SamplePathEffects.cpp */; };
+ 260E011713B11F5B0064D447 /* SamplePoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E005A13B11F5B0064D447 /* SamplePoints.cpp */; };
+ 260E011813B11F5B0064D447 /* SamplePolyToPoly.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E005B13B11F5B0064D447 /* SamplePolyToPoly.cpp */; };
+ 260E011913B11F5B0064D447 /* SampleRegion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E005C13B11F5B0064D447 /* SampleRegion.cpp */; };
+ 260E011D13B11F5B0064D447 /* SampleShapes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E006013B11F5B0064D447 /* SampleShapes.cpp */; };
+ 260E011F13B11F5B0064D447 /* SampleSlides.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E006213B11F5B0064D447 /* SampleSlides.cpp */; };
+ 260E012313B11F5B0064D447 /* SampleText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E006613B11F5B0064D447 /* SampleText.cpp */; };
+ 260E012413B11F5B0064D447 /* SampleTextAlpha.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E006713B11F5B0064D447 /* SampleTextAlpha.cpp */; };
+ 260E012513B11F5B0064D447 /* SampleTextBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E006813B11F5B0064D447 /* SampleTextBox.cpp */; };
+ 260E012613B11F5B0064D447 /* SampleTextEffects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E006913B11F5B0064D447 /* SampleTextEffects.cpp */; };
+ 260E012713B11F5B0064D447 /* SampleTextOnPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E006A13B11F5B0064D447 /* SampleTextOnPath.cpp */; };
+ 260E012B13B11F5B0064D447 /* SampleTriangles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E006E13B11F5B0064D447 /* SampleTriangles.cpp */; };
+ 260E012C13B11F5B0064D447 /* SampleTypeface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E006F13B11F5B0064D447 /* SampleTypeface.cpp */; };
+ 260E012D13B11F5B0064D447 /* SampleUnitMapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E007013B11F5B0064D447 /* SampleUnitMapper.cpp */; };
+ 260E012E13B11F5B0064D447 /* SampleVertices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E007113B11F5B0064D447 /* SampleVertices.cpp */; };
+ 260E013113B11F5B0064D447 /* SkGPipeRead.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E007513B11F5B0064D447 /* SkGPipeRead.cpp */; };
+ 260E013213B11F5B0064D447 /* SkGPipeWrite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E007613B11F5B0064D447 /* SkGPipeWrite.cpp */; };
+ 260E02A213B1225D0064D447 /* Sk64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E020C13B1225D0064D447 /* Sk64.cpp */; };
+ 260E02A313B1225D0064D447 /* SkAdvancedTypefaceMetrics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E020D13B1225D0064D447 /* SkAdvancedTypefaceMetrics.cpp */; };
+ 260E02A413B1225D0064D447 /* SkAlphaRuns.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E020E13B1225D0064D447 /* SkAlphaRuns.cpp */; };
+ 260E02A513B1225D0064D447 /* SkBitmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E021013B1225D0064D447 /* SkBitmap.cpp */; };
+ 260E02A613B1225D0064D447 /* SkBitmapProcShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E021113B1225D0064D447 /* SkBitmapProcShader.cpp */; };
+ 260E02A713B1225D0064D447 /* SkBitmapProcState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E021313B1225D0064D447 /* SkBitmapProcState.cpp */; };
+ 260E02A813B1225D0064D447 /* SkBitmapProcState_matrixProcs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E021613B1225D0064D447 /* SkBitmapProcState_matrixProcs.cpp */; };
+ 260E02A913B1225D0064D447 /* SkBitmapSampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E021813B1225D0064D447 /* SkBitmapSampler.cpp */; };
+ 260E02AA13B1225D0064D447 /* SkBitmap_scroll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E021D13B1225D0064D447 /* SkBitmap_scroll.cpp */; };
+ 260E02AD13B1225D0064D447 /* SkBlitRow_D4444.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E022113B1225D0064D447 /* SkBlitRow_D4444.cpp */; };
+ 260E02AE13B1225D0064D447 /* SkBlitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E022213B1225D0064D447 /* SkBlitter.cpp */; };
+ 260E02B513B1225D0064D447 /* SkBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E022913B1225D0064D447 /* SkBuffer.cpp */; };
+ 260E02B613B1225D0064D447 /* SkCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E022A13B1225D0064D447 /* SkCanvas.cpp */; };
+ 260E02B713B1225D0064D447 /* SkChunkAlloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E022B13B1225D0064D447 /* SkChunkAlloc.cpp */; };
+ 260E02B813B1225D0064D447 /* SkClampRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E022C13B1225D0064D447 /* SkClampRange.cpp */; };
+ 260E02B913B1225D0064D447 /* SkClipStack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E022D13B1225D0064D447 /* SkClipStack.cpp */; };
+ 260E02BA13B1225D0064D447 /* SkColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E022E13B1225D0064D447 /* SkColor.cpp */; };
+ 260E02BB13B1225D0064D447 /* SkColorFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E022F13B1225D0064D447 /* SkColorFilter.cpp */; };
+ 260E02BC13B1225D0064D447 /* SkColorTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E023013B1225D0064D447 /* SkColorTable.cpp */; };
+ 260E02BD13B1225D0064D447 /* SkComposeShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E023113B1225D0064D447 /* SkComposeShader.cpp */; };
+ 260E02BE13B1225D0064D447 /* SkConcaveToTriangles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E023213B1225D0064D447 /* SkConcaveToTriangles.cpp */; };
+ 260E02BF13B1225D0064D447 /* SkCordic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E023413B1225D0064D447 /* SkCordic.cpp */; };
+ 260E02C013B1225D0064D447 /* SkCubicClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E023713B1225D0064D447 /* SkCubicClipper.cpp */; };
+ 260E02C213B1225D0064D447 /* SkDebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E023A13B1225D0064D447 /* SkDebug.cpp */; };
+ 260E02C313B1225D0064D447 /* SkDeque.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E023B13B1225D0064D447 /* SkDeque.cpp */; };
+ 260E02C413B1225D0064D447 /* SkDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E023C13B1225D0064D447 /* SkDevice.cpp */; };
+ 260E02C513B1225D0064D447 /* SkDither.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E023D13B1225D0064D447 /* SkDither.cpp */; };
+ 260E02C613B1225D0064D447 /* SkDraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E023E13B1225D0064D447 /* SkDraw.cpp */; };
+ 260E02C713B1225D0064D447 /* SkEdge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E024013B1225D0064D447 /* SkEdge.cpp */; };
+ 260E02C813B1225D0064D447 /* SkEdgeBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E024213B1225D0064D447 /* SkEdgeBuilder.cpp */; };
+ 260E02C913B1225D0064D447 /* SkEdgeClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E024313B1225D0064D447 /* SkEdgeClipper.cpp */; };
+ 260E02CA13B1225D0064D447 /* SkFilterProc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E024513B1225D0064D447 /* SkFilterProc.cpp */; };
+ 260E02CB13B1225D0064D447 /* SkFlate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E024713B1225D0064D447 /* SkFlate.cpp */; };
+ 260E02CC13B1225D0064D447 /* SkFlattenable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E024813B1225D0064D447 /* SkFlattenable.cpp */; };
+ 260E02CD13B1225D0064D447 /* SkFloat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E024913B1225D0064D447 /* SkFloat.cpp */; };
+ 260E02CE13B1225D0064D447 /* SkFloatBits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E024B13B1225D0064D447 /* SkFloatBits.cpp */; };
+ 260E02CF13B1225D0064D447 /* SkFontHost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E024C13B1225D0064D447 /* SkFontHost.cpp */; };
+ 260E02D013B1225D0064D447 /* SkGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E024D13B1225D0064D447 /* SkGeometry.cpp */; };
+ 260E02D113B1225D0064D447 /* SkGlobals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E024E13B1225D0064D447 /* SkGlobals.cpp */; };
+ 260E02D213B1225D0064D447 /* SkGlyphCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E024F13B1225D0064D447 /* SkGlyphCache.cpp */; };
+ 260E02D313B1225D0064D447 /* SkGraphics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E025113B1225D0064D447 /* SkGraphics.cpp */; };
+ 260E02D413B1225D0064D447 /* SkLineClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E025213B1225D0064D447 /* SkLineClipper.cpp */; };
+ 260E02D513B1225D0064D447 /* SkMMapStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E025313B1225D0064D447 /* SkMMapStream.cpp */; };
+ 260E02D613B1225D0064D447 /* SkMallocPixelRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E025413B1225D0064D447 /* SkMallocPixelRef.cpp */; };
+ 260E02D713B1225D0064D447 /* SkMask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E025513B1225D0064D447 /* SkMask.cpp */; };
+ 260E02D813B1225D0064D447 /* SkMaskFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E025613B1225D0064D447 /* SkMaskFilter.cpp */; };
+ 260E02D913B1225D0064D447 /* SkMath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E025713B1225D0064D447 /* SkMath.cpp */; };
+ 260E02DA13B1225D0064D447 /* SkMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E025813B1225D0064D447 /* SkMatrix.cpp */; };
+ 260E02DB13B1225D0064D447 /* SkMetaData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E025913B1225D0064D447 /* SkMetaData.cpp */; };
+ 260E02DC13B1225D0064D447 /* SkPackBits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E025A13B1225D0064D447 /* SkPackBits.cpp */; };
+ 260E02DD13B1225D0064D447 /* SkPaint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E025B13B1225D0064D447 /* SkPaint.cpp */; };
+ 260E02DE13B1225D0064D447 /* SkPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E025C13B1225D0064D447 /* SkPath.cpp */; };
+ 260E02DF13B1225D0064D447 /* SkPathEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E025D13B1225D0064D447 /* SkPathEffect.cpp */; };
+ 260E02E013B1225D0064D447 /* SkPathHeap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E025E13B1225D0064D447 /* SkPathHeap.cpp */; };
+ 260E02E113B1225D0064D447 /* SkPathMeasure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E026013B1225D0064D447 /* SkPathMeasure.cpp */; };
+ 260E02E213B1225D0064D447 /* SkPicture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E026113B1225D0064D447 /* SkPicture.cpp */; };
+ 260E02E313B1225D0064D447 /* SkPictureFlat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E026213B1225D0064D447 /* SkPictureFlat.cpp */; };
+ 260E02E413B1225D0064D447 /* SkPicturePlayback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E026413B1225D0064D447 /* SkPicturePlayback.cpp */; };
+ 260E02E513B1225D0064D447 /* SkPictureRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E026613B1225D0064D447 /* SkPictureRecord.cpp */; };
+ 260E02E613B1225D0064D447 /* SkPixelRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E026813B1225D0064D447 /* SkPixelRef.cpp */; };
+ 260E02E713B1225D0064D447 /* SkPoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E026913B1225D0064D447 /* SkPoint.cpp */; };
+ 260E02E913B1225D0064D447 /* SkPtrRecorder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E026B13B1225D0064D447 /* SkPtrRecorder.cpp */; };
+ 260E02EA13B1225D0064D447 /* SkQuadClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E026C13B1225D0064D447 /* SkQuadClipper.cpp */; };
+ 260E02EB13B1225D0064D447 /* SkRasterizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E026E13B1225D0064D447 /* SkRasterizer.cpp */; };
+ 260E02EC13B1225D0064D447 /* SkRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E026F13B1225D0064D447 /* SkRect.cpp */; };
+ 260E02ED13B1225D0064D447 /* SkRefDict.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E027013B1225D0064D447 /* SkRefDict.cpp */; };
+ 260E02EE13B1225D0064D447 /* SkRegion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E027113B1225D0064D447 /* SkRegion.cpp */; };
+ 260E02EF13B1225D0064D447 /* SkRegion_path.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E027313B1225D0064D447 /* SkRegion_path.cpp */; };
+ 260E02F013B1225D0064D447 /* SkScalar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E027413B1225D0064D447 /* SkScalar.cpp */; };
+ 260E02F113B1225D0064D447 /* SkScalerContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E027513B1225D0064D447 /* SkScalerContext.cpp */; };
+ 260E02F213B1225D0064D447 /* SkScan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E027613B1225D0064D447 /* SkScan.cpp */; };
+ 260E02F313B1225D0064D447 /* SkScan_AntiPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E027813B1225D0064D447 /* SkScan_AntiPath.cpp */; };
+ 260E02F413B1225D0064D447 /* SkScan_Antihair.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E027913B1225D0064D447 /* SkScan_Antihair.cpp */; };
+ 260E02F513B1225D0064D447 /* SkScan_Hairline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E027A13B1225D0064D447 /* SkScan_Hairline.cpp */; };
+ 260E02F613B1225D0064D447 /* SkScan_Path.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E027B13B1225D0064D447 /* SkScan_Path.cpp */; };
+ 260E02F713B1225D0064D447 /* SkShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E027C13B1225D0064D447 /* SkShader.cpp */; };
+ 260E02F813B1225D0064D447 /* SkShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E027D13B1225D0064D447 /* SkShape.cpp */; };
+ 260E02FB13B1225D0064D447 /* SkStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E028313B1225D0064D447 /* SkStream.cpp */; };
+ 260E02FC13B1225D0064D447 /* SkString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E028413B1225D0064D447 /* SkString.cpp */; };
+ 260E02FD13B1225D0064D447 /* SkStroke.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E028513B1225D0064D447 /* SkStroke.cpp */; };
+ 260E02FE13B1225D0064D447 /* SkStrokerPriv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E028613B1225D0064D447 /* SkStrokerPriv.cpp */; };
+ 260E02FF13B1225D0064D447 /* SkTSearch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E028813B1225D0064D447 /* SkTSearch.cpp */; };
+ 260E030013B1225D0064D447 /* SkTypeface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E028C13B1225D0064D447 /* SkTypeface.cpp */; };
+ 260E030113B1225D0064D447 /* SkTypefaceCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E028D13B1225D0064D447 /* SkTypefaceCache.cpp */; };
+ 260E030213B1225D0064D447 /* SkUnPreMultiply.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E028F13B1225D0064D447 /* SkUnPreMultiply.cpp */; };
+ 260E030313B1225D0064D447 /* SkUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E029013B1225D0064D447 /* SkUtils.cpp */; };
+ 260E030413B1225D0064D447 /* SkWriter32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E029113B1225D0064D447 /* SkWriter32.cpp */; };
+ 260E030513B1225D0064D447 /* SkXfermode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E029213B1225D0064D447 /* SkXfermode.cpp */; };
+ 260E030713B1225D0064D447 /* SkDebug_stdio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E029613B1225D0064D447 /* SkDebug_stdio.cpp */; };
+ 260E030B13B1225D0064D447 /* SkGlobals_global.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E029A13B1225D0064D447 /* SkGlobals_global.cpp */; };
+ 260E030C13B1225D0064D447 /* SkMemory_malloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E029B13B1225D0064D447 /* SkMemory_malloc.cpp */; };
+ 260E030E13B1225D0064D447 /* SkThread_pthread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E029D13B1225D0064D447 /* SkThread_pthread.cpp */; };
+ 260E030F13B1225D0064D447 /* SkTime_Unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E029E13B1225D0064D447 /* SkTime_Unix.cpp */; };
+ 260E031113B1225D0064D447 /* SkXMLParser_empty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E02A013B1225D0064D447 /* SkXMLParser_empty.cpp */; };
+ 260E035413B122A30064D447 /* Sk1DPathEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E033713B122A30064D447 /* Sk1DPathEffect.cpp */; };
+ 260E035513B122A30064D447 /* Sk2DPathEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E033813B122A30064D447 /* Sk2DPathEffect.cpp */; };
+ 260E035613B122A30064D447 /* SkAvoidXfermode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E033913B122A30064D447 /* SkAvoidXfermode.cpp */; };
+ 260E035713B122A30064D447 /* SkBitmapCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E033A13B122A30064D447 /* SkBitmapCache.cpp */; };
+ 260E035813B122A30064D447 /* SkBlurDrawLooper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E033C13B122A30064D447 /* SkBlurDrawLooper.cpp */; };
+ 260E035913B122A30064D447 /* SkBlurMask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E033D13B122A30064D447 /* SkBlurMask.cpp */; };
+ 260E035A13B122A30064D447 /* SkBlurMaskFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E033F13B122A30064D447 /* SkBlurMaskFilter.cpp */; };
+ 260E035B13B122A30064D447 /* SkColorFilters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E034013B122A30064D447 /* SkColorFilters.cpp */; };
+ 260E035C13B122A30064D447 /* SkColorMatrixFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E034113B122A30064D447 /* SkColorMatrixFilter.cpp */; };
+ 260E035D13B122A30064D447 /* SkCornerPathEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E034213B122A30064D447 /* SkCornerPathEffect.cpp */; };
+ 260E035E13B122A30064D447 /* SkDashPathEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E034313B122A30064D447 /* SkDashPathEffect.cpp */; };
+ 260E035F13B122A30064D447 /* SkDiscretePathEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E034413B122A30064D447 /* SkDiscretePathEffect.cpp */; };
+ 260E036013B122A30064D447 /* SkEmbossMask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E034513B122A30064D447 /* SkEmbossMask.cpp */; };
+ 260E036113B122A30064D447 /* SkEmbossMaskFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E034713B122A30064D447 /* SkEmbossMaskFilter.cpp */; };
+ 260E036213B122A30064D447 /* SkGradientShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E034913B122A30064D447 /* SkGradientShader.cpp */; };
+ 260E036313B122A30064D447 /* SkGroupShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E034A13B122A30064D447 /* SkGroupShape.cpp */; };
+ 260E036413B122A30064D447 /* SkKernel33MaskFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E034B13B122A30064D447 /* SkKernel33MaskFilter.cpp */; };
+ 260E036513B122A30064D447 /* SkLayerDrawLooper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E034C13B122A30064D447 /* SkLayerDrawLooper.cpp */; };
+ 260E036613B122A30064D447 /* SkLayerRasterizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E034D13B122A30064D447 /* SkLayerRasterizer.cpp */; };
+ 260E036713B122A30064D447 /* SkPaintFlagsDrawFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E034E13B122A30064D447 /* SkPaintFlagsDrawFilter.cpp */; };
+ 260E036813B122A30064D447 /* SkPixelXorXfermode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E034F13B122A30064D447 /* SkPixelXorXfermode.cpp */; };
+ 260E036913B122A30064D447 /* SkPorterDuff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E035013B122A30064D447 /* SkPorterDuff.cpp */; };
+ 260E036A13B122A30064D447 /* SkRectShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E035213B122A30064D447 /* SkRectShape.cpp */; };
+ 260E036B13B122A30064D447 /* SkTransparentShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E035313B122A30064D447 /* SkTransparentShader.cpp */; };
+ 260E040C13B122D40064D447 /* GrAllocPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03D113B122D40064D447 /* GrAllocPool.cpp */; };
+ 260E040D13B122D40064D447 /* GrAtlas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03D213B122D40064D447 /* GrAtlas.cpp */; };
+ 260E040E13B122D40064D447 /* GrBufferAllocPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03D413B122D40064D447 /* GrBufferAllocPool.cpp */; };
+ 260E040F13B122D40064D447 /* GrClip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03D613B122D40064D447 /* GrClip.cpp */; };
+ 260E041213B122D40064D447 /* GrDrawTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03D913B122D40064D447 /* GrDrawTarget.cpp */; };
+ 260E041413B122D40064D447 /* GrGLIndexBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03DB13B122D40064D447 /* GrGLIndexBuffer.cpp */; };
+ 260E041513B122D40064D447 /* GrGLInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03DC13B122D40064D447 /* GrGLInterface.cpp */; };
+ 260E041613B122D40064D447 /* GrGLProgram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03DD13B122D40064D447 /* GrGLProgram.cpp */; };
+ 260E041813B122D40064D447 /* GrGLUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03E013B122D40064D447 /* GrGLUtil.cpp */; };
+ 260E041913B122D40064D447 /* GrGLVertexBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03E113B122D40064D447 /* GrGLVertexBuffer.cpp */; };
+ 260E041A13B122D40064D447 /* GrGpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03E213B122D40064D447 /* GrGpu.cpp */; };
+ 260E041B13B122D40064D447 /* GrGpuFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03E313B122D40064D447 /* GrGpuFactory.cpp */; };
+ 260E041C13B122D40064D447 /* GrGpuGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03E413B122D40064D447 /* GrGpuGL.cpp */; };
+ 260E041D13B122D40064D447 /* GrGpuGLFixed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03E613B122D40064D447 /* GrGpuGLFixed.cpp */; };
+ 260E041E13B122D40064D447 /* GrGpuGLShaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03E813B122D40064D447 /* GrGpuGLShaders.cpp */; };
+ 260E041F13B122D40064D447 /* GrInOrderDrawBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03EA13B122D40064D447 /* GrInOrderDrawBuffer.cpp */; };
+ 260E042013B122D40064D447 /* GrMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03EB13B122D40064D447 /* GrMatrix.cpp */; };
+ 260E042113B122D40064D447 /* GrMemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03EC13B122D40064D447 /* GrMemory.cpp */; };
+ 260E042213B122D40064D447 /* GrPathRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03ED13B122D40064D447 /* GrPathRenderer.cpp */; };
+ 260E042313B122D40064D447 /* GrPathUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03EE13B122D40064D447 /* GrPathUtils.cpp */; };
+ 260E042413B122D40064D447 /* GrRectanizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03F013B122D40064D447 /* GrRectanizer.cpp */; };
+ 260E042513B122D40064D447 /* GrResource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03F213B122D40064D447 /* GrResource.cpp */; };
+ 260E042613B122D40064D447 /* GrStencil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03F313B122D40064D447 /* GrStencil.cpp */; };
+ 260E042813B122D40064D447 /* GrTextContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03F513B122D40064D447 /* GrTextContext.cpp */; };
+ 260E042913B122D40064D447 /* GrTextStrike.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03F613B122D40064D447 /* GrTextStrike.cpp */; };
+ 260E042A13B122D40064D447 /* GrTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03F813B122D40064D447 /* GrTexture.cpp */; };
+ 260E042C13B122D40064D447 /* gr_unittests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03FA13B122D40064D447 /* gr_unittests.cpp */; };
+ 260E042D13B122D40064D447 /* GrPrintf_skia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E040213B122D40064D447 /* GrPrintf_skia.cpp */; };
+ 260E042E13B122D40064D447 /* SkGpuCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E040313B122D40064D447 /* SkGpuCanvas.cpp */; };
+ 260E042F13B122D40064D447 /* SkGpuDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E040413B122D40064D447 /* SkGpuDevice.cpp */; };
+ 260E043013B122D40064D447 /* SkGr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E040513B122D40064D447 /* SkGr.cpp */; };
+ 260E043113B122D40064D447 /* SkGrFontScaler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E040613B122D40064D447 /* SkGrFontScaler.cpp */; };
+ 260E043213B122D40064D447 /* SkGrTexturePixelRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E040713B122D40064D447 /* SkGrTexturePixelRef.cpp */; };
+ 260E046613B1232F0064D447 /* SkCreateRLEPixelRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E044B13B1232F0064D447 /* SkCreateRLEPixelRef.cpp */; };
+ 260E046713B1232F0064D447 /* SkFDStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E044C13B1232F0064D447 /* SkFDStream.cpp */; };
+ 260E046813B1232F0064D447 /* SkFlipPixelRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E044D13B1232F0064D447 /* SkFlipPixelRef.cpp */; };
+ 260E046913B1232F0064D447 /* SkImageDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E044E13B1232F0064D447 /* SkImageDecoder.cpp */; };
+ 260E047113B1232F0064D447 /* SkImageEncoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E045613B1232F0064D447 /* SkImageEncoder.cpp */; };
+ 260E050113B123840064D447 /* SkSVGCircle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04CE13B123840064D447 /* SkSVGCircle.cpp */; };
+ 260E050213B123840064D447 /* SkSVGClipPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04D013B123840064D447 /* SkSVGClipPath.cpp */; };
+ 260E050313B123840064D447 /* SkSVGDefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04D213B123840064D447 /* SkSVGDefs.cpp */; };
+ 260E050413B123840064D447 /* SkSVGElements.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04D413B123840064D447 /* SkSVGElements.cpp */; };
+ 260E050513B123840064D447 /* SkSVGEllipse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04D613B123840064D447 /* SkSVGEllipse.cpp */; };
+ 260E050613B123840064D447 /* SkSVGFeColorMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04D813B123840064D447 /* SkSVGFeColorMatrix.cpp */; };
+ 260E050713B123840064D447 /* SkSVGFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04DA13B123840064D447 /* SkSVGFilter.cpp */; };
+ 260E050813B123840064D447 /* SkSVGG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04DC13B123840064D447 /* SkSVGG.cpp */; };
+ 260E050913B123840064D447 /* SkSVGGradient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04DE13B123840064D447 /* SkSVGGradient.cpp */; };
+ 260E050A13B123840064D447 /* SkSVGGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04E013B123840064D447 /* SkSVGGroup.cpp */; };
+ 260E050B13B123840064D447 /* SkSVGImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04E213B123840064D447 /* SkSVGImage.cpp */; };
+ 260E050C13B123840064D447 /* SkSVGLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04E413B123840064D447 /* SkSVGLine.cpp */; };
+ 260E050D13B123840064D447 /* SkSVGLinearGradient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04E613B123840064D447 /* SkSVGLinearGradient.cpp */; };
+ 260E050E13B123840064D447 /* SkSVGMask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04E813B123840064D447 /* SkSVGMask.cpp */; };
+ 260E050F13B123840064D447 /* SkSVGMetadata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04EA13B123840064D447 /* SkSVGMetadata.cpp */; };
+ 260E051013B123840064D447 /* SkSVGPaintState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04EC13B123840064D447 /* SkSVGPaintState.cpp */; };
+ 260E051113B123840064D447 /* SkSVGParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04ED13B123840064D447 /* SkSVGParser.cpp */; };
+ 260E051213B123840064D447 /* SkSVGPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04EE13B123840064D447 /* SkSVGPath.cpp */; };
+ 260E051313B123840064D447 /* SkSVGPolygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04F013B123840064D447 /* SkSVGPolygon.cpp */; };
+ 260E051413B123840064D447 /* SkSVGPolyline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04F213B123840064D447 /* SkSVGPolyline.cpp */; };
+ 260E051513B123840064D447 /* SkSVGRadialGradient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04F413B123840064D447 /* SkSVGRadialGradient.cpp */; };
+ 260E051613B123840064D447 /* SkSVGRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04F613B123840064D447 /* SkSVGRect.cpp */; };
+ 260E051713B123840064D447 /* SkSVGSVG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04F813B123840064D447 /* SkSVGSVG.cpp */; };
+ 260E051813B123840064D447 /* SkSVGStop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04FA13B123840064D447 /* SkSVGStop.cpp */; };
+ 260E051913B123840064D447 /* SkSVGSymbol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04FC13B123840064D447 /* SkSVGSymbol.cpp */; };
+ 260E051A13B123840064D447 /* SkSVGText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E04FE13B123840064D447 /* SkSVGText.cpp */; };
+ 260E051B13B123840064D447 /* SkSVGUse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E050013B123840064D447 /* SkSVGUse.cpp */; };
+ 260E056C13B123DE0064D447 /* SkCreateCGImageRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E054913B123DE0064D447 /* SkCreateCGImageRef.cpp */; };
+ 260E057713B123DE0064D447 /* SkBoundaryPatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E055713B123DE0064D447 /* SkBoundaryPatch.cpp */; };
+ 260E057813B123DE0064D447 /* SkCamera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E055813B123DE0064D447 /* SkCamera.cpp */; };
+ 260E057913B123DE0064D447 /* SkColorMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E055913B123DE0064D447 /* SkColorMatrix.cpp */; };
+ 260E057A13B123DE0064D447 /* SkCubicInterval.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E055A13B123DE0064D447 /* SkCubicInterval.cpp */; };
+ 260E057B13B123DE0064D447 /* SkCullPoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E055B13B123DE0064D447 /* SkCullPoints.cpp */; };
+ 260E057C13B123DE0064D447 /* SkDumpCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E055C13B123DE0064D447 /* SkDumpCanvas.cpp */; };
+ 260E057E13B123DE0064D447 /* SkInterpolator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E055E13B123DE0064D447 /* SkInterpolator.cpp */; };
+ 260E057F13B123DE0064D447 /* SkLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E055F13B123DE0064D447 /* SkLayer.cpp */; };
+ 260E058013B123DE0064D447 /* SkMatrix44.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E056013B123DE0064D447 /* SkMatrix44.cpp */; };
+ 260E058113B123DE0064D447 /* SkMeshUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E056113B123DE0064D447 /* SkMeshUtils.cpp */; };
+ 260E058213B123DE0064D447 /* SkNWayCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E056213B123DE0064D447 /* SkNWayCanvas.cpp */; };
+ 260E058313B123DE0064D447 /* SkNinePatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E056313B123DE0064D447 /* SkNinePatch.cpp */; };
+ 260E058413B123DE0064D447 /* SkOSFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E056413B123DE0064D447 /* SkOSFile.cpp */; };
+ 260E058513B123DE0064D447 /* SkParse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E056513B123DE0064D447 /* SkParse.cpp */; };
+ 260E058613B123DE0064D447 /* SkParseColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E056613B123DE0064D447 /* SkParseColor.cpp */; };
+ 260E058713B123DE0064D447 /* SkParsePath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E056713B123DE0064D447 /* SkParsePath.cpp */; };
+ 260E058913B123DE0064D447 /* SkSfntUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E056913B123DE0064D447 /* SkSfntUtils.cpp */; };
+ 260E058A13B123DE0064D447 /* SkUnitMappers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E056A13B123DE0064D447 /* SkUnitMappers.cpp */; };
+ 260E05C913B123E80064D447 /* SkBGViewArtist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05AF13B123E80064D447 /* SkBGViewArtist.cpp */; };
+ 260E05CB13B123E80064D447 /* SkEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05B113B123E80064D447 /* SkEvent.cpp */; };
+ 260E05CC13B123E80064D447 /* SkEventSink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05B213B123E80064D447 /* SkEventSink.cpp */; };
+ 260E05CD13B123E80064D447 /* SkImageView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05B313B123E80064D447 /* SkImageView.cpp */; };
+ 260E05CE13B123E80064D447 /* SkListView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05B413B123E80064D447 /* SkListView.cpp */; };
+ 260E05D013B123E80064D447 /* SkOSMenu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05B613B123E80064D447 /* SkOSMenu.cpp */; };
+ 260E05D113B123E80064D447 /* SkParsePaint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05B713B123E80064D447 /* SkParsePaint.cpp */; };
+ 260E05D513B123E80064D447 /* SkStackViewLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05BB13B123E80064D447 /* SkStackViewLayout.cpp */; };
+ 260E05D613B123E80064D447 /* SkStaticTextView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05BC13B123E80064D447 /* SkStaticTextView.cpp */; };
+ 260E05D713B123E80064D447 /* SkTagList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05BD13B123E80064D447 /* SkTagList.cpp */; };
+ 260E05D813B123E80064D447 /* SkTextBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05BF13B123E80064D447 /* SkTextBox.cpp */; };
+ 260E05D913B123E80064D447 /* SkTouchGesture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05C013B123E80064D447 /* SkTouchGesture.cpp */; };
+ 260E05DA13B123E80064D447 /* SkView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05C113B123E80064D447 /* SkView.cpp */; };
+ 260E05DB13B123E80064D447 /* SkViewInflate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05C213B123E80064D447 /* SkViewInflate.cpp */; };
+ 260E05DC13B123E80064D447 /* SkViewPriv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05C313B123E80064D447 /* SkViewPriv.cpp */; };
+ 260E05DD13B123E80064D447 /* SkWidget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05C513B123E80064D447 /* SkWidget.cpp */; };
+ 260E05DF13B123E80064D447 /* SkWidgets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05C713B123E80064D447 /* SkWidgets.cpp */; };
+ 260E05E013B123E80064D447 /* SkWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05C813B123E80064D447 /* SkWindow.cpp */; };
+ 260E05FE13B124210064D447 /* SkDOM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05F713B124210064D447 /* SkDOM.cpp */; };
+ 260E060113B124210064D447 /* SkXMLParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E05FA13B124210064D447 /* SkXMLParser.cpp */; };
+ 260E075313B127E00064D447 /* SkAnimateActive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06BC13B127E00064D447 /* SkAnimateActive.cpp */; };
+ 260E075413B127E00064D447 /* SkAnimateBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06BE13B127E00064D447 /* SkAnimateBase.cpp */; };
+ 260E075513B127E00064D447 /* SkAnimateField.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06C013B127E00064D447 /* SkAnimateField.cpp */; };
+ 260E075613B127E00064D447 /* SkAnimateMaker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06C113B127E00064D447 /* SkAnimateMaker.cpp */; };
+ 260E075713B127E00064D447 /* SkAnimateSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06C413B127E00064D447 /* SkAnimateSet.cpp */; };
+ 260E075813B127E00064D447 /* SkAnimator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06C613B127E00064D447 /* SkAnimator.cpp */; };
+ 260E075913B127E00064D447 /* SkAnimatorScript.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06C713B127E00064D447 /* SkAnimatorScript.cpp */; };
+ 260E075A13B127E00064D447 /* SkBase64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06C913B127E00064D447 /* SkBase64.cpp */; };
+ 260E075B13B127E00064D447 /* SkBoundable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06CB13B127E00064D447 /* SkBoundable.cpp */; };
+ 260E075C13B127E00064D447 /* SkBuildCondensedInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06CD13B127E00064D447 /* SkBuildCondensedInfo.cpp */; };
+ 260E075D13B127E00064D447 /* SkDisplayAdd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06CE13B127E00064D447 /* SkDisplayAdd.cpp */; };
+ 260E075E13B127E00064D447 /* SkDisplayApply.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06D013B127E00064D447 /* SkDisplayApply.cpp */; };
+ 260E075F13B127E00064D447 /* SkDisplayBounds.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06D213B127E00064D447 /* SkDisplayBounds.cpp */; };
+ 260E076013B127E00064D447 /* SkDisplayEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06D413B127E00064D447 /* SkDisplayEvent.cpp */; };
+ 260E076113B127E00064D447 /* SkDisplayEvents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06D613B127E00064D447 /* SkDisplayEvents.cpp */; };
+ 260E076213B127E00064D447 /* SkDisplayInclude.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06D813B127E00064D447 /* SkDisplayInclude.cpp */; };
+ 260E076313B127E00064D447 /* SkDisplayInput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06DA13B127E00064D447 /* SkDisplayInput.cpp */; };
+ 260E076413B127E00064D447 /* SkDisplayList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06DC13B127E00064D447 /* SkDisplayList.cpp */; };
+ 260E076513B127E00064D447 /* SkDisplayMath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06DE13B127E00064D447 /* SkDisplayMath.cpp */; };
+ 260E076613B127E00064D447 /* SkDisplayMovie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06E013B127E00064D447 /* SkDisplayMovie.cpp */; };
+ 260E076713B127E00064D447 /* SkDisplayNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06E213B127E00064D447 /* SkDisplayNumber.cpp */; };
+ 260E076813B127E00064D447 /* SkDisplayPost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06E413B127E00064D447 /* SkDisplayPost.cpp */; };
+ 260E076913B127E00064D447 /* SkDisplayRandom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06E613B127E00064D447 /* SkDisplayRandom.cpp */; };
+ 260E076A13B127E00064D447 /* SkDisplayScreenplay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06E813B127E00064D447 /* SkDisplayScreenplay.cpp */; };
+ 260E076B13B127E00064D447 /* SkDisplayType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06EA13B127E00064D447 /* SkDisplayType.cpp */; };
+ 260E076C13B127E00064D447 /* SkDisplayTypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06EC13B127E00064D447 /* SkDisplayTypes.cpp */; };
+ 260E076D13B127E00064D447 /* SkDisplayXMLParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06EE13B127E00064D447 /* SkDisplayXMLParser.cpp */; };
+ 260E076E13B127E00064D447 /* SkDisplayable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06F013B127E00064D447 /* SkDisplayable.cpp */; };
+ 260E076F13B127E00064D447 /* SkDraw3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06F213B127E00064D447 /* SkDraw3D.cpp */; };
+ 260E077013B127E00064D447 /* SkDrawBitmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06F413B127E00064D447 /* SkDrawBitmap.cpp */; };
+ 260E077113B127E00064D447 /* SkDrawBlur.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06F613B127E00064D447 /* SkDrawBlur.cpp */; };
+ 260E077213B127E00064D447 /* SkDrawClip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06F813B127E00064D447 /* SkDrawClip.cpp */; };
+ 260E077313B127E00064D447 /* SkDrawColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06FA13B127E00064D447 /* SkDrawColor.cpp */; };
+ 260E077413B127E00064D447 /* SkDrawDash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06FC13B127E00064D447 /* SkDrawDash.cpp */; };
+ 260E077513B127E00064D447 /* SkDrawDiscrete.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E06FE13B127E00064D447 /* SkDrawDiscrete.cpp */; };
+ 260E077613B127E00064D447 /* SkDrawEmboss.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E070013B127E00064D447 /* SkDrawEmboss.cpp */; };
+ 260E077713B127E00064D447 /* SkDrawExtraPathEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E070213B127E00064D447 /* SkDrawExtraPathEffect.cpp */; };
+ 260E077813B127E00064D447 /* SkDrawFull.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E070313B127E00064D447 /* SkDrawFull.cpp */; };
+ 260E077913B127E00064D447 /* SkDrawGradient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E070513B127E00064D447 /* SkDrawGradient.cpp */; };
+ 260E077A13B127E00064D447 /* SkDrawGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E070713B127E00064D447 /* SkDrawGroup.cpp */; };
+ 260E077B13B127E00064D447 /* SkDrawLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E070913B127E00064D447 /* SkDrawLine.cpp */; };
+ 260E077C13B127E00064D447 /* SkDrawMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E070B13B127E00064D447 /* SkDrawMatrix.cpp */; };
+ 260E077D13B127E00064D447 /* SkDrawOval.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E070D13B127E00064D447 /* SkDrawOval.cpp */; };
+ 260E077E13B127E00064D447 /* SkDrawPaint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E070F13B127E00064D447 /* SkDrawPaint.cpp */; };
+ 260E077F13B127E00064D447 /* SkDrawPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E071113B127E00064D447 /* SkDrawPath.cpp */; };
+ 260E078013B127E00064D447 /* SkDrawPoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E071313B127E00064D447 /* SkDrawPoint.cpp */; };
+ 260E078113B127E00064D447 /* SkDrawRectangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E071513B127E00064D447 /* SkDrawRectangle.cpp */; };
+ 260E078213B127E00064D447 /* SkDrawSaveLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E071713B127E00064D447 /* SkDrawSaveLayer.cpp */; };
+ 260E078313B127E00064D447 /* SkDrawShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E071913B127E00064D447 /* SkDrawShader.cpp */; };
+ 260E078413B127E00064D447 /* SkDrawText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E071B13B127E00064D447 /* SkDrawText.cpp */; };
+ 260E078513B127E00064D447 /* SkDrawTextBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E071D13B127E00064D447 /* SkDrawTextBox.cpp */; };
+ 260E078613B127E00064D447 /* SkDrawTo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E071F13B127E00064D447 /* SkDrawTo.cpp */; };
+ 260E078713B127E00064D447 /* SkDrawTransparentShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E072113B127E00064D447 /* SkDrawTransparentShader.cpp */; };
+ 260E078813B127E00064D447 /* SkDrawable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E072313B127E00064D447 /* SkDrawable.cpp */; };
+ 260E078913B127E00064D447 /* SkDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E072513B127E00064D447 /* SkDump.cpp */; };
+ 260E078A13B127E00064D447 /* SkGetCondensedInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E072813B127E00064D447 /* SkGetCondensedInfo.cpp */; };
+ 260E078B13B127E00064D447 /* SkHitClear.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E072913B127E00064D447 /* SkHitClear.cpp */; };
+ 260E078C13B127E00064D447 /* SkHitTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E072B13B127E00064D447 /* SkHitTest.cpp */; };
+ 260E078D13B127E00064D447 /* SkMatrixParts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E072E13B127E00064D447 /* SkMatrixParts.cpp */; };
+ 260E078E13B127E00064D447 /* SkMemberInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E073013B127E00064D447 /* SkMemberInfo.cpp */; };
+ 260E078F13B127E00064D447 /* SkOpArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E073213B127E00064D447 /* SkOpArray.cpp */; };
+ 260E079013B127E00064D447 /* SkOperandIterpolator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E073713B127E00064D447 /* SkOperandIterpolator.cpp */; };
+ 260E079113B127E00064D447 /* SkPaintParts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E073813B127E00064D447 /* SkPaintParts.cpp */; };
+ 260E079213B127E00064D447 /* SkParseSVGPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E073A13B127E00064D447 /* SkParseSVGPath.cpp */; };
+ 260E079313B127E00064D447 /* SkPathParts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E073B13B127E00064D447 /* SkPathParts.cpp */; };
+ 260E079413B127E00064D447 /* SkPostParts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E073D13B127E00064D447 /* SkPostParts.cpp */; };
+ 260E079513B127E00064D447 /* SkScript.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E073F13B127E00064D447 /* SkScript.cpp */; };
+ 260E079613B127E00064D447 /* SkScriptDecompile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E074313B127E00064D447 /* SkScriptDecompile.cpp */; };
+ 260E079713B127E00064D447 /* SkScriptRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E074413B127E00064D447 /* SkScriptRuntime.cpp */; };
+ 260E079813B127E00064D447 /* SkScriptTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E074613B127E00064D447 /* SkScriptTokenizer.cpp */; };
+ 260E079913B127E00064D447 /* SkSnapshot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E074713B127E00064D447 /* SkSnapshot.cpp */; };
+ 260E079A13B127E00064D447 /* SkTextOnPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E074A13B127E00064D447 /* SkTextOnPath.cpp */; };
+ 260E079B13B127E00064D447 /* SkTextToPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E074C13B127E00064D447 /* SkTextToPath.cpp */; };
+ 260E079C13B127E00064D447 /* SkTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E074E13B127E00064D447 /* SkTime.cpp */; };
+ 260E079D13B127E00064D447 /* SkTypedArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E074F13B127E00064D447 /* SkTypedArray.cpp */; };
+ 260E079E13B127E00064D447 /* SkXMLAnimatorWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E075113B127E00064D447 /* SkXMLAnimatorWriter.cpp */; };
+ 260E07B313B128210064D447 /* SkXMLWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E07B213B128210064D447 /* SkXMLWriter.cpp */; };
+ 260E07C513B128610064D447 /* SkMovie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E07C413B128610064D447 /* SkMovie.cpp */; };
+ 260E07CA13B128740064D447 /* SkPageFlipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E07C913B128740064D447 /* SkPageFlipper.cpp */; };
+ 260E07D113B128870064D447 /* SkImageRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E07CE13B128870064D447 /* SkImageRef.cpp */; };
+ 260E07D213B128870064D447 /* SkImageRefPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E07CF13B128870064D447 /* SkImageRefPool.cpp */; };
+ 260E07D713B1289C0064D447 /* SkImageRef_GlobalPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E07D613B1289C0064D447 /* SkImageRef_GlobalPool.cpp */; };
+ 260E083D13B12A200064D447 /* SkImageDecoder_Factory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E083B13B12A200064D447 /* SkImageDecoder_Factory.cpp */; };
+ 260E083E13B12A200064D447 /* SkImageEncoder_Factory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E083C13B12A200064D447 /* SkImageEncoder_Factory.cpp */; };
+ 260E087F13B12B6F0064D447 /* SkFontHost_mac_coretext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E029813B1225D0064D447 /* SkFontHost_mac_coretext.cpp */; };
+ 260E095713B134C90064D447 /* FlingState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E095513B134C90064D447 /* FlingState.cpp */; };
+ 260E095813B134C90064D447 /* GrDrawMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E095613B134C90064D447 /* GrDrawMesh.cpp */; };
+ 260E147913B2734E0064D447 /* SkUISplitViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 260E147813B2734E0064D447 /* SkUISplitViewController.mm */; };
+ 260E16E613B2853F0064D447 /* SampleGM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E004413B11F5B0064D447 /* SampleGM.cpp */; };
+ 260E1DCD13B3AA490064D447 /* SkUINavigationController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 260E1DCB13B3AA490064D447 /* SkUINavigationController.mm */; };
+ 260E1EA213B3B15A0064D447 /* SkPDFCatalog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E1E9613B3B15A0064D447 /* SkPDFCatalog.cpp */; };
+ 260E1EA313B3B15A0064D447 /* SkPDFDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E1E9713B3B15A0064D447 /* SkPDFDevice.cpp */; };
+ 260E1EA413B3B15A0064D447 /* SkPDFDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E1E9813B3B15A0064D447 /* SkPDFDocument.cpp */; };
+ 260E1EA513B3B15A0064D447 /* SkPDFFont.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E1E9913B3B15A0064D447 /* SkPDFFont.cpp */; };
+ 260E1EA613B3B15A0064D447 /* SkPDFFormXObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E1E9A13B3B15A0064D447 /* SkPDFFormXObject.cpp */; };
+ 260E1EA713B3B15A0064D447 /* SkPDFGraphicState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E1E9B13B3B15A0064D447 /* SkPDFGraphicState.cpp */; };
+ 260E1EA813B3B15A0064D447 /* SkPDFImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E1E9C13B3B15A0064D447 /* SkPDFImage.cpp */; };
+ 260E1EA913B3B15A0064D447 /* SkPDFPage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E1E9D13B3B15A0064D447 /* SkPDFPage.cpp */; };
+ 260E1EAA13B3B15A0064D447 /* SkPDFShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E1E9E13B3B15A0064D447 /* SkPDFShader.cpp */; };
+ 260E1EAB13B3B15A0064D447 /* SkPDFStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E1E9F13B3B15A0064D447 /* SkPDFStream.cpp */; };
+ 260E1EAC13B3B15A0064D447 /* SkPDFTypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E1EA013B3B15A0064D447 /* SkPDFTypes.cpp */; };
+ 260E1EAD13B3B15A0064D447 /* SkPDFUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E1EA113B3B15A0064D447 /* SkPDFUtils.cpp */; };
+ 260EE9D513AFA7850064D447 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 260EE9D013AFA7850064D447 /* CoreFoundation.framework */; };
+ 260EF18513AFD62E0064D447 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 260EF18413AFD62E0064D447 /* CoreText.framework */; };
+ 260EF2B013AFDBD30064D447 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
+ 2612C0D1140D2F9B001B6925 /* ClockFaceView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E002413B11F5B0064D447 /* ClockFaceView.cpp */; };
+ 2612C0D2140D2F9C001B6925 /* SampleAARects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E002613B11F5B0064D447 /* SampleAARects.cpp */; };
+ 2612C0D3140D2F9C001B6925 /* SampleAnimator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E002813B11F5B0064D447 /* SampleAnimator.cpp */; };
+ 2612C0D4140D2F9D001B6925 /* SampleAll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E002713B11F5B0064D447 /* SampleAll.cpp */; };
+ 2612C0D5140D2F9F001B6925 /* SampleBigGradient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E002C13B11F5B0064D447 /* SampleBigGradient.cpp */; };
+ 2612C0D6140D2F9F001B6925 /* SampleBitmapRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E002D13B11F5B0064D447 /* SampleBitmapRect.cpp */; };
+ 2612C0D7140D2FA1001B6925 /* SampleCamera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E002F13B11F5B0064D447 /* SampleCamera.cpp */; };
+ 2612C0D8140D2FA2001B6925 /* SampleColorFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E003213B11F5B0064D447 /* SampleColorFilter.cpp */; };
+ 2612C0D9140D2FA3001B6925 /* SampleConcavePaths.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E003413B11F5B0064D447 /* SampleConcavePaths.cpp */; };
+ 2612C0DA140D2FA4001B6925 /* SampleDecode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E003613B11F5B0064D447 /* SampleDecode.cpp */; };
+ 2612C0DB140D2FA5001B6925 /* SampleDither.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E003713B11F5B0064D447 /* SampleDither.cpp */; };
+ 2612C0DC140D2FA8001B6925 /* SampleDitherBitmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E003813B11F5B0064D447 /* SampleDitherBitmap.cpp */; };
+ 2612C0DD140D2FAA001B6925 /* SampleDrawLooper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E003913B11F5B0064D447 /* SampleDrawLooper.cpp */; };
+ 2612C0DE140D2FAA001B6925 /* SampleEffects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E003A13B11F5B0064D447 /* SampleEffects.cpp */; };
+ 2612C0DF140D2FAB001B6925 /* SampleEmboss.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E003B13B11F5B0064D447 /* SampleEmboss.cpp */; };
+ 2612C0E0140D2FAB001B6925 /* SampleEncode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E003C13B11F5B0064D447 /* SampleEncode.cpp */; };
+ 2612C0E1140D2FAC001B6925 /* SampleExtractAlpha.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E003D13B11F5B0064D447 /* SampleExtractAlpha.cpp */; };
+ 2612C0E2140D2FAD001B6925 /* SampleFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E003F13B11F5B0064D447 /* SampleFilter.cpp */; };
+ 2612C0E3140D2FAE001B6925 /* SampleFilter2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E004013B11F5B0064D447 /* SampleFilter2.cpp */; };
+ 2612C0E4140D2FAE001B6925 /* SampleFontCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E004113B11F5B0064D447 /* SampleFontCache.cpp */; };
+ 2612C0E5140D2FAF001B6925 /* SampleFontScalerTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E004213B11F5B0064D447 /* SampleFontScalerTest.cpp */; };
+ 2612C0E6140D2FAF001B6925 /* SampleFuzz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E004313B11F5B0064D447 /* SampleFuzz.cpp */; };
+ 2612C0E7140D2FB1001B6925 /* SampleGradients.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E004513B11F5B0064D447 /* SampleGradients.cpp */; };
+ 2612C0E8140D2FB1001B6925 /* SampleHairline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E004613B11F5B0064D447 /* SampleHairline.cpp */; };
+ 2612C0E9140D2FB2001B6925 /* SampleImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E004713B11F5B0064D447 /* SampleImage.cpp */; };
+ 2612C0EA140D2FB2001B6925 /* SampleImageDir.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E004813B11F5B0064D447 /* SampleImageDir.cpp */; };
+ 2612C0EB140D2FB3001B6925 /* SampleLayerMask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E004A13B11F5B0064D447 /* SampleLayerMask.cpp */; };
+ 2612C0EC140D2FB4001B6925 /* SampleLayers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E004B13B11F5B0064D447 /* SampleLayers.cpp */; };
+ 2612C0ED140D2FB4001B6925 /* SampleLineClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E004C13B11F5B0064D447 /* SampleLineClipper.cpp */; };
+ 2612C0EE140D2FB5001B6925 /* SampleLines.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E004D13B11F5B0064D447 /* SampleLines.cpp */; };
+ 2612C0EF140D2FB7001B6925 /* SampleMeasure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E004E13B11F5B0064D447 /* SampleMeasure.cpp */; };
+ 2612C0F0140D2FB8001B6925 /* SampleMipMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E004F13B11F5B0064D447 /* SampleMipMap.cpp */; };
+ 2612C0F1140D2FB8001B6925 /* SampleMovie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E005013B11F5B0064D447 /* SampleMovie.cpp */; };
+ 2612C0F2140D2FB9001B6925 /* SampleNinePatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E005113B11F5B0064D447 /* SampleNinePatch.cpp */; };
+ 2612C0F3140D2FBA001B6925 /* SampleOvalTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E005213B11F5B0064D447 /* SampleOvalTest.cpp */; };
+ 2612C0F4140D2FBB001B6925 /* SampleOverflow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E005313B11F5B0064D447 /* SampleOverflow.cpp */; };
+ 2612C0F5140D2FBB001B6925 /* SamplePageFlip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E005413B11F5B0064D447 /* SamplePageFlip.cpp */; };
+ 2612C0F6140D2FBC001B6925 /* SamplePatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E005513B11F5B0064D447 /* SamplePatch.cpp */; };
+ 2612C0F7140D2FBD001B6925 /* SampleRepeatTile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E005D13B11F5B0064D447 /* SampleRepeatTile.cpp */; };
+ 2612C0F8140D2FBE001B6925 /* SampleShaderText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E005E13B11F5B0064D447 /* SampleShaderText.cpp */; };
+ 2612C0F9140D2FBE001B6925 /* SampleShaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E005F13B11F5B0064D447 /* SampleShaders.cpp */; };
+ 2612C0FA140D2FC0001B6925 /* SampleSkLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E006113B11F5B0064D447 /* SampleSkLayer.cpp */; };
+ 2612C0FB140D2FC1001B6925 /* SampleStrokePath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E006313B11F5B0064D447 /* SampleStrokePath.cpp */; };
+ 2612C0FC140D2FC2001B6925 /* SampleStrokeText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E006413B11F5B0064D447 /* SampleStrokeText.cpp */; };
+ 2612C0FE140D2FC3001B6925 /* SampleTextureDomain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E006B13B11F5B0064D447 /* SampleTextureDomain.cpp */; };
+ 2612C0FF140D2FC4001B6925 /* SampleTiling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E006C13B11F5B0064D447 /* SampleTiling.cpp */; };
+ 2612C100140D2FC5001B6925 /* SampleTinyBitmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E006D13B11F5B0064D447 /* SampleTinyBitmap.cpp */; };
+ 2612C101140D2FC6001B6925 /* SampleXfermodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E007213B11F5B0064D447 /* SampleXfermodes.cpp */; };
+ 2612C102140D2FC7001B6925 /* SampleXfermodesBlur.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E007313B11F5B0064D447 /* SampleXfermodesBlur.cpp */; };
+ 2612C106140D2FE3001B6925 /* SkEventNotifier.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2612C105140D2FE3001B6925 /* SkEventNotifier.mm */; };
+ 2612C110140D300B001B6925 /* GrDefaultPathRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2612C109140D300B001B6925 /* GrDefaultPathRenderer.cpp */; };
+ 2612C111140D300B001B6925 /* GrGLStencilBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2612C10B140D300B001B6925 /* GrGLStencilBuffer.cpp */; };
+ 2612C112140D300B001B6925 /* GrPathRendererChain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2612C10E140D300B001B6925 /* GrPathRendererChain.cpp */; };
+ 2612C122140D30B0001B6925 /* GrAddPathRenderers_none.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2612C121140D30B0001B6925 /* GrAddPathRenderers_none.cpp */; };
+ 263BE75813CCC7BF00CCE991 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 263BE75713CCC7BF00CCE991 /* QuartzCore.framework */; };
+ 26591EB913EB16EB000DA8A8 /* TransitionView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26591EB813EB16EB000DA8A8 /* TransitionView.cpp */; };
+ 265C7DE313D75752008329F6 /* SkOptionListController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 265C7DE213D75752008329F6 /* SkOptionListController.mm */; };
+ 2662AB7013BD067900CDE7E9 /* SkiOSSampleApp-Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2662AB6F13BD067900CDE7E9 /* SkiOSSampleApp-Debug.xcconfig */; };
+ 2662AB7613BD0C0D00CDE7E9 /* SkiOSSampleApp-Release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2662AB7513BD0C0D00CDE7E9 /* SkiOSSampleApp-Release.xcconfig */; };
+ 2662AB7813BD0C1E00CDE7E9 /* SkiOSSampleApp-Base.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2662AB7713BD0C1E00CDE7E9 /* SkiOSSampleApp-Base.xcconfig */; };
+ 2663AC9413D5D8D400C20488 /* SkOptionsTableViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2663AC9313D5D8D400C20488 /* SkOptionsTableViewController.mm */; };
+ 26677D6613B4C548009319B8 /* SkData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26677D6513B4C548009319B8 /* SkData.cpp */; };
+ 26811E7913DEFAE8001A1609 /* SkBitSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26811E7813DEFAE8001A1609 /* SkBitSet.cpp */; };
+ 268C50D613F022820003FF9A /* SkColorPalette.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 268C50D213F022820003FF9A /* SkColorPalette.cpp */; };
+ 268C50D713F022820003FF9A /* SkNetPipeController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 268C50D413F022820003FF9A /* SkNetPipeController.cpp */; };
+ 268C50E013F0230C0003FF9A /* SkSockets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 268C50DD13F0230C0003FF9A /* SkSockets.cpp */; };
+ 26962B2313CDF6A00039B1FB /* SkOSFile_iOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 260EE8BB13AFA7790064D447 /* SkOSFile_iOS.mm */; };
+ 26962C8013CE256E0039B1FB /* SkUIDetailViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26962C7913CE256E0039B1FB /* SkUIDetailViewController.mm */; };
+ 26962C8113CE256E0039B1FB /* SkUIRootViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26962C7B13CE256E0039B1FB /* SkUIRootViewController.mm */; };
+ 26962CA413CE265C0039B1FB /* SkOSWindow_iOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26962CA313CE265C0039B1FB /* SkOSWindow_iOS.mm */; };
+ 26962CAB13CE268A0039B1FB /* SampleApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26962CA913CE268A0039B1FB /* SampleApp.cpp */; };
+ 26962D4F13CE2D780039B1FB /* GrGLDefaultInterface_iOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26962D4E13CE2D780039B1FB /* GrGLDefaultInterface_iOS.cpp */; };
+ 26A8AFF313E05D7000A3C111 /* GrResourceCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A8AFF113E05D7000A3C111 /* GrResourceCache.cpp */; };
+ 26D91223140D576B0036A311 /* SkSampleUIView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26D91222140D576B0036A311 /* SkSampleUIView.mm */; };
+ 26D9122A140D57BD0036A311 /* skia_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26D91229140D57BD0036A311 /* skia_ios.mm */; };
+ 26E0E40A13B4E67800866555 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 260EE9D113AFA7850064D447 /* OpenGLES.framework */; };
+ 26F548C213B918EC007CC564 /* SkBlitter_4444.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E022313B1225D0064D447 /* SkBlitter_4444.cpp */; };
+ 26F548C313B918ED007CC564 /* SkBlitter_A1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E022413B1225D0064D447 /* SkBlitter_A1.cpp */; };
+ 26F548C413B918ED007CC564 /* SkBlitter_A8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E022513B1225D0064D447 /* SkBlitter_A8.cpp */; };
+ 26F548C513B918EE007CC564 /* SkBlitter_ARGB32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E022613B1225D0064D447 /* SkBlitter_ARGB32.cpp */; };
+ 26F548C613B918EF007CC564 /* SkBlitter_RGB16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E022713B1225D0064D447 /* SkBlitter_RGB16.cpp */; };
+ 26F548C713B918EF007CC564 /* SkBlitter_Sprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E022813B1225D0064D447 /* SkBlitter_Sprite.cpp */; };
+ 26F548C813B918F1007CC564 /* SkProcSpriteBlitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E026A13B1225D0064D447 /* SkProcSpriteBlitter.cpp */; };
+ 26F548C913B918F2007CC564 /* SkSpriteBlitter_ARGB32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E028113B1225D0064D447 /* SkSpriteBlitter_ARGB32.cpp */; };
+ 26F548CA13B918F2007CC564 /* SkSpriteBlitter_RGB16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E028213B1225D0064D447 /* SkSpriteBlitter_RGB16.cpp */; };
+ 26F548DA13B9192E007CC564 /* SkBlitRow_D32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E022013B1225D0064D447 /* SkBlitRow_D32.cpp */; };
+ 26F548DB13B9192E007CC564 /* SkBlitRow_D16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E021F13B1225D0064D447 /* SkBlitRow_D16.cpp */; };
+ 26F548E913B91980007CC564 /* SkBitmapProcState_opts_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F548E013B91980007CC564 /* SkBitmapProcState_opts_arm.cpp */; };
+ 26F548EC13B91980007CC564 /* SkBlitRow_opts_none.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F548E413B91980007CC564 /* SkBlitRow_opts_none.cpp */; };
+ 26F548ED13B91980007CC564 /* SkUtils_opts_none.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F548E613B91980007CC564 /* SkUtils_opts_none.cpp */; };
+ 26FB129313E704AE001AFF6D /* GrGLTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03DF13B122D40064D447 /* GrGLTexture.cpp */; };
+ 26FB129413E704B0001AFF6D /* GrContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E03D713B122D40064D447 /* GrContext.cpp */; };
+ 26FB12B013E70D3B001AFF6D /* GrGLRenderTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26FB12AD13E70D3B001AFF6D /* GrGLRenderTarget.cpp */; };
+ 26FB12B413E70D51001AFF6D /* GrRenderTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26FB12B313E70D51001AFF6D /* GrRenderTarget.cpp */; };
+ 26FB98D313D0C87000ACBEA0 /* SkUIView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26FB98D213D0C87000ACBEA0 /* SkUIView.mm */; };
+ 2860E328111B887F00E27156 /* AppDelegate_iPhone.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2860E326111B887F00E27156 /* AppDelegate_iPhone.mm */; };
+ 2860E329111B887F00E27156 /* MainWindow_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2860E327111B887F00E27156 /* MainWindow_iPhone.xib */; };
+ 2860E32E111B888700E27156 /* AppDelegate_iPad.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2860E32C111B888700E27156 /* AppDelegate_iPad.mm */; };
+ 2860E32F111B888700E27156 /* MainWindow_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2860E32D111B888700E27156 /* MainWindow_iPad.xib */; };
+ 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ 1D6058910D05DD3D006BFB54 /* iOSSampleApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iOSSampleApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ 2605F43C13F18B1B0044A072 /* DebuggerContentView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DebuggerContentView.cpp; sourceTree = "<group>"; };
+ 2605F43D13F18B1B0044A072 /* DebuggerViews.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebuggerViews.h; sourceTree = "<group>"; };
+ 2605F43E13F18B1B0044A072 /* DebuggerCommandsView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DebuggerCommandsView.cpp; sourceTree = "<group>"; };
+ 2605F43F13F18B1B0044A072 /* SkDebugDumper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDebugDumper.cpp; sourceTree = "<group>"; };
+ 2605F44013F18B1B0044A072 /* SkDebugDumper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDebugDumper.h; sourceTree = "<group>"; };
+ 2605F44113F18B1B0044A072 /* DebuggerStateView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DebuggerStateView.cpp; sourceTree = "<group>"; };
+ 2605F66413F19EB80044A072 /* GrStencilBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrStencilBuffer.cpp; sourceTree = "<group>"; };
+ 260E001513B11F5B0064D447 /* bitmapfilters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bitmapfilters.cpp; sourceTree = "<group>"; };
+ 260E001613B11F5B0064D447 /* blurs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = blurs.cpp; sourceTree = "<group>"; };
+ 260E001713B11F5B0064D447 /* complexclip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = complexclip.cpp; sourceTree = "<group>"; };
+ 260E001813B11F5B0064D447 /* filltypes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = filltypes.cpp; sourceTree = "<group>"; };
+ 260E001913B11F5B0064D447 /* gm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gm.h; sourceTree = "<group>"; };
+ 260E001A13B11F5B0064D447 /* gradients.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gradients.cpp; sourceTree = "<group>"; };
+ 260E001B13B11F5B0064D447 /* nocolorbleed.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nocolorbleed.cpp; sourceTree = "<group>"; };
+ 260E001C13B11F5B0064D447 /* points.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = points.cpp; sourceTree = "<group>"; };
+ 260E001D13B11F5B0064D447 /* poly2poly.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = poly2poly.cpp; sourceTree = "<group>"; };
+ 260E001E13B11F5B0064D447 /* shadertext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shadertext.cpp; sourceTree = "<group>"; };
+ 260E001F13B11F5B0064D447 /* shadows.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shadows.cpp; sourceTree = "<group>"; };
+ 260E002013B11F5B0064D447 /* shapes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shapes.cpp; sourceTree = "<group>"; };
+ 260E002113B11F5B0064D447 /* tilemodes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tilemodes.cpp; sourceTree = "<group>"; };
+ 260E002213B11F5B0064D447 /* xfermodes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = xfermodes.cpp; sourceTree = "<group>"; };
+ 260E002413B11F5B0064D447 /* ClockFaceView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ClockFaceView.cpp; sourceTree = "<group>"; };
+ 260E002513B11F5B0064D447 /* OverView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OverView.cpp; sourceTree = "<group>"; };
+ 260E002613B11F5B0064D447 /* SampleAARects.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleAARects.cpp; sourceTree = "<group>"; };
+ 260E002713B11F5B0064D447 /* SampleAll.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleAll.cpp; sourceTree = "<group>"; };
+ 260E002813B11F5B0064D447 /* SampleAnimator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleAnimator.cpp; sourceTree = "<group>"; };
+ 260E002A13B11F5B0064D447 /* SampleArc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleArc.cpp; sourceTree = "<group>"; };
+ 260E002B13B11F5B0064D447 /* SampleAvoid.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleAvoid.cpp; sourceTree = "<group>"; };
+ 260E002C13B11F5B0064D447 /* SampleBigGradient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleBigGradient.cpp; sourceTree = "<group>"; };
+ 260E002D13B11F5B0064D447 /* SampleBitmapRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleBitmapRect.cpp; sourceTree = "<group>"; };
+ 260E002E13B11F5B0064D447 /* SampleBlur.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleBlur.cpp; sourceTree = "<group>"; };
+ 260E002F13B11F5B0064D447 /* SampleCamera.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleCamera.cpp; sourceTree = "<group>"; };
+ 260E003013B11F5B0064D447 /* SampleCircle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleCircle.cpp; sourceTree = "<group>"; };
+ 260E003113B11F5B0064D447 /* SampleCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SampleCode.h; sourceTree = "<group>"; };
+ 260E003213B11F5B0064D447 /* SampleColorFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleColorFilter.cpp; sourceTree = "<group>"; };
+ 260E003313B11F5B0064D447 /* SampleComplexClip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleComplexClip.cpp; sourceTree = "<group>"; };
+ 260E003413B11F5B0064D447 /* SampleConcavePaths.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleConcavePaths.cpp; sourceTree = "<group>"; };
+ 260E003513B11F5B0064D447 /* SampleCull.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleCull.cpp; sourceTree = "<group>"; };
+ 260E003613B11F5B0064D447 /* SampleDecode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleDecode.cpp; sourceTree = "<group>"; };
+ 260E003713B11F5B0064D447 /* SampleDither.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleDither.cpp; sourceTree = "<group>"; };
+ 260E003813B11F5B0064D447 /* SampleDitherBitmap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleDitherBitmap.cpp; sourceTree = "<group>"; };
+ 260E003913B11F5B0064D447 /* SampleDrawLooper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleDrawLooper.cpp; sourceTree = "<group>"; };
+ 260E003A13B11F5B0064D447 /* SampleEffects.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleEffects.cpp; sourceTree = "<group>"; };
+ 260E003B13B11F5B0064D447 /* SampleEmboss.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleEmboss.cpp; sourceTree = "<group>"; };
+ 260E003C13B11F5B0064D447 /* SampleEncode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleEncode.cpp; sourceTree = "<group>"; };
+ 260E003D13B11F5B0064D447 /* SampleExtractAlpha.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleExtractAlpha.cpp; sourceTree = "<group>"; };
+ 260E003E13B11F5B0064D447 /* SampleFillType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleFillType.cpp; sourceTree = "<group>"; };
+ 260E003F13B11F5B0064D447 /* SampleFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleFilter.cpp; sourceTree = "<group>"; };
+ 260E004013B11F5B0064D447 /* SampleFilter2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleFilter2.cpp; sourceTree = "<group>"; };
+ 260E004113B11F5B0064D447 /* SampleFontCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleFontCache.cpp; sourceTree = "<group>"; };
+ 260E004213B11F5B0064D447 /* SampleFontScalerTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleFontScalerTest.cpp; sourceTree = "<group>"; };
+ 260E004313B11F5B0064D447 /* SampleFuzz.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleFuzz.cpp; sourceTree = "<group>"; };
+ 260E004413B11F5B0064D447 /* SampleGM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleGM.cpp; sourceTree = "<group>"; };
+ 260E004513B11F5B0064D447 /* SampleGradients.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleGradients.cpp; sourceTree = "<group>"; };
+ 260E004613B11F5B0064D447 /* SampleHairline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleHairline.cpp; sourceTree = "<group>"; };
+ 260E004713B11F5B0064D447 /* SampleImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleImage.cpp; sourceTree = "<group>"; };
+ 260E004813B11F5B0064D447 /* SampleImageDir.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleImageDir.cpp; sourceTree = "<group>"; };
+ 260E004913B11F5B0064D447 /* SampleLCD.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleLCD.cpp; sourceTree = "<group>"; };
+ 260E004A13B11F5B0064D447 /* SampleLayerMask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleLayerMask.cpp; sourceTree = "<group>"; };
+ 260E004B13B11F5B0064D447 /* SampleLayers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleLayers.cpp; sourceTree = "<group>"; };
+ 260E004C13B11F5B0064D447 /* SampleLineClipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleLineClipper.cpp; sourceTree = "<group>"; };
+ 260E004D13B11F5B0064D447 /* SampleLines.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleLines.cpp; sourceTree = "<group>"; };
+ 260E004E13B11F5B0064D447 /* SampleMeasure.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleMeasure.cpp; sourceTree = "<group>"; };
+ 260E004F13B11F5B0064D447 /* SampleMipMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleMipMap.cpp; sourceTree = "<group>"; };
+ 260E005013B11F5B0064D447 /* SampleMovie.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleMovie.cpp; sourceTree = "<group>"; };
+ 260E005113B11F5B0064D447 /* SampleNinePatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleNinePatch.cpp; sourceTree = "<group>"; };
+ 260E005213B11F5B0064D447 /* SampleOvalTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleOvalTest.cpp; sourceTree = "<group>"; };
+ 260E005313B11F5B0064D447 /* SampleOverflow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleOverflow.cpp; sourceTree = "<group>"; };
+ 260E005413B11F5B0064D447 /* SamplePageFlip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SamplePageFlip.cpp; sourceTree = "<group>"; };
+ 260E005513B11F5B0064D447 /* SamplePatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SamplePatch.cpp; sourceTree = "<group>"; };
+ 260E005613B11F5B0064D447 /* SamplePath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SamplePath.cpp; sourceTree = "<group>"; };
+ 260E005713B11F5B0064D447 /* SamplePathClip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SamplePathClip.cpp; sourceTree = "<group>"; };
+ 260E005813B11F5B0064D447 /* SamplePathEffects.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SamplePathEffects.cpp; sourceTree = "<group>"; };
+ 260E005913B11F5B0064D447 /* SamplePicture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SamplePicture.cpp; sourceTree = "<group>"; };
+ 260E005A13B11F5B0064D447 /* SamplePoints.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SamplePoints.cpp; sourceTree = "<group>"; };
+ 260E005B13B11F5B0064D447 /* SamplePolyToPoly.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SamplePolyToPoly.cpp; sourceTree = "<group>"; };
+ 260E005C13B11F5B0064D447 /* SampleRegion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleRegion.cpp; sourceTree = "<group>"; };
+ 260E005D13B11F5B0064D447 /* SampleRepeatTile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleRepeatTile.cpp; sourceTree = "<group>"; };
+ 260E005E13B11F5B0064D447 /* SampleShaderText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleShaderText.cpp; sourceTree = "<group>"; };
+ 260E005F13B11F5B0064D447 /* SampleShaders.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleShaders.cpp; sourceTree = "<group>"; };
+ 260E006013B11F5B0064D447 /* SampleShapes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleShapes.cpp; sourceTree = "<group>"; };
+ 260E006113B11F5B0064D447 /* SampleSkLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleSkLayer.cpp; sourceTree = "<group>"; };
+ 260E006213B11F5B0064D447 /* SampleSlides.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleSlides.cpp; sourceTree = "<group>"; };
+ 260E006313B11F5B0064D447 /* SampleStrokePath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleStrokePath.cpp; sourceTree = "<group>"; };
+ 260E006413B11F5B0064D447 /* SampleStrokeText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleStrokeText.cpp; sourceTree = "<group>"; };
+ 260E006613B11F5B0064D447 /* SampleText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleText.cpp; sourceTree = "<group>"; };
+ 260E006713B11F5B0064D447 /* SampleTextAlpha.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleTextAlpha.cpp; sourceTree = "<group>"; };
+ 260E006813B11F5B0064D447 /* SampleTextBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleTextBox.cpp; sourceTree = "<group>"; };
+ 260E006913B11F5B0064D447 /* SampleTextEffects.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleTextEffects.cpp; sourceTree = "<group>"; };
+ 260E006A13B11F5B0064D447 /* SampleTextOnPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleTextOnPath.cpp; sourceTree = "<group>"; };
+ 260E006B13B11F5B0064D447 /* SampleTextureDomain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleTextureDomain.cpp; sourceTree = "<group>"; };
+ 260E006C13B11F5B0064D447 /* SampleTiling.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleTiling.cpp; sourceTree = "<group>"; };
+ 260E006D13B11F5B0064D447 /* SampleTinyBitmap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleTinyBitmap.cpp; sourceTree = "<group>"; };
+ 260E006E13B11F5B0064D447 /* SampleTriangles.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleTriangles.cpp; sourceTree = "<group>"; };
+ 260E006F13B11F5B0064D447 /* SampleTypeface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleTypeface.cpp; sourceTree = "<group>"; };
+ 260E007013B11F5B0064D447 /* SampleUnitMapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleUnitMapper.cpp; sourceTree = "<group>"; };
+ 260E007113B11F5B0064D447 /* SampleVertices.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleVertices.cpp; sourceTree = "<group>"; };
+ 260E007213B11F5B0064D447 /* SampleXfermodes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleXfermodes.cpp; sourceTree = "<group>"; };
+ 260E007313B11F5B0064D447 /* SampleXfermodesBlur.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleXfermodesBlur.cpp; sourceTree = "<group>"; };
+ 260E007513B11F5B0064D447 /* SkGPipeRead.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGPipeRead.cpp; sourceTree = "<group>"; };
+ 260E007613B11F5B0064D447 /* SkGPipeWrite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGPipeWrite.cpp; sourceTree = "<group>"; };
+ 260E01B213B1225D0064D447 /* Sk64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sk64.h; path = core/Sk64.h; sourceTree = "<group>"; };
+ 260E01B313B1225D0064D447 /* SkAdvancedTypefaceMetrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkAdvancedTypefaceMetrics.h; path = core/SkAdvancedTypefaceMetrics.h; sourceTree = "<group>"; };
+ 260E01B413B1225D0064D447 /* SkAutoKern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkAutoKern.h; path = core/SkAutoKern.h; sourceTree = "<group>"; };
+ 260E01B513B1225D0064D447 /* SkBitmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkBitmap.h; path = core/SkBitmap.h; sourceTree = "<group>"; };
+ 260E01B613B1225D0064D447 /* SkBlitRow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkBlitRow.h; path = core/SkBlitRow.h; sourceTree = "<group>"; };
+ 260E01B713B1225D0064D447 /* SkBlitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkBlitter.h; path = core/SkBlitter.h; sourceTree = "<group>"; };
+ 260E01B813B1225D0064D447 /* SkBounder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkBounder.h; path = core/SkBounder.h; sourceTree = "<group>"; };
+ 260E01B913B1225D0064D447 /* SkBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkBuffer.h; path = core/SkBuffer.h; sourceTree = "<group>"; };
+ 260E01BA13B1225D0064D447 /* SkCanvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkCanvas.h; path = core/SkCanvas.h; sourceTree = "<group>"; };
+ 260E01BB13B1225D0064D447 /* SkChunkAlloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkChunkAlloc.h; path = core/SkChunkAlloc.h; sourceTree = "<group>"; };
+ 260E01BC13B1225D0064D447 /* SkClampRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkClampRange.h; path = core/SkClampRange.h; sourceTree = "<group>"; };
+ 260E01BD13B1225D0064D447 /* SkClipStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkClipStack.h; path = core/SkClipStack.h; sourceTree = "<group>"; };
+ 260E01BE13B1225D0064D447 /* SkColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkColor.h; path = core/SkColor.h; sourceTree = "<group>"; };
+ 260E01BF13B1225D0064D447 /* SkColorFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkColorFilter.h; path = core/SkColorFilter.h; sourceTree = "<group>"; };
+ 260E01C013B1225D0064D447 /* SkColorPriv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkColorPriv.h; path = core/SkColorPriv.h; sourceTree = "<group>"; };
+ 260E01C113B1225D0064D447 /* SkColorShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkColorShader.h; path = core/SkColorShader.h; sourceTree = "<group>"; };
+ 260E01C213B1225D0064D447 /* SkComposeShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkComposeShader.h; path = core/SkComposeShader.h; sourceTree = "<group>"; };
+ 260E01C313B1225D0064D447 /* SkDeque.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkDeque.h; path = core/SkDeque.h; sourceTree = "<group>"; };
+ 260E01C413B1225D0064D447 /* SkDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkDescriptor.h; path = core/SkDescriptor.h; sourceTree = "<group>"; };
+ 260E01C513B1225D0064D447 /* SkDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkDevice.h; path = core/SkDevice.h; sourceTree = "<group>"; };
+ 260E01C613B1225D0064D447 /* SkDither.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkDither.h; path = core/SkDither.h; sourceTree = "<group>"; };
+ 260E01C713B1225D0064D447 /* SkDraw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkDraw.h; path = core/SkDraw.h; sourceTree = "<group>"; };
+ 260E01C813B1225D0064D447 /* SkDrawFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkDrawFilter.h; path = core/SkDrawFilter.h; sourceTree = "<group>"; };
+ 260E01C913B1225D0064D447 /* SkDrawLooper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkDrawLooper.h; path = core/SkDrawLooper.h; sourceTree = "<group>"; };
+ 260E01CA13B1225D0064D447 /* SkEndian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkEndian.h; path = core/SkEndian.h; sourceTree = "<group>"; };
+ 260E01CB13B1225D0064D447 /* SkFDot6.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkFDot6.h; path = core/SkFDot6.h; sourceTree = "<group>"; };
+ 260E01CC13B1225D0064D447 /* SkFixed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkFixed.h; path = core/SkFixed.h; sourceTree = "<group>"; };
+ 260E01CD13B1225D0064D447 /* SkFlate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkFlate.h; path = core/SkFlate.h; sourceTree = "<group>"; };
+ 260E01CE13B1225D0064D447 /* SkFlattenable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkFlattenable.h; path = core/SkFlattenable.h; sourceTree = "<group>"; };
+ 260E01CF13B1225D0064D447 /* SkFloatBits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkFloatBits.h; path = core/SkFloatBits.h; sourceTree = "<group>"; };
+ 260E01D013B1225D0064D447 /* SkFloatingPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkFloatingPoint.h; path = core/SkFloatingPoint.h; sourceTree = "<group>"; };
+ 260E01D113B1225D0064D447 /* SkFontHost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkFontHost.h; path = core/SkFontHost.h; sourceTree = "<group>"; };
+ 260E01D213B1225D0064D447 /* SkGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkGeometry.h; path = core/SkGeometry.h; sourceTree = "<group>"; };
+ 260E01D313B1225D0064D447 /* SkGlobals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkGlobals.h; path = core/SkGlobals.h; sourceTree = "<group>"; };
+ 260E01D413B1225D0064D447 /* SkGraphics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkGraphics.h; path = core/SkGraphics.h; sourceTree = "<group>"; };
+ 260E01D513B1225D0064D447 /* SkMMapStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkMMapStream.h; path = core/SkMMapStream.h; sourceTree = "<group>"; };
+ 260E01D613B1225D0064D447 /* SkMallocPixelRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkMallocPixelRef.h; path = core/SkMallocPixelRef.h; sourceTree = "<group>"; };
+ 260E01D713B1225D0064D447 /* SkMask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkMask.h; path = core/SkMask.h; sourceTree = "<group>"; };
+ 260E01D813B1225D0064D447 /* SkMaskFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkMaskFilter.h; path = core/SkMaskFilter.h; sourceTree = "<group>"; };
+ 260E01D913B1225D0064D447 /* SkMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkMath.h; path = core/SkMath.h; sourceTree = "<group>"; };
+ 260E01DA13B1225D0064D447 /* SkMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkMatrix.h; path = core/SkMatrix.h; sourceTree = "<group>"; };
+ 260E01DB13B1225D0064D447 /* SkMetaData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkMetaData.h; path = core/SkMetaData.h; sourceTree = "<group>"; };
+ 260E01DC13B1225D0064D447 /* SkOSFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkOSFile.h; path = core/SkOSFile.h; sourceTree = "<group>"; };
+ 260E01DD13B1225D0064D447 /* SkPackBits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPackBits.h; path = core/SkPackBits.h; sourceTree = "<group>"; };
+ 260E01DE13B1225D0064D447 /* SkPaint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPaint.h; path = core/SkPaint.h; sourceTree = "<group>"; };
+ 260E01DF13B1225D0064D447 /* SkPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPath.h; path = core/SkPath.h; sourceTree = "<group>"; };
+ 260E01E013B1225D0064D447 /* SkPathEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPathEffect.h; path = core/SkPathEffect.h; sourceTree = "<group>"; };
+ 260E01E113B1225D0064D447 /* SkPathMeasure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPathMeasure.h; path = core/SkPathMeasure.h; sourceTree = "<group>"; };
+ 260E01E213B1225D0064D447 /* SkPerspIter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPerspIter.h; path = core/SkPerspIter.h; sourceTree = "<group>"; };
+ 260E01E313B1225D0064D447 /* SkPicture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPicture.h; path = core/SkPicture.h; sourceTree = "<group>"; };
+ 260E01E413B1225D0064D447 /* SkPixelRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPixelRef.h; path = core/SkPixelRef.h; sourceTree = "<group>"; };
+ 260E01E513B1225D0064D447 /* SkPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPoint.h; path = core/SkPoint.h; sourceTree = "<group>"; };
+ 260E01E613B1225D0064D447 /* SkPtrRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPtrRecorder.h; path = core/SkPtrRecorder.h; sourceTree = "<group>"; };
+ 260E01E713B1225D0064D447 /* SkRandom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkRandom.h; path = core/SkRandom.h; sourceTree = "<group>"; };
+ 260E01E813B1225D0064D447 /* SkRasterizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkRasterizer.h; path = core/SkRasterizer.h; sourceTree = "<group>"; };
+ 260E01E913B1225D0064D447 /* SkReader32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkReader32.h; path = core/SkReader32.h; sourceTree = "<group>"; };
+ 260E01EA13B1225D0064D447 /* SkRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkRect.h; path = core/SkRect.h; sourceTree = "<group>"; };
+ 260E01EB13B1225D0064D447 /* SkRefCnt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkRefCnt.h; path = core/SkRefCnt.h; sourceTree = "<group>"; };
+ 260E01EC13B1225D0064D447 /* SkRefDict.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkRefDict.h; path = core/SkRefDict.h; sourceTree = "<group>"; };
+ 260E01ED13B1225D0064D447 /* SkRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkRegion.h; path = core/SkRegion.h; sourceTree = "<group>"; };
+ 260E01EE13B1225D0064D447 /* SkScalar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkScalar.h; path = core/SkScalar.h; sourceTree = "<group>"; };
+ 260E01EF13B1225D0064D447 /* SkScalarCompare.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkScalarCompare.h; path = core/SkScalarCompare.h; sourceTree = "<group>"; };
+ 260E01F013B1225D0064D447 /* SkScalerContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkScalerContext.h; path = core/SkScalerContext.h; sourceTree = "<group>"; };
+ 260E01F113B1225D0064D447 /* SkScan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkScan.h; path = core/SkScan.h; sourceTree = "<group>"; };
+ 260E01F213B1225D0064D447 /* SkShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkShader.h; path = core/SkShader.h; sourceTree = "<group>"; };
+ 260E01F313B1225D0064D447 /* SkStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkStream.h; path = core/SkStream.h; sourceTree = "<group>"; };
+ 260E01F413B1225D0064D447 /* SkString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkString.h; path = core/SkString.h; sourceTree = "<group>"; };
+ 260E01F513B1225D0064D447 /* SkStroke.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkStroke.h; path = core/SkStroke.h; sourceTree = "<group>"; };
+ 260E01F613B1225D0064D447 /* SkTDArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTDArray.h; path = core/SkTDArray.h; sourceTree = "<group>"; };
+ 260E01F713B1225D0064D447 /* SkTDStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTDStack.h; path = core/SkTDStack.h; sourceTree = "<group>"; };
+ 260E01F813B1225D0064D447 /* SkTDict.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTDict.h; path = core/SkTDict.h; sourceTree = "<group>"; };
+ 260E01F913B1225D0064D447 /* SkTRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTRegistry.h; path = core/SkTRegistry.h; sourceTree = "<group>"; };
+ 260E01FB13B1225D0064D447 /* SkTSearch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTSearch.h; path = core/SkTSearch.h; sourceTree = "<group>"; };
+ 260E01FC13B1225D0064D447 /* SkTemplates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTemplates.h; path = core/SkTemplates.h; sourceTree = "<group>"; };
+ 260E01FD13B1225D0064D447 /* SkThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkThread.h; path = core/SkThread.h; sourceTree = "<group>"; };
+ 260E01FE13B1225D0064D447 /* SkThread_platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkThread_platform.h; path = core/SkThread_platform.h; sourceTree = "<group>"; };
+ 260E01FF13B1225D0064D447 /* SkTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTime.h; path = core/SkTime.h; sourceTree = "<group>"; };
+ 260E020013B1225D0064D447 /* SkTypeface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTypeface.h; path = core/SkTypeface.h; sourceTree = "<group>"; };
+ 260E020113B1225D0064D447 /* SkTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTypes.h; path = core/SkTypes.h; sourceTree = "<group>"; };
+ 260E020213B1225D0064D447 /* SkUnPreMultiply.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkUnPreMultiply.h; path = core/SkUnPreMultiply.h; sourceTree = "<group>"; };
+ 260E020313B1225D0064D447 /* SkUnitMapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkUnitMapper.h; path = core/SkUnitMapper.h; sourceTree = "<group>"; };
+ 260E020413B1225D0064D447 /* SkUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkUtils.h; path = core/SkUtils.h; sourceTree = "<group>"; };
+ 260E020513B1225D0064D447 /* SkWriter32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkWriter32.h; path = core/SkWriter32.h; sourceTree = "<group>"; };
+ 260E020613B1225D0064D447 /* SkXfermode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkXfermode.h; path = core/SkXfermode.h; sourceTree = "<group>"; };
+ 260E020813B1225D0064D447 /* SkCGUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCGUtils.h; sourceTree = "<group>"; };
+ 260E020B13B1225D0064D447 /* ARGB32_Clamp_Bilinear_BitmapShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARGB32_Clamp_Bilinear_BitmapShader.h; sourceTree = "<group>"; };
+ 260E020C13B1225D0064D447 /* Sk64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Sk64.cpp; sourceTree = "<group>"; };
+ 260E020D13B1225D0064D447 /* SkAdvancedTypefaceMetrics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAdvancedTypefaceMetrics.cpp; sourceTree = "<group>"; };
+ 260E020E13B1225D0064D447 /* SkAlphaRuns.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAlphaRuns.cpp; sourceTree = "<group>"; };
+ 260E020F13B1225D0064D447 /* SkAntiRun.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAntiRun.h; sourceTree = "<group>"; };
+ 260E021013B1225D0064D447 /* SkBitmap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBitmap.cpp; sourceTree = "<group>"; };
+ 260E021113B1225D0064D447 /* SkBitmapProcShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBitmapProcShader.cpp; sourceTree = "<group>"; };
+ 260E021213B1225D0064D447 /* SkBitmapProcShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapProcShader.h; sourceTree = "<group>"; };
+ 260E021313B1225D0064D447 /* SkBitmapProcState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBitmapProcState.cpp; sourceTree = "<group>"; };
+ 260E021413B1225D0064D447 /* SkBitmapProcState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapProcState.h; sourceTree = "<group>"; };
+ 260E021513B1225D0064D447 /* SkBitmapProcState_matrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapProcState_matrix.h; sourceTree = "<group>"; };
+ 260E021613B1225D0064D447 /* SkBitmapProcState_matrixProcs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBitmapProcState_matrixProcs.cpp; sourceTree = "<group>"; };
+ 260E021713B1225D0064D447 /* SkBitmapProcState_sample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapProcState_sample.h; sourceTree = "<group>"; };
+ 260E021813B1225D0064D447 /* SkBitmapSampler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBitmapSampler.cpp; sourceTree = "<group>"; };
+ 260E021913B1225D0064D447 /* SkBitmapSampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapSampler.h; sourceTree = "<group>"; };
+ 260E021A13B1225D0064D447 /* SkBitmapSamplerTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapSamplerTemplate.h; sourceTree = "<group>"; };
+ 260E021B13B1225D0064D447 /* SkBitmapShader16BilerpTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapShader16BilerpTemplate.h; sourceTree = "<group>"; };
+ 260E021C13B1225D0064D447 /* SkBitmapShaderTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapShaderTemplate.h; sourceTree = "<group>"; };
+ 260E021D13B1225D0064D447 /* SkBitmap_scroll.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBitmap_scroll.cpp; sourceTree = "<group>"; };
+ 260E021E13B1225D0064D447 /* SkBlitBWMaskTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBlitBWMaskTemplate.h; sourceTree = "<group>"; };
+ 260E021F13B1225D0064D447 /* SkBlitRow_D16.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitRow_D16.cpp; sourceTree = "<group>"; };
+ 260E022013B1225D0064D447 /* SkBlitRow_D32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitRow_D32.cpp; sourceTree = "<group>"; };
+ 260E022113B1225D0064D447 /* SkBlitRow_D4444.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitRow_D4444.cpp; sourceTree = "<group>"; };
+ 260E022213B1225D0064D447 /* SkBlitter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitter.cpp; sourceTree = "<group>"; };
+ 260E022313B1225D0064D447 /* SkBlitter_4444.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitter_4444.cpp; sourceTree = "<group>"; };
+ 260E022413B1225D0064D447 /* SkBlitter_A1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitter_A1.cpp; sourceTree = "<group>"; };
+ 260E022513B1225D0064D447 /* SkBlitter_A8.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitter_A8.cpp; sourceTree = "<group>"; };
+ 260E022613B1225D0064D447 /* SkBlitter_ARGB32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitter_ARGB32.cpp; sourceTree = "<group>"; };
+ 260E022713B1225D0064D447 /* SkBlitter_RGB16.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitter_RGB16.cpp; sourceTree = "<group>"; };
+ 260E022813B1225D0064D447 /* SkBlitter_Sprite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitter_Sprite.cpp; sourceTree = "<group>"; };
+ 260E022913B1225D0064D447 /* SkBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBuffer.cpp; sourceTree = "<group>"; };
+ 260E022A13B1225D0064D447 /* SkCanvas.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCanvas.cpp; sourceTree = "<group>"; };
+ 260E022B13B1225D0064D447 /* SkChunkAlloc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkChunkAlloc.cpp; sourceTree = "<group>"; };
+ 260E022C13B1225D0064D447 /* SkClampRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkClampRange.cpp; sourceTree = "<group>"; };
+ 260E022D13B1225D0064D447 /* SkClipStack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkClipStack.cpp; sourceTree = "<group>"; };
+ 260E022E13B1225D0064D447 /* SkColor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkColor.cpp; sourceTree = "<group>"; };
+ 260E022F13B1225D0064D447 /* SkColorFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkColorFilter.cpp; sourceTree = "<group>"; };
+ 260E023013B1225D0064D447 /* SkColorTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkColorTable.cpp; sourceTree = "<group>"; };
+ 260E023113B1225D0064D447 /* SkComposeShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkComposeShader.cpp; sourceTree = "<group>"; };
+ 260E023213B1225D0064D447 /* SkConcaveToTriangles.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkConcaveToTriangles.cpp; sourceTree = "<group>"; };
+ 260E023313B1225D0064D447 /* SkConcaveToTriangles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkConcaveToTriangles.h; sourceTree = "<group>"; };
+ 260E023413B1225D0064D447 /* SkCordic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCordic.cpp; sourceTree = "<group>"; };
+ 260E023513B1225D0064D447 /* SkCordic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCordic.h; sourceTree = "<group>"; };
+ 260E023613B1225D0064D447 /* SkCoreBlitters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCoreBlitters.h; sourceTree = "<group>"; };
+ 260E023713B1225D0064D447 /* SkCubicClipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCubicClipper.cpp; sourceTree = "<group>"; };
+ 260E023813B1225D0064D447 /* SkCubicClipper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCubicClipper.h; sourceTree = "<group>"; };
+ 260E023A13B1225D0064D447 /* SkDebug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDebug.cpp; sourceTree = "<group>"; };
+ 260E023B13B1225D0064D447 /* SkDeque.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDeque.cpp; sourceTree = "<group>"; };
+ 260E023C13B1225D0064D447 /* SkDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDevice.cpp; sourceTree = "<group>"; };
+ 260E023D13B1225D0064D447 /* SkDither.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDither.cpp; sourceTree = "<group>"; };
+ 260E023E13B1225D0064D447 /* SkDraw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDraw.cpp; sourceTree = "<group>"; };
+ 260E023F13B1225D0064D447 /* SkDrawProcs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawProcs.h; sourceTree = "<group>"; };
+ 260E024013B1225D0064D447 /* SkEdge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkEdge.cpp; sourceTree = "<group>"; };
+ 260E024113B1225D0064D447 /* SkEdge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkEdge.h; sourceTree = "<group>"; };
+ 260E024213B1225D0064D447 /* SkEdgeBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkEdgeBuilder.cpp; sourceTree = "<group>"; };
+ 260E024313B1225D0064D447 /* SkEdgeClipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkEdgeClipper.cpp; sourceTree = "<group>"; };
+ 260E024413B1225D0064D447 /* SkFP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkFP.h; sourceTree = "<group>"; };
+ 260E024513B1225D0064D447 /* SkFilterProc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFilterProc.cpp; sourceTree = "<group>"; };
+ 260E024613B1225D0064D447 /* SkFilterProc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkFilterProc.h; sourceTree = "<group>"; };
+ 260E024713B1225D0064D447 /* SkFlate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFlate.cpp; sourceTree = "<group>"; };
+ 260E024813B1225D0064D447 /* SkFlattenable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFlattenable.cpp; sourceTree = "<group>"; };
+ 260E024913B1225D0064D447 /* SkFloat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFloat.cpp; sourceTree = "<group>"; };
+ 260E024A13B1225D0064D447 /* SkFloat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkFloat.h; sourceTree = "<group>"; };
+ 260E024B13B1225D0064D447 /* SkFloatBits.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFloatBits.cpp; sourceTree = "<group>"; };
+ 260E024C13B1225D0064D447 /* SkFontHost.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFontHost.cpp; sourceTree = "<group>"; };
+ 260E024D13B1225D0064D447 /* SkGeometry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGeometry.cpp; sourceTree = "<group>"; };
+ 260E024E13B1225D0064D447 /* SkGlobals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGlobals.cpp; sourceTree = "<group>"; };
+ 260E024F13B1225D0064D447 /* SkGlyphCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGlyphCache.cpp; sourceTree = "<group>"; };
+ 260E025013B1225D0064D447 /* SkGlyphCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkGlyphCache.h; sourceTree = "<group>"; };
+ 260E025113B1225D0064D447 /* SkGraphics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGraphics.cpp; sourceTree = "<group>"; };
+ 260E025213B1225D0064D447 /* SkLineClipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkLineClipper.cpp; sourceTree = "<group>"; };
+ 260E025313B1225D0064D447 /* SkMMapStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMMapStream.cpp; sourceTree = "<group>"; };
+ 260E025413B1225D0064D447 /* SkMallocPixelRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMallocPixelRef.cpp; sourceTree = "<group>"; };
+ 260E025513B1225D0064D447 /* SkMask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMask.cpp; sourceTree = "<group>"; };
+ 260E025613B1225D0064D447 /* SkMaskFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMaskFilter.cpp; sourceTree = "<group>"; };
+ 260E025713B1225D0064D447 /* SkMath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMath.cpp; sourceTree = "<group>"; };
+ 260E025813B1225D0064D447 /* SkMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMatrix.cpp; sourceTree = "<group>"; };
+ 260E025913B1225D0064D447 /* SkMetaData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMetaData.cpp; sourceTree = "<group>"; };
+ 260E025A13B1225D0064D447 /* SkPackBits.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPackBits.cpp; sourceTree = "<group>"; };
+ 260E025B13B1225D0064D447 /* SkPaint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPaint.cpp; sourceTree = "<group>"; };
+ 260E025C13B1225D0064D447 /* SkPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPath.cpp; sourceTree = "<group>"; };
+ 260E025D13B1225D0064D447 /* SkPathEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPathEffect.cpp; sourceTree = "<group>"; };
+ 260E025E13B1225D0064D447 /* SkPathHeap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPathHeap.cpp; sourceTree = "<group>"; };
+ 260E025F13B1225D0064D447 /* SkPathHeap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPathHeap.h; sourceTree = "<group>"; };
+ 260E026013B1225D0064D447 /* SkPathMeasure.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPathMeasure.cpp; sourceTree = "<group>"; };
+ 260E026113B1225D0064D447 /* SkPicture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPicture.cpp; sourceTree = "<group>"; };
+ 260E026213B1225D0064D447 /* SkPictureFlat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPictureFlat.cpp; sourceTree = "<group>"; };
+ 260E026313B1225D0064D447 /* SkPictureFlat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPictureFlat.h; sourceTree = "<group>"; };
+ 260E026413B1225D0064D447 /* SkPicturePlayback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPicturePlayback.cpp; sourceTree = "<group>"; };
+ 260E026513B1225D0064D447 /* SkPicturePlayback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPicturePlayback.h; sourceTree = "<group>"; };
+ 260E026613B1225D0064D447 /* SkPictureRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPictureRecord.cpp; sourceTree = "<group>"; };
+ 260E026713B1225D0064D447 /* SkPictureRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPictureRecord.h; sourceTree = "<group>"; };
+ 260E026813B1225D0064D447 /* SkPixelRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPixelRef.cpp; sourceTree = "<group>"; };
+ 260E026913B1225D0064D447 /* SkPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPoint.cpp; sourceTree = "<group>"; };
+ 260E026A13B1225D0064D447 /* SkProcSpriteBlitter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkProcSpriteBlitter.cpp; sourceTree = "<group>"; };
+ 260E026B13B1225D0064D447 /* SkPtrRecorder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPtrRecorder.cpp; sourceTree = "<group>"; };
+ 260E026C13B1225D0064D447 /* SkQuadClipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkQuadClipper.cpp; sourceTree = "<group>"; };
+ 260E026D13B1225D0064D447 /* SkQuadClipper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkQuadClipper.h; sourceTree = "<group>"; };
+ 260E026E13B1225D0064D447 /* SkRasterizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkRasterizer.cpp; sourceTree = "<group>"; };
+ 260E026F13B1225D0064D447 /* SkRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkRect.cpp; sourceTree = "<group>"; };
+ 260E027013B1225D0064D447 /* SkRefDict.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkRefDict.cpp; sourceTree = "<group>"; };
+ 260E027113B1225D0064D447 /* SkRegion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkRegion.cpp; sourceTree = "<group>"; };
+ 260E027213B1225D0064D447 /* SkRegionPriv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkRegionPriv.h; sourceTree = "<group>"; };
+ 260E027313B1225D0064D447 /* SkRegion_path.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkRegion_path.cpp; sourceTree = "<group>"; };
+ 260E027413B1225D0064D447 /* SkScalar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScalar.cpp; sourceTree = "<group>"; };
+ 260E027513B1225D0064D447 /* SkScalerContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScalerContext.cpp; sourceTree = "<group>"; };
+ 260E027613B1225D0064D447 /* SkScan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScan.cpp; sourceTree = "<group>"; };
+ 260E027713B1225D0064D447 /* SkScanPriv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkScanPriv.h; sourceTree = "<group>"; };
+ 260E027813B1225D0064D447 /* SkScan_AntiPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScan_AntiPath.cpp; sourceTree = "<group>"; };
+ 260E027913B1225D0064D447 /* SkScan_Antihair.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScan_Antihair.cpp; sourceTree = "<group>"; };
+ 260E027A13B1225D0064D447 /* SkScan_Hairline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScan_Hairline.cpp; sourceTree = "<group>"; };
+ 260E027B13B1225D0064D447 /* SkScan_Path.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScan_Path.cpp; sourceTree = "<group>"; };
+ 260E027C13B1225D0064D447 /* SkShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkShader.cpp; sourceTree = "<group>"; };
+ 260E027D13B1225D0064D447 /* SkShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkShape.cpp; sourceTree = "<group>"; };
+ 260E027E13B1225D0064D447 /* SkSinTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSinTable.h; sourceTree = "<group>"; };
+ 260E027F13B1225D0064D447 /* SkSpriteBlitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSpriteBlitter.h; sourceTree = "<group>"; };
+ 260E028013B1225D0064D447 /* SkSpriteBlitterTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSpriteBlitterTemplate.h; sourceTree = "<group>"; };
+ 260E028113B1225D0064D447 /* SkSpriteBlitter_ARGB32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSpriteBlitter_ARGB32.cpp; sourceTree = "<group>"; };
+ 260E028213B1225D0064D447 /* SkSpriteBlitter_RGB16.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSpriteBlitter_RGB16.cpp; sourceTree = "<group>"; };
+ 260E028313B1225D0064D447 /* SkStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkStream.cpp; sourceTree = "<group>"; };
+ 260E028413B1225D0064D447 /* SkString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkString.cpp; sourceTree = "<group>"; };
+ 260E028513B1225D0064D447 /* SkStroke.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkStroke.cpp; sourceTree = "<group>"; };
+ 260E028613B1225D0064D447 /* SkStrokerPriv.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkStrokerPriv.cpp; sourceTree = "<group>"; };
+ 260E028713B1225D0064D447 /* SkStrokerPriv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkStrokerPriv.h; sourceTree = "<group>"; };
+ 260E028813B1225D0064D447 /* SkTSearch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTSearch.cpp; sourceTree = "<group>"; };
+ 260E028913B1225D0064D447 /* SkTSort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTSort.h; sourceTree = "<group>"; };
+ 260E028A13B1225D0064D447 /* SkTemplatesPriv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTemplatesPriv.h; sourceTree = "<group>"; };
+ 260E028B13B1225D0064D447 /* SkTextFormatParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTextFormatParams.h; sourceTree = "<group>"; };
+ 260E028C13B1225D0064D447 /* SkTypeface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTypeface.cpp; sourceTree = "<group>"; };
+ 260E028D13B1225D0064D447 /* SkTypefaceCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTypefaceCache.cpp; sourceTree = "<group>"; };
+ 260E028E13B1225D0064D447 /* SkTypefaceCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTypefaceCache.h; sourceTree = "<group>"; };
+ 260E028F13B1225D0064D447 /* SkUnPreMultiply.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkUnPreMultiply.cpp; sourceTree = "<group>"; };
+ 260E029013B1225D0064D447 /* SkUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkUtils.cpp; sourceTree = "<group>"; };
+ 260E029113B1225D0064D447 /* SkWriter32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkWriter32.cpp; sourceTree = "<group>"; };
+ 260E029213B1225D0064D447 /* SkXfermode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkXfermode.cpp; sourceTree = "<group>"; };
+ 260E029613B1225D0064D447 /* SkDebug_stdio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDebug_stdio.cpp; sourceTree = "<group>"; };
+ 260E029813B1225D0064D447 /* SkFontHost_mac_coretext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFontHost_mac_coretext.cpp; sourceTree = "<group>"; };
+ 260E029A13B1225D0064D447 /* SkGlobals_global.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGlobals_global.cpp; sourceTree = "<group>"; };
+ 260E029B13B1225D0064D447 /* SkMemory_malloc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMemory_malloc.cpp; sourceTree = "<group>"; };
+ 260E029D13B1225D0064D447 /* SkThread_pthread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkThread_pthread.cpp; sourceTree = "<group>"; };
+ 260E029E13B1225D0064D447 /* SkTime_Unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTime_Unix.cpp; sourceTree = "<group>"; };
+ 260E02A013B1225D0064D447 /* SkXMLParser_empty.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkXMLParser_empty.cpp; sourceTree = "<group>"; };
+ 260E02A113B1225D0064D447 /* sk_predefined_gamma.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sk_predefined_gamma.h; sourceTree = "<group>"; };
+ 260E032013B122A30064D447 /* Sk1DPathEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Sk1DPathEffect.h; sourceTree = "<group>"; };
+ 260E032113B122A30064D447 /* Sk2DPathEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Sk2DPathEffect.h; sourceTree = "<group>"; };
+ 260E032213B122A30064D447 /* SkAvoidXfermode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAvoidXfermode.h; sourceTree = "<group>"; };
+ 260E032313B122A30064D447 /* SkBlurDrawLooper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBlurDrawLooper.h; sourceTree = "<group>"; };
+ 260E032413B122A30064D447 /* SkBlurMaskFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBlurMaskFilter.h; sourceTree = "<group>"; };
+ 260E032513B122A30064D447 /* SkColorMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkColorMatrix.h; sourceTree = "<group>"; };
+ 260E032613B122A30064D447 /* SkColorMatrixFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkColorMatrixFilter.h; sourceTree = "<group>"; };
+ 260E032713B122A30064D447 /* SkCornerPathEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCornerPathEffect.h; sourceTree = "<group>"; };
+ 260E032813B122A30064D447 /* SkDashPathEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDashPathEffect.h; sourceTree = "<group>"; };
+ 260E032913B122A30064D447 /* SkDiscretePathEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDiscretePathEffect.h; sourceTree = "<group>"; };
+ 260E032A13B122A30064D447 /* SkDrawExtraPathEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawExtraPathEffect.h; sourceTree = "<group>"; };
+ 260E032B13B122A30064D447 /* SkEmbossMaskFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkEmbossMaskFilter.h; sourceTree = "<group>"; };
+ 260E032C13B122A30064D447 /* SkGradientShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkGradientShader.h; sourceTree = "<group>"; };
+ 260E032D13B122A30064D447 /* SkGroupShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkGroupShape.h; sourceTree = "<group>"; };
+ 260E032E13B122A30064D447 /* SkKernel33MaskFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkKernel33MaskFilter.h; sourceTree = "<group>"; };
+ 260E032F13B122A30064D447 /* SkLayerDrawLooper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkLayerDrawLooper.h; sourceTree = "<group>"; };
+ 260E033013B122A30064D447 /* SkLayerRasterizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkLayerRasterizer.h; sourceTree = "<group>"; };
+ 260E033113B122A30064D447 /* SkPaintFlagsDrawFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPaintFlagsDrawFilter.h; sourceTree = "<group>"; };
+ 260E033213B122A30064D447 /* SkPixelXorXfermode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPixelXorXfermode.h; sourceTree = "<group>"; };
+ 260E033313B122A30064D447 /* SkPorterDuff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPorterDuff.h; sourceTree = "<group>"; };
+ 260E033413B122A30064D447 /* SkRectShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkRectShape.h; sourceTree = "<group>"; };
+ 260E033513B122A30064D447 /* SkTransparentShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTransparentShader.h; sourceTree = "<group>"; };
+ 260E033713B122A30064D447 /* Sk1DPathEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Sk1DPathEffect.cpp; sourceTree = "<group>"; };
+ 260E033813B122A30064D447 /* Sk2DPathEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Sk2DPathEffect.cpp; sourceTree = "<group>"; };
+ 260E033913B122A30064D447 /* SkAvoidXfermode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAvoidXfermode.cpp; sourceTree = "<group>"; };
+ 260E033A13B122A30064D447 /* SkBitmapCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBitmapCache.cpp; sourceTree = "<group>"; };
+ 260E033B13B122A30064D447 /* SkBitmapCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmapCache.h; sourceTree = "<group>"; };
+ 260E033C13B122A30064D447 /* SkBlurDrawLooper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlurDrawLooper.cpp; sourceTree = "<group>"; };
+ 260E033D13B122A30064D447 /* SkBlurMask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlurMask.cpp; sourceTree = "<group>"; };
+ 260E033E13B122A30064D447 /* SkBlurMask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBlurMask.h; sourceTree = "<group>"; };
+ 260E033F13B122A30064D447 /* SkBlurMaskFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlurMaskFilter.cpp; sourceTree = "<group>"; };
+ 260E034013B122A30064D447 /* SkColorFilters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkColorFilters.cpp; sourceTree = "<group>"; };
+ 260E034113B122A30064D447 /* SkColorMatrixFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkColorMatrixFilter.cpp; sourceTree = "<group>"; };
+ 260E034213B122A30064D447 /* SkCornerPathEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCornerPathEffect.cpp; sourceTree = "<group>"; };
+ 260E034313B122A30064D447 /* SkDashPathEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDashPathEffect.cpp; sourceTree = "<group>"; };
+ 260E034413B122A30064D447 /* SkDiscretePathEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDiscretePathEffect.cpp; sourceTree = "<group>"; };
+ 260E034513B122A30064D447 /* SkEmbossMask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkEmbossMask.cpp; sourceTree = "<group>"; };
+ 260E034613B122A30064D447 /* SkEmbossMask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkEmbossMask.h; sourceTree = "<group>"; };
+ 260E034713B122A30064D447 /* SkEmbossMaskFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkEmbossMaskFilter.cpp; sourceTree = "<group>"; };
+ 260E034813B122A30064D447 /* SkEmbossMask_Table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkEmbossMask_Table.h; sourceTree = "<group>"; };
+ 260E034913B122A30064D447 /* SkGradientShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGradientShader.cpp; sourceTree = "<group>"; };
+ 260E034A13B122A30064D447 /* SkGroupShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGroupShape.cpp; sourceTree = "<group>"; };
+ 260E034B13B122A30064D447 /* SkKernel33MaskFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkKernel33MaskFilter.cpp; sourceTree = "<group>"; };
+ 260E034C13B122A30064D447 /* SkLayerDrawLooper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkLayerDrawLooper.cpp; sourceTree = "<group>"; };
+ 260E034D13B122A30064D447 /* SkLayerRasterizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkLayerRasterizer.cpp; sourceTree = "<group>"; };
+ 260E034E13B122A30064D447 /* SkPaintFlagsDrawFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPaintFlagsDrawFilter.cpp; sourceTree = "<group>"; };
+ 260E034F13B122A30064D447 /* SkPixelXorXfermode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPixelXorXfermode.cpp; sourceTree = "<group>"; };
+ 260E035013B122A30064D447 /* SkPorterDuff.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPorterDuff.cpp; sourceTree = "<group>"; };
+ 260E035113B122A30064D447 /* SkRadialGradient_Table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkRadialGradient_Table.h; sourceTree = "<group>"; };
+ 260E035213B122A30064D447 /* SkRectShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkRectShape.cpp; sourceTree = "<group>"; };
+ 260E035313B122A30064D447 /* SkTransparentShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTransparentShader.cpp; sourceTree = "<group>"; };
+ 260E038C13B122D40064D447 /* GrAllocPool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrAllocPool.h; sourceTree = "<group>"; };
+ 260E038D13B122D40064D447 /* GrAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrAllocator.h; sourceTree = "<group>"; };
+ 260E038E13B122D40064D447 /* GrAtlas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrAtlas.h; sourceTree = "<group>"; };
+ 260E038F13B122D40064D447 /* GrClip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrClip.h; sourceTree = "<group>"; };
+ 260E039013B122D40064D447 /* GrClipIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrClipIterator.h; sourceTree = "<group>"; };
+ 260E039113B122D40064D447 /* GrColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrColor.h; sourceTree = "<group>"; };
+ 260E039213B122D40064D447 /* GrConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrConfig.h; sourceTree = "<group>"; };
+ 260E039313B122D40064D447 /* GrContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrContext.h; sourceTree = "<group>"; };
+ 260E039413B122D40064D447 /* GrContext_impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrContext_impl.h; sourceTree = "<group>"; };
+ 260E039513B122D40064D447 /* GrDrawTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrDrawTarget.h; sourceTree = "<group>"; };
+ 260E039613B122D40064D447 /* GrFontScaler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrFontScaler.h; sourceTree = "<group>"; };
+ 260E039713B122D40064D447 /* GrGLConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGLConfig.h; sourceTree = "<group>"; };
+ 260E039813B122D40064D447 /* GrGLConfig_chrome.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGLConfig_chrome.h; sourceTree = "<group>"; };
+ 260E039B13B122D40064D447 /* GrGLInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGLInterface.h; sourceTree = "<group>"; };
+ 260E039E13B122D40064D447 /* GrGeometryBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGeometryBuffer.h; sourceTree = "<group>"; };
+ 260E039F13B122D40064D447 /* GrGlyph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGlyph.h; sourceTree = "<group>"; };
+ 260E03A013B122D40064D447 /* GrGpu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGpu.h; sourceTree = "<group>"; };
+ 260E03A113B122D40064D447 /* GrGpuVertex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGpuVertex.h; sourceTree = "<group>"; };
+ 260E03A213B122D40064D447 /* GrIPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrIPoint.h; sourceTree = "<group>"; };
+ 260E03A313B122D40064D447 /* GrInOrderDrawBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrInOrderDrawBuffer.h; sourceTree = "<group>"; };
+ 260E03A413B122D40064D447 /* GrIndexBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrIndexBuffer.h; sourceTree = "<group>"; };
+ 260E03A513B122D40064D447 /* GrInstanceCounter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrInstanceCounter.h; sourceTree = "<group>"; };
+ 260E03A613B122D40064D447 /* GrKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrKey.h; sourceTree = "<group>"; };
+ 260E03A713B122D40064D447 /* GrMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrMatrix.h; sourceTree = "<group>"; };
+ 260E03A913B122D40064D447 /* GrMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrMesh.h; sourceTree = "<group>"; };
+ 260E03AA13B122D40064D447 /* GrNoncopyable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrNoncopyable.h; sourceTree = "<group>"; };
+ 260E03AB13B122D40064D447 /* GrPaint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPaint.h; sourceTree = "<group>"; };
+ 260E03AC13B122D40064D447 /* GrPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPath.h; sourceTree = "<group>"; };
+ 260E03AD13B122D40064D447 /* GrPathRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPathRenderer.h; sourceTree = "<group>"; };
+ 260E03AE13B122D40064D447 /* GrPathSink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPathSink.h; sourceTree = "<group>"; };
+ 260E03AF13B122D40064D447 /* GrPlotMgr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPlotMgr.h; sourceTree = "<group>"; };
+ 260E03B013B122D40064D447 /* GrPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPoint.h; sourceTree = "<group>"; };
+ 260E03B113B122D40064D447 /* GrRandom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrRandom.h; sourceTree = "<group>"; };
+ 260E03B213B122D40064D447 /* GrRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrRect.h; sourceTree = "<group>"; };
+ 260E03B313B122D40064D447 /* GrRectanizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrRectanizer.h; sourceTree = "<group>"; };
+ 260E03B413B122D40064D447 /* GrRefCnt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrRefCnt.h; sourceTree = "<group>"; };
+ 260E03B513B122D40064D447 /* GrResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrResource.h; sourceTree = "<group>"; };
+ 260E03B613B122D40064D447 /* GrSamplerState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrSamplerState.h; sourceTree = "<group>"; };
+ 260E03B713B122D40064D447 /* GrScalar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrScalar.h; sourceTree = "<group>"; };
+ 260E03B813B122D40064D447 /* GrStencil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrStencil.h; sourceTree = "<group>"; };
+ 260E03B913B122D40064D447 /* GrStopwatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrStopwatch.h; sourceTree = "<group>"; };
+ 260E03BA13B122D40064D447 /* GrStringBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrStringBuilder.h; sourceTree = "<group>"; };
+ 260E03BB13B122D40064D447 /* GrTArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTArray.h; sourceTree = "<group>"; };
+ 260E03BC13B122D40064D447 /* GrTBSearch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTBSearch.h; sourceTree = "<group>"; };
+ 260E03BD13B122D40064D447 /* GrTDArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTDArray.h; sourceTree = "<group>"; };
+ 260E03BE13B122D40064D447 /* GrTHashCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTHashCache.h; sourceTree = "<group>"; };
+ 260E03BF13B122D40064D447 /* GrTLList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTLList.h; sourceTree = "<group>"; };
+ 260E03C013B122D40064D447 /* GrTesselatedPathRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTesselatedPathRenderer.h; sourceTree = "<group>"; };
+ 260E03C113B122D40064D447 /* GrTextContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTextContext.h; sourceTree = "<group>"; };
+ 260E03C213B122D40064D447 /* GrTextStrike.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTextStrike.h; sourceTree = "<group>"; };
+ 260E03C313B122D40064D447 /* GrTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTexture.h; sourceTree = "<group>"; };
+ 260E03C513B122D40064D447 /* GrTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTypes.h; sourceTree = "<group>"; };
+ 260E03C613B122D40064D447 /* GrUserConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrUserConfig.h; sourceTree = "<group>"; };
+ 260E03C713B122D40064D447 /* GrVertexBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrVertexBuffer.h; sourceTree = "<group>"; };
+ 260E03D113B122D40064D447 /* GrAllocPool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrAllocPool.cpp; sourceTree = "<group>"; };
+ 260E03D213B122D40064D447 /* GrAtlas.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrAtlas.cpp; sourceTree = "<group>"; };
+ 260E03D313B122D40064D447 /* GrBinHashKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrBinHashKey.h; sourceTree = "<group>"; };
+ 260E03D413B122D40064D447 /* GrBufferAllocPool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrBufferAllocPool.cpp; sourceTree = "<group>"; };
+ 260E03D513B122D40064D447 /* GrBufferAllocPool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrBufferAllocPool.h; sourceTree = "<group>"; };
+ 260E03D613B122D40064D447 /* GrClip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrClip.cpp; sourceTree = "<group>"; };
+ 260E03D713B122D40064D447 /* GrContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrContext.cpp; sourceTree = "<group>"; };
+ 260E03D913B122D40064D447 /* GrDrawTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrDrawTarget.cpp; sourceTree = "<group>"; };
+ 260E03DA13B122D40064D447 /* GrGLDefaultInterface_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLDefaultInterface_none.cpp; sourceTree = "<group>"; };
+ 260E03DB13B122D40064D447 /* GrGLIndexBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLIndexBuffer.cpp; sourceTree = "<group>"; };
+ 260E03DC13B122D40064D447 /* GrGLInterface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLInterface.cpp; sourceTree = "<group>"; };
+ 260E03DD13B122D40064D447 /* GrGLProgram.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLProgram.cpp; sourceTree = "<group>"; };
+ 260E03DE13B122D40064D447 /* GrGLProgram.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGLProgram.h; sourceTree = "<group>"; };
+ 260E03DF13B122D40064D447 /* GrGLTexture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLTexture.cpp; sourceTree = "<group>"; };
+ 260E03E013B122D40064D447 /* GrGLUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLUtil.cpp; sourceTree = "<group>"; };
+ 260E03E113B122D40064D447 /* GrGLVertexBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLVertexBuffer.cpp; sourceTree = "<group>"; };
+ 260E03E213B122D40064D447 /* GrGpu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGpu.cpp; sourceTree = "<group>"; };
+ 260E03E313B122D40064D447 /* GrGpuFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGpuFactory.cpp; sourceTree = "<group>"; };
+ 260E03E413B122D40064D447 /* GrGpuGL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGpuGL.cpp; sourceTree = "<group>"; };
+ 260E03E513B122D40064D447 /* GrGpuGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGpuGL.h; sourceTree = "<group>"; };
+ 260E03E613B122D40064D447 /* GrGpuGLFixed.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGpuGLFixed.cpp; sourceTree = "<group>"; };
+ 260E03E713B122D40064D447 /* GrGpuGLFixed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGpuGLFixed.h; sourceTree = "<group>"; };
+ 260E03E813B122D40064D447 /* GrGpuGLShaders.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGpuGLShaders.cpp; sourceTree = "<group>"; };
+ 260E03E913B122D40064D447 /* GrGpuGLShaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGpuGLShaders.h; sourceTree = "<group>"; };
+ 260E03EA13B122D40064D447 /* GrInOrderDrawBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrInOrderDrawBuffer.cpp; sourceTree = "<group>"; };
+ 260E03EB13B122D40064D447 /* GrMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrMatrix.cpp; sourceTree = "<group>"; };
+ 260E03EC13B122D40064D447 /* GrMemory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrMemory.cpp; sourceTree = "<group>"; };
+ 260E03ED13B122D40064D447 /* GrPathRenderer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrPathRenderer.cpp; sourceTree = "<group>"; };
+ 260E03EE13B122D40064D447 /* GrPathUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrPathUtils.cpp; sourceTree = "<group>"; };
+ 260E03EF13B122D40064D447 /* GrPathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPathUtils.h; sourceTree = "<group>"; };
+ 260E03F013B122D40064D447 /* GrRectanizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrRectanizer.cpp; sourceTree = "<group>"; };
+ 260E03F113B122D40064D447 /* GrRedBlackTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrRedBlackTree.h; sourceTree = "<group>"; };
+ 260E03F213B122D40064D447 /* GrResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrResource.cpp; sourceTree = "<group>"; };
+ 260E03F313B122D40064D447 /* GrStencil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrStencil.cpp; sourceTree = "<group>"; };
+ 260E03F513B122D40064D447 /* GrTextContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrTextContext.cpp; sourceTree = "<group>"; };
+ 260E03F613B122D40064D447 /* GrTextStrike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrTextStrike.cpp; sourceTree = "<group>"; };
+ 260E03F713B122D40064D447 /* GrTextStrike_impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTextStrike_impl.h; sourceTree = "<group>"; };
+ 260E03F813B122D40064D447 /* GrTexture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrTexture.cpp; sourceTree = "<group>"; };
+ 260E03FA13B122D40064D447 /* gr_unittests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gr_unittests.cpp; sourceTree = "<group>"; };
+ 260E03FC13B122D40064D447 /* SkGpuCanvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkGpuCanvas.h; sourceTree = "<group>"; };
+ 260E03FD13B122D40064D447 /* SkGpuDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkGpuDevice.h; sourceTree = "<group>"; };
+ 260E03FF13B122D40064D447 /* SkGr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkGr.h; sourceTree = "<group>"; };
+ 260E040013B122D40064D447 /* SkGrTexturePixelRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkGrTexturePixelRef.h; sourceTree = "<group>"; };
+ 260E040213B122D40064D447 /* GrPrintf_skia.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrPrintf_skia.cpp; sourceTree = "<group>"; };
+ 260E040313B122D40064D447 /* SkGpuCanvas.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGpuCanvas.cpp; sourceTree = "<group>"; };
+ 260E040413B122D40064D447 /* SkGpuDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGpuDevice.cpp; sourceTree = "<group>"; };
+ 260E040513B122D40064D447 /* SkGr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGr.cpp; sourceTree = "<group>"; };
+ 260E040613B122D40064D447 /* SkGrFontScaler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGrFontScaler.cpp; sourceTree = "<group>"; };
+ 260E040713B122D40064D447 /* SkGrTexturePixelRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGrTexturePixelRef.cpp; sourceTree = "<group>"; };
+ 260E044113B1232F0064D447 /* SkImageDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkImageDecoder.h; sourceTree = "<group>"; };
+ 260E044213B1232F0064D447 /* SkImageEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkImageEncoder.h; sourceTree = "<group>"; };
+ 260E044A13B1232F0064D447 /* SkBitmap_RLEPixels.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBitmap_RLEPixels.h; sourceTree = "<group>"; };
+ 260E044B13B1232F0064D447 /* SkCreateRLEPixelRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCreateRLEPixelRef.cpp; sourceTree = "<group>"; };
+ 260E044C13B1232F0064D447 /* SkFDStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFDStream.cpp; sourceTree = "<group>"; };
+ 260E044D13B1232F0064D447 /* SkFlipPixelRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkFlipPixelRef.cpp; sourceTree = "<group>"; };
+ 260E044E13B1232F0064D447 /* SkImageDecoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageDecoder.cpp; sourceTree = "<group>"; };
+ 260E045613B1232F0064D447 /* SkImageEncoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageEncoder.cpp; sourceTree = "<group>"; };
+ 260E04C813B123840064D447 /* SkSVGAttribute.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGAttribute.h; sourceTree = "<group>"; };
+ 260E04C913B123840064D447 /* SkSVGBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGBase.h; sourceTree = "<group>"; };
+ 260E04CA13B123840064D447 /* SkSVGPaintState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGPaintState.h; sourceTree = "<group>"; };
+ 260E04CB13B123840064D447 /* SkSVGParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGParser.h; sourceTree = "<group>"; };
+ 260E04CC13B123840064D447 /* SkSVGTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGTypes.h; sourceTree = "<group>"; };
+ 260E04CE13B123840064D447 /* SkSVGCircle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGCircle.cpp; sourceTree = "<group>"; };
+ 260E04CF13B123840064D447 /* SkSVGCircle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGCircle.h; sourceTree = "<group>"; };
+ 260E04D013B123840064D447 /* SkSVGClipPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGClipPath.cpp; sourceTree = "<group>"; };
+ 260E04D113B123840064D447 /* SkSVGClipPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGClipPath.h; sourceTree = "<group>"; };
+ 260E04D213B123840064D447 /* SkSVGDefs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGDefs.cpp; sourceTree = "<group>"; };
+ 260E04D313B123840064D447 /* SkSVGDefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGDefs.h; sourceTree = "<group>"; };
+ 260E04D413B123840064D447 /* SkSVGElements.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGElements.cpp; sourceTree = "<group>"; };
+ 260E04D513B123840064D447 /* SkSVGElements.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGElements.h; sourceTree = "<group>"; };
+ 260E04D613B123840064D447 /* SkSVGEllipse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGEllipse.cpp; sourceTree = "<group>"; };
+ 260E04D713B123840064D447 /* SkSVGEllipse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGEllipse.h; sourceTree = "<group>"; };
+ 260E04D813B123840064D447 /* SkSVGFeColorMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGFeColorMatrix.cpp; sourceTree = "<group>"; };
+ 260E04D913B123840064D447 /* SkSVGFeColorMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGFeColorMatrix.h; sourceTree = "<group>"; };
+ 260E04DA13B123840064D447 /* SkSVGFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGFilter.cpp; sourceTree = "<group>"; };
+ 260E04DB13B123840064D447 /* SkSVGFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGFilter.h; sourceTree = "<group>"; };
+ 260E04DC13B123840064D447 /* SkSVGG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGG.cpp; sourceTree = "<group>"; };
+ 260E04DD13B123840064D447 /* SkSVGG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGG.h; sourceTree = "<group>"; };
+ 260E04DE13B123840064D447 /* SkSVGGradient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGGradient.cpp; sourceTree = "<group>"; };
+ 260E04DF13B123840064D447 /* SkSVGGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGGradient.h; sourceTree = "<group>"; };
+ 260E04E013B123840064D447 /* SkSVGGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGGroup.cpp; sourceTree = "<group>"; };
+ 260E04E113B123840064D447 /* SkSVGGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGGroup.h; sourceTree = "<group>"; };
+ 260E04E213B123840064D447 /* SkSVGImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGImage.cpp; sourceTree = "<group>"; };
+ 260E04E313B123840064D447 /* SkSVGImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGImage.h; sourceTree = "<group>"; };
+ 260E04E413B123840064D447 /* SkSVGLine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGLine.cpp; sourceTree = "<group>"; };
+ 260E04E513B123840064D447 /* SkSVGLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGLine.h; sourceTree = "<group>"; };
+ 260E04E613B123840064D447 /* SkSVGLinearGradient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGLinearGradient.cpp; sourceTree = "<group>"; };
+ 260E04E713B123840064D447 /* SkSVGLinearGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGLinearGradient.h; sourceTree = "<group>"; };
+ 260E04E813B123840064D447 /* SkSVGMask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGMask.cpp; sourceTree = "<group>"; };
+ 260E04E913B123840064D447 /* SkSVGMask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGMask.h; sourceTree = "<group>"; };
+ 260E04EA13B123840064D447 /* SkSVGMetadata.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGMetadata.cpp; sourceTree = "<group>"; };
+ 260E04EB13B123840064D447 /* SkSVGMetadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGMetadata.h; sourceTree = "<group>"; };
+ 260E04EC13B123840064D447 /* SkSVGPaintState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGPaintState.cpp; sourceTree = "<group>"; };
+ 260E04ED13B123840064D447 /* SkSVGParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGParser.cpp; sourceTree = "<group>"; };
+ 260E04EE13B123840064D447 /* SkSVGPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGPath.cpp; sourceTree = "<group>"; };
+ 260E04EF13B123840064D447 /* SkSVGPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGPath.h; sourceTree = "<group>"; };
+ 260E04F013B123840064D447 /* SkSVGPolygon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGPolygon.cpp; sourceTree = "<group>"; };
+ 260E04F113B123840064D447 /* SkSVGPolygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGPolygon.h; sourceTree = "<group>"; };
+ 260E04F213B123840064D447 /* SkSVGPolyline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGPolyline.cpp; sourceTree = "<group>"; };
+ 260E04F313B123840064D447 /* SkSVGPolyline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGPolyline.h; sourceTree = "<group>"; };
+ 260E04F413B123840064D447 /* SkSVGRadialGradient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGRadialGradient.cpp; sourceTree = "<group>"; };
+ 260E04F513B123840064D447 /* SkSVGRadialGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGRadialGradient.h; sourceTree = "<group>"; };
+ 260E04F613B123840064D447 /* SkSVGRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGRect.cpp; sourceTree = "<group>"; };
+ 260E04F713B123840064D447 /* SkSVGRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGRect.h; sourceTree = "<group>"; };
+ 260E04F813B123840064D447 /* SkSVGSVG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGSVG.cpp; sourceTree = "<group>"; };
+ 260E04F913B123840064D447 /* SkSVGSVG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGSVG.h; sourceTree = "<group>"; };
+ 260E04FA13B123840064D447 /* SkSVGStop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGStop.cpp; sourceTree = "<group>"; };
+ 260E04FB13B123840064D447 /* SkSVGStop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGStop.h; sourceTree = "<group>"; };
+ 260E04FC13B123840064D447 /* SkSVGSymbol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGSymbol.cpp; sourceTree = "<group>"; };
+ 260E04FD13B123840064D447 /* SkSVGSymbol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGSymbol.h; sourceTree = "<group>"; };
+ 260E04FE13B123840064D447 /* SkSVGText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGText.cpp; sourceTree = "<group>"; };
+ 260E04FF13B123840064D447 /* SkSVGText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSVGText.h; sourceTree = "<group>"; };
+ 260E050013B123840064D447 /* SkSVGUse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSVGUse.cpp; sourceTree = "<group>"; };
+ 260E053013B123DE0064D447 /* SkCGUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCGUtils.h; sourceTree = "<group>"; };
+ 260E053113B123DE0064D447 /* SkBoundaryPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBoundaryPatch.h; sourceTree = "<group>"; };
+ 260E053213B123DE0064D447 /* SkCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCamera.h; sourceTree = "<group>"; };
+ 260E053313B123DE0064D447 /* SkCubicInterval.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCubicInterval.h; sourceTree = "<group>"; };
+ 260E053413B123DE0064D447 /* SkCullPoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkCullPoints.h; sourceTree = "<group>"; };
+ 260E053513B123DE0064D447 /* SkDumpCanvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDumpCanvas.h; sourceTree = "<group>"; };
+ 260E053613B123DE0064D447 /* SkEGLContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkEGLContext.h; sourceTree = "<group>"; };
+ 260E053713B123DE0064D447 /* SkGLCanvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkGLCanvas.h; sourceTree = "<group>"; };
+ 260E053813B123DE0064D447 /* SkInterpolator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkInterpolator.h; sourceTree = "<group>"; };
+ 260E053913B123DE0064D447 /* SkLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkLayer.h; sourceTree = "<group>"; };
+ 260E053A13B123DE0064D447 /* SkMatrix44.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkMatrix44.h; sourceTree = "<group>"; };
+ 260E053B13B123DE0064D447 /* SkMeshUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkMeshUtils.h; sourceTree = "<group>"; };
+ 260E053C13B123DE0064D447 /* SkNWayCanvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkNWayCanvas.h; sourceTree = "<group>"; };
+ 260E053D13B123DE0064D447 /* SkNinePatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkNinePatch.h; sourceTree = "<group>"; };
+ 260E053E13B123DE0064D447 /* SkParse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkParse.h; sourceTree = "<group>"; };
+ 260E053F13B123DE0064D447 /* SkParsePaint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkParsePaint.h; sourceTree = "<group>"; };
+ 260E054013B123DE0064D447 /* SkParsePath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkParsePath.h; sourceTree = "<group>"; };
+ 260E054113B123DE0064D447 /* SkProxyCanvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkProxyCanvas.h; sourceTree = "<group>"; };
+ 260E054213B123DE0064D447 /* SkSfntUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSfntUtils.h; sourceTree = "<group>"; };
+ 260E054313B123DE0064D447 /* SkTextBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTextBox.h; sourceTree = "<group>"; };
+ 260E054413B123DE0064D447 /* SkUnitMappers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkUnitMappers.h; sourceTree = "<group>"; };
+ 260E054913B123DE0064D447 /* SkCreateCGImageRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCreateCGImageRef.cpp; sourceTree = "<group>"; };
+ 260E055713B123DE0064D447 /* SkBoundaryPatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBoundaryPatch.cpp; sourceTree = "<group>"; };
+ 260E055813B123DE0064D447 /* SkCamera.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCamera.cpp; sourceTree = "<group>"; };
+ 260E055913B123DE0064D447 /* SkColorMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkColorMatrix.cpp; sourceTree = "<group>"; };
+ 260E055A13B123DE0064D447 /* SkCubicInterval.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCubicInterval.cpp; sourceTree = "<group>"; };
+ 260E055B13B123DE0064D447 /* SkCullPoints.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCullPoints.cpp; sourceTree = "<group>"; };
+ 260E055C13B123DE0064D447 /* SkDumpCanvas.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDumpCanvas.cpp; sourceTree = "<group>"; };
+ 260E055E13B123DE0064D447 /* SkInterpolator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkInterpolator.cpp; sourceTree = "<group>"; };
+ 260E055F13B123DE0064D447 /* SkLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkLayer.cpp; sourceTree = "<group>"; };
+ 260E056013B123DE0064D447 /* SkMatrix44.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMatrix44.cpp; sourceTree = "<group>"; };
+ 260E056113B123DE0064D447 /* SkMeshUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMeshUtils.cpp; sourceTree = "<group>"; };
+ 260E056213B123DE0064D447 /* SkNWayCanvas.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkNWayCanvas.cpp; sourceTree = "<group>"; };
+ 260E056313B123DE0064D447 /* SkNinePatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkNinePatch.cpp; sourceTree = "<group>"; };
+ 260E056413B123DE0064D447 /* SkOSFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkOSFile.cpp; sourceTree = "<group>"; };
+ 260E056513B123DE0064D447 /* SkParse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkParse.cpp; sourceTree = "<group>"; };
+ 260E056613B123DE0064D447 /* SkParseColor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkParseColor.cpp; sourceTree = "<group>"; };
+ 260E056713B123DE0064D447 /* SkParsePath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkParsePath.cpp; sourceTree = "<group>"; };
+ 260E056813B123DE0064D447 /* SkProxyCanvas.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkProxyCanvas.cpp; sourceTree = "<group>"; };
+ 260E056913B123DE0064D447 /* SkSfntUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSfntUtils.cpp; sourceTree = "<group>"; };
+ 260E056A13B123DE0064D447 /* SkUnitMappers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkUnitMappers.cpp; sourceTree = "<group>"; };
+ 260E059813B123E80064D447 /* SkApplication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkApplication.h; sourceTree = "<group>"; };
+ 260E059913B123E80064D447 /* SkBGViewArtist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBGViewArtist.h; sourceTree = "<group>"; };
+ 260E059A13B123E80064D447 /* SkBorderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBorderView.h; sourceTree = "<group>"; };
+ 260E059B13B123E80064D447 /* SkEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkEvent.h; sourceTree = "<group>"; };
+ 260E059C13B123E80064D447 /* SkEventSink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkEventSink.h; sourceTree = "<group>"; };
+ 260E059D13B123E80064D447 /* SkImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkImageView.h; sourceTree = "<group>"; };
+ 260E059E13B123E80064D447 /* SkKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkKey.h; sourceTree = "<group>"; };
+ 260E059F13B123E80064D447 /* SkOSMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkOSMenu.h; sourceTree = "<group>"; };
+ 260E05A413B123E80064D447 /* SkProgressBarView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkProgressBarView.h; sourceTree = "<group>"; };
+ 260E05A513B123E80064D447 /* SkScrollBarView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkScrollBarView.h; sourceTree = "<group>"; };
+ 260E05A613B123E80064D447 /* SkStackViewLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkStackViewLayout.h; sourceTree = "<group>"; };
+ 260E05A713B123E80064D447 /* SkSystemEventTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSystemEventTypes.h; sourceTree = "<group>"; };
+ 260E05A813B123E80064D447 /* SkTouchGesture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTouchGesture.h; sourceTree = "<group>"; };
+ 260E05A913B123E80064D447 /* SkView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkView.h; sourceTree = "<group>"; };
+ 260E05AA13B123E80064D447 /* SkViewInflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkViewInflate.h; sourceTree = "<group>"; };
+ 260E05AB13B123E80064D447 /* SkWidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkWidget.h; sourceTree = "<group>"; };
+ 260E05AC13B123E80064D447 /* SkWidgetViews.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkWidgetViews.h; sourceTree = "<group>"; };
+ 260E05AD13B123E80064D447 /* SkWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkWindow.h; sourceTree = "<group>"; };
+ 260E05AF13B123E80064D447 /* SkBGViewArtist.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBGViewArtist.cpp; sourceTree = "<group>"; };
+ 260E05B013B123E80064D447 /* SkBorderView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBorderView.cpp; sourceTree = "<group>"; };
+ 260E05B113B123E80064D447 /* SkEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkEvent.cpp; sourceTree = "<group>"; };
+ 260E05B213B123E80064D447 /* SkEventSink.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkEventSink.cpp; sourceTree = "<group>"; };
+ 260E05B313B123E80064D447 /* SkImageView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageView.cpp; sourceTree = "<group>"; };
+ 260E05B413B123E80064D447 /* SkListView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkListView.cpp; sourceTree = "<group>"; };
+ 260E05B513B123E80064D447 /* SkListWidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkListWidget.cpp; sourceTree = "<group>"; };
+ 260E05B613B123E80064D447 /* SkOSMenu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkOSMenu.cpp; sourceTree = "<group>"; };
+ 260E05B713B123E80064D447 /* SkParsePaint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkParsePaint.cpp; sourceTree = "<group>"; };
+ 260E05B813B123E80064D447 /* SkProgressBarView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkProgressBarView.cpp; sourceTree = "<group>"; };
+ 260E05B913B123E80064D447 /* SkProgressView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkProgressView.cpp; sourceTree = "<group>"; };
+ 260E05BA13B123E80064D447 /* SkScrollBarView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScrollBarView.cpp; sourceTree = "<group>"; };
+ 260E05BB13B123E80064D447 /* SkStackViewLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkStackViewLayout.cpp; sourceTree = "<group>"; };
+ 260E05BC13B123E80064D447 /* SkStaticTextView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkStaticTextView.cpp; sourceTree = "<group>"; };
+ 260E05BD13B123E80064D447 /* SkTagList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTagList.cpp; sourceTree = "<group>"; };
+ 260E05BE13B123E80064D447 /* SkTagList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTagList.h; sourceTree = "<group>"; };
+ 260E05BF13B123E80064D447 /* SkTextBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTextBox.cpp; sourceTree = "<group>"; };
+ 260E05C013B123E80064D447 /* SkTouchGesture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTouchGesture.cpp; sourceTree = "<group>"; };
+ 260E05C113B123E80064D447 /* SkView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkView.cpp; sourceTree = "<group>"; };
+ 260E05C213B123E80064D447 /* SkViewInflate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkViewInflate.cpp; sourceTree = "<group>"; };
+ 260E05C313B123E80064D447 /* SkViewPriv.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkViewPriv.cpp; sourceTree = "<group>"; };
+ 260E05C413B123E80064D447 /* SkViewPriv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkViewPriv.h; sourceTree = "<group>"; };
+ 260E05C513B123E80064D447 /* SkWidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkWidget.cpp; sourceTree = "<group>"; };
+ 260E05C613B123E80064D447 /* SkWidgetViews.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkWidgetViews.cpp; sourceTree = "<group>"; };
+ 260E05C713B123E80064D447 /* SkWidgets.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkWidgets.cpp; sourceTree = "<group>"; };
+ 260E05C813B123E80064D447 /* SkWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkWindow.cpp; sourceTree = "<group>"; };
+ 260E05EE13B124210064D447 /* SkBML_WXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBML_WXMLParser.h; sourceTree = "<group>"; };
+ 260E05EF13B124210064D447 /* SkBML_XMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBML_XMLParser.h; sourceTree = "<group>"; };
+ 260E05F013B124210064D447 /* SkDOM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDOM.h; sourceTree = "<group>"; };
+ 260E05F113B124210064D447 /* SkJS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkJS.h; sourceTree = "<group>"; };
+ 260E05F213B124210064D447 /* SkXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkXMLParser.h; sourceTree = "<group>"; };
+ 260E05F313B124210064D447 /* SkXMLWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkXMLWriter.h; sourceTree = "<group>"; };
+ 260E05F713B124210064D447 /* SkDOM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDOM.cpp; sourceTree = "<group>"; };
+ 260E05FA13B124210064D447 /* SkXMLParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkXMLParser.cpp; sourceTree = "<group>"; };
+ 260E06B813B127E00064D447 /* SkAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimator.h; sourceTree = "<group>"; };
+ 260E06B913B127E00064D447 /* SkAnimatorView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimatorView.h; sourceTree = "<group>"; };
+ 260E06BB13B127E00064D447 /* SkAnimate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimate.h; sourceTree = "<group>"; };
+ 260E06BC13B127E00064D447 /* SkAnimateActive.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAnimateActive.cpp; sourceTree = "<group>"; };
+ 260E06BD13B127E00064D447 /* SkAnimateActive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimateActive.h; sourceTree = "<group>"; };
+ 260E06BE13B127E00064D447 /* SkAnimateBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAnimateBase.cpp; sourceTree = "<group>"; };
+ 260E06BF13B127E00064D447 /* SkAnimateBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimateBase.h; sourceTree = "<group>"; };
+ 260E06C013B127E00064D447 /* SkAnimateField.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAnimateField.cpp; sourceTree = "<group>"; };
+ 260E06C113B127E00064D447 /* SkAnimateMaker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAnimateMaker.cpp; sourceTree = "<group>"; };
+ 260E06C213B127E00064D447 /* SkAnimateMaker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimateMaker.h; sourceTree = "<group>"; };
+ 260E06C313B127E00064D447 /* SkAnimateProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimateProperties.h; sourceTree = "<group>"; };
+ 260E06C413B127E00064D447 /* SkAnimateSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAnimateSet.cpp; sourceTree = "<group>"; };
+ 260E06C513B127E00064D447 /* SkAnimateSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimateSet.h; sourceTree = "<group>"; };
+ 260E06C613B127E00064D447 /* SkAnimator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAnimator.cpp; sourceTree = "<group>"; };
+ 260E06C713B127E00064D447 /* SkAnimatorScript.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkAnimatorScript.cpp; sourceTree = "<group>"; };
+ 260E06C813B127E00064D447 /* SkAnimatorScript.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkAnimatorScript.h; sourceTree = "<group>"; };
+ 260E06C913B127E00064D447 /* SkBase64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBase64.cpp; sourceTree = "<group>"; };
+ 260E06CA13B127E00064D447 /* SkBase64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBase64.h; sourceTree = "<group>"; };
+ 260E06CB13B127E00064D447 /* SkBoundable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBoundable.cpp; sourceTree = "<group>"; };
+ 260E06CC13B127E00064D447 /* SkBoundable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBoundable.h; sourceTree = "<group>"; };
+ 260E06CD13B127E00064D447 /* SkBuildCondensedInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBuildCondensedInfo.cpp; sourceTree = "<group>"; };
+ 260E06CE13B127E00064D447 /* SkDisplayAdd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayAdd.cpp; sourceTree = "<group>"; };
+ 260E06CF13B127E00064D447 /* SkDisplayAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayAdd.h; sourceTree = "<group>"; };
+ 260E06D013B127E00064D447 /* SkDisplayApply.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayApply.cpp; sourceTree = "<group>"; };
+ 260E06D113B127E00064D447 /* SkDisplayApply.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayApply.h; sourceTree = "<group>"; };
+ 260E06D213B127E00064D447 /* SkDisplayBounds.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayBounds.cpp; sourceTree = "<group>"; };
+ 260E06D313B127E00064D447 /* SkDisplayBounds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayBounds.h; sourceTree = "<group>"; };
+ 260E06D413B127E00064D447 /* SkDisplayEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayEvent.cpp; sourceTree = "<group>"; };
+ 260E06D513B127E00064D447 /* SkDisplayEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayEvent.h; sourceTree = "<group>"; };
+ 260E06D613B127E00064D447 /* SkDisplayEvents.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayEvents.cpp; sourceTree = "<group>"; };
+ 260E06D713B127E00064D447 /* SkDisplayEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayEvents.h; sourceTree = "<group>"; };
+ 260E06D813B127E00064D447 /* SkDisplayInclude.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayInclude.cpp; sourceTree = "<group>"; };
+ 260E06D913B127E00064D447 /* SkDisplayInclude.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayInclude.h; sourceTree = "<group>"; };
+ 260E06DA13B127E00064D447 /* SkDisplayInput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayInput.cpp; sourceTree = "<group>"; };
+ 260E06DB13B127E00064D447 /* SkDisplayInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayInput.h; sourceTree = "<group>"; };
+ 260E06DC13B127E00064D447 /* SkDisplayList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayList.cpp; sourceTree = "<group>"; };
+ 260E06DD13B127E00064D447 /* SkDisplayList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayList.h; sourceTree = "<group>"; };
+ 260E06DE13B127E00064D447 /* SkDisplayMath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayMath.cpp; sourceTree = "<group>"; };
+ 260E06DF13B127E00064D447 /* SkDisplayMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayMath.h; sourceTree = "<group>"; };
+ 260E06E013B127E00064D447 /* SkDisplayMovie.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayMovie.cpp; sourceTree = "<group>"; };
+ 260E06E113B127E00064D447 /* SkDisplayMovie.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayMovie.h; sourceTree = "<group>"; };
+ 260E06E213B127E00064D447 /* SkDisplayNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayNumber.cpp; sourceTree = "<group>"; };
+ 260E06E313B127E00064D447 /* SkDisplayNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayNumber.h; sourceTree = "<group>"; };
+ 260E06E413B127E00064D447 /* SkDisplayPost.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayPost.cpp; sourceTree = "<group>"; };
+ 260E06E513B127E00064D447 /* SkDisplayPost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayPost.h; sourceTree = "<group>"; };
+ 260E06E613B127E00064D447 /* SkDisplayRandom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayRandom.cpp; sourceTree = "<group>"; };
+ 260E06E713B127E00064D447 /* SkDisplayRandom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayRandom.h; sourceTree = "<group>"; };
+ 260E06E813B127E00064D447 /* SkDisplayScreenplay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayScreenplay.cpp; sourceTree = "<group>"; };
+ 260E06E913B127E00064D447 /* SkDisplayScreenplay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayScreenplay.h; sourceTree = "<group>"; };
+ 260E06EA13B127E00064D447 /* SkDisplayType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayType.cpp; sourceTree = "<group>"; };
+ 260E06EB13B127E00064D447 /* SkDisplayType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayType.h; sourceTree = "<group>"; };
+ 260E06EC13B127E00064D447 /* SkDisplayTypes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayTypes.cpp; sourceTree = "<group>"; };
+ 260E06ED13B127E00064D447 /* SkDisplayTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayTypes.h; sourceTree = "<group>"; };
+ 260E06EE13B127E00064D447 /* SkDisplayXMLParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayXMLParser.cpp; sourceTree = "<group>"; };
+ 260E06EF13B127E00064D447 /* SkDisplayXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayXMLParser.h; sourceTree = "<group>"; };
+ 260E06F013B127E00064D447 /* SkDisplayable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDisplayable.cpp; sourceTree = "<group>"; };
+ 260E06F113B127E00064D447 /* SkDisplayable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDisplayable.h; sourceTree = "<group>"; };
+ 260E06F213B127E00064D447 /* SkDraw3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDraw3D.cpp; sourceTree = "<group>"; };
+ 260E06F313B127E00064D447 /* SkDraw3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDraw3D.h; sourceTree = "<group>"; };
+ 260E06F413B127E00064D447 /* SkDrawBitmap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawBitmap.cpp; sourceTree = "<group>"; };
+ 260E06F513B127E00064D447 /* SkDrawBitmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawBitmap.h; sourceTree = "<group>"; };
+ 260E06F613B127E00064D447 /* SkDrawBlur.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawBlur.cpp; sourceTree = "<group>"; };
+ 260E06F713B127E00064D447 /* SkDrawBlur.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawBlur.h; sourceTree = "<group>"; };
+ 260E06F813B127E00064D447 /* SkDrawClip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawClip.cpp; sourceTree = "<group>"; };
+ 260E06F913B127E00064D447 /* SkDrawClip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawClip.h; sourceTree = "<group>"; };
+ 260E06FA13B127E00064D447 /* SkDrawColor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawColor.cpp; sourceTree = "<group>"; };
+ 260E06FB13B127E00064D447 /* SkDrawColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawColor.h; sourceTree = "<group>"; };
+ 260E06FC13B127E00064D447 /* SkDrawDash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawDash.cpp; sourceTree = "<group>"; };
+ 260E06FD13B127E00064D447 /* SkDrawDash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawDash.h; sourceTree = "<group>"; };
+ 260E06FE13B127E00064D447 /* SkDrawDiscrete.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawDiscrete.cpp; sourceTree = "<group>"; };
+ 260E06FF13B127E00064D447 /* SkDrawDiscrete.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawDiscrete.h; sourceTree = "<group>"; };
+ 260E070013B127E00064D447 /* SkDrawEmboss.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawEmboss.cpp; sourceTree = "<group>"; };
+ 260E070113B127E00064D447 /* SkDrawEmboss.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawEmboss.h; sourceTree = "<group>"; };
+ 260E070213B127E00064D447 /* SkDrawExtraPathEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawExtraPathEffect.cpp; sourceTree = "<group>"; };
+ 260E070313B127E00064D447 /* SkDrawFull.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawFull.cpp; sourceTree = "<group>"; };
+ 260E070413B127E00064D447 /* SkDrawFull.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawFull.h; sourceTree = "<group>"; };
+ 260E070513B127E00064D447 /* SkDrawGradient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawGradient.cpp; sourceTree = "<group>"; };
+ 260E070613B127E00064D447 /* SkDrawGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawGradient.h; sourceTree = "<group>"; };
+ 260E070713B127E00064D447 /* SkDrawGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawGroup.cpp; sourceTree = "<group>"; };
+ 260E070813B127E00064D447 /* SkDrawGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawGroup.h; sourceTree = "<group>"; };
+ 260E070913B127E00064D447 /* SkDrawLine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawLine.cpp; sourceTree = "<group>"; };
+ 260E070A13B127E00064D447 /* SkDrawLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawLine.h; sourceTree = "<group>"; };
+ 260E070B13B127E00064D447 /* SkDrawMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawMatrix.cpp; sourceTree = "<group>"; };
+ 260E070C13B127E00064D447 /* SkDrawMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawMatrix.h; sourceTree = "<group>"; };
+ 260E070D13B127E00064D447 /* SkDrawOval.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawOval.cpp; sourceTree = "<group>"; };
+ 260E070E13B127E00064D447 /* SkDrawOval.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawOval.h; sourceTree = "<group>"; };
+ 260E070F13B127E00064D447 /* SkDrawPaint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawPaint.cpp; sourceTree = "<group>"; };
+ 260E071013B127E00064D447 /* SkDrawPaint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawPaint.h; sourceTree = "<group>"; };
+ 260E071113B127E00064D447 /* SkDrawPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawPath.cpp; sourceTree = "<group>"; };
+ 260E071213B127E00064D447 /* SkDrawPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawPath.h; sourceTree = "<group>"; };
+ 260E071313B127E00064D447 /* SkDrawPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawPoint.cpp; sourceTree = "<group>"; };
+ 260E071413B127E00064D447 /* SkDrawPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawPoint.h; sourceTree = "<group>"; };
+ 260E071513B127E00064D447 /* SkDrawRectangle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawRectangle.cpp; sourceTree = "<group>"; };
+ 260E071613B127E00064D447 /* SkDrawRectangle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawRectangle.h; sourceTree = "<group>"; };
+ 260E071713B127E00064D447 /* SkDrawSaveLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawSaveLayer.cpp; sourceTree = "<group>"; };
+ 260E071813B127E00064D447 /* SkDrawSaveLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawSaveLayer.h; sourceTree = "<group>"; };
+ 260E071913B127E00064D447 /* SkDrawShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawShader.cpp; sourceTree = "<group>"; };
+ 260E071A13B127E00064D447 /* SkDrawShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawShader.h; sourceTree = "<group>"; };
+ 260E071B13B127E00064D447 /* SkDrawText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawText.cpp; sourceTree = "<group>"; };
+ 260E071C13B127E00064D447 /* SkDrawText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawText.h; sourceTree = "<group>"; };
+ 260E071D13B127E00064D447 /* SkDrawTextBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawTextBox.cpp; sourceTree = "<group>"; };
+ 260E071E13B127E00064D447 /* SkDrawTextBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawTextBox.h; sourceTree = "<group>"; };
+ 260E071F13B127E00064D447 /* SkDrawTo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawTo.cpp; sourceTree = "<group>"; };
+ 260E072013B127E00064D447 /* SkDrawTo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawTo.h; sourceTree = "<group>"; };
+ 260E072113B127E00064D447 /* SkDrawTransparentShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawTransparentShader.cpp; sourceTree = "<group>"; };
+ 260E072213B127E00064D447 /* SkDrawTransparentShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawTransparentShader.h; sourceTree = "<group>"; };
+ 260E072313B127E00064D447 /* SkDrawable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDrawable.cpp; sourceTree = "<group>"; };
+ 260E072413B127E00064D447 /* SkDrawable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDrawable.h; sourceTree = "<group>"; };
+ 260E072513B127E00064D447 /* SkDump.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkDump.cpp; sourceTree = "<group>"; };
+ 260E072613B127E00064D447 /* SkDump.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkDump.h; sourceTree = "<group>"; };
+ 260E072713B127E00064D447 /* SkExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkExtras.h; sourceTree = "<group>"; };
+ 260E072813B127E00064D447 /* SkGetCondensedInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkGetCondensedInfo.cpp; sourceTree = "<group>"; };
+ 260E072913B127E00064D447 /* SkHitClear.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkHitClear.cpp; sourceTree = "<group>"; };
+ 260E072A13B127E00064D447 /* SkHitClear.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkHitClear.h; sourceTree = "<group>"; };
+ 260E072B13B127E00064D447 /* SkHitTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkHitTest.cpp; sourceTree = "<group>"; };
+ 260E072C13B127E00064D447 /* SkHitTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkHitTest.h; sourceTree = "<group>"; };
+ 260E072D13B127E00064D447 /* SkIntArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkIntArray.h; sourceTree = "<group>"; };
+ 260E072E13B127E00064D447 /* SkMatrixParts.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMatrixParts.cpp; sourceTree = "<group>"; };
+ 260E072F13B127E00064D447 /* SkMatrixParts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkMatrixParts.h; sourceTree = "<group>"; };
+ 260E073013B127E00064D447 /* SkMemberInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMemberInfo.cpp; sourceTree = "<group>"; };
+ 260E073113B127E00064D447 /* SkMemberInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkMemberInfo.h; sourceTree = "<group>"; };
+ 260E073213B127E00064D447 /* SkOpArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkOpArray.cpp; sourceTree = "<group>"; };
+ 260E073313B127E00064D447 /* SkOpArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkOpArray.h; sourceTree = "<group>"; };
+ 260E073413B127E00064D447 /* SkOperand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkOperand.h; sourceTree = "<group>"; };
+ 260E073513B127E00064D447 /* SkOperand2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkOperand2.h; sourceTree = "<group>"; };
+ 260E073613B127E00064D447 /* SkOperandInterpolator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkOperandInterpolator.h; sourceTree = "<group>"; };
+ 260E073713B127E00064D447 /* SkOperandIterpolator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkOperandIterpolator.cpp; sourceTree = "<group>"; };
+ 260E073813B127E00064D447 /* SkPaintParts.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPaintParts.cpp; sourceTree = "<group>"; };
+ 260E073913B127E00064D447 /* SkPaintParts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPaintParts.h; sourceTree = "<group>"; };
+ 260E073A13B127E00064D447 /* SkParseSVGPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkParseSVGPath.cpp; sourceTree = "<group>"; };
+ 260E073B13B127E00064D447 /* SkPathParts.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPathParts.cpp; sourceTree = "<group>"; };
+ 260E073C13B127E00064D447 /* SkPathParts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPathParts.h; sourceTree = "<group>"; };
+ 260E073D13B127E00064D447 /* SkPostParts.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPostParts.cpp; sourceTree = "<group>"; };
+ 260E073E13B127E00064D447 /* SkPostParts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPostParts.h; sourceTree = "<group>"; };
+ 260E073F13B127E00064D447 /* SkScript.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScript.cpp; sourceTree = "<group>"; };
+ 260E074013B127E00064D447 /* SkScript.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkScript.h; sourceTree = "<group>"; };
+ 260E074113B127E00064D447 /* SkScript2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkScript2.h; sourceTree = "<group>"; };
+ 260E074213B127E00064D447 /* SkScriptCallBack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkScriptCallBack.h; sourceTree = "<group>"; };
+ 260E074313B127E00064D447 /* SkScriptDecompile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScriptDecompile.cpp; sourceTree = "<group>"; };
+ 260E074413B127E00064D447 /* SkScriptRuntime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScriptRuntime.cpp; sourceTree = "<group>"; };
+ 260E074513B127E00064D447 /* SkScriptRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkScriptRuntime.h; sourceTree = "<group>"; };
+ 260E074613B127E00064D447 /* SkScriptTokenizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkScriptTokenizer.cpp; sourceTree = "<group>"; };
+ 260E074713B127E00064D447 /* SkSnapshot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkSnapshot.cpp; sourceTree = "<group>"; };
+ 260E074813B127E00064D447 /* SkSnapshot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSnapshot.h; sourceTree = "<group>"; };
+ 260E074913B127E00064D447 /* SkTDArray_Experimental.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTDArray_Experimental.h; sourceTree = "<group>"; };
+ 260E074A13B127E00064D447 /* SkTextOnPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTextOnPath.cpp; sourceTree = "<group>"; };
+ 260E074B13B127E00064D447 /* SkTextOnPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTextOnPath.h; sourceTree = "<group>"; };
+ 260E074C13B127E00064D447 /* SkTextToPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTextToPath.cpp; sourceTree = "<group>"; };
+ 260E074D13B127E00064D447 /* SkTextToPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTextToPath.h; sourceTree = "<group>"; };
+ 260E074E13B127E00064D447 /* SkTime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTime.cpp; sourceTree = "<group>"; };
+ 260E074F13B127E00064D447 /* SkTypedArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkTypedArray.cpp; sourceTree = "<group>"; };
+ 260E075013B127E00064D447 /* SkTypedArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkTypedArray.h; sourceTree = "<group>"; };
+ 260E075113B127E00064D447 /* SkXMLAnimatorWriter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkXMLAnimatorWriter.cpp; sourceTree = "<group>"; };
+ 260E075213B127E00064D447 /* SkXMLAnimatorWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkXMLAnimatorWriter.h; sourceTree = "<group>"; };
+ 260E07B213B128210064D447 /* SkXMLWriter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkXMLWriter.cpp; sourceTree = "<group>"; };
+ 260E07C413B128610064D447 /* SkMovie.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkMovie.cpp; sourceTree = "<group>"; };
+ 260E07C913B128740064D447 /* SkPageFlipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkPageFlipper.cpp; sourceTree = "<group>"; };
+ 260E07CE13B128870064D447 /* SkImageRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageRef.cpp; sourceTree = "<group>"; };
+ 260E07CF13B128870064D447 /* SkImageRefPool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageRefPool.cpp; sourceTree = "<group>"; };
+ 260E07D013B128870064D447 /* SkImageRefPool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkImageRefPool.h; sourceTree = "<group>"; };
+ 260E07D613B1289C0064D447 /* SkImageRef_GlobalPool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageRef_GlobalPool.cpp; sourceTree = "<group>"; };
+ 260E080E13B1294E0064D447 /* SkImageDecoder_CG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageDecoder_CG.cpp; sourceTree = "<group>"; };
+ 260E083B13B12A200064D447 /* SkImageDecoder_Factory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageDecoder_Factory.cpp; sourceTree = "<group>"; };
+ 260E083C13B12A200064D447 /* SkImageEncoder_Factory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkImageEncoder_Factory.cpp; sourceTree = "<group>"; };
+ 260E08D013B12DBE0064D447 /* SkStream_NSData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkStream_NSData.h; path = ../../include/utils/ios/SkStream_NSData.h; sourceTree = SOURCE_ROOT; };
+ 260E095513B134C90064D447 /* FlingState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FlingState.cpp; sourceTree = "<group>"; };
+ 260E095613B134C90064D447 /* GrDrawMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrDrawMesh.cpp; sourceTree = "<group>"; };
+ 260E147713B2734E0064D447 /* SkUISplitViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkUISplitViewController.h; sourceTree = "<group>"; };
+ 260E147813B2734E0064D447 /* SkUISplitViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SkUISplitViewController.mm; sourceTree = "<group>"; };
+ 260E1DCA13B3AA490064D447 /* SkUINavigationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkUINavigationController.h; sourceTree = "<group>"; };
+ 260E1DCB13B3AA490064D447 /* SkUINavigationController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SkUINavigationController.mm; sourceTree = "<group>"; };
+ 260E1E8913B3B13B0064D447 /* SkPDFCatalog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFCatalog.h; path = ../../include/pdf/SkPDFCatalog.h; sourceTree = SOURCE_ROOT; };
+ 260E1E8A13B3B13B0064D447 /* SkPDFDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFDevice.h; path = ../../include/pdf/SkPDFDevice.h; sourceTree = SOURCE_ROOT; };
+ 260E1E8B13B3B13B0064D447 /* SkPDFDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFDocument.h; path = ../../include/pdf/SkPDFDocument.h; sourceTree = SOURCE_ROOT; };
+ 260E1E8C13B3B13B0064D447 /* SkPDFFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFFont.h; path = ../../include/pdf/SkPDFFont.h; sourceTree = SOURCE_ROOT; };
+ 260E1E8D13B3B13B0064D447 /* SkPDFFormXObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFFormXObject.h; path = ../../include/pdf/SkPDFFormXObject.h; sourceTree = SOURCE_ROOT; };
+ 260E1E8E13B3B13B0064D447 /* SkPDFGraphicState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFGraphicState.h; path = ../../include/pdf/SkPDFGraphicState.h; sourceTree = SOURCE_ROOT; };
+ 260E1E8F13B3B13B0064D447 /* SkPDFImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFImage.h; path = ../../include/pdf/SkPDFImage.h; sourceTree = SOURCE_ROOT; };
+ 260E1E9013B3B13B0064D447 /* SkPDFPage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFPage.h; path = ../../include/pdf/SkPDFPage.h; sourceTree = SOURCE_ROOT; };
+ 260E1E9113B3B13B0064D447 /* SkPDFShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFShader.h; path = ../../include/pdf/SkPDFShader.h; sourceTree = SOURCE_ROOT; };
+ 260E1E9213B3B13B0064D447 /* SkPDFStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFStream.h; path = ../../include/pdf/SkPDFStream.h; sourceTree = SOURCE_ROOT; };
+ 260E1E9313B3B13B0064D447 /* SkPDFTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFTypes.h; path = ../../include/pdf/SkPDFTypes.h; sourceTree = SOURCE_ROOT; };
+ 260E1E9413B3B13B0064D447 /* SkPDFUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPDFUtils.h; path = ../../include/pdf/SkPDFUtils.h; sourceTree = SOURCE_ROOT; };
+ 260E1E9613B3B15A0064D447 /* SkPDFCatalog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFCatalog.cpp; path = ../../src/pdf/SkPDFCatalog.cpp; sourceTree = SOURCE_ROOT; };
+ 260E1E9713B3B15A0064D447 /* SkPDFDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFDevice.cpp; path = ../../src/pdf/SkPDFDevice.cpp; sourceTree = SOURCE_ROOT; };
+ 260E1E9813B3B15A0064D447 /* SkPDFDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFDocument.cpp; path = ../../src/pdf/SkPDFDocument.cpp; sourceTree = SOURCE_ROOT; };
+ 260E1E9913B3B15A0064D447 /* SkPDFFont.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFFont.cpp; path = ../../src/pdf/SkPDFFont.cpp; sourceTree = SOURCE_ROOT; };
+ 260E1E9A13B3B15A0064D447 /* SkPDFFormXObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFFormXObject.cpp; path = ../../src/pdf/SkPDFFormXObject.cpp; sourceTree = SOURCE_ROOT; };
+ 260E1E9B13B3B15A0064D447 /* SkPDFGraphicState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFGraphicState.cpp; path = ../../src/pdf/SkPDFGraphicState.cpp; sourceTree = SOURCE_ROOT; };
+ 260E1E9C13B3B15A0064D447 /* SkPDFImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFImage.cpp; path = ../../src/pdf/SkPDFImage.cpp; sourceTree = SOURCE_ROOT; };
+ 260E1E9D13B3B15A0064D447 /* SkPDFPage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFPage.cpp; path = ../../src/pdf/SkPDFPage.cpp; sourceTree = SOURCE_ROOT; };
+ 260E1E9E13B3B15A0064D447 /* SkPDFShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFShader.cpp; path = ../../src/pdf/SkPDFShader.cpp; sourceTree = SOURCE_ROOT; };
+ 260E1E9F13B3B15A0064D447 /* SkPDFStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFStream.cpp; path = ../../src/pdf/SkPDFStream.cpp; sourceTree = SOURCE_ROOT; };
+ 260E1EA013B3B15A0064D447 /* SkPDFTypes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFTypes.cpp; path = ../../src/pdf/SkPDFTypes.cpp; sourceTree = SOURCE_ROOT; };
+ 260E1EA113B3B15A0064D447 /* SkPDFUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkPDFUtils.cpp; path = ../../src/pdf/SkPDFUtils.cpp; sourceTree = SOURCE_ROOT; };
+ 260EE8BA13AFA7790064D447 /* SkFontHost_iOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SkFontHost_iOS.mm; path = ../../src/utils/ios/SkFontHost_iOS.mm; sourceTree = SOURCE_ROOT; };
+ 260EE8BB13AFA7790064D447 /* SkOSFile_iOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SkOSFile_iOS.mm; path = ../../src/utils/ios/SkOSFile_iOS.mm; sourceTree = SOURCE_ROOT; };
+ 260EE8BF13AFA7790064D447 /* SkStream_NSData.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SkStream_NSData.mm; path = ../../src/utils/ios/SkStream_NSData.mm; sourceTree = SOURCE_ROOT; };
+ 260EE9D013AFA7850064D447 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
+ 260EE9D113AFA7850064D447 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
+ 260EF18413AFD62E0064D447 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
+ 2612C104140D2FE3001B6925 /* SkEventNotifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkEventNotifier.h; path = ../../src/utils/mac/SkEventNotifier.h; sourceTree = SOURCE_ROOT; };
+ 2612C105140D2FE3001B6925 /* SkEventNotifier.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SkEventNotifier.mm; path = ../../src/utils/mac/SkEventNotifier.mm; sourceTree = SOURCE_ROOT; };
+ 2612C109140D300B001B6925 /* GrDefaultPathRenderer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrDefaultPathRenderer.cpp; sourceTree = "<group>"; };
+ 2612C10A140D300B001B6925 /* GrDefaultPathRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrDefaultPathRenderer.h; sourceTree = "<group>"; };
+ 2612C10B140D300B001B6925 /* GrGLStencilBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLStencilBuffer.cpp; sourceTree = "<group>"; };
+ 2612C10C140D300B001B6925 /* GrGLStencilBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGLStencilBuffer.h; sourceTree = "<group>"; };
+ 2612C10D140D300B001B6925 /* GrPathRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPathRenderer.h; sourceTree = "<group>"; };
+ 2612C10E140D300B001B6925 /* GrPathRendererChain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrPathRendererChain.cpp; sourceTree = "<group>"; };
+ 2612C10F140D300B001B6925 /* GrPathRendererChain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrPathRendererChain.h; sourceTree = "<group>"; };
+ 2612C121140D30B0001B6925 /* GrAddPathRenderers_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrAddPathRenderers_none.cpp; sourceTree = "<group>"; };
+ 263BE75713CCC7BF00CCE991 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+ 26591EB813EB16EB000DA8A8 /* TransitionView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TransitionView.cpp; sourceTree = "<group>"; };
+ 265C7DE113D75752008329F6 /* SkOptionListController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkOptionListController.h; path = Shared/SkOptionListController.h; sourceTree = "<group>"; };
+ 265C7DE213D75752008329F6 /* SkOptionListController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SkOptionListController.mm; path = Shared/SkOptionListController.mm; sourceTree = "<group>"; };
+ 2662AB6F13BD067900CDE7E9 /* SkiOSSampleApp-Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "SkiOSSampleApp-Debug.xcconfig"; sourceTree = "<group>"; };
+ 2662AB7513BD0C0D00CDE7E9 /* SkiOSSampleApp-Release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "SkiOSSampleApp-Release.xcconfig"; sourceTree = "<group>"; };
+ 2662AB7713BD0C1E00CDE7E9 /* SkiOSSampleApp-Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "SkiOSSampleApp-Base.xcconfig"; sourceTree = "<group>"; };
+ 2663AC9213D5D8D400C20488 /* SkOptionsTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkOptionsTableViewController.h; path = Shared/SkOptionsTableViewController.h; sourceTree = "<group>"; };
+ 2663AC9313D5D8D400C20488 /* SkOptionsTableViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SkOptionsTableViewController.mm; path = Shared/SkOptionsTableViewController.mm; sourceTree = "<group>"; };
+ 26677D6413B4C53E009319B8 /* SkData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkData.h; path = core/SkData.h; sourceTree = "<group>"; };
+ 26677D6513B4C548009319B8 /* SkData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkData.cpp; path = core/SkData.cpp; sourceTree = "<group>"; };
+ 26811E7813DEFAE8001A1609 /* SkBitSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkBitSet.cpp; path = ../../src/pdf/SkBitSet.cpp; sourceTree = SOURCE_ROOT; };
+ 26811E7A13DEFAF7001A1609 /* SkBitSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkBitSet.h; path = ../../include/pdf/SkBitSet.h; sourceTree = SOURCE_ROOT; };
+ 268C50D213F022820003FF9A /* SkColorPalette.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkColorPalette.cpp; path = ../DrawingBoard/SkColorPalette.cpp; sourceTree = SOURCE_ROOT; };
+ 268C50D313F022820003FF9A /* SkColorPalette.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkColorPalette.h; path = ../DrawingBoard/SkColorPalette.h; sourceTree = SOURCE_ROOT; };
+ 268C50D413F022820003FF9A /* SkNetPipeController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkNetPipeController.cpp; path = ../DrawingBoard/SkNetPipeController.cpp; sourceTree = SOURCE_ROOT; };
+ 268C50D513F022820003FF9A /* SkNetPipeController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkNetPipeController.h; path = ../DrawingBoard/SkNetPipeController.h; sourceTree = SOURCE_ROOT; };
+ 268C50D813F022AF0003FF9A /* SampleDrawingClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleDrawingClient.cpp; path = ../DrawingBoard/SampleDrawingClient.cpp; sourceTree = SOURCE_ROOT; };
+ 268C50D913F022AF0003FF9A /* SampleDrawingServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleDrawingServer.cpp; path = ../DrawingBoard/SampleDrawingServer.cpp; sourceTree = SOURCE_ROOT; };
+ 268C50DC13F0230C0003FF9A /* SampleNetPipeReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleNetPipeReader.cpp; path = ../Networking/SampleNetPipeReader.cpp; sourceTree = SOURCE_ROOT; };
+ 268C50DD13F0230C0003FF9A /* SkSockets.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkSockets.cpp; path = ../Networking/SkSockets.cpp; sourceTree = SOURCE_ROOT; };
+ 268C50DE13F0230C0003FF9A /* SkSockets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkSockets.h; path = ../Networking/SkSockets.h; sourceTree = SOURCE_ROOT; };
+ 26962C7813CE256E0039B1FB /* SkUIDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkUIDetailViewController.h; path = Shared/SkUIDetailViewController.h; sourceTree = "<group>"; };
+ 26962C7913CE256E0039B1FB /* SkUIDetailViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SkUIDetailViewController.mm; path = Shared/SkUIDetailViewController.mm; sourceTree = "<group>"; };
+ 26962C7A13CE256E0039B1FB /* SkUIRootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkUIRootViewController.h; path = Shared/SkUIRootViewController.h; sourceTree = "<group>"; };
+ 26962C7B13CE256E0039B1FB /* SkUIRootViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SkUIRootViewController.mm; path = Shared/SkUIRootViewController.mm; sourceTree = "<group>"; };
+ 26962C8E13CE25D60039B1FB /* iOSSampleApp_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOSSampleApp_Prefix.pch; sourceTree = "<group>"; };
+ 26962C8F13CE25D60039B1FB /* iOSSampleApp-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "iOSSampleApp-Info.plist"; sourceTree = "<group>"; };
+ 26962CA313CE265C0039B1FB /* SkOSWindow_iOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SkOSWindow_iOS.mm; path = ../../src/utils/ios/SkOSWindow_iOS.mm; sourceTree = SOURCE_ROOT; };
+ 26962CA513CE26730039B1FB /* SkOSWindow_iOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkOSWindow_iOS.h; path = ../../include/views/SkOSWindow_iOS.h; sourceTree = SOURCE_ROOT; };
+ 26962CA913CE268A0039B1FB /* SampleApp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SampleApp.cpp; path = ../../samplecode/SampleApp.cpp; sourceTree = SOURCE_ROOT; };
+ 26962CAA13CE268A0039B1FB /* SampleApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SampleApp.h; path = ../../samplecode/SampleApp.h; sourceTree = SOURCE_ROOT; };
+ 26962D4E13CE2D780039B1FB /* GrGLDefaultInterface_iOS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GrGLDefaultInterface_iOS.cpp; path = ../../gpu/src/ios/GrGLDefaultInterface_iOS.cpp; sourceTree = SOURCE_ROOT; };
+ 26A8AFF113E05D7000A3C111 /* GrResourceCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrResourceCache.cpp; sourceTree = "<group>"; };
+ 26A8AFF213E05D7000A3C111 /* GrResourceCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrResourceCache.h; sourceTree = "<group>"; };
+ 26D91221140D576B0036A311 /* SkSampleUIView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkSampleUIView.h; sourceTree = "<group>"; };
+ 26D91222140D576B0036A311 /* SkSampleUIView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SkSampleUIView.mm; sourceTree = "<group>"; };
+ 26D91229140D57BD0036A311 /* skia_ios.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = skia_ios.mm; path = Shared/skia_ios.mm; sourceTree = "<group>"; };
+ 26E0E5C913B5299E00866555 /* SkGPipe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkGPipe.h; path = ../../include/pipe/SkGPipe.h; sourceTree = SOURCE_ROOT; };
+ 26F548E013B91980007CC564 /* SkBitmapProcState_opts_arm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBitmapProcState_opts_arm.cpp; sourceTree = "<group>"; };
+ 26F548E413B91980007CC564 /* SkBlitRow_opts_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkBlitRow_opts_none.cpp; sourceTree = "<group>"; };
+ 26F548E513B91980007CC564 /* SkBlitRow_opts_SSE2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkBlitRow_opts_SSE2.h; sourceTree = "<group>"; };
+ 26F548E613B91980007CC564 /* SkUtils_opts_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkUtils_opts_none.cpp; sourceTree = "<group>"; };
+ 26F548E713B91980007CC564 /* SkUtils_opts_SSE2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkUtils_opts_SSE2.h; sourceTree = "<group>"; };
+ 26F5490B13B91B73007CC564 /* SkUserConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkUserConfig.h; path = ../../include/config/SkUserConfig.h; sourceTree = SOURCE_ROOT; };
+ 26F5491013B91BDB007CC564 /* SkEdgeClipper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkEdgeClipper.h; path = core/SkEdgeClipper.h; sourceTree = "<group>"; };
+ 26F5491113B91BDB007CC564 /* SkLineClipper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkLineClipper.h; path = core/SkLineClipper.h; sourceTree = "<group>"; };
+ 26F5491213B91BDB007CC564 /* SkPostConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPostConfig.h; path = core/SkPostConfig.h; sourceTree = "<group>"; };
+ 26F5491313B91BDB007CC564 /* SkPreConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkPreConfig.h; path = core/SkPreConfig.h; sourceTree = "<group>"; };
+ 26F5491413B91BDB007CC564 /* SkRelay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkRelay.h; path = core/SkRelay.h; sourceTree = "<group>"; };
+ 26F5491513B91BDB007CC564 /* SkShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkShape.h; path = core/SkShape.h; sourceTree = "<group>"; };
+ 26F5491613B91BDB007CC564 /* SkSize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkSize.h; path = core/SkSize.h; sourceTree = "<group>"; };
+ 26F5491713B91BDB007CC564 /* SkTLazy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTLazy.h; path = core/SkTLazy.h; sourceTree = "<group>"; };
+ 26F5491A13B91C22007CC564 /* SkFlipPixelRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkFlipPixelRef.h; sourceTree = "<group>"; };
+ 26F5491B13B91C22007CC564 /* SkImageRef_GlobalPool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkImageRef_GlobalPool.h; sourceTree = "<group>"; };
+ 26F5491C13B91C22007CC564 /* SkImageRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkImageRef.h; sourceTree = "<group>"; };
+ 26F5491D13B91C22007CC564 /* SkJpegUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkJpegUtility.h; sourceTree = "<group>"; };
+ 26F5491E13B91C22007CC564 /* SkMovie.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkMovie.h; sourceTree = "<group>"; };
+ 26F5491F13B91C22007CC564 /* SkPageFlipper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkPageFlipper.h; sourceTree = "<group>"; };
+ 26F5492213B91C51007CC564 /* FlingState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FlingState.h; sourceTree = "<group>"; };
+ 26F5492313B91C51007CC564 /* GrGLDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGLDefines.h; sourceTree = "<group>"; };
+ 26F5492413B91C51007CC564 /* GrTemplates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrTemplates.h; sourceTree = "<group>"; };
+ 26F5492713B91CA1007CC564 /* SkTypeface_mac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkTypeface_mac.h; path = include/ports/SkTypeface_mac.h; sourceTree = "<group>"; };
+ 26FB12AD13E70D3B001AFF6D /* GrGLRenderTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrGLRenderTarget.cpp; sourceTree = "<group>"; };
+ 26FB12AE13E70D3B001AFF6D /* GrGLRenderTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGLRenderTarget.h; sourceTree = "<group>"; };
+ 26FB12AF13E70D3B001AFF6D /* GrGLTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrGLTexture.h; sourceTree = "<group>"; };
+ 26FB12B313E70D51001AFF6D /* GrRenderTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrRenderTarget.cpp; sourceTree = "<group>"; };
+ 26FB98D113D0C87000ACBEA0 /* SkUIView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkUIView.h; path = Shared/SkUIView.h; sourceTree = "<group>"; };
+ 26FB98D213D0C87000ACBEA0 /* SkUIView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SkUIView.mm; path = Shared/SkUIView.mm; sourceTree = "<group>"; };
+ 2860E325111B887F00E27156 /* AppDelegate_iPhone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate_iPhone.h; sourceTree = "<group>"; };
+ 2860E326111B887F00E27156 /* AppDelegate_iPhone.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AppDelegate_iPhone.mm; sourceTree = "<group>"; };
+ 2860E327111B887F00E27156 /* MainWindow_iPhone.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow_iPhone.xib; sourceTree = "<group>"; };
+ 2860E32B111B888700E27156 /* AppDelegate_iPad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate_iPad.h; sourceTree = "<group>"; };
+ 2860E32C111B888700E27156 /* AppDelegate_iPad.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AppDelegate_iPad.mm; sourceTree = "<group>"; };
+ 2860E32D111B888700E27156 /* MainWindow_iPad.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow_iPad.xib; sourceTree = "<group>"; };
+ 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
+ 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */,
+ 260EE9D513AFA7850064D447 /* CoreFoundation.framework in Frameworks */,
+ 260EF18513AFD62E0064D447 /* CoreText.framework in Frameworks */,
+ 260EF2B013AFDBD30064D447 /* Foundation.framework in Frameworks */,
+ 26E0E40A13B4E67800866555 /* OpenGLES.framework in Frameworks */,
+ 263BE75813CCC7BF00CCE991 /* QuartzCore.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 19C28FACFE9D520D11CA2CBB /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 1D6058910D05DD3D006BFB54 /* iOSSampleApp.app */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 2605F43B13F18B1B0044A072 /* Debugger */ = {
+ isa = PBXGroup;
+ children = (
+ 2605F43C13F18B1B0044A072 /* DebuggerContentView.cpp */,
+ 2605F43D13F18B1B0044A072 /* DebuggerViews.h */,
+ 2605F43E13F18B1B0044A072 /* DebuggerCommandsView.cpp */,
+ 2605F43F13F18B1B0044A072 /* SkDebugDumper.cpp */,
+ 2605F44013F18B1B0044A072 /* SkDebugDumper.h */,
+ 2605F44113F18B1B0044A072 /* DebuggerStateView.cpp */,
+ );
+ name = Debugger;
+ path = ../Debugger;
+ sourceTree = SOURCE_ROOT;
+ };
+ 260E001413B11F5B0064D447 /* gm */ = {
+ isa = PBXGroup;
+ children = (
+ 260E001513B11F5B0064D447 /* bitmapfilters.cpp */,
+ 260E001613B11F5B0064D447 /* blurs.cpp */,
+ 260E001713B11F5B0064D447 /* complexclip.cpp */,
+ 260E001813B11F5B0064D447 /* filltypes.cpp */,
+ 260E001913B11F5B0064D447 /* gm.h */,
+ 260E001A13B11F5B0064D447 /* gradients.cpp */,
+ 260E001B13B11F5B0064D447 /* nocolorbleed.cpp */,
+ 260E001C13B11F5B0064D447 /* points.cpp */,
+ 260E001D13B11F5B0064D447 /* poly2poly.cpp */,
+ 260E001E13B11F5B0064D447 /* shadertext.cpp */,
+ 260E001F13B11F5B0064D447 /* shadows.cpp */,
+ 260E002013B11F5B0064D447 /* shapes.cpp */,
+ 260E002113B11F5B0064D447 /* tilemodes.cpp */,
+ 260E002213B11F5B0064D447 /* xfermodes.cpp */,
+ );
+ name = gm;
+ path = ../../gm;
+ sourceTree = SOURCE_ROOT;
+ };
+ 260E002313B11F5B0064D447 /* samplecode */ = {
+ isa = PBXGroup;
+ children = (
+ 26591EB813EB16EB000DA8A8 /* TransitionView.cpp */,
+ 260E002413B11F5B0064D447 /* ClockFaceView.cpp */,
+ 260E002513B11F5B0064D447 /* OverView.cpp */,
+ 260E002613B11F5B0064D447 /* SampleAARects.cpp */,
+ 260E002713B11F5B0064D447 /* SampleAll.cpp */,
+ 260E002813B11F5B0064D447 /* SampleAnimator.cpp */,
+ 260E002A13B11F5B0064D447 /* SampleArc.cpp */,
+ 260E002B13B11F5B0064D447 /* SampleAvoid.cpp */,
+ 260E002C13B11F5B0064D447 /* SampleBigGradient.cpp */,
+ 260E002D13B11F5B0064D447 /* SampleBitmapRect.cpp */,
+ 260E002E13B11F5B0064D447 /* SampleBlur.cpp */,
+ 260E002F13B11F5B0064D447 /* SampleCamera.cpp */,
+ 260E003013B11F5B0064D447 /* SampleCircle.cpp */,
+ 260E003113B11F5B0064D447 /* SampleCode.h */,
+ 260E003213B11F5B0064D447 /* SampleColorFilter.cpp */,
+ 260E003313B11F5B0064D447 /* SampleComplexClip.cpp */,
+ 260E003413B11F5B0064D447 /* SampleConcavePaths.cpp */,
+ 260E003513B11F5B0064D447 /* SampleCull.cpp */,
+ 260E003613B11F5B0064D447 /* SampleDecode.cpp */,
+ 260E003713B11F5B0064D447 /* SampleDither.cpp */,
+ 260E003813B11F5B0064D447 /* SampleDitherBitmap.cpp */,
+ 260E003913B11F5B0064D447 /* SampleDrawLooper.cpp */,
+ 260E003A13B11F5B0064D447 /* SampleEffects.cpp */,
+ 260E003B13B11F5B0064D447 /* SampleEmboss.cpp */,
+ 260E003C13B11F5B0064D447 /* SampleEncode.cpp */,
+ 260E003D13B11F5B0064D447 /* SampleExtractAlpha.cpp */,
+ 260E003E13B11F5B0064D447 /* SampleFillType.cpp */,
+ 260E003F13B11F5B0064D447 /* SampleFilter.cpp */,
+ 260E004013B11F5B0064D447 /* SampleFilter2.cpp */,
+ 260E004113B11F5B0064D447 /* SampleFontCache.cpp */,
+ 260E004213B11F5B0064D447 /* SampleFontScalerTest.cpp */,
+ 260E004313B11F5B0064D447 /* SampleFuzz.cpp */,
+ 260E004413B11F5B0064D447 /* SampleGM.cpp */,
+ 260E004513B11F5B0064D447 /* SampleGradients.cpp */,
+ 260E004613B11F5B0064D447 /* SampleHairline.cpp */,
+ 260E004713B11F5B0064D447 /* SampleImage.cpp */,
+ 260E004813B11F5B0064D447 /* SampleImageDir.cpp */,
+ 260E004913B11F5B0064D447 /* SampleLCD.cpp */,
+ 260E004A13B11F5B0064D447 /* SampleLayerMask.cpp */,
+ 260E004B13B11F5B0064D447 /* SampleLayers.cpp */,
+ 260E004C13B11F5B0064D447 /* SampleLineClipper.cpp */,
+ 260E004D13B11F5B0064D447 /* SampleLines.cpp */,
+ 260E004E13B11F5B0064D447 /* SampleMeasure.cpp */,
+ 260E004F13B11F5B0064D447 /* SampleMipMap.cpp */,
+ 260E005013B11F5B0064D447 /* SampleMovie.cpp */,
+ 260E005113B11F5B0064D447 /* SampleNinePatch.cpp */,
+ 260E005213B11F5B0064D447 /* SampleOvalTest.cpp */,
+ 260E005313B11F5B0064D447 /* SampleOverflow.cpp */,
+ 260E005413B11F5B0064D447 /* SamplePageFlip.cpp */,
+ 260E005513B11F5B0064D447 /* SamplePatch.cpp */,
+ 260E005613B11F5B0064D447 /* SamplePath.cpp */,
+ 260E005713B11F5B0064D447 /* SamplePathClip.cpp */,
+ 260E005813B11F5B0064D447 /* SamplePathEffects.cpp */,
+ 260E005913B11F5B0064D447 /* SamplePicture.cpp */,
+ 260E005A13B11F5B0064D447 /* SamplePoints.cpp */,
+ 260E005B13B11F5B0064D447 /* SamplePolyToPoly.cpp */,
+ 260E005C13B11F5B0064D447 /* SampleRegion.cpp */,
+ 260E005D13B11F5B0064D447 /* SampleRepeatTile.cpp */,
+ 260E005E13B11F5B0064D447 /* SampleShaderText.cpp */,
+ 260E005F13B11F5B0064D447 /* SampleShaders.cpp */,
+ 260E006013B11F5B0064D447 /* SampleShapes.cpp */,
+ 260E006113B11F5B0064D447 /* SampleSkLayer.cpp */,
+ 260E006213B11F5B0064D447 /* SampleSlides.cpp */,
+ 260E006313B11F5B0064D447 /* SampleStrokePath.cpp */,
+ 260E006413B11F5B0064D447 /* SampleStrokeText.cpp */,
+ 260E006613B11F5B0064D447 /* SampleText.cpp */,
+ 260E006713B11F5B0064D447 /* SampleTextAlpha.cpp */,
+ 260E006813B11F5B0064D447 /* SampleTextBox.cpp */,
+ 260E006913B11F5B0064D447 /* SampleTextEffects.cpp */,
+ 260E006A13B11F5B0064D447 /* SampleTextOnPath.cpp */,
+ 260E006B13B11F5B0064D447 /* SampleTextureDomain.cpp */,
+ 260E006C13B11F5B0064D447 /* SampleTiling.cpp */,
+ 260E006D13B11F5B0064D447 /* SampleTinyBitmap.cpp */,
+ 260E006E13B11F5B0064D447 /* SampleTriangles.cpp */,
+ 260E006F13B11F5B0064D447 /* SampleTypeface.cpp */,
+ 260E007013B11F5B0064D447 /* SampleUnitMapper.cpp */,
+ 260E007113B11F5B0064D447 /* SampleVertices.cpp */,
+ 260E007213B11F5B0064D447 /* SampleXfermodes.cpp */,
+ 260E007313B11F5B0064D447 /* SampleXfermodesBlur.cpp */,
+ );
+ name = samplecode;
+ path = ../../samplecode;
+ sourceTree = SOURCE_ROOT;
+ };
+ 260E007413B11F5B0064D447 /* pipe */ = {
+ isa = PBXGroup;
+ children = (
+ 26E0E5C913B5299E00866555 /* SkGPipe.h */,
+ 260E007513B11F5B0064D447 /* SkGPipeRead.cpp */,
+ 260E007613B11F5B0064D447 /* SkGPipeWrite.cpp */,
+ );
+ name = pipe;
+ path = ../../src/pipe;
+ sourceTree = SOURCE_ROOT;
+ };
+ 260E013413B11F7A0064D447 /* SampleApp */ = {
+ isa = PBXGroup;
+ children = (
+ 26962CAA13CE268A0039B1FB /* SampleApp.h */,
+ 26962CA913CE268A0039B1FB /* SampleApp.cpp */,
+ 260E001413B11F5B0064D447 /* gm */,
+ 260E002313B11F5B0064D447 /* samplecode */,
+ );
+ name = SampleApp;
+ sourceTree = "<group>";
+ };
+ 260E01AF13B1225D0064D447 /* core */ = {
+ isa = PBXGroup;
+ children = (
+ 26F5492713B91CA1007CC564 /* SkTypeface_mac.h */,
+ 260E01B013B1225D0064D447 /* include */,
+ 260E020913B1225D0064D447 /* src */,
+ );
+ name = core;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 260E01B013B1225D0064D447 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 260E01B213B1225D0064D447 /* Sk64.h */,
+ 260E01B313B1225D0064D447 /* SkAdvancedTypefaceMetrics.h */,
+ 260E01B413B1225D0064D447 /* SkAutoKern.h */,
+ 260E01B513B1225D0064D447 /* SkBitmap.h */,
+ 260E01B613B1225D0064D447 /* SkBlitRow.h */,
+ 260E01B713B1225D0064D447 /* SkBlitter.h */,
+ 260E01B813B1225D0064D447 /* SkBounder.h */,
+ 260E01B913B1225D0064D447 /* SkBuffer.h */,
+ 260E01BA13B1225D0064D447 /* SkCanvas.h */,
+ 260E01BB13B1225D0064D447 /* SkChunkAlloc.h */,
+ 260E01BC13B1225D0064D447 /* SkClampRange.h */,
+ 260E01BD13B1225D0064D447 /* SkClipStack.h */,
+ 260E01BE13B1225D0064D447 /* SkColor.h */,
+ 260E01BF13B1225D0064D447 /* SkColorFilter.h */,
+ 260E01C013B1225D0064D447 /* SkColorPriv.h */,
+ 260E01C113B1225D0064D447 /* SkColorShader.h */,
+ 260E01C213B1225D0064D447 /* SkComposeShader.h */,
+ 260E01C313B1225D0064D447 /* SkDeque.h */,
+ 260E01C413B1225D0064D447 /* SkDescriptor.h */,
+ 260E01C513B1225D0064D447 /* SkDevice.h */,
+ 260E01C613B1225D0064D447 /* SkDither.h */,
+ 260E01C713B1225D0064D447 /* SkDraw.h */,
+ 260E01C813B1225D0064D447 /* SkDrawFilter.h */,
+ 260E01C913B1225D0064D447 /* SkDrawLooper.h */,
+ 260E01CA13B1225D0064D447 /* SkEndian.h */,
+ 260E01CB13B1225D0064D447 /* SkFDot6.h */,
+ 260E01CC13B1225D0064D447 /* SkFixed.h */,
+ 260E01CD13B1225D0064D447 /* SkFlate.h */,
+ 260E01CE13B1225D0064D447 /* SkFlattenable.h */,
+ 260E01CF13B1225D0064D447 /* SkFloatBits.h */,
+ 260E01D013B1225D0064D447 /* SkFloatingPoint.h */,
+ 260E01D113B1225D0064D447 /* SkFontHost.h */,
+ 260E01D213B1225D0064D447 /* SkGeometry.h */,
+ 260E01D313B1225D0064D447 /* SkGlobals.h */,
+ 260E01D413B1225D0064D447 /* SkGraphics.h */,
+ 260E01D513B1225D0064D447 /* SkMMapStream.h */,
+ 260E01D613B1225D0064D447 /* SkMallocPixelRef.h */,
+ 260E01D713B1225D0064D447 /* SkMask.h */,
+ 260E01D813B1225D0064D447 /* SkMaskFilter.h */,
+ 260E01D913B1225D0064D447 /* SkMath.h */,
+ 260E01DA13B1225D0064D447 /* SkMatrix.h */,
+ 260E01DB13B1225D0064D447 /* SkMetaData.h */,
+ 260E01DC13B1225D0064D447 /* SkOSFile.h */,
+ 260E01DD13B1225D0064D447 /* SkPackBits.h */,
+ 260E01DE13B1225D0064D447 /* SkPaint.h */,
+ 260E01DF13B1225D0064D447 /* SkPath.h */,
+ 260E01E013B1225D0064D447 /* SkPathEffect.h */,
+ 260E01E113B1225D0064D447 /* SkPathMeasure.h */,
+ 260E01E213B1225D0064D447 /* SkPerspIter.h */,
+ 260E01E313B1225D0064D447 /* SkPicture.h */,
+ 260E01E413B1225D0064D447 /* SkPixelRef.h */,
+ 260E01E513B1225D0064D447 /* SkPoint.h */,
+ 260E01E613B1225D0064D447 /* SkPtrRecorder.h */,
+ 260E01E713B1225D0064D447 /* SkRandom.h */,
+ 260E01E813B1225D0064D447 /* SkRasterizer.h */,
+ 260E01E913B1225D0064D447 /* SkReader32.h */,
+ 260E01EA13B1225D0064D447 /* SkRect.h */,
+ 260E01EB13B1225D0064D447 /* SkRefCnt.h */,
+ 260E01EC13B1225D0064D447 /* SkRefDict.h */,
+ 260E01ED13B1225D0064D447 /* SkRegion.h */,
+ 260E01EE13B1225D0064D447 /* SkScalar.h */,
+ 260E01EF13B1225D0064D447 /* SkScalarCompare.h */,
+ 260E01F013B1225D0064D447 /* SkScalerContext.h */,
+ 260E01F113B1225D0064D447 /* SkScan.h */,
+ 260E01F213B1225D0064D447 /* SkShader.h */,
+ 260E01F313B1225D0064D447 /* SkStream.h */,
+ 260E01F413B1225D0064D447 /* SkString.h */,
+ 260E01F513B1225D0064D447 /* SkStroke.h */,
+ 260E01F613B1225D0064D447 /* SkTDArray.h */,
+ 260E01F713B1225D0064D447 /* SkTDStack.h */,
+ 260E01F813B1225D0064D447 /* SkTDict.h */,
+ 260E01F913B1225D0064D447 /* SkTRegistry.h */,
+ 260E01FB13B1225D0064D447 /* SkTSearch.h */,
+ 260E01FC13B1225D0064D447 /* SkTemplates.h */,
+ 260E01FD13B1225D0064D447 /* SkThread.h */,
+ 260E01FE13B1225D0064D447 /* SkThread_platform.h */,
+ 260E01FF13B1225D0064D447 /* SkTime.h */,
+ 260E020013B1225D0064D447 /* SkTypeface.h */,
+ 260E020113B1225D0064D447 /* SkTypes.h */,
+ 260E020213B1225D0064D447 /* SkUnPreMultiply.h */,
+ 260E020313B1225D0064D447 /* SkUnitMapper.h */,
+ 260E020413B1225D0064D447 /* SkUtils.h */,
+ 260E020513B1225D0064D447 /* SkWriter32.h */,
+ 260E020613B1225D0064D447 /* SkXfermode.h */,
+ 26F5491013B91BDB007CC564 /* SkEdgeClipper.h */,
+ 26F5491113B91BDB007CC564 /* SkLineClipper.h */,
+ 26F5491213B91BDB007CC564 /* SkPostConfig.h */,
+ 26F5491313B91BDB007CC564 /* SkPreConfig.h */,
+ 26F5491413B91BDB007CC564 /* SkRelay.h */,
+ 26F5491513B91BDB007CC564 /* SkShape.h */,
+ 26F5491613B91BDB007CC564 /* SkSize.h */,
+ 26F5491713B91BDB007CC564 /* SkTLazy.h */,
+ 26677D6413B4C53E009319B8 /* SkData.h */,
+ 260E020713B1225D0064D447 /* mac */,
+ );
+ path = include;
+ sourceTree = "<group>";
+ };
+ 260E020713B1225D0064D447 /* mac */ = {
+ isa = PBXGroup;
+ children = (
+ 260E020813B1225D0064D447 /* SkCGUtils.h */,
+ );
+ name = mac;
+ path = utils/mac;
+ sourceTree = "<group>";
+ };
+ 260E020913B1225D0064D447 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 26677D6513B4C548009319B8 /* SkData.cpp */,
+ 260E020A13B1225D0064D447 /* core */,
+ 260E029513B1225D0064D447 /* ports */,
+ );
+ path = src;
+ sourceTree = "<group>";
+ };
+ 260E020A13B1225D0064D447 /* core */ = {
+ isa = PBXGroup;
+ children = (
+ 260E020B13B1225D0064D447 /* ARGB32_Clamp_Bilinear_BitmapShader.h */,
+ 260E020C13B1225D0064D447 /* Sk64.cpp */,
+ 260E020D13B1225D0064D447 /* SkAdvancedTypefaceMetrics.cpp */,
+ 260E020E13B1225D0064D447 /* SkAlphaRuns.cpp */,
+ 260E020F13B1225D0064D447 /* SkAntiRun.h */,
+ 260E021013B1225D0064D447 /* SkBitmap.cpp */,
+ 260E021113B1225D0064D447 /* SkBitmapProcShader.cpp */,
+ 260E021213B1225D0064D447 /* SkBitmapProcShader.h */,
+ 260E021313B1225D0064D447 /* SkBitmapProcState.cpp */,
+ 260E021413B1225D0064D447 /* SkBitmapProcState.h */,
+ 260E021513B1225D0064D447 /* SkBitmapProcState_matrix.h */,
+ 260E021613B1225D0064D447 /* SkBitmapProcState_matrixProcs.cpp */,
+ 260E021713B1225D0064D447 /* SkBitmapProcState_sample.h */,
+ 260E021813B1225D0064D447 /* SkBitmapSampler.cpp */,
+ 260E021913B1225D0064D447 /* SkBitmapSampler.h */,
+ 260E021A13B1225D0064D447 /* SkBitmapSamplerTemplate.h */,
+ 260E021B13B1225D0064D447 /* SkBitmapShader16BilerpTemplate.h */,
+ 260E021C13B1225D0064D447 /* SkBitmapShaderTemplate.h */,
+ 260E021D13B1225D0064D447 /* SkBitmap_scroll.cpp */,
+ 260E021E13B1225D0064D447 /* SkBlitBWMaskTemplate.h */,
+ 260E021F13B1225D0064D447 /* SkBlitRow_D16.cpp */,
+ 260E022013B1225D0064D447 /* SkBlitRow_D32.cpp */,
+ 260E022113B1225D0064D447 /* SkBlitRow_D4444.cpp */,
+ 260E022213B1225D0064D447 /* SkBlitter.cpp */,
+ 260E022313B1225D0064D447 /* SkBlitter_4444.cpp */,
+ 260E022413B1225D0064D447 /* SkBlitter_A1.cpp */,
+ 260E022513B1225D0064D447 /* SkBlitter_A8.cpp */,
+ 260E022613B1225D0064D447 /* SkBlitter_ARGB32.cpp */,
+ 260E022713B1225D0064D447 /* SkBlitter_RGB16.cpp */,
+ 260E022813B1225D0064D447 /* SkBlitter_Sprite.cpp */,
+ 260E022913B1225D0064D447 /* SkBuffer.cpp */,
+ 260E022A13B1225D0064D447 /* SkCanvas.cpp */,
+ 260E022B13B1225D0064D447 /* SkChunkAlloc.cpp */,
+ 260E022C13B1225D0064D447 /* SkClampRange.cpp */,
+ 260E022D13B1225D0064D447 /* SkClipStack.cpp */,
+ 260E022E13B1225D0064D447 /* SkColor.cpp */,
+ 260E022F13B1225D0064D447 /* SkColorFilter.cpp */,
+ 260E023013B1225D0064D447 /* SkColorTable.cpp */,
+ 260E023113B1225D0064D447 /* SkComposeShader.cpp */,
+ 260E023213B1225D0064D447 /* SkConcaveToTriangles.cpp */,
+ 260E023313B1225D0064D447 /* SkConcaveToTriangles.h */,
+ 260E023413B1225D0064D447 /* SkCordic.cpp */,
+ 260E023513B1225D0064D447 /* SkCordic.h */,
+ 260E023613B1225D0064D447 /* SkCoreBlitters.h */,
+ 260E023713B1225D0064D447 /* SkCubicClipper.cpp */,
+ 260E023813B1225D0064D447 /* SkCubicClipper.h */,
+ 260E023A13B1225D0064D447 /* SkDebug.cpp */,
+ 260E023B13B1225D0064D447 /* SkDeque.cpp */,
+ 260E023C13B1225D0064D447 /* SkDevice.cpp */,
+ 260E023D13B1225D0064D447 /* SkDither.cpp */,
+ 260E023E13B1225D0064D447 /* SkDraw.cpp */,
+ 260E023F13B1225D0064D447 /* SkDrawProcs.h */,
+ 260E024013B1225D0064D447 /* SkEdge.cpp */,
+ 260E024113B1225D0064D447 /* SkEdge.h */,
+ 260E024213B1225D0064D447 /* SkEdgeBuilder.cpp */,
+ 260E024313B1225D0064D447 /* SkEdgeClipper.cpp */,
+ 260E024413B1225D0064D447 /* SkFP.h */,
+ 260E024513B1225D0064D447 /* SkFilterProc.cpp */,
+ 260E024613B1225D0064D447 /* SkFilterProc.h */,
+ 260E024713B1225D0064D447 /* SkFlate.cpp */,
+ 260E024813B1225D0064D447 /* SkFlattenable.cpp */,
+ 260E024913B1225D0064D447 /* SkFloat.cpp */,
+ 260E024A13B1225D0064D447 /* SkFloat.h */,
+ 260E024B13B1225D0064D447 /* SkFloatBits.cpp */,
+ 260E024C13B1225D0064D447 /* SkFontHost.cpp */,
+ 260E024D13B1225D0064D447 /* SkGeometry.cpp */,
+ 260E024E13B1225D0064D447 /* SkGlobals.cpp */,
+ 260E024F13B1225D0064D447 /* SkGlyphCache.cpp */,
+ 260E025013B1225D0064D447 /* SkGlyphCache.h */,
+ 260E025113B1225D0064D447 /* SkGraphics.cpp */,
+ 260E025213B1225D0064D447 /* SkLineClipper.cpp */,
+ 260E025313B1225D0064D447 /* SkMMapStream.cpp */,
+ 260E025413B1225D0064D447 /* SkMallocPixelRef.cpp */,
+ 260E025513B1225D0064D447 /* SkMask.cpp */,
+ 260E025613B1225D0064D447 /* SkMaskFilter.cpp */,
+ 260E025713B1225D0064D447 /* SkMath.cpp */,
+ 260E025813B1225D0064D447 /* SkMatrix.cpp */,
+ 260E025913B1225D0064D447 /* SkMetaData.cpp */,
+ 260E025A13B1225D0064D447 /* SkPackBits.cpp */,
+ 260E025B13B1225D0064D447 /* SkPaint.cpp */,
+ 260E025C13B1225D0064D447 /* SkPath.cpp */,
+ 260E025D13B1225D0064D447 /* SkPathEffect.cpp */,
+ 260E025E13B1225D0064D447 /* SkPathHeap.cpp */,
+ 260E025F13B1225D0064D447 /* SkPathHeap.h */,
+ 260E026013B1225D0064D447 /* SkPathMeasure.cpp */,
+ 260E026113B1225D0064D447 /* SkPicture.cpp */,
+ 260E026213B1225D0064D447 /* SkPictureFlat.cpp */,
+ 260E026313B1225D0064D447 /* SkPictureFlat.h */,
+ 260E026413B1225D0064D447 /* SkPicturePlayback.cpp */,
+ 260E026513B1225D0064D447 /* SkPicturePlayback.h */,
+ 260E026613B1225D0064D447 /* SkPictureRecord.cpp */,
+ 260E026713B1225D0064D447 /* SkPictureRecord.h */,
+ 260E026813B1225D0064D447 /* SkPixelRef.cpp */,
+ 260E026913B1225D0064D447 /* SkPoint.cpp */,
+ 260E026A13B1225D0064D447 /* SkProcSpriteBlitter.cpp */,
+ 260E026B13B1225D0064D447 /* SkPtrRecorder.cpp */,
+ 260E026C13B1225D0064D447 /* SkQuadClipper.cpp */,
+ 260E026D13B1225D0064D447 /* SkQuadClipper.h */,
+ 260E026E13B1225D0064D447 /* SkRasterizer.cpp */,
+ 260E026F13B1225D0064D447 /* SkRect.cpp */,
+ 260E027013B1225D0064D447 /* SkRefDict.cpp */,
+ 260E027113B1225D0064D447 /* SkRegion.cpp */,
+ 260E027213B1225D0064D447 /* SkRegionPriv.h */,
+ 260E027313B1225D0064D447 /* SkRegion_path.cpp */,
+ 260E027413B1225D0064D447 /* SkScalar.cpp */,
+ 260E027513B1225D0064D447 /* SkScalerContext.cpp */,
+ 260E027613B1225D0064D447 /* SkScan.cpp */,
+ 260E027713B1225D0064D447 /* SkScanPriv.h */,
+ 260E027813B1225D0064D447 /* SkScan_AntiPath.cpp */,
+ 260E027913B1225D0064D447 /* SkScan_Antihair.cpp */,
+ 260E027A13B1225D0064D447 /* SkScan_Hairline.cpp */,
+ 260E027B13B1225D0064D447 /* SkScan_Path.cpp */,
+ 260E027C13B1225D0064D447 /* SkShader.cpp */,
+ 260E027D13B1225D0064D447 /* SkShape.cpp */,
+ 260E027E13B1225D0064D447 /* SkSinTable.h */,
+ 260E027F13B1225D0064D447 /* SkSpriteBlitter.h */,
+ 260E028013B1225D0064D447 /* SkSpriteBlitterTemplate.h */,
+ 260E028113B1225D0064D447 /* SkSpriteBlitter_ARGB32.cpp */,
+ 260E028213B1225D0064D447 /* SkSpriteBlitter_RGB16.cpp */,
+ 260E028313B1225D0064D447 /* SkStream.cpp */,
+ 260E028413B1225D0064D447 /* SkString.cpp */,
+ 260E028513B1225D0064D447 /* SkStroke.cpp */,
+ 260E028613B1225D0064D447 /* SkStrokerPriv.cpp */,
+ 260E028713B1225D0064D447 /* SkStrokerPriv.h */,
+ 260E028813B1225D0064D447 /* SkTSearch.cpp */,
+ 260E028913B1225D0064D447 /* SkTSort.h */,
+ 260E028A13B1225D0064D447 /* SkTemplatesPriv.h */,
+ 260E028B13B1225D0064D447 /* SkTextFormatParams.h */,
+ 260E028C13B1225D0064D447 /* SkTypeface.cpp */,
+ 260E028D13B1225D0064D447 /* SkTypefaceCache.cpp */,
+ 260E028E13B1225D0064D447 /* SkTypefaceCache.h */,
+ 260E028F13B1225D0064D447 /* SkUnPreMultiply.cpp */,
+ 260E029013B1225D0064D447 /* SkUtils.cpp */,
+ 260E029113B1225D0064D447 /* SkWriter32.cpp */,
+ 260E029213B1225D0064D447 /* SkXfermode.cpp */,
+ );
+ path = core;
+ sourceTree = "<group>";
+ };
+ 260E029513B1225D0064D447 /* ports */ = {
+ isa = PBXGroup;
+ children = (
+ 260E029613B1225D0064D447 /* SkDebug_stdio.cpp */,
+ 260E029813B1225D0064D447 /* SkFontHost_mac_coretext.cpp */,
+ 260E029A13B1225D0064D447 /* SkGlobals_global.cpp */,
+ 260E029B13B1225D0064D447 /* SkMemory_malloc.cpp */,
+ 260E029D13B1225D0064D447 /* SkThread_pthread.cpp */,
+ 260E029E13B1225D0064D447 /* SkTime_Unix.cpp */,
+ 260E02A013B1225D0064D447 /* SkXMLParser_empty.cpp */,
+ 260E02A113B1225D0064D447 /* sk_predefined_gamma.h */,
+ );
+ path = ports;
+ sourceTree = "<group>";
+ };
+ 260E031E13B122A30064D447 /* effects */ = {
+ isa = PBXGroup;
+ children = (
+ 260E031F13B122A30064D447 /* include */,
+ 260E033613B122A30064D447 /* src */,
+ );
+ name = effects;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 260E031F13B122A30064D447 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 260E032013B122A30064D447 /* Sk1DPathEffect.h */,
+ 260E032113B122A30064D447 /* Sk2DPathEffect.h */,
+ 260E032213B122A30064D447 /* SkAvoidXfermode.h */,
+ 260E032313B122A30064D447 /* SkBlurDrawLooper.h */,
+ 260E032413B122A30064D447 /* SkBlurMaskFilter.h */,
+ 260E032513B122A30064D447 /* SkColorMatrix.h */,
+ 260E032613B122A30064D447 /* SkColorMatrixFilter.h */,
+ 260E032713B122A30064D447 /* SkCornerPathEffect.h */,
+ 260E032813B122A30064D447 /* SkDashPathEffect.h */,
+ 260E032913B122A30064D447 /* SkDiscretePathEffect.h */,
+ 260E032A13B122A30064D447 /* SkDrawExtraPathEffect.h */,
+ 260E032B13B122A30064D447 /* SkEmbossMaskFilter.h */,
+ 260E032C13B122A30064D447 /* SkGradientShader.h */,
+ 260E032D13B122A30064D447 /* SkGroupShape.h */,
+ 260E032E13B122A30064D447 /* SkKernel33MaskFilter.h */,
+ 260E032F13B122A30064D447 /* SkLayerDrawLooper.h */,
+ 260E033013B122A30064D447 /* SkLayerRasterizer.h */,
+ 260E033113B122A30064D447 /* SkPaintFlagsDrawFilter.h */,
+ 260E033213B122A30064D447 /* SkPixelXorXfermode.h */,
+ 260E033313B122A30064D447 /* SkPorterDuff.h */,
+ 260E033413B122A30064D447 /* SkRectShape.h */,
+ 260E033513B122A30064D447 /* SkTransparentShader.h */,
+ );
+ name = include;
+ path = include/effects;
+ sourceTree = "<group>";
+ };
+ 260E033613B122A30064D447 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 260E033713B122A30064D447 /* Sk1DPathEffect.cpp */,
+ 260E033813B122A30064D447 /* Sk2DPathEffect.cpp */,
+ 260E033913B122A30064D447 /* SkAvoidXfermode.cpp */,
+ 260E033A13B122A30064D447 /* SkBitmapCache.cpp */,
+ 260E033B13B122A30064D447 /* SkBitmapCache.h */,
+ 260E033C13B122A30064D447 /* SkBlurDrawLooper.cpp */,
+ 260E033D13B122A30064D447 /* SkBlurMask.cpp */,
+ 260E033E13B122A30064D447 /* SkBlurMask.h */,
+ 260E033F13B122A30064D447 /* SkBlurMaskFilter.cpp */,
+ 260E034013B122A30064D447 /* SkColorFilters.cpp */,
+ 260E034113B122A30064D447 /* SkColorMatrixFilter.cpp */,
+ 260E034213B122A30064D447 /* SkCornerPathEffect.cpp */,
+ 260E034313B122A30064D447 /* SkDashPathEffect.cpp */,
+ 260E034413B122A30064D447 /* SkDiscretePathEffect.cpp */,
+ 260E034513B122A30064D447 /* SkEmbossMask.cpp */,
+ 260E034613B122A30064D447 /* SkEmbossMask.h */,
+ 260E034713B122A30064D447 /* SkEmbossMaskFilter.cpp */,
+ 260E034813B122A30064D447 /* SkEmbossMask_Table.h */,
+ 260E034913B122A30064D447 /* SkGradientShader.cpp */,
+ 260E034A13B122A30064D447 /* SkGroupShape.cpp */,
+ 260E034B13B122A30064D447 /* SkKernel33MaskFilter.cpp */,
+ 260E034C13B122A30064D447 /* SkLayerDrawLooper.cpp */,
+ 260E034D13B122A30064D447 /* SkLayerRasterizer.cpp */,
+ 260E034E13B122A30064D447 /* SkPaintFlagsDrawFilter.cpp */,
+ 260E034F13B122A30064D447 /* SkPixelXorXfermode.cpp */,
+ 260E035013B122A30064D447 /* SkPorterDuff.cpp */,
+ 260E035113B122A30064D447 /* SkRadialGradient_Table.h */,
+ 260E035213B122A30064D447 /* SkRectShape.cpp */,
+ 260E035313B122A30064D447 /* SkTransparentShader.cpp */,
+ );
+ name = src;
+ path = src/effects;
+ sourceTree = "<group>";
+ };
+ 260E038913B122D40064D447 /* gpu */ = {
+ isa = PBXGroup;
+ children = (
+ 260E038A13B122D40064D447 /* gpu */,
+ 260E03FB13B122D40064D447 /* include */,
+ 260E040113B122D40064D447 /* src */,
+ );
+ name = gpu;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 260E038A13B122D40064D447 /* gpu */ = {
+ isa = PBXGroup;
+ children = (
+ 260E038B13B122D40064D447 /* include */,
+ 260E03C813B122D40064D447 /* src */,
+ );
+ path = gpu;
+ sourceTree = "<group>";
+ };
+ 260E038B13B122D40064D447 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 26F5492213B91C51007CC564 /* FlingState.h */,
+ 26F5492313B91C51007CC564 /* GrGLDefines.h */,
+ 26F5492413B91C51007CC564 /* GrTemplates.h */,
+ 260E038C13B122D40064D447 /* GrAllocPool.h */,
+ 260E038D13B122D40064D447 /* GrAllocator.h */,
+ 260E038E13B122D40064D447 /* GrAtlas.h */,
+ 260E038F13B122D40064D447 /* GrClip.h */,
+ 260E039013B122D40064D447 /* GrClipIterator.h */,
+ 260E039113B122D40064D447 /* GrColor.h */,
+ 260E039213B122D40064D447 /* GrConfig.h */,
+ 260E039313B122D40064D447 /* GrContext.h */,
+ 260E039413B122D40064D447 /* GrContext_impl.h */,
+ 260E039513B122D40064D447 /* GrDrawTarget.h */,
+ 260E039613B122D40064D447 /* GrFontScaler.h */,
+ 260E039713B122D40064D447 /* GrGLConfig.h */,
+ 260E039813B122D40064D447 /* GrGLConfig_chrome.h */,
+ 260E039B13B122D40064D447 /* GrGLInterface.h */,
+ 260E039E13B122D40064D447 /* GrGeometryBuffer.h */,
+ 260E039F13B122D40064D447 /* GrGlyph.h */,
+ 260E03A013B122D40064D447 /* GrGpu.h */,
+ 260E03A113B122D40064D447 /* GrGpuVertex.h */,
+ 260E03A213B122D40064D447 /* GrIPoint.h */,
+ 260E03A313B122D40064D447 /* GrInOrderDrawBuffer.h */,
+ 260E03A413B122D40064D447 /* GrIndexBuffer.h */,
+ 260E03A513B122D40064D447 /* GrInstanceCounter.h */,
+ 260E03A613B122D40064D447 /* GrKey.h */,
+ 260E03A713B122D40064D447 /* GrMatrix.h */,
+ 260E03A913B122D40064D447 /* GrMesh.h */,
+ 260E03AA13B122D40064D447 /* GrNoncopyable.h */,
+ 260E03AB13B122D40064D447 /* GrPaint.h */,
+ 260E03AC13B122D40064D447 /* GrPath.h */,
+ 260E03AD13B122D40064D447 /* GrPathRenderer.h */,
+ 260E03AE13B122D40064D447 /* GrPathSink.h */,
+ 260E03AF13B122D40064D447 /* GrPlotMgr.h */,
+ 260E03B013B122D40064D447 /* GrPoint.h */,
+ 260E03B113B122D40064D447 /* GrRandom.h */,
+ 260E03B213B122D40064D447 /* GrRect.h */,
+ 260E03B313B122D40064D447 /* GrRectanizer.h */,
+ 260E03B413B122D40064D447 /* GrRefCnt.h */,
+ 260E03B513B122D40064D447 /* GrResource.h */,
+ 260E03B613B122D40064D447 /* GrSamplerState.h */,
+ 260E03B713B122D40064D447 /* GrScalar.h */,
+ 260E03B813B122D40064D447 /* GrStencil.h */,
+ 260E03B913B122D40064D447 /* GrStopwatch.h */,
+ 260E03BA13B122D40064D447 /* GrStringBuilder.h */,
+ 260E03BB13B122D40064D447 /* GrTArray.h */,
+ 260E03BC13B122D40064D447 /* GrTBSearch.h */,
+ 260E03BD13B122D40064D447 /* GrTDArray.h */,
+ 260E03BE13B122D40064D447 /* GrTHashCache.h */,
+ 260E03BF13B122D40064D447 /* GrTLList.h */,
+ 260E03C013B122D40064D447 /* GrTesselatedPathRenderer.h */,
+ 260E03C113B122D40064D447 /* GrTextContext.h */,
+ 260E03C213B122D40064D447 /* GrTextStrike.h */,
+ 260E03C313B122D40064D447 /* GrTexture.h */,
+ 260E03C513B122D40064D447 /* GrTypes.h */,
+ 260E03C613B122D40064D447 /* GrUserConfig.h */,
+ 260E03C713B122D40064D447 /* GrVertexBuffer.h */,
+ );
+ path = include;
+ sourceTree = "<group>";
+ };
+ 260E03C813B122D40064D447 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 2612C121140D30B0001B6925 /* GrAddPathRenderers_none.cpp */,
+ 2612C109140D300B001B6925 /* GrDefaultPathRenderer.cpp */,
+ 2612C10A140D300B001B6925 /* GrDefaultPathRenderer.h */,
+ 2612C10B140D300B001B6925 /* GrGLStencilBuffer.cpp */,
+ 2612C10C140D300B001B6925 /* GrGLStencilBuffer.h */,
+ 2612C10D140D300B001B6925 /* GrPathRenderer.h */,
+ 2612C10E140D300B001B6925 /* GrPathRendererChain.cpp */,
+ 2612C10F140D300B001B6925 /* GrPathRendererChain.h */,
+ 2605F66413F19EB80044A072 /* GrStencilBuffer.cpp */,
+ 26FB12B313E70D51001AFF6D /* GrRenderTarget.cpp */,
+ 26FB12AD13E70D3B001AFF6D /* GrGLRenderTarget.cpp */,
+ 26FB12AE13E70D3B001AFF6D /* GrGLRenderTarget.h */,
+ 26FB12AF13E70D3B001AFF6D /* GrGLTexture.h */,
+ 26A8AFF113E05D7000A3C111 /* GrResourceCache.cpp */,
+ 26A8AFF213E05D7000A3C111 /* GrResourceCache.h */,
+ 260E095513B134C90064D447 /* FlingState.cpp */,
+ 260E095613B134C90064D447 /* GrDrawMesh.cpp */,
+ 260E03D113B122D40064D447 /* GrAllocPool.cpp */,
+ 260E03D213B122D40064D447 /* GrAtlas.cpp */,
+ 260E03D313B122D40064D447 /* GrBinHashKey.h */,
+ 260E03D413B122D40064D447 /* GrBufferAllocPool.cpp */,
+ 260E03D513B122D40064D447 /* GrBufferAllocPool.h */,
+ 260E03D613B122D40064D447 /* GrClip.cpp */,
+ 260E03D713B122D40064D447 /* GrContext.cpp */,
+ 260E03D913B122D40064D447 /* GrDrawTarget.cpp */,
+ 260E03DA13B122D40064D447 /* GrGLDefaultInterface_none.cpp */,
+ 260E03DB13B122D40064D447 /* GrGLIndexBuffer.cpp */,
+ 260E03DC13B122D40064D447 /* GrGLInterface.cpp */,
+ 260E03DD13B122D40064D447 /* GrGLProgram.cpp */,
+ 260E03DE13B122D40064D447 /* GrGLProgram.h */,
+ 260E03DF13B122D40064D447 /* GrGLTexture.cpp */,
+ 260E03E013B122D40064D447 /* GrGLUtil.cpp */,
+ 260E03E113B122D40064D447 /* GrGLVertexBuffer.cpp */,
+ 260E03E213B122D40064D447 /* GrGpu.cpp */,
+ 260E03E313B122D40064D447 /* GrGpuFactory.cpp */,
+ 260E03E413B122D40064D447 /* GrGpuGL.cpp */,
+ 260E03E513B122D40064D447 /* GrGpuGL.h */,
+ 260E03E613B122D40064D447 /* GrGpuGLFixed.cpp */,
+ 260E03E713B122D40064D447 /* GrGpuGLFixed.h */,
+ 260E03E813B122D40064D447 /* GrGpuGLShaders.cpp */,
+ 260E03E913B122D40064D447 /* GrGpuGLShaders.h */,
+ 260E03EA13B122D40064D447 /* GrInOrderDrawBuffer.cpp */,
+ 260E03EB13B122D40064D447 /* GrMatrix.cpp */,
+ 260E03EC13B122D40064D447 /* GrMemory.cpp */,
+ 260E03ED13B122D40064D447 /* GrPathRenderer.cpp */,
+ 260E03EE13B122D40064D447 /* GrPathUtils.cpp */,
+ 260E03EF13B122D40064D447 /* GrPathUtils.h */,
+ 260E03F013B122D40064D447 /* GrRectanizer.cpp */,
+ 260E03F113B122D40064D447 /* GrRedBlackTree.h */,
+ 260E03F213B122D40064D447 /* GrResource.cpp */,
+ 260E03F313B122D40064D447 /* GrStencil.cpp */,
+ 260E03F513B122D40064D447 /* GrTextContext.cpp */,
+ 260E03F613B122D40064D447 /* GrTextStrike.cpp */,
+ 260E03F713B122D40064D447 /* GrTextStrike_impl.h */,
+ 260E03F813B122D40064D447 /* GrTexture.cpp */,
+ 260E03FA13B122D40064D447 /* gr_unittests.cpp */,
+ );
+ path = src;
+ sourceTree = "<group>";
+ };
+ 260E03FB13B122D40064D447 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 260E03FC13B122D40064D447 /* SkGpuCanvas.h */,
+ 260E03FD13B122D40064D447 /* SkGpuDevice.h */,
+ 260E03FF13B122D40064D447 /* SkGr.h */,
+ 260E040013B122D40064D447 /* SkGrTexturePixelRef.h */,
+ );
+ name = include;
+ path = include/gpu;
+ sourceTree = "<group>";
+ };
+ 260E040113B122D40064D447 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 260E040213B122D40064D447 /* GrPrintf_skia.cpp */,
+ 260E040313B122D40064D447 /* SkGpuCanvas.cpp */,
+ 260E040413B122D40064D447 /* SkGpuDevice.cpp */,
+ 260E040513B122D40064D447 /* SkGr.cpp */,
+ 260E040613B122D40064D447 /* SkGrFontScaler.cpp */,
+ 260E040713B122D40064D447 /* SkGrTexturePixelRef.cpp */,
+ );
+ name = src;
+ path = src/gpu;
+ sourceTree = "<group>";
+ };
+ 260E043E13B1232F0064D447 /* images */ = {
+ isa = PBXGroup;
+ children = (
+ 260E043F13B1232F0064D447 /* include */,
+ 260E044813B1232F0064D447 /* src */,
+ );
+ name = images;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 260E043F13B1232F0064D447 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 26F5491A13B91C22007CC564 /* SkFlipPixelRef.h */,
+ 26F5491B13B91C22007CC564 /* SkImageRef_GlobalPool.h */,
+ 26F5491C13B91C22007CC564 /* SkImageRef.h */,
+ 26F5491D13B91C22007CC564 /* SkJpegUtility.h */,
+ 26F5491E13B91C22007CC564 /* SkMovie.h */,
+ 26F5491F13B91C22007CC564 /* SkPageFlipper.h */,
+ 260E044113B1232F0064D447 /* SkImageDecoder.h */,
+ 260E044213B1232F0064D447 /* SkImageEncoder.h */,
+ );
+ name = include;
+ path = include/images;
+ sourceTree = "<group>";
+ };
+ 260E044813B1232F0064D447 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 260E044913B1232F0064D447 /* images */,
+ 260E046413B1232F0064D447 /* ports */,
+ );
+ path = src;
+ sourceTree = "<group>";
+ };
+ 260E044913B1232F0064D447 /* images */ = {
+ isa = PBXGroup;
+ children = (
+ 260E07C413B128610064D447 /* SkMovie.cpp */,
+ 260E044A13B1232F0064D447 /* SkBitmap_RLEPixels.h */,
+ 260E044B13B1232F0064D447 /* SkCreateRLEPixelRef.cpp */,
+ 260E044C13B1232F0064D447 /* SkFDStream.cpp */,
+ 260E044D13B1232F0064D447 /* SkFlipPixelRef.cpp */,
+ 260E044E13B1232F0064D447 /* SkImageDecoder.cpp */,
+ 260E045613B1232F0064D447 /* SkImageEncoder.cpp */,
+ 260E083B13B12A200064D447 /* SkImageDecoder_Factory.cpp */,
+ 260E083C13B12A200064D447 /* SkImageEncoder_Factory.cpp */,
+ 260E07C913B128740064D447 /* SkPageFlipper.cpp */,
+ 260E07CE13B128870064D447 /* SkImageRef.cpp */,
+ 260E07CF13B128870064D447 /* SkImageRefPool.cpp */,
+ 260E07D013B128870064D447 /* SkImageRefPool.h */,
+ 260E07D613B1289C0064D447 /* SkImageRef_GlobalPool.cpp */,
+ );
+ path = images;
+ sourceTree = "<group>";
+ };
+ 260E046413B1232F0064D447 /* ports */ = {
+ isa = PBXGroup;
+ children = (
+ 260E080E13B1294E0064D447 /* SkImageDecoder_CG.cpp */,
+ );
+ path = ports;
+ sourceTree = "<group>";
+ };
+ 260E04B413B123730064D447 /* opts */ = {
+ isa = PBXGroup;
+ children = (
+ 26F548E013B91980007CC564 /* SkBitmapProcState_opts_arm.cpp */,
+ 26F548E413B91980007CC564 /* SkBlitRow_opts_none.cpp */,
+ 26F548E513B91980007CC564 /* SkBlitRow_opts_SSE2.h */,
+ 26F548E613B91980007CC564 /* SkUtils_opts_none.cpp */,
+ 26F548E713B91980007CC564 /* SkUtils_opts_SSE2.h */,
+ );
+ name = opts;
+ path = ../../src/opts;
+ sourceTree = SOURCE_ROOT;
+ };
+ 260E04C613B123840064D447 /* svg */ = {
+ isa = PBXGroup;
+ children = (
+ 260E04C713B123840064D447 /* include */,
+ 260E04CD13B123840064D447 /* src */,
+ );
+ name = svg;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 260E04C713B123840064D447 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 260E04C813B123840064D447 /* SkSVGAttribute.h */,
+ 260E04C913B123840064D447 /* SkSVGBase.h */,
+ 260E04CA13B123840064D447 /* SkSVGPaintState.h */,
+ 260E04CB13B123840064D447 /* SkSVGParser.h */,
+ 260E04CC13B123840064D447 /* SkSVGTypes.h */,
+ );
+ name = include;
+ path = include/svg;
+ sourceTree = "<group>";
+ };
+ 260E04CD13B123840064D447 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 260E04CE13B123840064D447 /* SkSVGCircle.cpp */,
+ 260E04CF13B123840064D447 /* SkSVGCircle.h */,
+ 260E04D013B123840064D447 /* SkSVGClipPath.cpp */,
+ 260E04D113B123840064D447 /* SkSVGClipPath.h */,
+ 260E04D213B123840064D447 /* SkSVGDefs.cpp */,
+ 260E04D313B123840064D447 /* SkSVGDefs.h */,
+ 260E04D413B123840064D447 /* SkSVGElements.cpp */,
+ 260E04D513B123840064D447 /* SkSVGElements.h */,
+ 260E04D613B123840064D447 /* SkSVGEllipse.cpp */,
+ 260E04D713B123840064D447 /* SkSVGEllipse.h */,
+ 260E04D813B123840064D447 /* SkSVGFeColorMatrix.cpp */,
+ 260E04D913B123840064D447 /* SkSVGFeColorMatrix.h */,
+ 260E04DA13B123840064D447 /* SkSVGFilter.cpp */,
+ 260E04DB13B123840064D447 /* SkSVGFilter.h */,
+ 260E04DC13B123840064D447 /* SkSVGG.cpp */,
+ 260E04DD13B123840064D447 /* SkSVGG.h */,
+ 260E04DE13B123840064D447 /* SkSVGGradient.cpp */,
+ 260E04DF13B123840064D447 /* SkSVGGradient.h */,
+ 260E04E013B123840064D447 /* SkSVGGroup.cpp */,
+ 260E04E113B123840064D447 /* SkSVGGroup.h */,
+ 260E04E213B123840064D447 /* SkSVGImage.cpp */,
+ 260E04E313B123840064D447 /* SkSVGImage.h */,
+ 260E04E413B123840064D447 /* SkSVGLine.cpp */,
+ 260E04E513B123840064D447 /* SkSVGLine.h */,
+ 260E04E613B123840064D447 /* SkSVGLinearGradient.cpp */,
+ 260E04E713B123840064D447 /* SkSVGLinearGradient.h */,
+ 260E04E813B123840064D447 /* SkSVGMask.cpp */,
+ 260E04E913B123840064D447 /* SkSVGMask.h */,
+ 260E04EA13B123840064D447 /* SkSVGMetadata.cpp */,
+ 260E04EB13B123840064D447 /* SkSVGMetadata.h */,
+ 260E04EC13B123840064D447 /* SkSVGPaintState.cpp */,
+ 260E04ED13B123840064D447 /* SkSVGParser.cpp */,
+ 260E04EE13B123840064D447 /* SkSVGPath.cpp */,
+ 260E04EF13B123840064D447 /* SkSVGPath.h */,
+ 260E04F013B123840064D447 /* SkSVGPolygon.cpp */,
+ 260E04F113B123840064D447 /* SkSVGPolygon.h */,
+ 260E04F213B123840064D447 /* SkSVGPolyline.cpp */,
+ 260E04F313B123840064D447 /* SkSVGPolyline.h */,
+ 260E04F413B123840064D447 /* SkSVGRadialGradient.cpp */,
+ 260E04F513B123840064D447 /* SkSVGRadialGradient.h */,
+ 260E04F613B123840064D447 /* SkSVGRect.cpp */,
+ 260E04F713B123840064D447 /* SkSVGRect.h */,
+ 260E04F813B123840064D447 /* SkSVGSVG.cpp */,
+ 260E04F913B123840064D447 /* SkSVGSVG.h */,
+ 260E04FA13B123840064D447 /* SkSVGStop.cpp */,
+ 260E04FB13B123840064D447 /* SkSVGStop.h */,
+ 260E04FC13B123840064D447 /* SkSVGSymbol.cpp */,
+ 260E04FD13B123840064D447 /* SkSVGSymbol.h */,
+ 260E04FE13B123840064D447 /* SkSVGText.cpp */,
+ 260E04FF13B123840064D447 /* SkSVGText.h */,
+ 260E050013B123840064D447 /* SkSVGUse.cpp */,
+ );
+ name = src;
+ path = src/svg;
+ sourceTree = "<group>";
+ };
+ 260E052D13B123DE0064D447 /* utils */ = {
+ isa = PBXGroup;
+ children = (
+ 260E052E13B123DE0064D447 /* include */,
+ 260E054513B123DE0064D447 /* src */,
+ );
+ name = utils;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 260E052E13B123DE0064D447 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 260E052F13B123DE0064D447 /* mac */,
+ 260E053113B123DE0064D447 /* SkBoundaryPatch.h */,
+ 260E053213B123DE0064D447 /* SkCamera.h */,
+ 260E053313B123DE0064D447 /* SkCubicInterval.h */,
+ 260E053413B123DE0064D447 /* SkCullPoints.h */,
+ 260E053513B123DE0064D447 /* SkDumpCanvas.h */,
+ 260E053613B123DE0064D447 /* SkEGLContext.h */,
+ 260E053713B123DE0064D447 /* SkGLCanvas.h */,
+ 260E053813B123DE0064D447 /* SkInterpolator.h */,
+ 260E053913B123DE0064D447 /* SkLayer.h */,
+ 260E053A13B123DE0064D447 /* SkMatrix44.h */,
+ 260E053B13B123DE0064D447 /* SkMeshUtils.h */,
+ 260E053C13B123DE0064D447 /* SkNWayCanvas.h */,
+ 260E053D13B123DE0064D447 /* SkNinePatch.h */,
+ 260E053E13B123DE0064D447 /* SkParse.h */,
+ 260E053F13B123DE0064D447 /* SkParsePaint.h */,
+ 260E054013B123DE0064D447 /* SkParsePath.h */,
+ 260E054113B123DE0064D447 /* SkProxyCanvas.h */,
+ 260E054213B123DE0064D447 /* SkSfntUtils.h */,
+ 260E054313B123DE0064D447 /* SkTextBox.h */,
+ 260E054413B123DE0064D447 /* SkUnitMappers.h */,
+ );
+ name = include;
+ path = include/utils;
+ sourceTree = "<group>";
+ };
+ 260E052F13B123DE0064D447 /* mac */ = {
+ isa = PBXGroup;
+ children = (
+ 260E053013B123DE0064D447 /* SkCGUtils.h */,
+ );
+ path = mac;
+ sourceTree = "<group>";
+ };
+ 260E054513B123DE0064D447 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 260E054813B123DE0064D447 /* mac */,
+ 260E055713B123DE0064D447 /* SkBoundaryPatch.cpp */,
+ 260E055813B123DE0064D447 /* SkCamera.cpp */,
+ 260E055913B123DE0064D447 /* SkColorMatrix.cpp */,
+ 260E055A13B123DE0064D447 /* SkCubicInterval.cpp */,
+ 260E055B13B123DE0064D447 /* SkCullPoints.cpp */,
+ 260E055C13B123DE0064D447 /* SkDumpCanvas.cpp */,
+ 260E055E13B123DE0064D447 /* SkInterpolator.cpp */,
+ 260E055F13B123DE0064D447 /* SkLayer.cpp */,
+ 260E056013B123DE0064D447 /* SkMatrix44.cpp */,
+ 260E056113B123DE0064D447 /* SkMeshUtils.cpp */,
+ 260E056213B123DE0064D447 /* SkNWayCanvas.cpp */,
+ 260E056313B123DE0064D447 /* SkNinePatch.cpp */,
+ 260E056413B123DE0064D447 /* SkOSFile.cpp */,
+ 260E056513B123DE0064D447 /* SkParse.cpp */,
+ 260E056613B123DE0064D447 /* SkParseColor.cpp */,
+ 260E056713B123DE0064D447 /* SkParsePath.cpp */,
+ 260E056813B123DE0064D447 /* SkProxyCanvas.cpp */,
+ 260E056913B123DE0064D447 /* SkSfntUtils.cpp */,
+ 260E056A13B123DE0064D447 /* SkUnitMappers.cpp */,
+ );
+ name = src;
+ path = src/utils;
+ sourceTree = "<group>";
+ };
+ 260E054813B123DE0064D447 /* mac */ = {
+ isa = PBXGroup;
+ children = (
+ 260E054913B123DE0064D447 /* SkCreateCGImageRef.cpp */,
+ );
+ path = mac;
+ sourceTree = "<group>";
+ };
+ 260E059613B123E80064D447 /* view */ = {
+ isa = PBXGroup;
+ children = (
+ 260E059713B123E80064D447 /* include */,
+ 260E05AE13B123E80064D447 /* src */,
+ );
+ name = view;
+ path = ../..;
+ sourceTree = "<group>";
+ };
+ 260E059713B123E80064D447 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 260E059813B123E80064D447 /* SkApplication.h */,
+ 260E059913B123E80064D447 /* SkBGViewArtist.h */,
+ 260E059A13B123E80064D447 /* SkBorderView.h */,
+ 260E059B13B123E80064D447 /* SkEvent.h */,
+ 260E059C13B123E80064D447 /* SkEventSink.h */,
+ 260E059D13B123E80064D447 /* SkImageView.h */,
+ 260E059E13B123E80064D447 /* SkKey.h */,
+ 260E059F13B123E80064D447 /* SkOSMenu.h */,
+ 260E05A413B123E80064D447 /* SkProgressBarView.h */,
+ 260E05A513B123E80064D447 /* SkScrollBarView.h */,
+ 260E05A613B123E80064D447 /* SkStackViewLayout.h */,
+ 260E05A713B123E80064D447 /* SkSystemEventTypes.h */,
+ 260E05A813B123E80064D447 /* SkTouchGesture.h */,
+ 260E05A913B123E80064D447 /* SkView.h */,
+ 260E05AA13B123E80064D447 /* SkViewInflate.h */,
+ 260E05AB13B123E80064D447 /* SkWidget.h */,
+ 260E05AC13B123E80064D447 /* SkWidgetViews.h */,
+ 260E05AD13B123E80064D447 /* SkWindow.h */,
+ );
+ name = include;
+ path = include/views;
+ sourceTree = "<group>";
+ };
+ 260E05AE13B123E80064D447 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 260E05AF13B123E80064D447 /* SkBGViewArtist.cpp */,
+ 260E05B113B123E80064D447 /* SkEvent.cpp */,
+ 260E05B213B123E80064D447 /* SkEventSink.cpp */,
+ 260E05B313B123E80064D447 /* SkImageView.cpp */,
+ 260E05B413B123E80064D447 /* SkListView.cpp */,
+ 260E05B513B123E80064D447 /* SkListWidget.cpp */,
+ 260E05B613B123E80064D447 /* SkOSMenu.cpp */,
+ 260E05B713B123E80064D447 /* SkParsePaint.cpp */,
+ 260E05B813B123E80064D447 /* SkProgressBarView.cpp */,
+ 260E05B913B123E80064D447 /* SkProgressView.cpp */,
+ 260E05BA13B123E80064D447 /* SkScrollBarView.cpp */,
+ 260E05B013B123E80064D447 /* SkBorderView.cpp */,
+ 260E05BB13B123E80064D447 /* SkStackViewLayout.cpp */,
+ 260E05BC13B123E80064D447 /* SkStaticTextView.cpp */,
+ 260E05BD13B123E80064D447 /* SkTagList.cpp */,
+ 260E05BE13B123E80064D447 /* SkTagList.h */,
+ 260E05BF13B123E80064D447 /* SkTextBox.cpp */,
+ 260E05C013B123E80064D447 /* SkTouchGesture.cpp */,
+ 260E05C113B123E80064D447 /* SkView.cpp */,
+ 260E05C213B123E80064D447 /* SkViewInflate.cpp */,
+ 260E05C313B123E80064D447 /* SkViewPriv.cpp */,
+ 260E05C413B123E80064D447 /* SkViewPriv.h */,
+ 260E05C513B123E80064D447 /* SkWidget.cpp */,
+ 260E05C613B123E80064D447 /* SkWidgetViews.cpp */,
+ 260E05C713B123E80064D447 /* SkWidgets.cpp */,
+ 260E05C813B123E80064D447 /* SkWindow.cpp */,
+ );
+ name = src;
+ path = src/views;
+ sourceTree = "<group>";
+ };
+ 260E05EC13B124210064D447 /* xml */ = {
+ isa = PBXGroup;
+ children = (
+ 260E05ED13B124210064D447 /* include */,
+ 260E05F413B124210064D447 /* src */,
+ );
+ name = xml;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 260E05ED13B124210064D447 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 260E05EE13B124210064D447 /* SkBML_WXMLParser.h */,
+ 260E05EF13B124210064D447 /* SkBML_XMLParser.h */,
+ 260E05F013B124210064D447 /* SkDOM.h */,
+ 260E05F113B124210064D447 /* SkJS.h */,
+ 260E05F213B124210064D447 /* SkXMLParser.h */,
+ 260E05F313B124210064D447 /* SkXMLWriter.h */,
+ );
+ name = include;
+ path = include/xml;
+ sourceTree = "<group>";
+ };
+ 260E05F413B124210064D447 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 260E05F713B124210064D447 /* SkDOM.cpp */,
+ 260E05FA13B124210064D447 /* SkXMLParser.cpp */,
+ 260E07B213B128210064D447 /* SkXMLWriter.cpp */,
+ );
+ name = src;
+ path = src/xml;
+ sourceTree = "<group>";
+ };
+ 260E06B613B127E00064D447 /* animator */ = {
+ isa = PBXGroup;
+ children = (
+ 260E06B713B127E00064D447 /* include */,
+ 260E06BA13B127E00064D447 /* src */,
+ );
+ name = animator;
+ path = ../..;
+ sourceTree = SOURCE_ROOT;
+ };
+ 260E06B713B127E00064D447 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 260E06B813B127E00064D447 /* SkAnimator.h */,
+ 260E06B913B127E00064D447 /* SkAnimatorView.h */,
+ );
+ name = include;
+ path = include/animator;
+ sourceTree = "<group>";
+ };
+ 260E06BA13B127E00064D447 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 260E06BB13B127E00064D447 /* SkAnimate.h */,
+ 260E06BC13B127E00064D447 /* SkAnimateActive.cpp */,
+ 260E06BD13B127E00064D447 /* SkAnimateActive.h */,
+ 260E06BE13B127E00064D447 /* SkAnimateBase.cpp */,
+ 260E06BF13B127E00064D447 /* SkAnimateBase.h */,
+ 260E06C013B127E00064D447 /* SkAnimateField.cpp */,
+ 260E06C113B127E00064D447 /* SkAnimateMaker.cpp */,
+ 260E06C213B127E00064D447 /* SkAnimateMaker.h */,
+ 260E06C313B127E00064D447 /* SkAnimateProperties.h */,
+ 260E06C413B127E00064D447 /* SkAnimateSet.cpp */,
+ 260E06C513B127E00064D447 /* SkAnimateSet.h */,
+ 260E06C613B127E00064D447 /* SkAnimator.cpp */,
+ 260E06C713B127E00064D447 /* SkAnimatorScript.cpp */,
+ 260E06C813B127E00064D447 /* SkAnimatorScript.h */,
+ 260E06C913B127E00064D447 /* SkBase64.cpp */,
+ 260E06CA13B127E00064D447 /* SkBase64.h */,
+ 260E06CB13B127E00064D447 /* SkBoundable.cpp */,
+ 260E06CC13B127E00064D447 /* SkBoundable.h */,
+ 260E06CD13B127E00064D447 /* SkBuildCondensedInfo.cpp */,
+ 260E06CE13B127E00064D447 /* SkDisplayAdd.cpp */,
+ 260E06CF13B127E00064D447 /* SkDisplayAdd.h */,
+ 260E06D013B127E00064D447 /* SkDisplayApply.cpp */,
+ 260E06D113B127E00064D447 /* SkDisplayApply.h */,
+ 260E06D213B127E00064D447 /* SkDisplayBounds.cpp */,
+ 260E06D313B127E00064D447 /* SkDisplayBounds.h */,
+ 260E06D413B127E00064D447 /* SkDisplayEvent.cpp */,
+ 260E06D513B127E00064D447 /* SkDisplayEvent.h */,
+ 260E06D613B127E00064D447 /* SkDisplayEvents.cpp */,
+ 260E06D713B127E00064D447 /* SkDisplayEvents.h */,
+ 260E06D813B127E00064D447 /* SkDisplayInclude.cpp */,
+ 260E06D913B127E00064D447 /* SkDisplayInclude.h */,
+ 260E06DA13B127E00064D447 /* SkDisplayInput.cpp */,
+ 260E06DB13B127E00064D447 /* SkDisplayInput.h */,
+ 260E06DC13B127E00064D447 /* SkDisplayList.cpp */,
+ 260E06DD13B127E00064D447 /* SkDisplayList.h */,
+ 260E06DE13B127E00064D447 /* SkDisplayMath.cpp */,
+ 260E06DF13B127E00064D447 /* SkDisplayMath.h */,
+ 260E06E013B127E00064D447 /* SkDisplayMovie.cpp */,
+ 260E06E113B127E00064D447 /* SkDisplayMovie.h */,
+ 260E06E213B127E00064D447 /* SkDisplayNumber.cpp */,
+ 260E06E313B127E00064D447 /* SkDisplayNumber.h */,
+ 260E06E413B127E00064D447 /* SkDisplayPost.cpp */,
+ 260E06E513B127E00064D447 /* SkDisplayPost.h */,
+ 260E06E613B127E00064D447 /* SkDisplayRandom.cpp */,
+ 260E06E713B127E00064D447 /* SkDisplayRandom.h */,
+ 260E06E813B127E00064D447 /* SkDisplayScreenplay.cpp */,
+ 260E06E913B127E00064D447 /* SkDisplayScreenplay.h */,
+ 260E06EA13B127E00064D447 /* SkDisplayType.cpp */,
+ 260E06EB13B127E00064D447 /* SkDisplayType.h */,
+ 260E06EC13B127E00064D447 /* SkDisplayTypes.cpp */,
+ 260E06ED13B127E00064D447 /* SkDisplayTypes.h */,
+ 260E06EE13B127E00064D447 /* SkDisplayXMLParser.cpp */,
+ 260E06EF13B127E00064D447 /* SkDisplayXMLParser.h */,
+ 260E06F013B127E00064D447 /* SkDisplayable.cpp */,
+ 260E06F113B127E00064D447 /* SkDisplayable.h */,
+ 260E06F213B127E00064D447 /* SkDraw3D.cpp */,
+ 260E06F313B127E00064D447 /* SkDraw3D.h */,
+ 260E06F413B127E00064D447 /* SkDrawBitmap.cpp */,
+ 260E06F513B127E00064D447 /* SkDrawBitmap.h */,
+ 260E06F613B127E00064D447 /* SkDrawBlur.cpp */,
+ 260E06F713B127E00064D447 /* SkDrawBlur.h */,
+ 260E06F813B127E00064D447 /* SkDrawClip.cpp */,
+ 260E06F913B127E00064D447 /* SkDrawClip.h */,
+ 260E06FA13B127E00064D447 /* SkDrawColor.cpp */,
+ 260E06FB13B127E00064D447 /* SkDrawColor.h */,
+ 260E06FC13B127E00064D447 /* SkDrawDash.cpp */,
+ 260E06FD13B127E00064D447 /* SkDrawDash.h */,
+ 260E06FE13B127E00064D447 /* SkDrawDiscrete.cpp */,
+ 260E06FF13B127E00064D447 /* SkDrawDiscrete.h */,
+ 260E070013B127E00064D447 /* SkDrawEmboss.cpp */,
+ 260E070113B127E00064D447 /* SkDrawEmboss.h */,
+ 260E070213B127E00064D447 /* SkDrawExtraPathEffect.cpp */,
+ 260E070313B127E00064D447 /* SkDrawFull.cpp */,
+ 260E070413B127E00064D447 /* SkDrawFull.h */,
+ 260E070513B127E00064D447 /* SkDrawGradient.cpp */,
+ 260E070613B127E00064D447 /* SkDrawGradient.h */,
+ 260E070713B127E00064D447 /* SkDrawGroup.cpp */,
+ 260E070813B127E00064D447 /* SkDrawGroup.h */,
+ 260E070913B127E00064D447 /* SkDrawLine.cpp */,
+ 260E070A13B127E00064D447 /* SkDrawLine.h */,
+ 260E070B13B127E00064D447 /* SkDrawMatrix.cpp */,
+ 260E070C13B127E00064D447 /* SkDrawMatrix.h */,
+ 260E070D13B127E00064D447 /* SkDrawOval.cpp */,
+ 260E070E13B127E00064D447 /* SkDrawOval.h */,
+ 260E070F13B127E00064D447 /* SkDrawPaint.cpp */,
+ 260E071013B127E00064D447 /* SkDrawPaint.h */,
+ 260E071113B127E00064D447 /* SkDrawPath.cpp */,
+ 260E071213B127E00064D447 /* SkDrawPath.h */,
+ 260E071313B127E00064D447 /* SkDrawPoint.cpp */,
+ 260E071413B127E00064D447 /* SkDrawPoint.h */,
+ 260E071513B127E00064D447 /* SkDrawRectangle.cpp */,
+ 260E071613B127E00064D447 /* SkDrawRectangle.h */,
+ 260E071713B127E00064D447 /* SkDrawSaveLayer.cpp */,
+ 260E071813B127E00064D447 /* SkDrawSaveLayer.h */,
+ 260E071913B127E00064D447 /* SkDrawShader.cpp */,
+ 260E071A13B127E00064D447 /* SkDrawShader.h */,
+ 260E071B13B127E00064D447 /* SkDrawText.cpp */,
+ 260E071C13B127E00064D447 /* SkDrawText.h */,
+ 260E071D13B127E00064D447 /* SkDrawTextBox.cpp */,
+ 260E071E13B127E00064D447 /* SkDrawTextBox.h */,
+ 260E071F13B127E00064D447 /* SkDrawTo.cpp */,
+ 260E072013B127E00064D447 /* SkDrawTo.h */,
+ 260E072113B127E00064D447 /* SkDrawTransparentShader.cpp */,
+ 260E072213B127E00064D447 /* SkDrawTransparentShader.h */,
+ 260E072313B127E00064D447 /* SkDrawable.cpp */,
+ 260E072413B127E00064D447 /* SkDrawable.h */,
+ 260E072513B127E00064D447 /* SkDump.cpp */,
+ 260E072613B127E00064D447 /* SkDump.h */,
+ 260E072713B127E00064D447 /* SkExtras.h */,
+ 260E072813B127E00064D447 /* SkGetCondensedInfo.cpp */,
+ 260E072913B127E00064D447 /* SkHitClear.cpp */,
+ 260E072A13B127E00064D447 /* SkHitClear.h */,
+ 260E072B13B127E00064D447 /* SkHitTest.cpp */,
+ 260E072C13B127E00064D447 /* SkHitTest.h */,
+ 260E072D13B127E00064D447 /* SkIntArray.h */,
+ 260E072E13B127E00064D447 /* SkMatrixParts.cpp */,
+ 260E072F13B127E00064D447 /* SkMatrixParts.h */,
+ 260E073013B127E00064D447 /* SkMemberInfo.cpp */,
+ 260E073113B127E00064D447 /* SkMemberInfo.h */,
+ 260E073213B127E00064D447 /* SkOpArray.cpp */,
+ 260E073313B127E00064D447 /* SkOpArray.h */,
+ 260E073413B127E00064D447 /* SkOperand.h */,
+ 260E073513B127E00064D447 /* SkOperand2.h */,
+ 260E073613B127E00064D447 /* SkOperandInterpolator.h */,
+ 260E073713B127E00064D447 /* SkOperandIterpolator.cpp */,
+ 260E073813B127E00064D447 /* SkPaintParts.cpp */,
+ 260E073913B127E00064D447 /* SkPaintParts.h */,
+ 260E073A13B127E00064D447 /* SkParseSVGPath.cpp */,
+ 260E073B13B127E00064D447 /* SkPathParts.cpp */,
+ 260E073C13B127E00064D447 /* SkPathParts.h */,
+ 260E073D13B127E00064D447 /* SkPostParts.cpp */,
+ 260E073E13B127E00064D447 /* SkPostParts.h */,
+ 260E073F13B127E00064D447 /* SkScript.cpp */,
+ 260E074013B127E00064D447 /* SkScript.h */,
+ 260E074113B127E00064D447 /* SkScript2.h */,
+ 260E074213B127E00064D447 /* SkScriptCallBack.h */,
+ 260E074313B127E00064D447 /* SkScriptDecompile.cpp */,
+ 260E074413B127E00064D447 /* SkScriptRuntime.cpp */,
+ 260E074513B127E00064D447 /* SkScriptRuntime.h */,
+ 260E074613B127E00064D447 /* SkScriptTokenizer.cpp */,
+ 260E074713B127E00064D447 /* SkSnapshot.cpp */,
+ 260E074813B127E00064D447 /* SkSnapshot.h */,
+ 260E074913B127E00064D447 /* SkTDArray_Experimental.h */,
+ 260E074A13B127E00064D447 /* SkTextOnPath.cpp */,
+ 260E074B13B127E00064D447 /* SkTextOnPath.h */,
+ 260E074C13B127E00064D447 /* SkTextToPath.cpp */,
+ 260E074D13B127E00064D447 /* SkTextToPath.h */,
+ 260E074E13B127E00064D447 /* SkTime.cpp */,
+ 260E074F13B127E00064D447 /* SkTypedArray.cpp */,
+ 260E075013B127E00064D447 /* SkTypedArray.h */,
+ 260E075113B127E00064D447 /* SkXMLAnimatorWriter.cpp */,
+ 260E075213B127E00064D447 /* SkXMLAnimatorWriter.h */,
+ );
+ name = src;
+ path = src/animator;
+ sourceTree = "<group>";
+ };
+ 260E1E8813B3B10B0064D447 /* pdf */ = {
+ isa = PBXGroup;
+ children = (
+ 260E1E9513B3B13F0064D447 /* include */,
+ 260E1EAE13B3B1620064D447 /* src */,
+ );
+ name = pdf;
+ sourceTree = "<group>";
+ };
+ 260E1E9513B3B13F0064D447 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 26811E7A13DEFAF7001A1609 /* SkBitSet.h */,
+ 260E1E8913B3B13B0064D447 /* SkPDFCatalog.h */,
+ 260E1E8A13B3B13B0064D447 /* SkPDFDevice.h */,
+ 260E1E8B13B3B13B0064D447 /* SkPDFDocument.h */,
+ 260E1E8C13B3B13B0064D447 /* SkPDFFont.h */,
+ 260E1E8D13B3B13B0064D447 /* SkPDFFormXObject.h */,
+ 260E1E8E13B3B13B0064D447 /* SkPDFGraphicState.h */,
+ 260E1E8F13B3B13B0064D447 /* SkPDFImage.h */,
+ 260E1E9013B3B13B0064D447 /* SkPDFPage.h */,
+ 260E1E9113B3B13B0064D447 /* SkPDFShader.h */,
+ 260E1E9213B3B13B0064D447 /* SkPDFStream.h */,
+ 260E1E9313B3B13B0064D447 /* SkPDFTypes.h */,
+ 260E1E9413B3B13B0064D447 /* SkPDFUtils.h */,
+ );
+ name = include;
+ sourceTree = "<group>";
+ };
+ 260E1EAE13B3B1620064D447 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 26811E7813DEFAE8001A1609 /* SkBitSet.cpp */,
+ 260E1E9613B3B15A0064D447 /* SkPDFCatalog.cpp */,
+ 260E1E9713B3B15A0064D447 /* SkPDFDevice.cpp */,
+ 260E1E9813B3B15A0064D447 /* SkPDFDocument.cpp */,
+ 260E1E9913B3B15A0064D447 /* SkPDFFont.cpp */,
+ 260E1E9A13B3B15A0064D447 /* SkPDFFormXObject.cpp */,
+ 260E1E9B13B3B15A0064D447 /* SkPDFGraphicState.cpp */,
+ 260E1E9C13B3B15A0064D447 /* SkPDFImage.cpp */,
+ 260E1E9D13B3B15A0064D447 /* SkPDFPage.cpp */,
+ 260E1E9E13B3B15A0064D447 /* SkPDFShader.cpp */,
+ 260E1E9F13B3B15A0064D447 /* SkPDFStream.cpp */,
+ 260E1EA013B3B15A0064D447 /* SkPDFTypes.cpp */,
+ 260E1EA113B3B15A0064D447 /* SkPDFUtils.cpp */,
+ );
+ name = src;
+ sourceTree = "<group>";
+ };
+ 260EE81F13AFA7790064D447 /* Skia */ = {
+ isa = PBXGroup;
+ children = (
+ 26F5490B13B91B73007CC564 /* SkUserConfig.h */,
+ 260E06B613B127E00064D447 /* animator */,
+ 260E01AF13B1225D0064D447 /* core */,
+ 260E031E13B122A30064D447 /* effects */,
+ 260E038913B122D40064D447 /* gpu */,
+ 260E043E13B1232F0064D447 /* images */,
+ 260E04B413B123730064D447 /* opts */,
+ 260E007413B11F5B0064D447 /* pipe */,
+ 260E1E8813B3B10B0064D447 /* pdf */,
+ 260E04C613B123840064D447 /* svg */,
+ 260E052D13B123DE0064D447 /* utils */,
+ 260E059613B123E80064D447 /* view */,
+ 260E05EC13B124210064D447 /* xml */,
+ );
+ name = Skia;
+ sourceTree = "<group>";
+ };
+ 260EE8B913AFA7790064D447 /* iOS */ = {
+ isa = PBXGroup;
+ children = (
+ 26D91229140D57BD0036A311 /* skia_ios.mm */,
+ 26FB98D113D0C87000ACBEA0 /* SkUIView.h */,
+ 26FB98D213D0C87000ACBEA0 /* SkUIView.mm */,
+ 26962D4E13CE2D780039B1FB /* GrGLDefaultInterface_iOS.cpp */,
+ 26962CA513CE26730039B1FB /* SkOSWindow_iOS.h */,
+ 26962CA313CE265C0039B1FB /* SkOSWindow_iOS.mm */,
+ 260EE8BB13AFA7790064D447 /* SkOSFile_iOS.mm */,
+ 260EE8BA13AFA7790064D447 /* SkFontHost_iOS.mm */,
+ 260E08D013B12DBE0064D447 /* SkStream_NSData.h */,
+ 260EE8BF13AFA7790064D447 /* SkStream_NSData.mm */,
+ );
+ name = iOS;
+ sourceTree = "<group>";
+ };
+ 26962CC813CE27390039B1FB /* xcconfig */ = {
+ isa = PBXGroup;
+ children = (
+ 2662AB6F13BD067900CDE7E9 /* SkiOSSampleApp-Debug.xcconfig */,
+ 2662AB7513BD0C0D00CDE7E9 /* SkiOSSampleApp-Release.xcconfig */,
+ 2662AB7713BD0C1E00CDE7E9 /* SkiOSSampleApp-Base.xcconfig */,
+ );
+ name = xcconfig;
+ sourceTree = "<group>";
+ };
+ 26962CE713CE29120039B1FB /* DrawingBoard */ = {
+ isa = PBXGroup;
+ children = (
+ 268C50D813F022AF0003FF9A /* SampleDrawingClient.cpp */,
+ 268C50D913F022AF0003FF9A /* SampleDrawingServer.cpp */,
+ 268C50D213F022820003FF9A /* SkColorPalette.cpp */,
+ 268C50D313F022820003FF9A /* SkColorPalette.h */,
+ 268C50D413F022820003FF9A /* SkNetPipeController.cpp */,
+ 268C50D513F022820003FF9A /* SkNetPipeController.h */,
+ );
+ name = DrawingBoard;
+ sourceTree = "<group>";
+ };
+ 26F67B2A13CB3564005DDCD2 /* Networking */ = {
+ isa = PBXGroup;
+ children = (
+ 268C50DC13F0230C0003FF9A /* SampleNetPipeReader.cpp */,
+ 268C50DD13F0230C0003FF9A /* SkSockets.cpp */,
+ 268C50DE13F0230C0003FF9A /* SkSockets.h */,
+ );
+ name = Networking;
+ sourceTree = "<group>";
+ };
+ 2860E324111B887F00E27156 /* iPhone */ = {
+ isa = PBXGroup;
+ children = (
+ 2860E325111B887F00E27156 /* AppDelegate_iPhone.h */,
+ 2860E326111B887F00E27156 /* AppDelegate_iPhone.mm */,
+ 2860E327111B887F00E27156 /* MainWindow_iPhone.xib */,
+ 260E1DCA13B3AA490064D447 /* SkUINavigationController.h */,
+ 260E1DCB13B3AA490064D447 /* SkUINavigationController.mm */,
+ );
+ path = iPhone;
+ sourceTree = "<group>";
+ };
+ 2860E32A111B888700E27156 /* iPad */ = {
+ isa = PBXGroup;
+ children = (
+ 2860E32B111B888700E27156 /* AppDelegate_iPad.h */,
+ 2860E32C111B888700E27156 /* AppDelegate_iPad.mm */,
+ 2860E32D111B888700E27156 /* MainWindow_iPad.xib */,
+ 260E147713B2734E0064D447 /* SkUISplitViewController.h */,
+ 260E147813B2734E0064D447 /* SkUISplitViewController.mm */,
+ );
+ path = iPad;
+ sourceTree = "<group>";
+ };
+ 28EEBF621118D79A00187D67 /* Shared */ = {
+ isa = PBXGroup;
+ children = (
+ 2612C104140D2FE3001B6925 /* SkEventNotifier.h */,
+ 2612C105140D2FE3001B6925 /* SkEventNotifier.mm */,
+ 26962C7813CE256E0039B1FB /* SkUIDetailViewController.h */,
+ 26962C7913CE256E0039B1FB /* SkUIDetailViewController.mm */,
+ 26962C7A13CE256E0039B1FB /* SkUIRootViewController.h */,
+ 26962C7B13CE256E0039B1FB /* SkUIRootViewController.mm */,
+ 2663AC9213D5D8D400C20488 /* SkOptionsTableViewController.h */,
+ 2663AC9313D5D8D400C20488 /* SkOptionsTableViewController.mm */,
+ 265C7DE113D75752008329F6 /* SkOptionListController.h */,
+ 265C7DE213D75752008329F6 /* SkOptionListController.mm */,
+ );
+ name = Shared;
+ sourceTree = "<group>";
+ };
+ 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
+ isa = PBXGroup;
+ children = (
+ 2860E32A111B888700E27156 /* iPad */,
+ 2860E324111B887F00E27156 /* iPhone */,
+ 28EEBF621118D79A00187D67 /* Shared */,
+ 29B97315FDCFA39411CA2CEA /* Other Sources */,
+ 29B97323FDCFA39411CA2CEA /* Frameworks */,
+ 19C28FACFE9D520D11CA2CBB /* Products */,
+ );
+ name = CustomTemplate;
+ sourceTree = "<group>";
+ };
+ 29B97315FDCFA39411CA2CEA /* Other Sources */ = {
+ isa = PBXGroup;
+ children = (
+ 26D91221140D576B0036A311 /* SkSampleUIView.h */,
+ 26D91222140D576B0036A311 /* SkSampleUIView.mm */,
+ 26962C8E13CE25D60039B1FB /* iOSSampleApp_Prefix.pch */,
+ 26962C8F13CE25D60039B1FB /* iOSSampleApp-Info.plist */,
+ 26962CC813CE27390039B1FB /* xcconfig */,
+ 2605F43B13F18B1B0044A072 /* Debugger */,
+ 26F67B2A13CB3564005DDCD2 /* Networking */,
+ 26962CE713CE29120039B1FB /* DrawingBoard */,
+ 260EE8B913AFA7790064D447 /* iOS */,
+ 260E013413B11F7A0064D447 /* SampleApp */,
+ 260EE81F13AFA7790064D447 /* Skia */,
+ );
+ name = "Other Sources";
+ sourceTree = "<group>";
+ };
+ 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 260EE9D113AFA7850064D447 /* OpenGLES.framework */,
+ 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
+ 1D30AB110D05D00D00671497 /* Foundation.framework */,
+ 260EE9D013AFA7850064D447 /* CoreFoundation.framework */,
+ 288765FC0DF74451002DB57D /* CoreGraphics.framework */,
+ 260EF18413AFD62E0064D447 /* CoreText.framework */,
+ 263BE75713CCC7BF00CCE991 /* QuartzCore.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 1D6058900D05DD3D006BFB54 /* iOSSampleApp */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "iOSSampleApp" */;
+ buildPhases = (
+ 1D60588D0D05DD3D006BFB54 /* Resources */,
+ 1D60588E0D05DD3D006BFB54 /* Sources */,
+ 1D60588F0D05DD3D006BFB54 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = iOSSampleApp;
+ productName = iOSShell;
+ productReference = 1D6058910D05DD3D006BFB54 /* iOSSampleApp.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 29B97313FDCFA39411CA2CEA /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "iOSSampleApp" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 1;
+ knownRegions = (
+ English,
+ Japanese,
+ French,
+ German,
+ );
+ mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 1D6058900D05DD3D006BFB54 /* iOSSampleApp */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 1D60588D0D05DD3D006BFB54 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2860E329111B887F00E27156 /* MainWindow_iPhone.xib in Resources */,
+ 2860E32F111B888700E27156 /* MainWindow_iPad.xib in Resources */,
+ 2662AB7013BD067900CDE7E9 /* SkiOSSampleApp-Debug.xcconfig in Resources */,
+ 2662AB7613BD0C0D00CDE7E9 /* SkiOSSampleApp-Release.xcconfig in Resources */,
+ 2662AB7813BD0C1E00CDE7E9 /* SkiOSSampleApp-Base.xcconfig in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 1D60588E0D05DD3D006BFB54 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2860E328111B887F00E27156 /* AppDelegate_iPhone.mm in Sources */,
+ 2860E32E111B888700E27156 /* AppDelegate_iPad.mm in Sources */,
+ 260E00E313B11F5B0064D447 /* OverView.cpp in Sources */,
+ 260E00E813B11F5B0064D447 /* SampleArc.cpp in Sources */,
+ 260E00E913B11F5B0064D447 /* SampleAvoid.cpp in Sources */,
+ 260E00EC13B11F5B0064D447 /* SampleBlur.cpp in Sources */,
+ 260E00EE13B11F5B0064D447 /* SampleCircle.cpp in Sources */,
+ 260E00F013B11F5B0064D447 /* SampleComplexClip.cpp in Sources */,
+ 260E00F213B11F5B0064D447 /* SampleCull.cpp in Sources */,
+ 260E00FB13B11F5B0064D447 /* SampleFillType.cpp in Sources */,
+ 260E010613B11F5B0064D447 /* SampleLCD.cpp in Sources */,
+ 260E011313B11F5B0064D447 /* SamplePath.cpp in Sources */,
+ 260E011413B11F5B0064D447 /* SamplePathClip.cpp in Sources */,
+ 260E011513B11F5B0064D447 /* SamplePathEffects.cpp in Sources */,
+ 260E011713B11F5B0064D447 /* SamplePoints.cpp in Sources */,
+ 260E011813B11F5B0064D447 /* SamplePolyToPoly.cpp in Sources */,
+ 260E011913B11F5B0064D447 /* SampleRegion.cpp in Sources */,
+ 260E011D13B11F5B0064D447 /* SampleShapes.cpp in Sources */,
+ 260E011F13B11F5B0064D447 /* SampleSlides.cpp in Sources */,
+ 260E012313B11F5B0064D447 /* SampleText.cpp in Sources */,
+ 260E012413B11F5B0064D447 /* SampleTextAlpha.cpp in Sources */,
+ 260E012513B11F5B0064D447 /* SampleTextBox.cpp in Sources */,
+ 260E012613B11F5B0064D447 /* SampleTextEffects.cpp in Sources */,
+ 260E012713B11F5B0064D447 /* SampleTextOnPath.cpp in Sources */,
+ 260E012B13B11F5B0064D447 /* SampleTriangles.cpp in Sources */,
+ 260E012C13B11F5B0064D447 /* SampleTypeface.cpp in Sources */,
+ 260E012D13B11F5B0064D447 /* SampleUnitMapper.cpp in Sources */,
+ 260E012E13B11F5B0064D447 /* SampleVertices.cpp in Sources */,
+ 260E013113B11F5B0064D447 /* SkGPipeRead.cpp in Sources */,
+ 260E013213B11F5B0064D447 /* SkGPipeWrite.cpp in Sources */,
+ 260E02A213B1225D0064D447 /* Sk64.cpp in Sources */,
+ 260E02A313B1225D0064D447 /* SkAdvancedTypefaceMetrics.cpp in Sources */,
+ 260E02A413B1225D0064D447 /* SkAlphaRuns.cpp in Sources */,
+ 260E02A513B1225D0064D447 /* SkBitmap.cpp in Sources */,
+ 260E02A613B1225D0064D447 /* SkBitmapProcShader.cpp in Sources */,
+ 260E02A713B1225D0064D447 /* SkBitmapProcState.cpp in Sources */,
+ 260E02A813B1225D0064D447 /* SkBitmapProcState_matrixProcs.cpp in Sources */,
+ 260E02A913B1225D0064D447 /* SkBitmapSampler.cpp in Sources */,
+ 260E02AA13B1225D0064D447 /* SkBitmap_scroll.cpp in Sources */,
+ 260E02AD13B1225D0064D447 /* SkBlitRow_D4444.cpp in Sources */,
+ 260E02AE13B1225D0064D447 /* SkBlitter.cpp in Sources */,
+ 260E02B513B1225D0064D447 /* SkBuffer.cpp in Sources */,
+ 260E02B613B1225D0064D447 /* SkCanvas.cpp in Sources */,
+ 260E02B713B1225D0064D447 /* SkChunkAlloc.cpp in Sources */,
+ 260E02B813B1225D0064D447 /* SkClampRange.cpp in Sources */,
+ 260E02B913B1225D0064D447 /* SkClipStack.cpp in Sources */,
+ 260E02BA13B1225D0064D447 /* SkColor.cpp in Sources */,
+ 260E02BB13B1225D0064D447 /* SkColorFilter.cpp in Sources */,
+ 260E02BC13B1225D0064D447 /* SkColorTable.cpp in Sources */,
+ 260E02BD13B1225D0064D447 /* SkComposeShader.cpp in Sources */,
+ 260E02BE13B1225D0064D447 /* SkConcaveToTriangles.cpp in Sources */,
+ 260E02BF13B1225D0064D447 /* SkCordic.cpp in Sources */,
+ 260E02C013B1225D0064D447 /* SkCubicClipper.cpp in Sources */,
+ 260E02C213B1225D0064D447 /* SkDebug.cpp in Sources */,
+ 260E02C313B1225D0064D447 /* SkDeque.cpp in Sources */,
+ 260E02C413B1225D0064D447 /* SkDevice.cpp in Sources */,
+ 260E02C513B1225D0064D447 /* SkDither.cpp in Sources */,
+ 260E02C613B1225D0064D447 /* SkDraw.cpp in Sources */,
+ 260E02C713B1225D0064D447 /* SkEdge.cpp in Sources */,
+ 260E02C813B1225D0064D447 /* SkEdgeBuilder.cpp in Sources */,
+ 260E02C913B1225D0064D447 /* SkEdgeClipper.cpp in Sources */,
+ 260E02CA13B1225D0064D447 /* SkFilterProc.cpp in Sources */,
+ 260E02CB13B1225D0064D447 /* SkFlate.cpp in Sources */,
+ 260E02CC13B1225D0064D447 /* SkFlattenable.cpp in Sources */,
+ 260E02CD13B1225D0064D447 /* SkFloat.cpp in Sources */,
+ 260E02CE13B1225D0064D447 /* SkFloatBits.cpp in Sources */,
+ 260E02CF13B1225D0064D447 /* SkFontHost.cpp in Sources */,
+ 260E02D013B1225D0064D447 /* SkGeometry.cpp in Sources */,
+ 260E02D113B1225D0064D447 /* SkGlobals.cpp in Sources */,
+ 260E02D213B1225D0064D447 /* SkGlyphCache.cpp in Sources */,
+ 260E02D313B1225D0064D447 /* SkGraphics.cpp in Sources */,
+ 260E02D413B1225D0064D447 /* SkLineClipper.cpp in Sources */,
+ 260E02D513B1225D0064D447 /* SkMMapStream.cpp in Sources */,
+ 260E02D613B1225D0064D447 /* SkMallocPixelRef.cpp in Sources */,
+ 260E02D713B1225D0064D447 /* SkMask.cpp in Sources */,
+ 260E02D813B1225D0064D447 /* SkMaskFilter.cpp in Sources */,
+ 260E02D913B1225D0064D447 /* SkMath.cpp in Sources */,
+ 260E02DA13B1225D0064D447 /* SkMatrix.cpp in Sources */,
+ 260E02DB13B1225D0064D447 /* SkMetaData.cpp in Sources */,
+ 260E02DC13B1225D0064D447 /* SkPackBits.cpp in Sources */,
+ 260E02DD13B1225D0064D447 /* SkPaint.cpp in Sources */,
+ 260E02DE13B1225D0064D447 /* SkPath.cpp in Sources */,
+ 260E02DF13B1225D0064D447 /* SkPathEffect.cpp in Sources */,
+ 260E02E013B1225D0064D447 /* SkPathHeap.cpp in Sources */,
+ 260E02E113B1225D0064D447 /* SkPathMeasure.cpp in Sources */,
+ 260E02E213B1225D0064D447 /* SkPicture.cpp in Sources */,
+ 260E02E313B1225D0064D447 /* SkPictureFlat.cpp in Sources */,
+ 260E02E413B1225D0064D447 /* SkPicturePlayback.cpp in Sources */,
+ 260E02E513B1225D0064D447 /* SkPictureRecord.cpp in Sources */,
+ 260E02E613B1225D0064D447 /* SkPixelRef.cpp in Sources */,
+ 260E02E713B1225D0064D447 /* SkPoint.cpp in Sources */,
+ 260E02E913B1225D0064D447 /* SkPtrRecorder.cpp in Sources */,
+ 260E02EA13B1225D0064D447 /* SkQuadClipper.cpp in Sources */,
+ 260E02EB13B1225D0064D447 /* SkRasterizer.cpp in Sources */,
+ 260E02EC13B1225D0064D447 /* SkRect.cpp in Sources */,
+ 260E02ED13B1225D0064D447 /* SkRefDict.cpp in Sources */,
+ 260E02EE13B1225D0064D447 /* SkRegion.cpp in Sources */,
+ 260E02EF13B1225D0064D447 /* SkRegion_path.cpp in Sources */,
+ 260E02F013B1225D0064D447 /* SkScalar.cpp in Sources */,
+ 260E02F113B1225D0064D447 /* SkScalerContext.cpp in Sources */,
+ 260E02F213B1225D0064D447 /* SkScan.cpp in Sources */,
+ 260E02F313B1225D0064D447 /* SkScan_AntiPath.cpp in Sources */,
+ 260E02F413B1225D0064D447 /* SkScan_Antihair.cpp in Sources */,
+ 260E02F513B1225D0064D447 /* SkScan_Hairline.cpp in Sources */,
+ 260E02F613B1225D0064D447 /* SkScan_Path.cpp in Sources */,
+ 260E02F713B1225D0064D447 /* SkShader.cpp in Sources */,
+ 260E02F813B1225D0064D447 /* SkShape.cpp in Sources */,
+ 260E02FB13B1225D0064D447 /* SkStream.cpp in Sources */,
+ 260E02FC13B1225D0064D447 /* SkString.cpp in Sources */,
+ 260E02FD13B1225D0064D447 /* SkStroke.cpp in Sources */,
+ 260E02FE13B1225D0064D447 /* SkStrokerPriv.cpp in Sources */,
+ 260E02FF13B1225D0064D447 /* SkTSearch.cpp in Sources */,
+ 260E030013B1225D0064D447 /* SkTypeface.cpp in Sources */,
+ 260E030113B1225D0064D447 /* SkTypefaceCache.cpp in Sources */,
+ 260E030213B1225D0064D447 /* SkUnPreMultiply.cpp in Sources */,
+ 260E030313B1225D0064D447 /* SkUtils.cpp in Sources */,
+ 260E030413B1225D0064D447 /* SkWriter32.cpp in Sources */,
+ 260E030513B1225D0064D447 /* SkXfermode.cpp in Sources */,
+ 260E030713B1225D0064D447 /* SkDebug_stdio.cpp in Sources */,
+ 260E030B13B1225D0064D447 /* SkGlobals_global.cpp in Sources */,
+ 260E030C13B1225D0064D447 /* SkMemory_malloc.cpp in Sources */,
+ 260E030E13B1225D0064D447 /* SkThread_pthread.cpp in Sources */,
+ 260E030F13B1225D0064D447 /* SkTime_Unix.cpp in Sources */,
+ 260E031113B1225D0064D447 /* SkXMLParser_empty.cpp in Sources */,
+ 260E035413B122A30064D447 /* Sk1DPathEffect.cpp in Sources */,
+ 260E035513B122A30064D447 /* Sk2DPathEffect.cpp in Sources */,
+ 260E035613B122A30064D447 /* SkAvoidXfermode.cpp in Sources */,
+ 260E035713B122A30064D447 /* SkBitmapCache.cpp in Sources */,
+ 260E035813B122A30064D447 /* SkBlurDrawLooper.cpp in Sources */,
+ 260E035913B122A30064D447 /* SkBlurMask.cpp in Sources */,
+ 260E035A13B122A30064D447 /* SkBlurMaskFilter.cpp in Sources */,
+ 260E035B13B122A30064D447 /* SkColorFilters.cpp in Sources */,
+ 260E035C13B122A30064D447 /* SkColorMatrixFilter.cpp in Sources */,
+ 260E035D13B122A30064D447 /* SkCornerPathEffect.cpp in Sources */,
+ 260E035E13B122A30064D447 /* SkDashPathEffect.cpp in Sources */,
+ 260E035F13B122A30064D447 /* SkDiscretePathEffect.cpp in Sources */,
+ 260E036013B122A30064D447 /* SkEmbossMask.cpp in Sources */,
+ 260E036113B122A30064D447 /* SkEmbossMaskFilter.cpp in Sources */,
+ 260E036213B122A30064D447 /* SkGradientShader.cpp in Sources */,
+ 260E036313B122A30064D447 /* SkGroupShape.cpp in Sources */,
+ 260E036413B122A30064D447 /* SkKernel33MaskFilter.cpp in Sources */,
+ 260E036513B122A30064D447 /* SkLayerDrawLooper.cpp in Sources */,
+ 260E036613B122A30064D447 /* SkLayerRasterizer.cpp in Sources */,
+ 260E036713B122A30064D447 /* SkPaintFlagsDrawFilter.cpp in Sources */,
+ 260E036813B122A30064D447 /* SkPixelXorXfermode.cpp in Sources */,
+ 260E036913B122A30064D447 /* SkPorterDuff.cpp in Sources */,
+ 260E036A13B122A30064D447 /* SkRectShape.cpp in Sources */,
+ 260E036B13B122A30064D447 /* SkTransparentShader.cpp in Sources */,
+ 260E040C13B122D40064D447 /* GrAllocPool.cpp in Sources */,
+ 260E040D13B122D40064D447 /* GrAtlas.cpp in Sources */,
+ 260E040E13B122D40064D447 /* GrBufferAllocPool.cpp in Sources */,
+ 260E040F13B122D40064D447 /* GrClip.cpp in Sources */,
+ 260E041213B122D40064D447 /* GrDrawTarget.cpp in Sources */,
+ 260E041413B122D40064D447 /* GrGLIndexBuffer.cpp in Sources */,
+ 260E041513B122D40064D447 /* GrGLInterface.cpp in Sources */,
+ 260E041613B122D40064D447 /* GrGLProgram.cpp in Sources */,
+ 260E041813B122D40064D447 /* GrGLUtil.cpp in Sources */,
+ 260E041913B122D40064D447 /* GrGLVertexBuffer.cpp in Sources */,
+ 260E041A13B122D40064D447 /* GrGpu.cpp in Sources */,
+ 260E041B13B122D40064D447 /* GrGpuFactory.cpp in Sources */,
+ 260E041C13B122D40064D447 /* GrGpuGL.cpp in Sources */,
+ 260E041D13B122D40064D447 /* GrGpuGLFixed.cpp in Sources */,
+ 260E041E13B122D40064D447 /* GrGpuGLShaders.cpp in Sources */,
+ 260E041F13B122D40064D447 /* GrInOrderDrawBuffer.cpp in Sources */,
+ 260E042013B122D40064D447 /* GrMatrix.cpp in Sources */,
+ 260E042113B122D40064D447 /* GrMemory.cpp in Sources */,
+ 260E042213B122D40064D447 /* GrPathRenderer.cpp in Sources */,
+ 260E042313B122D40064D447 /* GrPathUtils.cpp in Sources */,
+ 260E042413B122D40064D447 /* GrRectanizer.cpp in Sources */,
+ 260E042513B122D40064D447 /* GrResource.cpp in Sources */,
+ 260E042613B122D40064D447 /* GrStencil.cpp in Sources */,
+ 260E042813B122D40064D447 /* GrTextContext.cpp in Sources */,
+ 260E042913B122D40064D447 /* GrTextStrike.cpp in Sources */,
+ 260E042A13B122D40064D447 /* GrTexture.cpp in Sources */,
+ 260E042C13B122D40064D447 /* gr_unittests.cpp in Sources */,
+ 260E042D13B122D40064D447 /* GrPrintf_skia.cpp in Sources */,
+ 260E042E13B122D40064D447 /* SkGpuCanvas.cpp in Sources */,
+ 260E042F13B122D40064D447 /* SkGpuDevice.cpp in Sources */,
+ 260E043013B122D40064D447 /* SkGr.cpp in Sources */,
+ 260E043113B122D40064D447 /* SkGrFontScaler.cpp in Sources */,
+ 260E043213B122D40064D447 /* SkGrTexturePixelRef.cpp in Sources */,
+ 260E046613B1232F0064D447 /* SkCreateRLEPixelRef.cpp in Sources */,
+ 260E046713B1232F0064D447 /* SkFDStream.cpp in Sources */,
+ 260E046813B1232F0064D447 /* SkFlipPixelRef.cpp in Sources */,
+ 260E046913B1232F0064D447 /* SkImageDecoder.cpp in Sources */,
+ 260E047113B1232F0064D447 /* SkImageEncoder.cpp in Sources */,
+ 260E050113B123840064D447 /* SkSVGCircle.cpp in Sources */,
+ 260E050213B123840064D447 /* SkSVGClipPath.cpp in Sources */,
+ 260E050313B123840064D447 /* SkSVGDefs.cpp in Sources */,
+ 260E050413B123840064D447 /* SkSVGElements.cpp in Sources */,
+ 260E050513B123840064D447 /* SkSVGEllipse.cpp in Sources */,
+ 260E050613B123840064D447 /* SkSVGFeColorMatrix.cpp in Sources */,
+ 260E050713B123840064D447 /* SkSVGFilter.cpp in Sources */,
+ 260E050813B123840064D447 /* SkSVGG.cpp in Sources */,
+ 260E050913B123840064D447 /* SkSVGGradient.cpp in Sources */,
+ 260E050A13B123840064D447 /* SkSVGGroup.cpp in Sources */,
+ 260E050B13B123840064D447 /* SkSVGImage.cpp in Sources */,
+ 260E050C13B123840064D447 /* SkSVGLine.cpp in Sources */,
+ 260E050D13B123840064D447 /* SkSVGLinearGradient.cpp in Sources */,
+ 260E050E13B123840064D447 /* SkSVGMask.cpp in Sources */,
+ 260E050F13B123840064D447 /* SkSVGMetadata.cpp in Sources */,
+ 260E051013B123840064D447 /* SkSVGPaintState.cpp in Sources */,
+ 260E051113B123840064D447 /* SkSVGParser.cpp in Sources */,
+ 260E051213B123840064D447 /* SkSVGPath.cpp in Sources */,
+ 260E051313B123840064D447 /* SkSVGPolygon.cpp in Sources */,
+ 260E051413B123840064D447 /* SkSVGPolyline.cpp in Sources */,
+ 260E051513B123840064D447 /* SkSVGRadialGradient.cpp in Sources */,
+ 260E051613B123840064D447 /* SkSVGRect.cpp in Sources */,
+ 260E051713B123840064D447 /* SkSVGSVG.cpp in Sources */,
+ 260E051813B123840064D447 /* SkSVGStop.cpp in Sources */,
+ 260E051913B123840064D447 /* SkSVGSymbol.cpp in Sources */,
+ 260E051A13B123840064D447 /* SkSVGText.cpp in Sources */,
+ 260E051B13B123840064D447 /* SkSVGUse.cpp in Sources */,
+ 260E056C13B123DE0064D447 /* SkCreateCGImageRef.cpp in Sources */,
+ 260E057713B123DE0064D447 /* SkBoundaryPatch.cpp in Sources */,
+ 260E057813B123DE0064D447 /* SkCamera.cpp in Sources */,
+ 260E057913B123DE0064D447 /* SkColorMatrix.cpp in Sources */,
+ 260E057A13B123DE0064D447 /* SkCubicInterval.cpp in Sources */,
+ 260E057B13B123DE0064D447 /* SkCullPoints.cpp in Sources */,
+ 260E057C13B123DE0064D447 /* SkDumpCanvas.cpp in Sources */,
+ 260E057E13B123DE0064D447 /* SkInterpolator.cpp in Sources */,
+ 260E057F13B123DE0064D447 /* SkLayer.cpp in Sources */,
+ 260E058013B123DE0064D447 /* SkMatrix44.cpp in Sources */,
+ 260E058113B123DE0064D447 /* SkMeshUtils.cpp in Sources */,
+ 260E058213B123DE0064D447 /* SkNWayCanvas.cpp in Sources */,
+ 260E058313B123DE0064D447 /* SkNinePatch.cpp in Sources */,
+ 260E058413B123DE0064D447 /* SkOSFile.cpp in Sources */,
+ 260E058513B123DE0064D447 /* SkParse.cpp in Sources */,
+ 260E058613B123DE0064D447 /* SkParseColor.cpp in Sources */,
+ 260E058713B123DE0064D447 /* SkParsePath.cpp in Sources */,
+ 260E058913B123DE0064D447 /* SkSfntUtils.cpp in Sources */,
+ 260E058A13B123DE0064D447 /* SkUnitMappers.cpp in Sources */,
+ 260E05C913B123E80064D447 /* SkBGViewArtist.cpp in Sources */,
+ 260E05CB13B123E80064D447 /* SkEvent.cpp in Sources */,
+ 260E05CC13B123E80064D447 /* SkEventSink.cpp in Sources */,
+ 260E05CD13B123E80064D447 /* SkImageView.cpp in Sources */,
+ 260E05CE13B123E80064D447 /* SkListView.cpp in Sources */,
+ 260E05D013B123E80064D447 /* SkOSMenu.cpp in Sources */,
+ 260E05D113B123E80064D447 /* SkParsePaint.cpp in Sources */,
+ 260E05D513B123E80064D447 /* SkStackViewLayout.cpp in Sources */,
+ 260E05D613B123E80064D447 /* SkStaticTextView.cpp in Sources */,
+ 260E05D713B123E80064D447 /* SkTagList.cpp in Sources */,
+ 260E05D813B123E80064D447 /* SkTextBox.cpp in Sources */,
+ 260E05D913B123E80064D447 /* SkTouchGesture.cpp in Sources */,
+ 260E05DA13B123E80064D447 /* SkView.cpp in Sources */,
+ 260E05DB13B123E80064D447 /* SkViewInflate.cpp in Sources */,
+ 260E05DC13B123E80064D447 /* SkViewPriv.cpp in Sources */,
+ 260E05DD13B123E80064D447 /* SkWidget.cpp in Sources */,
+ 260E05DF13B123E80064D447 /* SkWidgets.cpp in Sources */,
+ 260E05E013B123E80064D447 /* SkWindow.cpp in Sources */,
+ 260E05FE13B124210064D447 /* SkDOM.cpp in Sources */,
+ 260E060113B124210064D447 /* SkXMLParser.cpp in Sources */,
+ 260E075313B127E00064D447 /* SkAnimateActive.cpp in Sources */,
+ 260E075413B127E00064D447 /* SkAnimateBase.cpp in Sources */,
+ 260E075513B127E00064D447 /* SkAnimateField.cpp in Sources */,
+ 260E075613B127E00064D447 /* SkAnimateMaker.cpp in Sources */,
+ 260E075713B127E00064D447 /* SkAnimateSet.cpp in Sources */,
+ 260E075813B127E00064D447 /* SkAnimator.cpp in Sources */,
+ 260E075913B127E00064D447 /* SkAnimatorScript.cpp in Sources */,
+ 260E075A13B127E00064D447 /* SkBase64.cpp in Sources */,
+ 260E075B13B127E00064D447 /* SkBoundable.cpp in Sources */,
+ 260E075C13B127E00064D447 /* SkBuildCondensedInfo.cpp in Sources */,
+ 260E075D13B127E00064D447 /* SkDisplayAdd.cpp in Sources */,
+ 260E075E13B127E00064D447 /* SkDisplayApply.cpp in Sources */,
+ 260E075F13B127E00064D447 /* SkDisplayBounds.cpp in Sources */,
+ 260E076013B127E00064D447 /* SkDisplayEvent.cpp in Sources */,
+ 260E076113B127E00064D447 /* SkDisplayEvents.cpp in Sources */,
+ 260E076213B127E00064D447 /* SkDisplayInclude.cpp in Sources */,
+ 260E076313B127E00064D447 /* SkDisplayInput.cpp in Sources */,
+ 260E076413B127E00064D447 /* SkDisplayList.cpp in Sources */,
+ 260E076513B127E00064D447 /* SkDisplayMath.cpp in Sources */,
+ 260E076613B127E00064D447 /* SkDisplayMovie.cpp in Sources */,
+ 260E076713B127E00064D447 /* SkDisplayNumber.cpp in Sources */,
+ 260E076813B127E00064D447 /* SkDisplayPost.cpp in Sources */,
+ 260E076913B127E00064D447 /* SkDisplayRandom.cpp in Sources */,
+ 260E076A13B127E00064D447 /* SkDisplayScreenplay.cpp in Sources */,
+ 260E076B13B127E00064D447 /* SkDisplayType.cpp in Sources */,
+ 260E076C13B127E00064D447 /* SkDisplayTypes.cpp in Sources */,
+ 260E076D13B127E00064D447 /* SkDisplayXMLParser.cpp in Sources */,
+ 260E076E13B127E00064D447 /* SkDisplayable.cpp in Sources */,
+ 260E076F13B127E00064D447 /* SkDraw3D.cpp in Sources */,
+ 260E077013B127E00064D447 /* SkDrawBitmap.cpp in Sources */,
+ 260E077113B127E00064D447 /* SkDrawBlur.cpp in Sources */,
+ 260E077213B127E00064D447 /* SkDrawClip.cpp in Sources */,
+ 260E077313B127E00064D447 /* SkDrawColor.cpp in Sources */,
+ 260E077413B127E00064D447 /* SkDrawDash.cpp in Sources */,
+ 260E077513B127E00064D447 /* SkDrawDiscrete.cpp in Sources */,
+ 260E077613B127E00064D447 /* SkDrawEmboss.cpp in Sources */,
+ 260E077713B127E00064D447 /* SkDrawExtraPathEffect.cpp in Sources */,
+ 260E077813B127E00064D447 /* SkDrawFull.cpp in Sources */,
+ 260E077913B127E00064D447 /* SkDrawGradient.cpp in Sources */,
+ 260E077A13B127E00064D447 /* SkDrawGroup.cpp in Sources */,
+ 260E077B13B127E00064D447 /* SkDrawLine.cpp in Sources */,
+ 260E077C13B127E00064D447 /* SkDrawMatrix.cpp in Sources */,
+ 260E077D13B127E00064D447 /* SkDrawOval.cpp in Sources */,
+ 260E077E13B127E00064D447 /* SkDrawPaint.cpp in Sources */,
+ 260E077F13B127E00064D447 /* SkDrawPath.cpp in Sources */,
+ 260E078013B127E00064D447 /* SkDrawPoint.cpp in Sources */,
+ 260E078113B127E00064D447 /* SkDrawRectangle.cpp in Sources */,
+ 260E078213B127E00064D447 /* SkDrawSaveLayer.cpp in Sources */,
+ 260E078313B127E00064D447 /* SkDrawShader.cpp in Sources */,
+ 260E078413B127E00064D447 /* SkDrawText.cpp in Sources */,
+ 260E078513B127E00064D447 /* SkDrawTextBox.cpp in Sources */,
+ 260E078613B127E00064D447 /* SkDrawTo.cpp in Sources */,
+ 260E078713B127E00064D447 /* SkDrawTransparentShader.cpp in Sources */,
+ 260E078813B127E00064D447 /* SkDrawable.cpp in Sources */,
+ 260E078913B127E00064D447 /* SkDump.cpp in Sources */,
+ 260E078A13B127E00064D447 /* SkGetCondensedInfo.cpp in Sources */,
+ 260E078B13B127E00064D447 /* SkHitClear.cpp in Sources */,
+ 260E078C13B127E00064D447 /* SkHitTest.cpp in Sources */,
+ 260E078D13B127E00064D447 /* SkMatrixParts.cpp in Sources */,
+ 260E078E13B127E00064D447 /* SkMemberInfo.cpp in Sources */,
+ 260E078F13B127E00064D447 /* SkOpArray.cpp in Sources */,
+ 260E079013B127E00064D447 /* SkOperandIterpolator.cpp in Sources */,
+ 260E079113B127E00064D447 /* SkPaintParts.cpp in Sources */,
+ 260E079213B127E00064D447 /* SkParseSVGPath.cpp in Sources */,
+ 260E079313B127E00064D447 /* SkPathParts.cpp in Sources */,
+ 260E079413B127E00064D447 /* SkPostParts.cpp in Sources */,
+ 260E079513B127E00064D447 /* SkScript.cpp in Sources */,
+ 260E079613B127E00064D447 /* SkScriptDecompile.cpp in Sources */,
+ 260E079713B127E00064D447 /* SkScriptRuntime.cpp in Sources */,
+ 260E079813B127E00064D447 /* SkScriptTokenizer.cpp in Sources */,
+ 260E079913B127E00064D447 /* SkSnapshot.cpp in Sources */,
+ 260E079A13B127E00064D447 /* SkTextOnPath.cpp in Sources */,
+ 260E079B13B127E00064D447 /* SkTextToPath.cpp in Sources */,
+ 260E079C13B127E00064D447 /* SkTime.cpp in Sources */,
+ 260E079D13B127E00064D447 /* SkTypedArray.cpp in Sources */,
+ 260E079E13B127E00064D447 /* SkXMLAnimatorWriter.cpp in Sources */,
+ 260E07B313B128210064D447 /* SkXMLWriter.cpp in Sources */,
+ 260E07C513B128610064D447 /* SkMovie.cpp in Sources */,
+ 260E07CA13B128740064D447 /* SkPageFlipper.cpp in Sources */,
+ 260E07D113B128870064D447 /* SkImageRef.cpp in Sources */,
+ 260E07D213B128870064D447 /* SkImageRefPool.cpp in Sources */,
+ 260E07D713B1289C0064D447 /* SkImageRef_GlobalPool.cpp in Sources */,
+ 260E083D13B12A200064D447 /* SkImageDecoder_Factory.cpp in Sources */,
+ 260E083E13B12A200064D447 /* SkImageEncoder_Factory.cpp in Sources */,
+ 260E087F13B12B6F0064D447 /* SkFontHost_mac_coretext.cpp in Sources */,
+ 260E095713B134C90064D447 /* FlingState.cpp in Sources */,
+ 260E095813B134C90064D447 /* GrDrawMesh.cpp in Sources */,
+ 260E147913B2734E0064D447 /* SkUISplitViewController.mm in Sources */,
+ 260E16E613B2853F0064D447 /* SampleGM.cpp in Sources */,
+ 260E1DCD13B3AA490064D447 /* SkUINavigationController.mm in Sources */,
+ 260E1EA213B3B15A0064D447 /* SkPDFCatalog.cpp in Sources */,
+ 260E1EA313B3B15A0064D447 /* SkPDFDevice.cpp in Sources */,
+ 260E1EA413B3B15A0064D447 /* SkPDFDocument.cpp in Sources */,
+ 260E1EA513B3B15A0064D447 /* SkPDFFont.cpp in Sources */,
+ 260E1EA613B3B15A0064D447 /* SkPDFFormXObject.cpp in Sources */,
+ 260E1EA713B3B15A0064D447 /* SkPDFGraphicState.cpp in Sources */,
+ 260E1EA813B3B15A0064D447 /* SkPDFImage.cpp in Sources */,
+ 260E1EA913B3B15A0064D447 /* SkPDFPage.cpp in Sources */,
+ 260E1EAA13B3B15A0064D447 /* SkPDFShader.cpp in Sources */,
+ 260E1EAB13B3B15A0064D447 /* SkPDFStream.cpp in Sources */,
+ 260E1EAC13B3B15A0064D447 /* SkPDFTypes.cpp in Sources */,
+ 260E1EAD13B3B15A0064D447 /* SkPDFUtils.cpp in Sources */,
+ 26677D6613B4C548009319B8 /* SkData.cpp in Sources */,
+ 26F548C213B918EC007CC564 /* SkBlitter_4444.cpp in Sources */,
+ 26F548C313B918ED007CC564 /* SkBlitter_A1.cpp in Sources */,
+ 26F548C413B918ED007CC564 /* SkBlitter_A8.cpp in Sources */,
+ 26F548C513B918EE007CC564 /* SkBlitter_ARGB32.cpp in Sources */,
+ 26F548C613B918EF007CC564 /* SkBlitter_RGB16.cpp in Sources */,
+ 26F548C713B918EF007CC564 /* SkBlitter_Sprite.cpp in Sources */,
+ 26F548C813B918F1007CC564 /* SkProcSpriteBlitter.cpp in Sources */,
+ 26F548C913B918F2007CC564 /* SkSpriteBlitter_ARGB32.cpp in Sources */,
+ 26F548CA13B918F2007CC564 /* SkSpriteBlitter_RGB16.cpp in Sources */,
+ 26F548DA13B9192E007CC564 /* SkBlitRow_D32.cpp in Sources */,
+ 26F548DB13B9192E007CC564 /* SkBlitRow_D16.cpp in Sources */,
+ 26F548E913B91980007CC564 /* SkBitmapProcState_opts_arm.cpp in Sources */,
+ 26F548EC13B91980007CC564 /* SkBlitRow_opts_none.cpp in Sources */,
+ 26F548ED13B91980007CC564 /* SkUtils_opts_none.cpp in Sources */,
+ 26962B2313CDF6A00039B1FB /* SkOSFile_iOS.mm in Sources */,
+ 26962C8013CE256E0039B1FB /* SkUIDetailViewController.mm in Sources */,
+ 26962C8113CE256E0039B1FB /* SkUIRootViewController.mm in Sources */,
+ 26962CA413CE265C0039B1FB /* SkOSWindow_iOS.mm in Sources */,
+ 26962CAB13CE268A0039B1FB /* SampleApp.cpp in Sources */,
+ 26962D4F13CE2D780039B1FB /* GrGLDefaultInterface_iOS.cpp in Sources */,
+ 26FB98D313D0C87000ACBEA0 /* SkUIView.mm in Sources */,
+ 2663AC9413D5D8D400C20488 /* SkOptionsTableViewController.mm in Sources */,
+ 265C7DE313D75752008329F6 /* SkOptionListController.mm in Sources */,
+ 26811E7913DEFAE8001A1609 /* SkBitSet.cpp in Sources */,
+ 26A8AFF313E05D7000A3C111 /* GrResourceCache.cpp in Sources */,
+ 26FB129313E704AE001AFF6D /* GrGLTexture.cpp in Sources */,
+ 26FB129413E704B0001AFF6D /* GrContext.cpp in Sources */,
+ 26FB12B013E70D3B001AFF6D /* GrGLRenderTarget.cpp in Sources */,
+ 26FB12B413E70D51001AFF6D /* GrRenderTarget.cpp in Sources */,
+ 26591EB913EB16EB000DA8A8 /* TransitionView.cpp in Sources */,
+ 268C50D613F022820003FF9A /* SkColorPalette.cpp in Sources */,
+ 268C50D713F022820003FF9A /* SkNetPipeController.cpp in Sources */,
+ 268C50E013F0230C0003FF9A /* SkSockets.cpp in Sources */,
+ 2605F44213F18B1B0044A072 /* DebuggerContentView.cpp in Sources */,
+ 2605F44313F18B1B0044A072 /* DebuggerCommandsView.cpp in Sources */,
+ 2605F44413F18B1B0044A072 /* SkDebugDumper.cpp in Sources */,
+ 2605F44513F18B1B0044A072 /* DebuggerStateView.cpp in Sources */,
+ 2605F65D13F19D1D0044A072 /* SamplePicture.cpp in Sources */,
+ 2605F66513F19EB80044A072 /* GrStencilBuffer.cpp in Sources */,
+ 2605F83013F1AE4B0044A072 /* xfermodes.cpp in Sources */,
+ 2605F83113F1AE4C0044A072 /* tilemodes.cpp in Sources */,
+ 2605F83213F1AE4C0044A072 /* shapes.cpp in Sources */,
+ 2605F83313F1AE4D0044A072 /* shadows.cpp in Sources */,
+ 2605F83413F1AE4D0044A072 /* shadertext.cpp in Sources */,
+ 2605F83513F1AE4E0044A072 /* poly2poly.cpp in Sources */,
+ 2605F83613F1AE4F0044A072 /* nocolorbleed.cpp in Sources */,
+ 2605F83713F1AE500044A072 /* points.cpp in Sources */,
+ 2605F83813F1AE500044A072 /* gradients.cpp in Sources */,
+ 2605F83913F1AE510044A072 /* filltypes.cpp in Sources */,
+ 2605F83A13F1AE520044A072 /* complexclip.cpp in Sources */,
+ 2605F83B13F1AE520044A072 /* blurs.cpp in Sources */,
+ 2605F83C13F1AE530044A072 /* bitmapfilters.cpp in Sources */,
+ 2612C0D1140D2F9B001B6925 /* ClockFaceView.cpp in Sources */,
+ 2612C0D2140D2F9C001B6925 /* SampleAARects.cpp in Sources */,
+ 2612C0D3140D2F9C001B6925 /* SampleAnimator.cpp in Sources */,
+ 2612C0D4140D2F9D001B6925 /* SampleAll.cpp in Sources */,
+ 2612C0D5140D2F9F001B6925 /* SampleBigGradient.cpp in Sources */,
+ 2612C0D6140D2F9F001B6925 /* SampleBitmapRect.cpp in Sources */,
+ 2612C0D7140D2FA1001B6925 /* SampleCamera.cpp in Sources */,
+ 2612C0D8140D2FA2001B6925 /* SampleColorFilter.cpp in Sources */,
+ 2612C0D9140D2FA3001B6925 /* SampleConcavePaths.cpp in Sources */,
+ 2612C0DA140D2FA4001B6925 /* SampleDecode.cpp in Sources */,
+ 2612C0DB140D2FA5001B6925 /* SampleDither.cpp in Sources */,
+ 2612C0DC140D2FA8001B6925 /* SampleDitherBitmap.cpp in Sources */,
+ 2612C0DD140D2FAA001B6925 /* SampleDrawLooper.cpp in Sources */,
+ 2612C0DE140D2FAA001B6925 /* SampleEffects.cpp in Sources */,
+ 2612C0DF140D2FAB001B6925 /* SampleEmboss.cpp in Sources */,
+ 2612C0E0140D2FAB001B6925 /* SampleEncode.cpp in Sources */,
+ 2612C0E1140D2FAC001B6925 /* SampleExtractAlpha.cpp in Sources */,
+ 2612C0E2140D2FAD001B6925 /* SampleFilter.cpp in Sources */,
+ 2612C0E3140D2FAE001B6925 /* SampleFilter2.cpp in Sources */,
+ 2612C0E4140D2FAE001B6925 /* SampleFontCache.cpp in Sources */,
+ 2612C0E5140D2FAF001B6925 /* SampleFontScalerTest.cpp in Sources */,
+ 2612C0E6140D2FAF001B6925 /* SampleFuzz.cpp in Sources */,
+ 2612C0E7140D2FB1001B6925 /* SampleGradients.cpp in Sources */,
+ 2612C0E8140D2FB1001B6925 /* SampleHairline.cpp in Sources */,
+ 2612C0E9140D2FB2001B6925 /* SampleImage.cpp in Sources */,
+ 2612C0EA140D2FB2001B6925 /* SampleImageDir.cpp in Sources */,
+ 2612C0EB140D2FB3001B6925 /* SampleLayerMask.cpp in Sources */,
+ 2612C0EC140D2FB4001B6925 /* SampleLayers.cpp in Sources */,
+ 2612C0ED140D2FB4001B6925 /* SampleLineClipper.cpp in Sources */,
+ 2612C0EE140D2FB5001B6925 /* SampleLines.cpp in Sources */,
+ 2612C0EF140D2FB7001B6925 /* SampleMeasure.cpp in Sources */,
+ 2612C0F0140D2FB8001B6925 /* SampleMipMap.cpp in Sources */,
+ 2612C0F1140D2FB8001B6925 /* SampleMovie.cpp in Sources */,
+ 2612C0F2140D2FB9001B6925 /* SampleNinePatch.cpp in Sources */,
+ 2612C0F3140D2FBA001B6925 /* SampleOvalTest.cpp in Sources */,
+ 2612C0F4140D2FBB001B6925 /* SampleOverflow.cpp in Sources */,
+ 2612C0F5140D2FBB001B6925 /* SamplePageFlip.cpp in Sources */,
+ 2612C0F6140D2FBC001B6925 /* SamplePatch.cpp in Sources */,
+ 2612C0F7140D2FBD001B6925 /* SampleRepeatTile.cpp in Sources */,
+ 2612C0F8140D2FBE001B6925 /* SampleShaderText.cpp in Sources */,
+ 2612C0F9140D2FBE001B6925 /* SampleShaders.cpp in Sources */,
+ 2612C0FA140D2FC0001B6925 /* SampleSkLayer.cpp in Sources */,
+ 2612C0FB140D2FC1001B6925 /* SampleStrokePath.cpp in Sources */,
+ 2612C0FC140D2FC2001B6925 /* SampleStrokeText.cpp in Sources */,
+ 2612C0FE140D2FC3001B6925 /* SampleTextureDomain.cpp in Sources */,
+ 2612C0FF140D2FC4001B6925 /* SampleTiling.cpp in Sources */,
+ 2612C100140D2FC5001B6925 /* SampleTinyBitmap.cpp in Sources */,
+ 2612C101140D2FC6001B6925 /* SampleXfermodes.cpp in Sources */,
+ 2612C102140D2FC7001B6925 /* SampleXfermodesBlur.cpp in Sources */,
+ 2612C106140D2FE3001B6925 /* SkEventNotifier.mm in Sources */,
+ 2612C110140D300B001B6925 /* GrDefaultPathRenderer.cpp in Sources */,
+ 2612C111140D300B001B6925 /* GrGLStencilBuffer.cpp in Sources */,
+ 2612C112140D300B001B6925 /* GrPathRendererChain.cpp in Sources */,
+ 2612C122140D30B0001B6925 /* GrAddPathRenderers_none.cpp in Sources */,
+ 26D91223140D576B0036A311 /* SkSampleUIView.mm in Sources */,
+ 26D9122A140D57BD0036A311 /* skia_ios.mm in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 1D6058940D05DD3E006BFB54 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ COPY_PHASE_STRIP = NO;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = iOSSampleApp_Prefix.pch;
+ INFOPLIST_FILE = "iOSSampleApp-Info.plist";
+ PRODUCT_NAME = iOSSampleApp;
+ };
+ name = Debug;
+ };
+ 1D6058950D05DD3E006BFB54 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ COPY_PHASE_STRIP = YES;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = iOSSampleApp_Prefix.pch;
+ INFOPLIST_FILE = "iOSSampleApp-Info.plist";
+ PRODUCT_NAME = iOSSampleApp;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ C01FCF4F08A954540054247B /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 2662AB6F13BD067900CDE7E9 /* SkiOSSampleApp-Debug.xcconfig */;
+ buildSettings = {
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ SK_BUILD_FOR_IOS,
+ SK_DEBUG,
+ );
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = NO;
+ PREBINDING = NO;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ USER_HEADER_SEARCH_PATHS = "../../gpu/include/** ../../include/**";
+ };
+ name = Debug;
+ };
+ C01FCF5008A954540054247B /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 2662AB7513BD0C0D00CDE7E9 /* SkiOSSampleApp-Release.xcconfig */;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ SK_RELEASE,
+ SK_BUILD_FOR_IOS,
+ );
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = NO;
+ IPHONEOS_DEPLOYMENT_TARGET = 4.2;
+ OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
+ PREBINDING = NO;
+ SDKROOT = iphoneos4.3;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "iOSSampleApp" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1D6058940D05DD3E006BFB54 /* Debug */,
+ 1D6058950D05DD3E006BFB54 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ C01FCF4E08A954540054247B /* Build configuration list for PBXProject "iOSSampleApp" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C01FCF4F08A954540054247B /* Debug */,
+ C01FCF5008A954540054247B /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
+}
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/iOSSampleApp_Prefix.pch b/chromium/third_party/skia/experimental/iOSSampleApp/iOSSampleApp_Prefix.pch
new file mode 100644
index 00000000000..1c479f47140
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/iOSSampleApp_Prefix.pch
@@ -0,0 +1,8 @@
+//
+// Prefix header for all source files of the 'iOSShell' target in the 'iOSShell' project
+//
+
+#ifdef __OBJC__
+ #import <Foundation/Foundation.h>
+ #import <UIKit/UIKit.h>
+#endif
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/iPad/AppDelegate_iPad.h b/chromium/third_party/skia/experimental/iOSSampleApp/iPad/AppDelegate_iPad.h
new file mode 100644
index 00000000000..eb54c690dc5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/iPad/AppDelegate_iPad.h
@@ -0,0 +1,19 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#import <UIKit/UIKit.h>
+#import "SkUISplitViewController.h"
+
+@interface AppDelegate_iPad : NSObject <UIApplicationDelegate> {
+@private;
+ UIWindow* window;
+ SkUISplitViewController* splitViewController;
+}
+@property (nonatomic, retain) IBOutlet UIWindow* window;
+@property (nonatomic, retain) IBOutlet SkUISplitViewController* splitViewController;
+
+@end
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/iPad/AppDelegate_iPad.mm b/chromium/third_party/skia/experimental/iOSSampleApp/iPad/AppDelegate_iPad.mm
new file mode 100644
index 00000000000..c33fddea2f9
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/iPad/AppDelegate_iPad.mm
@@ -0,0 +1,22 @@
+#import "AppDelegate_iPad.h"
+
+@implementation AppDelegate_iPad
+
+@synthesize window, splitViewController;
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+ [window addSubview:[splitViewController view]];
+ [window makeKeyAndVisible];
+
+ self.window.rootViewController = splitViewController;
+
+ return YES;
+}
+
+- (void)dealloc {
+ [window release];
+ [splitViewController release];
+ [super dealloc];
+}
+
+@end
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/iPad/MainWindow_iPad.xib b/chromium/third_party/skia/experimental/iOSSampleApp/iPad/MainWindow_iPad.xib
new file mode 100644
index 00000000000..6b197d063e1
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/iPad/MainWindow_iPad.xib
@@ -0,0 +1,565 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10">
+ <data>
+ <int key="IBDocument.SystemTarget">1296</int>
+ <string key="IBDocument.SystemVersion">12B19</string>
+ <string key="IBDocument.InterfaceBuilderVersion">2549</string>
+ <string key="IBDocument.AppKitVersion">1187</string>
+ <string key="IBDocument.HIToolboxVersion">624.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="NS.object.0">1498</string>
+ </object>
+ <object class="NSArray" key="IBDocument.IntegratedClassDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>IBProxyObject</string>
+ <string>IBUICustomObject</string>
+ <string>IBUINavigationBar</string>
+ <string>IBUINavigationController</string>
+ <string>IBUINavigationItem</string>
+ <string>IBUISplitViewController</string>
+ <string>IBUITableView</string>
+ <string>IBUITableViewController</string>
+ <string>IBUIView</string>
+ <string>IBUIViewController</string>
+ <string>IBUIWindow</string>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+ <integer value="1" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBProxyObject" id="841351856">
+ <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ </object>
+ <object class="IBProxyObject" id="606714003">
+ <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ </object>
+ <object class="IBUICustomObject" id="250404236">
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ </object>
+ <object class="IBUIWindow" id="62075450">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrameSize">{768, 1024}</string>
+ <reference key="NSSuperview"/>
+ <reference key="NSWindow"/>
+ <object class="NSColor" key="IBUIBackgroundColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MSAxIDEAA</bytes>
+ </object>
+ <bool key="IBUIOpaque">NO</bool>
+ <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics">
+ <int key="IBUIStatusBarStyle">2</int>
+ </object>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ <bool key="IBUIResizesToFullScreen">YES</bool>
+ </object>
+ <object class="IBUISplitViewController" id="143532475">
+ <object class="NSArray" key="IBUIToolbarItems" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics">
+ <int key="IBUIStatusBarStyle">2</int>
+ </object>
+ <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+ <int key="IBUIInterfaceOrientation">1</int>
+ <int key="interfaceOrientation">1</int>
+ </object>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ <bool key="IBUIHorizontal">NO</bool>
+ <object class="IBUINavigationController" key="IBUIMasterViewController" id="524408385">
+ <reference key="IBUIParentViewController" ref="143532475"/>
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics">
+ <int key="IBUIStatusBarStyle">2</int>
+ </object>
+ <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+ <int key="IBUIInterfaceOrientation">1</int>
+ <int key="interfaceOrientation">1</int>
+ </object>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ <bool key="IBUIHorizontal">NO</bool>
+ <object class="IBUINavigationBar" key="IBUINavigationBar" id="593802069">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{0, 0}</string>
+ <bool key="IBUIClipsSubviews">YES</bool>
+ <bool key="IBUIMultipleTouchEnabled">YES</bool>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ <int key="IBUIBarStyle">1</int>
+ </object>
+ <object class="NSMutableArray" key="IBUIViewControllers">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBUITableViewController" id="714382558">
+ <object class="IBUITableView" key="IBUIView" id="805122470">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrameSize">{320, 960}</string>
+ <object class="NSColor" key="IBUIBackgroundColor" id="933040628">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MQA</bytes>
+ </object>
+ <bool key="IBUIClipsSubviews">YES</bool>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ <bool key="IBUIAlwaysBounceVertical">YES</bool>
+ <int key="IBUISeparatorStyle">1</int>
+ <int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
+ <bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
+ <float key="IBUIRowHeight">44</float>
+ <float key="IBUISectionHeaderHeight">22</float>
+ <float key="IBUISectionFooterHeight">22</float>
+ </object>
+ <object class="IBUINavigationItem" key="IBUINavigationItem" id="136024681">
+ <string key="IBUITitle">Samples</string>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ </object>
+ <reference key="IBUIParentViewController" ref="524408385"/>
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics">
+ <int key="IBUIStatusBarStyle">2</int>
+ </object>
+ <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+ <int key="IBUIInterfaceOrientation">1</int>
+ <int key="interfaceOrientation">1</int>
+ </object>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ <bool key="IBUIHorizontal">NO</bool>
+ <bool key="IBUIClearsSelectionOnViewWillAppear">NO</bool>
+ </object>
+ </object>
+ </object>
+ <object class="IBUINavigationController" key="IBUIDetailViewController" id="1006871283">
+ <reference key="IBUIParentViewController" ref="143532475"/>
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics">
+ <int key="IBUIStatusBarStyle">2</int>
+ </object>
+ <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+ <int key="IBUIInterfaceOrientation">1</int>
+ <int key="interfaceOrientation">1</int>
+ </object>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ <bool key="IBUIHorizontal">NO</bool>
+ <object class="IBUINavigationBar" key="IBUINavigationBar" id="210980145">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{0, 0}</string>
+ <bool key="IBUIClipsSubviews">YES</bool>
+ <bool key="IBUIMultipleTouchEnabled">YES</bool>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ <int key="IBUIBarStyle">1</int>
+ </object>
+ <object class="NSMutableArray" key="IBUIViewControllers">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBUIViewController" id="659859393">
+ <object class="IBUIView" key="IBUIView" id="879616490">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrameSize">{768, 960}</string>
+ <reference key="IBUIBackgroundColor" ref="933040628"/>
+ <bool key="IBUIMultipleTouchEnabled">YES</bool>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ </object>
+ <reference key="IBUIToolbarItems" ref="0"/>
+ <object class="IBUINavigationItem" key="IBUINavigationItem" id="245890386">
+ <string key="IBUITitle">Title</string>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ </object>
+ <reference key="IBUIParentViewController" ref="1006871283"/>
+ <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+ <int key="IBUIInterfaceOrientation">1</int>
+ <int key="interfaceOrientation">1</int>
+ </object>
+ <string key="targetRuntimeIdentifier">IBIPadFramework</string>
+ <bool key="IBUIHorizontal">NO</bool>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="841351856"/>
+ <reference key="destination" ref="250404236"/>
+ </object>
+ <int key="connectionID">8</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">window</string>
+ <reference key="source" ref="250404236"/>
+ <reference key="destination" ref="62075450"/>
+ </object>
+ <int key="connectionID">7</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">splitViewController</string>
+ <reference key="source" ref="250404236"/>
+ <reference key="destination" ref="143532475"/>
+ </object>
+ <int key="connectionID">69</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">fRoot</string>
+ <reference key="source" ref="143532475"/>
+ <reference key="destination" ref="714382558"/>
+ </object>
+ <int key="connectionID">85</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">fDetail</string>
+ <reference key="source" ref="143532475"/>
+ <reference key="destination" ref="659859393"/>
+ </object>
+ <int key="connectionID">172</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">dataSource</string>
+ <reference key="source" ref="805122470"/>
+ <reference key="destination" ref="714382558"/>
+ </object>
+ <int key="connectionID">91</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="805122470"/>
+ <reference key="destination" ref="143532475"/>
+ </object>
+ <int key="connectionID">93</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <reference key="object" ref="0"/>
+ <reference key="children" ref="1000"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="841351856"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="606714003"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2</int>
+ <reference key="object" ref="62075450"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">6</int>
+ <reference key="object" ref="250404236"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">52</int>
+ <reference key="object" ref="143532475"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="524408385"/>
+ <reference ref="1006871283"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">53</int>
+ <reference key="object" ref="524408385"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="593802069"/>
+ <reference ref="714382558"/>
+ </object>
+ <reference key="parent" ref="143532475"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">55</int>
+ <reference key="object" ref="714382558"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="136024681"/>
+ <reference ref="805122470"/>
+ </object>
+ <reference key="parent" ref="524408385"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">56</int>
+ <reference key="object" ref="593802069"/>
+ <reference key="parent" ref="524408385"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">57</int>
+ <reference key="object" ref="136024681"/>
+ <reference key="parent" ref="714382558"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">89</int>
+ <reference key="object" ref="805122470"/>
+ <reference key="parent" ref="714382558"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">138</int>
+ <reference key="object" ref="1006871283"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="659859393"/>
+ <reference ref="210980145"/>
+ </object>
+ <reference key="parent" ref="143532475"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">142</int>
+ <reference key="object" ref="659859393"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="245890386"/>
+ <reference ref="879616490"/>
+ </object>
+ <reference key="parent" ref="1006871283"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">140</int>
+ <reference key="object" ref="210980145"/>
+ <reference key="parent" ref="1006871283"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">162</int>
+ <reference key="object" ref="245890386"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <reference key="parent" ref="659859393"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">143</int>
+ <reference key="object" ref="879616490"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <reference key="parent" ref="659859393"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-1.CustomClassName</string>
+ <string>-1.IBPluginDependency</string>
+ <string>-2.CustomClassName</string>
+ <string>-2.IBPluginDependency</string>
+ <string>138.IBPluginDependency</string>
+ <string>140.IBPluginDependency</string>
+ <string>142.CustomClassName</string>
+ <string>142.IBPluginDependency</string>
+ <string>143.CustomClassName</string>
+ <string>143.IBPluginDependency</string>
+ <string>162.IBPluginDependency</string>
+ <string>2.IBPluginDependency</string>
+ <string>52.CustomClassName</string>
+ <string>52.IBPluginDependency</string>
+ <string>53.IBPluginDependency</string>
+ <string>55.CustomClassName</string>
+ <string>55.IBPluginDependency</string>
+ <string>56.IBPluginDependency</string>
+ <string>57.IBPluginDependency</string>
+ <string>6.CustomClassName</string>
+ <string>6.IBPluginDependency</string>
+ <string>89.IBPluginDependency</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>UIApplication</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>UIResponder</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>SkUIDetailViewController</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>SkSampleUIView</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>SkUISplitViewController</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>SkUIRootViewController</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>AppDelegate_iPad</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <reference key="dict.values" ref="0"/>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <reference key="dict.values" ref="0"/>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">197</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">AppDelegate_iPad</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>splitViewController</string>
+ <string>window</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>SkUISplitViewController</string>
+ <string>UIWindow</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>splitViewController</string>
+ <string>window</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBToOneOutletInfo">
+ <string key="name">splitViewController</string>
+ <string key="candidateClassName">SkUISplitViewController</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">window</string>
+ <string key="candidateClassName">UIWindow</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/AppDelegate_iPad.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkSampleUIView</string>
+ <string key="superclassName">SkUIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/SkSampleUIView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkUIDetailViewController</string>
+ <string key="superclassName">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/SkUIDetailViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkUIRootViewController</string>
+ <string key="superclassName">UITableViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/SkUIRootViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkUISplitViewController</string>
+ <string key="superclassName">UISplitViewController</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>fDetail</string>
+ <string>fRoot</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>SkUIDetailViewController</string>
+ <string>SkUIRootViewController</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>fDetail</string>
+ <string>fRoot</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fDetail</string>
+ <string key="candidateClassName">SkUIDetailViewController</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fRoot</string>
+ <string key="candidateClassName">SkUIRootViewController</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/SkUISplitViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkUIView</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/SkUIView.h</string>
+ </object>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
+ <real value="1296" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
+ <integer value="3100" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <string key="IBCocoaTouchPluginVersion">1498</string>
+ </data>
+</archive>
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/iPad/SkUISplitViewController.h b/chromium/third_party/skia/experimental/iOSSampleApp/iPad/SkUISplitViewController.h
new file mode 100644
index 00000000000..c333bed0358
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/iPad/SkUISplitViewController.h
@@ -0,0 +1,20 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#import <UIKit/UIKit.h>
+#import "SkUIRootViewController.h"
+#import "SkUIDetailViewController.h"
+
+@interface SkUISplitViewController : UISplitViewController <UITableViewDelegate, UISplitViewControllerDelegate> {
+@private
+ SkUIRootViewController* fRoot;
+ SkUIDetailViewController* fDetail;
+}
+@property (nonatomic, retain) IBOutlet SkUIRootViewController* fRoot;
+@property (nonatomic, retain) IBOutlet SkUIDetailViewController* fDetail;
+
+@end
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/iPad/SkUISplitViewController.mm b/chromium/third_party/skia/experimental/iOSSampleApp/iPad/SkUISplitViewController.mm
new file mode 100644
index 00000000000..ceb7356148f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/iPad/SkUISplitViewController.mm
@@ -0,0 +1,50 @@
+#import "SkUISplitViewController.h"
+
+@implementation SkUISplitViewController
+@synthesize fRoot, fDetail;
+
+- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
+ return YES; //Auto Rotation for all orientations
+}
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+ self.delegate = self;
+ [fDetail populateRoot:fRoot];
+}
+
+- (void)dealloc {
+ [fRoot release];
+ [fDetail release];
+ [super dealloc];
+}
+
+//Table View Delegate Methods
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+ [fDetail goToItem:indexPath.row];
+ if (fRoot.popoverController != nil) {
+ [fRoot.popoverController dismissPopoverAnimated:YES];
+ }
+}
+
+//Split View Controller Delegate
+- (void)splitViewController:(UISplitViewController*)svc
+ willHideViewController:(UIViewController *)aViewController
+ withBarButtonItem:(UIBarButtonItem*)barButtonItem
+ forPopoverController:(UIPopoverController*)pc {
+
+ barButtonItem.title = @"Samples";
+ fRoot.popoverController = pc;
+ fRoot.popoverButtonItem = barButtonItem;
+ [fDetail showRootPopoverButtonItem:fRoot.popoverButtonItem];
+}
+
+- (void)splitViewController:(UISplitViewController*)svc
+ willShowViewController:(UIViewController *)aViewController
+ invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem {
+ [fDetail invalidateRootPopoverButtonItem:fRoot.popoverButtonItem];
+ fRoot.popoverController = nil;
+ fRoot.popoverButtonItem = nil;
+}
+
+@end
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/iPhone/AppDelegate_iPhone.h b/chromium/third_party/skia/experimental/iOSSampleApp/iPhone/AppDelegate_iPhone.h
new file mode 100644
index 00000000000..e19b0bc15ca
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/iPhone/AppDelegate_iPhone.h
@@ -0,0 +1,19 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#import <UIKit/UIKit.h>
+#import "SkUINavigationController.h"
+
+@interface AppDelegate_iPhone : NSObject <UIApplicationDelegate> {
+@private
+ UIWindow *window;
+ SkUINavigationController* fRoot;
+}
+@property (nonatomic, retain) IBOutlet UIWindow *window;
+@property (nonatomic, retain) IBOutlet SkUINavigationController* fRoot;
+
+@end
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/iPhone/AppDelegate_iPhone.mm b/chromium/third_party/skia/experimental/iOSSampleApp/iPhone/AppDelegate_iPhone.mm
new file mode 100644
index 00000000000..1773ccaf7bd
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/iPhone/AppDelegate_iPhone.mm
@@ -0,0 +1,21 @@
+#import "AppDelegate_iPhone.h"
+
+@implementation AppDelegate_iPhone
+@synthesize window, fRoot;
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+ [window addSubview:fRoot.view];
+ [window makeKeyAndVisible];
+
+ self.window.rootViewController = fRoot;
+
+ return YES;
+}
+
+- (void)dealloc {
+ [window release];
+ [fRoot release];
+ [super dealloc];
+}
+
+@end
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/iPhone/MainWindow_iPhone.xib b/chromium/third_party/skia/experimental/iOSSampleApp/iPhone/MainWindow_iPhone.xib
new file mode 100644
index 00000000000..a27039026e6
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/iPhone/MainWindow_iPhone.xib
@@ -0,0 +1,831 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
+ <data>
+ <int key="IBDocument.SystemTarget">1056</int>
+ <string key="IBDocument.SystemVersion">10K540</string>
+ <string key="IBDocument.InterfaceBuilderVersion">851</string>
+ <string key="IBDocument.AppKitVersion">1038.36</string>
+ <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="NS.object.0">141</string>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="94"/>
+ <integer value="10"/>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBProxyObject" id="841351856">
+ <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBProxyObject" id="450319686">
+ <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBUICustomObject" id="987256611">
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBUIWindow" id="380026005">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">1316</int>
+ <object class="NSPSMatrix" key="NSFrameMatrix"/>
+ <string key="NSFrameSize">{320, 480}</string>
+ <object class="NSColor" key="IBUIBackgroundColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MSAxIDEAA</bytes>
+ </object>
+ <bool key="IBUIOpaque">NO</bool>
+ <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIResizesToFullScreen">YES</bool>
+ </object>
+ <object class="IBUINavigationController" id="490735104">
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics">
+ <int key="IBUIStatusBarStyle">2</int>
+ </object>
+ <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+ <int key="interfaceOrientation">1</int>
+ </object>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIHorizontal">NO</bool>
+ <object class="IBUINavigationBar" key="IBUINavigationBar" id="1017823495">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{0, 0}</string>
+ <bool key="IBUIOpaque">NO</bool>
+ <bool key="IBUIClipsSubviews">YES</bool>
+ <bool key="IBUIMultipleTouchEnabled">YES</bool>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <int key="IBUIBarStyle">1</int>
+ </object>
+ <object class="NSMutableArray" key="IBUIViewControllers">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBUIViewController" id="386778494">
+ <object class="IBUIView" key="IBUIView" id="456730278">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrameSize">{320, 416}</string>
+ <reference key="NSSuperview"/>
+ <object class="NSColor" key="IBUIBackgroundColor" id="535258798">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MQA</bytes>
+ </object>
+ <bool key="IBUIMultipleTouchEnabled">YES</bool>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <reference key="IBUIToolbarItems" ref="0"/>
+ <object class="IBUINavigationItem" key="IBUINavigationItem" id="694217933">
+ <reference key="IBUINavigationBar"/>
+ <string key="IBUITitle">Item</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <reference key="IBUIParentViewController" ref="490735104"/>
+ <object class="IBUISimulatedNavigationBarMetrics" key="IBUISimulatedTopBarMetrics" id="18577453">
+ <int key="IBUIBarStyle">1</int>
+ <bool key="IBUIPrompted">NO</bool>
+ </object>
+ <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+ <int key="interfaceOrientation">1</int>
+ </object>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIHorizontal">NO</bool>
+ </object>
+ </object>
+ </object>
+ <object class="IBUINavigationController" id="922975573">
+ <reference key="IBUISimulatedTopBarMetrics" ref="18577453"/>
+ <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+ <int key="interfaceOrientation">1</int>
+ </object>
+ <bool key="IBUIWantsFullScreenLayout">YES</bool>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIHorizontal">NO</bool>
+ <object class="IBUINavigationBar" key="IBUINavigationBar" id="499920774">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{0, -44}, {0, 44}}</string>
+ <bool key="IBUIOpaque">NO</bool>
+ <bool key="IBUIClipsSubviews">YES</bool>
+ <bool key="IBUIMultipleTouchEnabled">YES</bool>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <int key="IBUIBarStyle">1</int>
+ </object>
+ <object class="NSMutableArray" key="IBUIViewControllers">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBUITableViewController" id="711816508">
+ <object class="IBUITableView" key="IBUIView" id="301135056">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrameSize">{320, 436}</string>
+ <reference key="NSSuperview"/>
+ <reference key="IBUIBackgroundColor" ref="535258798"/>
+ <bool key="IBUIClipsSubviews">YES</bool>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIAlwaysBounceVertical">YES</bool>
+ <int key="IBUISeparatorStyle">1</int>
+ <int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
+ <bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
+ <float key="IBUIRowHeight">44</float>
+ <float key="IBUISectionHeaderHeight">22</float>
+ <float key="IBUISectionFooterHeight">22</float>
+ </object>
+ <object class="IBUINavigationItem" key="IBUINavigationItem" id="948852329">
+ <reference key="IBUINavigationBar"/>
+ <string key="IBUITitle">Samples</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <reference key="IBUIParentViewController" ref="922975573"/>
+ <object class="IBUISimulatedNavigationBarMetrics" key="IBUISimulatedTopBarMetrics">
+ <bool key="IBUIPrompted">NO</bool>
+ </object>
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
+ <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+ <int key="interfaceOrientation">1</int>
+ </object>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIHorizontal">NO</bool>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="841351856"/>
+ <reference key="destination" ref="987256611"/>
+ </object>
+ <int key="connectionID">5</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">window</string>
+ <reference key="source" ref="987256611"/>
+ <reference key="destination" ref="380026005"/>
+ </object>
+ <int key="connectionID">6</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">fDetail</string>
+ <reference key="source" ref="922975573"/>
+ <reference key="destination" ref="386778494"/>
+ </object>
+ <int key="connectionID">39</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">fRoot</string>
+ <reference key="source" ref="987256611"/>
+ <reference key="destination" ref="922975573"/>
+ </object>
+ <int key="connectionID">48</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">fRoot</string>
+ <reference key="source" ref="922975573"/>
+ <reference key="destination" ref="711816508"/>
+ </object>
+ <int key="connectionID">53</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">dataSource</string>
+ <reference key="source" ref="301135056"/>
+ <reference key="destination" ref="711816508"/>
+ </object>
+ <int key="connectionID">56</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="301135056"/>
+ <reference key="destination" ref="922975573"/>
+ </object>
+ <int key="connectionID">78</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <reference key="object" ref="0"/>
+ <reference key="children" ref="1000"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2</int>
+ <reference key="object" ref="380026005"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="841351856"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4</int>
+ <reference key="object" ref="987256611"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">App Delegate</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="450319686"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">10</int>
+ <reference key="object" ref="922975573"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="499920774"/>
+ <reference ref="711816508"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">12</int>
+ <reference key="object" ref="499920774"/>
+ <reference key="parent" ref="922975573"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">28</int>
+ <reference key="object" ref="711816508"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="301135056"/>
+ <reference ref="948852329"/>
+ </object>
+ <reference key="parent" ref="922975573"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">54</int>
+ <reference key="object" ref="301135056"/>
+ <reference key="parent" ref="711816508"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">83</int>
+ <reference key="object" ref="948852329"/>
+ <reference key="parent" ref="711816508"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">94</int>
+ <reference key="object" ref="490735104"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1017823495"/>
+ <reference ref="386778494"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">96</int>
+ <reference key="object" ref="1017823495"/>
+ <reference key="parent" ref="490735104"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">11</int>
+ <reference key="object" ref="386778494"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="456730278"/>
+ <reference ref="694217933"/>
+ </object>
+ <reference key="parent" ref="490735104"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">35</int>
+ <reference key="object" ref="456730278"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <reference key="parent" ref="386778494"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">98</int>
+ <reference key="object" ref="694217933"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <reference key="parent" ref="386778494"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-1.CustomClassName</string>
+ <string>-2.CustomClassName</string>
+ <string>10.CustomClassName</string>
+ <string>10.IBEditorWindowLastContentRect</string>
+ <string>10.IBPluginDependency</string>
+ <string>11.CustomClassName</string>
+ <string>11.IBEditorWindowLastContentRect</string>
+ <string>11.IBPluginDependency</string>
+ <string>12.IBPluginDependency</string>
+ <string>2.IBAttributePlaceholdersKey</string>
+ <string>2.IBEditorWindowLastContentRect</string>
+ <string>2.IBPluginDependency</string>
+ <string>2.UIWindow.visibleAtLaunch</string>
+ <string>28.CustomClassName</string>
+ <string>28.IBEditorWindowLastContentRect</string>
+ <string>28.IBPluginDependency</string>
+ <string>35.CustomClassName</string>
+ <string>35.IBPluginDependency</string>
+ <string>4.CustomClassName</string>
+ <string>4.IBPluginDependency</string>
+ <string>54.IBPluginDependency</string>
+ <string>54.IBViewBoundsToFrameTransform</string>
+ <string>83.IBPluginDependency</string>
+ <string>94.IBEditorWindowLastContentRect</string>
+ <string>94.IBPluginDependency</string>
+ <string>96.IBPluginDependency</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>UIApplication</string>
+ <string>UIResponder</string>
+ <string>SkUINavigationController</string>
+ <string>{{351, 526}, {320, 480}}</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>SkUIDetailViewController</string>
+ <string>{{445, 495}, {320, 480}}</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <object class="NSMutableDictionary">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <string>{{520, 376}, {320, 480}}</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <integer value="1"/>
+ <string>SkUIRootViewController</string>
+ <string>{{360, 1385}, {320, 480}}</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>SkSampleUIView</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>AppDelegate_iPhone</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <object class="NSAffineTransform">
+ <bytes key="NSTransformStruct">P4AAAL+AAAAAAAAAw9kAAA</bytes>
+ </object>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>{{1356, 526}, {320, 480}}</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">99</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">AppDelegate_iPhone</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>fRoot</string>
+ <string>window</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>SkUINavigationController</string>
+ <string>UIWindow</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>fRoot</string>
+ <string>window</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fRoot</string>
+ <string key="candidateClassName">SkUINavigationController</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">window</string>
+ <string key="candidateClassName">UIWindow</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">iPhone/AppDelegate_iPhone.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkSampleUIView</string>
+ <string key="superclassName">SkUIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">SkSampleUIView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkUIDetailViewController</string>
+ <string key="superclassName">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Shared/SkUIDetailViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkUINavigationController</string>
+ <string key="superclassName">UINavigationController</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>fDetail</string>
+ <string>fRoot</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>SkUIDetailViewController</string>
+ <string>SkUIRootViewController</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>fDetail</string>
+ <string>fRoot</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fDetail</string>
+ <string key="candidateClassName">SkUIDetailViewController</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fRoot</string>
+ <string key="candidateClassName">SkUIRootViewController</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">iPhone/SkUINavigationController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkUIRootViewController</string>
+ <string key="superclassName">UITableViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Shared/SkUIRootViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SkUIView</string>
+ <string key="superclassName">UIView</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">fOptionsDelegate</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <string key="NS.key.0">fOptionsDelegate</string>
+ <object class="IBToOneOutletInfo" key="NS.object.0">
+ <string key="name">fOptionsDelegate</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Shared/SkUIView.h</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="565734826">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIApplication</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIApplication.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIBarButtonItem</string>
+ <string key="superclassName">UIBarItem</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIBarButtonItem.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIBarItem</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIBarItem.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UINavigationBar</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="443745583">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINavigationBar.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UINavigationController</string>
+ <string key="superclassName">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="868507592">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UINavigationItem</string>
+ <string key="superclassName">NSObject</string>
+ <reference key="sourceIdentifier" ref="443745583"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIResponder</string>
+ <string key="superclassName">NSObject</string>
+ <reference key="sourceIdentifier" ref="565734826"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIScrollView</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UISearchBar</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UISearchDisplayController</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UITableView</string>
+ <string key="superclassName">UIScrollView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITableView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UITableViewController</string>
+ <string key="superclassName">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITableViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <reference key="sourceIdentifier" ref="868507592"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIWindow</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIWindow.h</string>
+ </object>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
+ <integer value="1056" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
+ <integer value="3100" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <string key="IBDocument.LastKnownRelativeProjectPath">../iOSSampleApp.xcodeproj</string>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <string key="IBCocoaTouchPluginVersion">141</string>
+ </data>
+</archive>
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/iPhone/SkUINavigationController.h b/chromium/third_party/skia/experimental/iOSSampleApp/iPhone/SkUINavigationController.h
new file mode 100644
index 00000000000..1078a339d6d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/iPhone/SkUINavigationController.h
@@ -0,0 +1,20 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#import <UIKit/UIKit.h>
+#import "SkUIRootViewController.h"
+#import "SkUIDetailViewController.h"
+
+@interface SkUINavigationController : UINavigationController <UITableViewDelegate, UINavigationBarDelegate> {
+@private
+ SkUIRootViewController* fRoot;
+ SkUIDetailViewController* fDetail;
+}
+@property (nonatomic, retain) IBOutlet SkUIRootViewController* fRoot;
+@property (nonatomic, retain) IBOutlet SkUIDetailViewController* fDetail;
+
+@end
diff --git a/chromium/third_party/skia/experimental/iOSSampleApp/iPhone/SkUINavigationController.mm b/chromium/third_party/skia/experimental/iOSSampleApp/iPhone/SkUINavigationController.mm
new file mode 100644
index 00000000000..b430560ba7e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/iOSSampleApp/iPhone/SkUINavigationController.mm
@@ -0,0 +1,28 @@
+#import "SkUINavigationController.h"
+
+@implementation SkUINavigationController
+@synthesize fRoot, fDetail;
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+ [fDetail populateRoot:fRoot];
+ [self pushViewController:fDetail animated:NO];
+}
+
+- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
+ return YES; //Allow auto rotation for all orientations
+}
+
+- (void)dealloc {
+ [fRoot release];
+ [fDetail release];
+ [super dealloc];
+}
+
+//Table View Delegate Methods
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+ [fDetail goToItem:indexPath.row];
+ [self pushViewController:fDetail animated:YES];
+}
+
+@end \ No newline at end of file
diff --git a/chromium/third_party/skia/experimental/nanomsg/picture_demo.cpp b/chromium/third_party/skia/experimental/nanomsg/picture_demo.cpp
new file mode 100644
index 00000000000..5a3ebdc8167
--- /dev/null
+++ b/chromium/third_party/skia/experimental/nanomsg/picture_demo.cpp
@@ -0,0 +1,207 @@
+#include "nanomsg/src/nn.h"
+#include "nanomsg/src/pipeline.h"
+#include "nanomsg/src/reqrep.h"
+
+#include "SkCanvas.h"
+#include "SkCommandLineFlags.h"
+#include "SkData.h"
+#include "SkForceLinking.h"
+#include "SkGraphics.h"
+#include "SkImageEncoder.h"
+#include "SkOSFile.h"
+#include "SkPicture.h"
+#include "SkRandom.h"
+#include "SkStream.h"
+
+__SK_FORCE_IMAGE_DECODER_LINKING;
+
+// To keep things simple, PictureHeader is fixed-size POD.
+struct PictureHeader {
+ SkMatrix matrix;
+ SkRect clip;
+ SkXfermode::Mode xfermode;
+ pid_t pid;
+ uint8_t alpha;
+
+ PictureHeader()
+ : matrix(SkMatrix::I())
+ , clip(SkRect::MakeLargest())
+ , xfermode(SkXfermode::kSrcOver_Mode)
+ , pid(getpid())
+ , alpha(0xFF) {}
+};
+
+// A little adaptor: nn_iovec wants a non-const pointer for no obvious reason.
+static struct nn_iovec create_iov(const void* ptr, size_t size) {
+ struct nn_iovec iov = { const_cast<void*>(ptr), size };
+ return iov;
+}
+
+static void send_picture(int socket, const PictureHeader& header, const SkData& skp) {
+ // Vectored IO lets us send header and skp contiguously without first
+ // copying them to a contiguous buffer.
+ struct nn_iovec iov[] = {
+ create_iov(&header, sizeof(header)),
+ create_iov(skp.data(), skp.size()),
+ };
+
+ struct nn_msghdr msg;
+ sk_bzero(&msg, sizeof(msg));
+ msg.msg_iov = iov;
+ msg.msg_iovlen = SK_ARRAY_COUNT(iov);
+
+ nn_sendmsg(socket, &msg, 0/*flags*/);
+}
+
+static SkPicture* recv_picture(int socket, PictureHeader* header) {
+ static const size_t hSize = sizeof(*header); // It's easy to slip up and use sizeof(header).
+
+ void* msg;
+ int size = nn_recv(socket, &msg, NN_MSG, 0/*flags*/);
+ SkDebugf("%d bytes", size);
+
+ // msg is first a fixed-size header, then an .skp.
+ memcpy(header, msg, hSize);
+ SkMemoryStream stream((uint8_t*)msg + hSize, size - hSize);
+ SkPicture* pic = SkPicture::CreateFromStream(&stream);
+
+ SkDebugf(" from proccess %d:", header->pid);
+
+ nn_freemsg(msg);
+ return pic;
+}
+
+static void client(const char* skpPath, const char* dataEndpoint) {
+ // Read the .skp.
+ SkAutoTUnref<const SkData> skp(SkData::NewFromFileName(skpPath));
+ if (!skp) {
+ SkDebugf("Couldn't read %s\n", skpPath);
+ exit(1);
+ }
+ SkMemoryStream stream(skp->data(), skp->size());
+ SkAutoTUnref<SkPicture> picture(SkPicture::CreateFromStream(&stream));
+
+ PictureHeader header;
+ SkRandom rand(picture->width() * picture->height());
+ SkScalar r = rand.nextRangeScalar(0, picture->width()),
+ b = rand.nextRangeScalar(0, picture->height()),
+ l = rand.nextRangeScalar(0, r),
+ t = rand.nextRangeScalar(0, b);
+ header.clip.setLTRB(l,t,r,b);
+ header.matrix.setTranslate(-l, -t);
+ header.matrix.postRotate(rand.nextRangeScalar(-25, 25));
+ header.alpha = 0x7F;
+
+ //Clients use NN_REQ (request) type sockets.
+ int socket = nn_socket(AF_SP, NN_REQ);
+
+ // Clients connect a socket to an endpoint.
+ nn_connect(socket, dataEndpoint);
+
+ // Send the picture and its header.
+ SkDebugf("Sending %s (%d bytes)...", skpPath, skp->size());
+ send_picture(socket, header, *skp);
+
+ // Wait for ack.
+ uint8_t ack;
+ nn_recv(socket, &ack, sizeof(ack), 0/*flags*/);
+ SkDebugf(" ok.\n");
+}
+
+// Wait until socketA or socketB has something to tell us, and return which one.
+static int poll_in(int socketA, int socketB) {
+ struct nn_pollfd polls[] = {
+ { socketA, NN_POLLIN, 0 },
+ { socketB, NN_POLLIN, 0 },
+ };
+
+ nn_poll(polls, SK_ARRAY_COUNT(polls), -1/*no timeout*/);
+
+ if (polls[0].revents & NN_POLLIN) { return socketA; }
+ if (polls[1].revents & NN_POLLIN) { return socketB; }
+
+ SkFAIL("unreachable");
+ return 0;
+}
+
+static void server(const char* dataEndpoint, const char* controlEndpoint, SkCanvas* canvas) {
+ // NN_REP sockets receive a request then make a reply. NN_PULL sockets just receive a request.
+ int data = nn_socket(AF_SP, NN_REP);
+ int control = nn_socket(AF_SP, NN_PULL);
+
+ // Servers bind a socket to an endpoint.
+ nn_bind(data, dataEndpoint);
+ nn_bind(control, controlEndpoint);
+
+ while (true) {
+ int ready = poll_in(data, control);
+
+ // If we got any message on the control socket, we can stop.
+ if (ready == control) {
+ break;
+ }
+
+ // We should have an .skp waiting for us on data socket.
+ PictureHeader header;
+ SkAutoTUnref<SkPicture> picture(recv_picture(data, &header));
+
+ SkPaint paint;
+ paint.setAlpha(header.alpha);
+ paint.setXfermodeMode(header.xfermode);
+
+ canvas->saveLayer(NULL, &paint);
+ canvas->concat(header.matrix);
+ canvas->clipRect(header.clip);
+ picture->draw(canvas);
+ canvas->restore();
+ SkDebugf(" drew");
+
+ // Send back an ack.
+ uint8_t ack = 42;
+ nn_send(data, &ack, sizeof(ack), 0/*flags*/);
+ SkDebugf(" and acked.\n");
+ }
+}
+
+static void stop(const char* controlEndpoint) {
+ // An NN_PUSH socket can send messages but not receive them.
+ int control = nn_socket(AF_SP, NN_PUSH);
+ nn_connect(control, controlEndpoint);
+
+ // Sending anything (including this 0-byte message) will tell server() to stop.
+ nn_send(control, NULL, 0, 0/*flags*/);
+}
+
+DEFINE_string2(skp, r, "", ".skp to send (as client)");
+DEFINE_string2(png, w, "", ".png to write (as server)");
+DEFINE_bool(stop, false, "If true, tell server to stop and write its canvas out as a .png.");
+DEFINE_string(data, "ipc://nanomsg-picture-data", "Endpoint for sending pictures.");
+DEFINE_string(control, "ipc://nanomsg-picture-control", "Endpoint for control channel.");
+
+int main(int argc, char** argv) {
+ SkAutoGraphics ag;
+ SkCommandLineFlags::Parse(argc, argv);
+
+ if (FLAGS_stop) {
+ stop(FLAGS_control[0]);
+ }
+
+ if (!FLAGS_skp.isEmpty()) {
+ client(FLAGS_skp[0], FLAGS_data[0]);
+ }
+
+ if (!FLAGS_png.isEmpty()) {
+ SkBitmap bitmap;
+ bitmap.allocN32Pixels(1000, 1000);
+ SkCanvas canvas(bitmap);
+ canvas.clear(0xFFFFFFFF);
+
+ server(FLAGS_data[0], FLAGS_control[0], &canvas);
+ canvas.flush();
+
+ SkImageEncoder::EncodeFile(FLAGS_png[0], bitmap, SkImageEncoder::kPNG_Type, 100);
+ SkDebugf("Wrote %s.\n", FLAGS_png[0]);
+ }
+
+ return 0;
+}
diff --git a/chromium/third_party/skia/experimental/pixman/Pixman-version.h b/chromium/third_party/skia/experimental/pixman/Pixman-version.h
new file mode 100644
index 00000000000..1e3543afa36
--- /dev/null
+++ b/chromium/third_party/skia/experimental/pixman/Pixman-version.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright © 2008 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author: Carl D. Worth <cworth@cworth.org>
+ */
+
+#ifndef PIXMAN_VERSION_H__
+#define PIXMAN_VERSION_H__
+
+#ifndef PIXMAN_H__
+# error pixman-version.h should only be included by pixman.h
+#endif
+
+#define PIXMAN_VERSION_MAJOR 0
+#define PIXMAN_VERSION_MINOR 27
+#define PIXMAN_VERSION_MICRO 33
+
+#define PIXMAN_VERSION_STRING "@PIXMAN_VERSION_MAJOR@.@PIXMAN_VERSION_MINOR@.@PIXMAN_VERSION_MICRO@"
+
+#define PIXMAN_VERSION_ENCODE(major, minor, micro) ( \
+ ((major) * 10000) \
+ + ((minor) * 100) \
+ + ((micro) * 1))
+
+#define PIXMAN_VERSION PIXMAN_VERSION_ENCODE( \
+ PIXMAN_VERSION_MAJOR, \
+ PIXMAN_VERSION_MINOR, \
+ PIXMAN_VERSION_MICRO)
+
+#endif /* PIXMAN_VERSION_H__ */
diff --git a/chromium/third_party/skia/experimental/pixman/config.h b/chromium/third_party/skia/experimental/pixman/config.h
new file mode 100644
index 00000000000..4546edc11c3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/pixman/config.h
@@ -0,0 +1,3 @@
+#define PACKAGE
+#define HAVE_PTHREAD_SETSPECIFIC
+#define PREFIX(a) a
diff --git a/chromium/third_party/skia/experimental/pixman/junk.cpp b/chromium/third_party/skia/experimental/pixman/junk.cpp
new file mode 100644
index 00000000000..f85a442e9a4
--- /dev/null
+++ b/chromium/third_party/skia/experimental/pixman/junk.cpp
@@ -0,0 +1,108 @@
+
+extern "C" {
+#include <stdio.h>
+#include <stdlib.h>
+#include <config.h>
+#include "pixman-private.h"
+#include "utils.h"
+#include "gtk-utils.h"
+
+}
+
+#include "SkBitmap.h"
+#include "SkCanvas.h"
+#include "SkGraphics.h"
+#include "SkPaint.h"
+#import "SkWindow.h"
+
+bool DrawPixman(SkCanvas* canvas, int step, bool useOld);
+SkCanvas* canvas;
+
+extern "C" {
+
+void*
+pixbuf_from_argb32 (uint32_t *bits,
+ int width,
+ int height,
+ int stride)
+{
+ SkBitmap* bitmap = new SkBitmap;
+ bitmap->setConfig(SkBitmap::kARGB_8888_Config, width, height);
+ bitmap->allocPixels();
+
+ int p_stride = bitmap->rowBytes();
+ uint32_t *p_bits = bitmap->getAddr32(0, 0);
+ int i;
+
+ for (i = 0; i < height; ++i)
+ {
+ uint32_t *src_row = &bits[i * (stride / 4)];
+ uint32_t *dst_row = p_bits + i * (p_stride / 4);
+
+ a8r8g8b8_to_rgba_np (dst_row, src_row, width);
+ }
+ return (void*) bitmap;
+}
+
+
+void show_image (pixman_image_t *image) {
+ int width, height;
+ pixman_format_code_t format;
+ pixman_image_t *copy;
+
+ width = pixman_image_get_width (image);
+ height = pixman_image_get_height (image);
+
+
+ format = pixman_image_get_format (image);
+
+ /* Three cases:
+ *
+ * - image is a8r8g8b8_sRGB: we will display without modification
+ * under the assumption that the monitor is sRGB
+ *
+ * - image is a8r8g8b8: we will display without modification
+ * under the assumption that whoever created the image
+ * probably did it wrong by using sRGB inputs
+ *
+ * - other: we will convert to a8r8g8b8 under the assumption that
+ * whoever created the image probably did it wrong.
+ */
+ switch (format)
+ {
+ case PIXMAN_a8r8g8b8_sRGB:
+ case PIXMAN_a8r8g8b8:
+ copy = pixman_image_ref (image);
+ break;
+
+ default:
+ copy = pixman_image_create_bits (PIXMAN_a8r8g8b8,
+ width, height, NULL, -1);
+ pixman_image_composite32 (PIXMAN_OP_SRC,
+ image, NULL, copy,
+ 0, 0, 0, 0, 0, 0,
+ width, height);
+ break;
+ }
+
+ SkBitmap* bitmap = (SkBitmap*) pixbuf_from_argb32 (pixman_image_get_data (copy),
+ width, height,
+ pixman_image_get_stride (copy));
+ canvas->drawBitmap(*bitmap, 0, 0);
+ delete bitmap;
+}
+
+}
+
+bool DrawPixman(SkCanvas* c, int step, bool usePixman) {
+ canvas = c;
+ switch(step) {
+ case 0:
+ checkerboard_main(0, NULL);
+ break;
+ default:
+ alpha_main(0, NULL);
+ break;
+ }
+ return true;
+}
diff --git a/chromium/third_party/skia/experimental/pixman/pixman.mm b/chromium/third_party/skia/experimental/pixman/pixman.mm
new file mode 100644
index 00000000000..f4db3df7b2f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/pixman/pixman.mm
@@ -0,0 +1,99 @@
+
+#import "SkCanvas.h"
+#import "SkWindow.h"
+#include "SkGraphics.h"
+#include "SkCGUtils.h"
+
+#include <time.h>
+#include <sys/time.h>
+
+bool DrawPixman(SkCanvas* canvas, int step, bool usePixman);
+
+class SkPixmanView : public SkView {
+public:
+ SkPixmanView() {
+ this->setVisibleP(true);
+ this->setClipToBounds(false);
+ usePixman = true;
+ slide = 0;
+ step = -1;
+ };
+protected:
+ virtual void onDraw(SkCanvas* canvas) {
+ static int step = 0; // 12752; // 17908 ; // 17904; // drawLetters first error
+ // drawStars triggers error at 23275
+ // error is not easy to debug in its current state
+ static double seconds;
+ if (step == -1) {
+ timeval t;
+ gettimeofday(&t, NULL);
+ seconds = t.tv_sec+t.tv_usec/1000000.0;
+ step = 0;
+ }
+ canvas->drawColor(SK_ColorWHITE);
+ if (DrawPixman(canvas, slide, usePixman)) {
+ if (step == 100) {
+ timeval t;
+ gettimeofday(&t, NULL);
+ double last = seconds;
+ seconds = t.tv_sec+t.tv_usec/1000000.0;
+ SkDebugf("usePixman=%d seconds=%g\n", usePixman, seconds - last);
+ step = 0;
+ }
+ inval(NULL);
+ }
+ }
+
+ virtual Click* onFindClickHandler(SkScalar , SkScalar ) {
+ // usePixman ^= true;
+ ++slide;
+ return NULL;
+ }
+
+private:
+ bool usePixman;
+ int slide;
+ int step;
+ typedef SkView INHERITED;
+};
+
+void application_init();
+void application_term();
+
+void application_init() {
+ SkGraphics::Init();
+ SkEvent::Init();
+}
+
+void application_term() {
+ SkGraphics::Term();
+ SkEvent::Term();
+}
+
+class FillLayout : public SkView::Layout {
+protected:
+ virtual void onLayoutChildren(SkView* parent) {
+ SkView* view = SkView::F2BIter(parent).next();
+ view->setSize(parent->width(), parent->height());
+ }
+};
+
+#import "SimpleApp.h"
+
+@implementation SimpleNSView
+
+- (id)initWithDefaults {
+ if ((self = [super initWithDefaults])) {
+ fWind = new SkOSWindow(self);
+ fWind->setLayout(new FillLayout, false);
+ fWind->attachChildToFront(new SkPixmanView)->unref();
+ }
+ return self;
+}
+
+- (void)drawRect:(NSRect)dirtyRect {
+ CGContextRef ctx = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
+ SkCGDrawBitmap(ctx, fWind->getBitmap(), 0, 0);
+}
+
+@end
diff --git a/chromium/third_party/skia/experimental/webtry/DESIGN.md b/chromium/third_party/skia/experimental/webtry/DESIGN.md
new file mode 100644
index 00000000000..a179c04713b
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/DESIGN.md
@@ -0,0 +1,282 @@
+Design
+======
+
+
+Overview
+--------
+Allows trying out Skia code in the browser.
+
+
+Security
+--------
+
+We're putting a C++ compiler on the web, and promising to run the results of
+user submitted code, so security is a large concern. Security is handled in a
+layered approach, using a combination of seccomp-bpf, chroot jail and rlimits.
+
+*seccomp-bpf* - Used to limit the types of system calls that the user code can
+make. Any attempts to make a system call that isn't allowed causes the
+application to terminate immediately.
+
+*chroot jail* - The code is run in a chroot jail, making the rest of the
+operating system files unreachable from the running code.
+
+*rlimits* - Used to limit the resources the running code can get access to,
+for example runtime is limited to 5s of CPU.
+
+User submitted code is also restricted in the following ways:
+ * Limited to 10K of code total.
+ * No preprocessor use is allowed (no lines can begin with #includes).
+
+
+Architecture
+------------
+
+The server runs on GCE, and consists of a Go Web Server that calls out to the
+c++ compiler and executes code in a chroot jail. See the diagram below:
+
+    +–––––––––––––+
+    |             |
+    |  Browser    |
+    |             |
+    +––––––+––––––+
+           |
+    +––––––+––––––+
+    |             |
+    |             |
+    | Web Server  |
+    |             |
+    |   (Go)      |
+    |             |
+    |             |
+    +–––––––+–––––+
+            |
+    +–––––––+––––––––––+
+    | chroot jail      |
+    |  +––––––––––––––+|
+    |  | seccomp      ||
+    |  |  +––––––––––+||
+    |  |  |User code |||
+    |  |  |          |||
+    |  |  +––––––––––+||
+    |  +––––––––––––––+|
+    |                  |
+    +––––––––––––––––––+
+
+The user code is expanded into a simple template and linked against libskia
+and a couple other .o files that contain main() and the code that sets up the
+seccomp and rlimit restrictions. This code also sets up the SkCanvas that is
+handed to the user code. Any code the user submits is restricted to running in
+a single function that looks like this:
+
+
+ void draw(SkCanvas* canvas) {
+ // User code goes here.
+ }
+
+The user code is tracked by taking an MD5 hash of the code The template is
+expanded out into <hash>.cpp, which is compiled into <hash>.o, which is then
+linked together with all the other libs and object files to create an
+executable named <hash>. That executable is copied into a directory
+/home/webtry/inout, that is accessible to both the web server and the schroot
+jail. The application is then run in the schroot jail, writing its response,
+<hash>.png, out into the same directory, /home/webtry/inout/, where is it read
+by the web server and returned to the user.
+
+Startup and config
+------------------
+The server is started and stopped via:
+
+ sudo /etc/init.d/webtry [start|stop|restart]
+
+By sysv init only handles starting and stopping a program once, so we use
+Monit to monitor the application and restart it if it crashes. The config
+is in:
+
+ /etc/monit/conf.d/webtry
+
+The chroot jail is implemented using schroot, its configuration
+file is found in:
+
+ /etc/schroot/chroot.d/webtry
+
+The seccomp configuration is in main.cpp and only allows the following system
+calls:
+
+ exit_group
+ exit
+ fstat
+ read
+ write
+ close
+ mmap
+ munmap
+ brk
+
+Database
+--------
+
+Code submitted is stored in an SQL database so that it can be referenced
+later, i.e. we can let users bookmark their SkFiddles.
+
+The storage layer will be Cloud SQL (a cloud version of MySQL). Back of the
+envelope estimates of traffic come out to a price of a about $1/month.
+
+All passwords for MySQL are stored in valentine.
+
+To connect to the database from the skia-webtry-b server:
+
+ $ mysql --host=173.194.83.52 --user=root --password
+
+Initial setup of the database, the user, and the only table:
+
+ CREATE DATABASE webtry;
+ USE webtry;
+ CREATE USER 'webtry'@'%' IDENTIFIED BY '<password is in valentine>';
+ GRANT SELECT, INSERT, UPDATE ON webtry.webtry TO 'webtry'@'%';
+ GRANT SELECT, INSERT, UPDATE ON webtry.workspace TO 'webtry'@'%';
+ GRANT SELECT, INSERT, UPDATE ON webtry.workspacetry TO 'webtry'@'%';
+ GRANT SELECT, INSERT, UPDATE ON webtry.source_images TO 'webtry'@'%';
+
+ // If this gets changed also update the sqlite create statement in webtry.go.
+
+ CREATE TABLE webtry (
+ code TEXT DEFAULT '' NOT NULL,
+ create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
+ hash CHAR(64) DEFAULT '' NOT NULL,
+ source_image_id INTEGER DEFAULT 0 NOT NULL,
+ PRIMARY KEY(hash),
+
+ FOREIGN KEY (source) REFERENCES sources(id)
+ );
+
+ CREATE TABLE workspace (
+ name CHAR(64) DEFAULT '' NOT NULL,
+ create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
+ PRIMARY KEY(name),
+ );
+
+ CREATE TABLE workspacetry (
+ name CHAR(64) DEFAULT '' NOT NULL,
+ create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
+ hash CHAR(64) DEFAULT '' NOT NULL,
+ source_image_id INTEGER DEFAULT 0 NOT NULL,
+ hidden INTEGER DEFAULT 0 NOT NULL,
+
+ FOREIGN KEY (name) REFERENCES workspace(name),
+ );
+
+ CREATE TABLE source_images (
+ id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT,
+ image MEDIUMBLOB DEFAULT '' NOT NULL, -- Stored as PNG.
+ width INTEGER DEFAULT 0 NOT NULL,
+ height INTEGER DEFAULT 0 NOT NULL,
+ create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
+ hidden INTEGER DEFAULT 0 NOT NULL
+ );
+
+ ALTER TABLE webtry ADD COLUMN source_image_id INTEGER DEFAULT 0 NOT NULL AFTER hash;
+ ALTER TABLE workspacetry ADD COLUMN source_image_id INTEGER DEFAULT 0 NOT NULL AFTER hash;
+
+Common queries webtry.go will use:
+
+ INSERT INTO webtry (code, hash) VALUES('int i = 0;...', 'abcdef...');
+
+ SELECT code, create_ts, hash FROM webtry WHERE hash='abcdef...';
+
+ SELECT code, create_ts, hash FROM webtry ORDER BY create_ts DESC LIMIT 2;
+
+ // To change the password for the webtry sql client:
+ SET PASSWORD for 'webtry'@'%' = PASSWORD('<password is in valentine>');
+
+ // Run before and after to confirm the password changed:
+ SELECT Host, User, Password FROM mysql.user;
+
+Common queries for workspaces:
+
+ SELECT hash, create_ts FROM workspace ORDER BY create_ts DESC;
+
+ INSERT INTO workspace (name, hash) VALUES('autumn-river-12354', 'abcdef...');
+
+ SELECT name FROM workspace GROUP BY name;
+
+Common queries for sources:
+
+ SELECT id, image, width, height, create_ts FROM source_images ORDER BY create_ts DESC LIMIT 100;
+
+Password for the database will be stored in the metadata instance, if the
+metadata server can't be found, i.e. running locally, then a local sqlite
+database will be used. To see the current password stored in metadata and the
+fingerprint:
+
+ gcutil --project=google.com:skia-buildbots getinstance skia-webtry-b
+
+To set the mysql password that webtry is to use:
+
+ gcutil --project=google.com:skia-buildbots setinstancemetadata skia-webtry-b --metadata=password:'[mysql client webtry password]' --fingerprint=[some fingerprint]
+
+To retrieve the password from the running instance just GET the right URL from
+the metadata server:
+
+ curl "http://metadata/computeMetadata/v1/instance/attributes/password" -H "X-Google-Metadata-Request: True"
+
+N.B. If you need to change the MySQL password that webtry uses, you must change
+it both in MySQL and the value stored in the metadata server.
+
+Source Images
+-------------
+
+For every try the user can select an optional source image to use as an input.
+The id of the source image is just an integer and is stored in the database
+along with the other try information, such as the code.
+
+The actual image itself is also stored in a separate table, 'sources', in the
+database. On startup we check that all the images are available in 'inout',
+and write out the images if not. Since they are all written to 'inout' we can
+use the same /i/ image handler to serve them.
+
+When a user uploads an image it is decoded and converted to PNG and stored
+as a binary blob in the database.
+
+The bitmap is available to user code as a module level variable:
+
+ SkBitmap source;
+
+The bitmap is read, decoded and stored in source before the seccomp jail is
+instantiated.
+
+
+Squid
+-----
+
+Squid is configured to run on port 80 and run as an accelerator for the actual
+Go program which is running on port 8000. The config for the squid proxy is
+held in sys/webtry_squid, which is copied into place during installation and
+squid is kept running via monit.
+
+Workspaces
+----------
+
+Workspaces are implemented by the workspace and workspacetry tables. The
+workspace table keeps the unique list of all workspaces. The workspacetry table
+keeps track of all the tries that have occured in a workspace. Right now the
+hidden column of workspacetry is not used, it's for future functionality.
+
+Code Editor
+-----------
+[CodeMirror](http://codemirror.net/) is used for rich code editing. The
+following files are included from the official CodeMirror distribution and can
+be updated in place (no local customizations):
+
+ * codemirror.js - base CM implementation
+ * codemirror.css - base CM stylesheet
+ * clike.js - C-like syntax highlighting support
+
+Alternatively, we may consider pulling CM as an external dependency at some
+point.
+
+Installation
+------------
+See the README file.
+
+
diff --git a/chromium/third_party/skia/experimental/webtry/README.md b/chromium/third_party/skia/experimental/webtry/README.md
new file mode 100644
index 00000000000..cba5388dfe8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/README.md
@@ -0,0 +1,94 @@
+WebTry
+======
+
+Allows trying out Skia code in the browser. Run a local webserver
+and from the pages it serves try out Skia code and see the results
+immediately. To make sandboxing easier this must be built w/GPU off.
+
+Running Locally
+===============
+
+ $ GYP_GENERATORS=ninja ./gyp_skia gyp/webtry.gyp gyp/most.gyp -Dskia_gpu=0
+ $ ninja -C out/Debug webtry
+ $ cd experimental/webtry
+ $ go build webtry.go
+ $ ./webtry
+
+Then visit http://localhost:8000 in your browser.
+
+Only tested under linux, doubtful it will work on other platforms.
+
+Full Server Setup
+=================
+
+Create a GCE instance:
+
+ gcutil --project=google.com:skia-buildbots addinstance skia-webtry-b \
+ --zone=us-central2-b --external_ip_address=108.170.220.126 \
+ --service_account=default \
+ --service_account_scopes="https://www.googleapis.com/auth/devstorage.full_control" \
+ --network=default --machine_type=n1-standard-1 --image=backports-debian-7-wheezy-v20140331 \
+ --persistent_boot_disk
+
+Make sure port 80 is accessible externally for the above instance.
+
+SSH into the instance:
+
+ gcutil --project=google.com:skia-buildbots ssh --ssh_user=default skia-webtry-b
+
+
+Do once
+-------
+
+The following things only need to be done once
+
+1. sudo apt-get install git schroot debootstrap
+2. git clone https://skia.googlesource.com/skia
+3. Add the following to /etc/fstab and reboot:
+
+ none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0
+
+The above will allow ninja to run. See http://stackoverflow.com/questions/2009278/python-multiprocessing-permission-denied
+
+4. Add the following to the /etc/schroot/minimal/fstab:
+
+ /home/webtry/inout /inout none rw,bind 0 0
+
+5. Change /etc/monit/monitrc to:
+
+ set daemon 2
+
+then run the following so it applies:
+
+ sudo /etc/init.d/monit restart
+
+This means that monit will poll every two seconds that our application is up and running.
+
+6. Set the TCP keepalive. For more info see:
+ https://developers.google.com/cloud-sql/docs/gce-access
+
+ sudo bash -c 'echo 60 > /proc/sys/net/ipv4/tcp_keepalive_time'
+
+Do the first time
+-----------------
+
+Do the following the first time you setup a machine, and each time you want to update the code running on the server
+
+ cd ~/skia/experimental/webtry/setup
+ ./webtry_setup.sh
+
+
+Once, after setup
+-----------------
+
+Do this step only once, but only after running webtry_setup.sh the first time
+
+ sudo debootstrap --variant=minbase wheezy /srv/chroot/webtry
+
+
+Third Party Code
+----------------
+
+ * res/js/polyfill.js - Various JS polyfill libraries. To rebuild or update
+ see polyfill/README.md.
+
diff --git a/chromium/third_party/skia/experimental/webtry/TODO.md b/chromium/third_party/skia/experimental/webtry/TODO.md
new file mode 100644
index 00000000000..b42149a5d90
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/TODO.md
@@ -0,0 +1,16 @@
+Public facing feature requests
+------------------------------
+ - ability to render against multiple targets (gpu/cpu)
+ - versioning (which version of skia was this run against)
+ - magnifying glass (both client side and server side)
+ - specify scale, rotate, clip (possibly animating over a range)
+ - change canvas size from 300x300 to other sizes
+
+
+Implementation details
+----------------------
+ - Add flag for inout directory to webtry.go.
+ - In webtry.go add mutexes per hash, to avoid conflicts of writing the same file at the same time.
+ - Add font support in the c++ template.
+ - Add inline links to doxygen.
+ - Add monitoring and probing (nagios).
diff --git a/chromium/third_party/skia/experimental/webtry/main.cpp b/chromium/third_party/skia/experimental/webtry/main.cpp
new file mode 100644
index 00000000000..44f8aab70f4
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/main.cpp
@@ -0,0 +1,126 @@
+#include <sys/time.h>
+#include <sys/resource.h>
+
+#include "SkCanvas.h"
+#include "SkCommandLineFlags.h"
+#include "SkData.h"
+#include "SkForceLinking.h"
+#include "SkGraphics.h"
+#include "SkImageDecoder.h"
+#include "SkImageEncoder.h"
+#include "SkImageInfo.h"
+#include "SkStream.h"
+#include "SkSurface.h"
+
+#include "seccomp_bpf.h"
+
+__SK_FORCE_IMAGE_DECODER_LINKING;
+
+DEFINE_string(out, "", "Filename of the PNG to write to.");
+DEFINE_string(source, "", "Filename of the source image.");
+
+// Defined in template.cpp.
+extern SkBitmap source;
+
+static bool install_syscall_filter() {
+ struct sock_filter filter[] = {
+ /* Grab the system call number. */
+ EXAMINE_SYSCALL,
+ /* List allowed syscalls. */
+ ALLOW_SYSCALL(exit_group),
+ ALLOW_SYSCALL(exit),
+ ALLOW_SYSCALL(fstat),
+ ALLOW_SYSCALL(read),
+ ALLOW_SYSCALL(write),
+ ALLOW_SYSCALL(close),
+ ALLOW_SYSCALL(mmap),
+ ALLOW_SYSCALL(munmap),
+ ALLOW_SYSCALL(brk),
+ KILL_PROCESS,
+ };
+ struct sock_fprog prog = {
+ SK_ARRAY_COUNT(filter),
+ filter,
+ };
+
+ // Lock down the app so that it can't get new privs, such as setuid.
+ // Calling this is a requirement for an unpriviledged process to use mode
+ // 2 seccomp filters, ala SECCOMP_MODE_FILTER, otherwise we'd have to be
+ // root.
+ if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) {
+ perror("prctl(NO_NEW_PRIVS)");
+ goto failed;
+ }
+ // Now call seccomp and restrict the system calls that can be made to only
+ // the ones in the provided filter list.
+ if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &prog)) {
+ perror("prctl(SECCOMP)");
+ goto failed;
+ }
+ return true;
+
+failed:
+ if (errno == EINVAL) {
+ fprintf(stderr, "SECCOMP_FILTER is not available. :(\n");
+ }
+ return false;
+}
+
+static void setLimits() {
+ struct rlimit n;
+
+ // Limit to 5 seconds of CPU.
+ n.rlim_cur = 5;
+ n.rlim_max = 5;
+ if (setrlimit(RLIMIT_CPU, &n)) {
+ perror("setrlimit(RLIMIT_CPU)");
+ }
+
+ // Limit to 50M of Address space.
+ n.rlim_cur = 50000000;
+ n.rlim_max = 50000000;
+ if (setrlimit(RLIMIT_AS, &n)) {
+ perror("setrlimit(RLIMIT_CPU)");
+ }
+}
+
+extern void draw(SkCanvas* canvas);
+
+int main(int argc, char** argv) {
+ SkCommandLineFlags::Parse(argc, argv);
+ SkAutoGraphics init;
+
+ if (FLAGS_out.count() == 0) {
+ perror("The --out flag must have an argument.");
+ return 1;
+ }
+
+ if (FLAGS_source.count() == 1) {
+ if (!SkImageDecoder::DecodeFile(FLAGS_source[0], &source)) {
+ perror("Unable to read the source image.");
+ }
+ }
+
+ SkFILEWStream stream(FLAGS_out[0]);
+
+ SkImageInfo info = SkImageInfo::MakeN32(256, 256, kPremul_SkAlphaType);
+ SkAutoTUnref<SkSurface> surface(SkSurface::NewRaster(info));
+ SkCanvas* canvas = surface->getCanvas();
+
+ setLimits();
+
+ if (!install_syscall_filter()) {
+ return 1;
+ }
+
+ draw(canvas);
+
+ // Write out the image as a PNG.
+ SkAutoTUnref<SkImage> image(surface->newImageSnapshot());
+ SkAutoTUnref<SkData> data(image->encode(SkImageEncoder::kPNG_Type, 100));
+ if (NULL == data.get()) {
+ printf("Failed to encode\n");
+ exit(1);
+ }
+ stream.write(data->data(), data->size());
+}
diff --git a/chromium/third_party/skia/experimental/webtry/poly/.bowerrc b/chromium/third_party/skia/experimental/webtry/poly/.bowerrc
new file mode 100644
index 00000000000..628a9f788e0
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/poly/.bowerrc
@@ -0,0 +1,3 @@
+{
+ "directory": "../../../out/bower"
+}
diff --git a/chromium/third_party/skia/experimental/webtry/poly/Gruntfile.js b/chromium/third_party/skia/experimental/webtry/poly/Gruntfile.js
new file mode 100644
index 00000000000..cf70277872f
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/poly/Gruntfile.js
@@ -0,0 +1,64 @@
+module.exports = function(grunt) {
+
+ // Project configuration.
+ grunt.initConfig({
+ pkg: grunt.file.readJSON('package.json'),
+ // Install all the packages listed in the bower.json file.
+ shell: {
+ bower_install: {
+ command: 'bower install'
+ }
+ },
+ // Copy all the bower files into a single directory.
+ bower: {
+ dev: {
+ dest: '../../../out/grunt/third_party'
+ }
+ },
+ // Concatenate all the files in third_party into a single file.
+ concat: {
+ dist: {
+ src: [
+ '../../../out/grunt/third_party/WeakMap.js',
+ '../../../out/grunt/third_party/classlist.js',
+ '../../../out/grunt/third_party/pointerevents-polyfill.js',
+ '../../../out/grunt/third_party/MutationObserver.js',
+ '../../../out/grunt/third_party/CustomElements.js',
+ '../../../out/grunt/third_party/HTMLImports.js',
+ ],
+ dest: '../../../out/grunt/src/<%= pkg.name %>.js'
+ }
+ },
+ // Uglify the one big file into one smaller file.
+ uglify: {
+ options: {
+ banner: '/*! <%= pkg.name %> built from /exerimental/webtry/poly <%= grunt.template.today("yyyy-mm-dd") %> */\n'
+ },
+ build: {
+ src: '../../../out/grunt/src/<%= pkg.name %>.js',
+ dest: '../res/js/<%= pkg.name %>.js'
+ }
+ },
+ copy: {
+ simple: {
+ src: '../../../out/grunt/src/<%= pkg.name %>.js',
+ dest: '../res/js/<%= pkg.name %>.js'
+ }
+ }
+ });
+
+ // Load the plugins for the above commands.
+ grunt.loadNpmTasks('grunt-bower');
+ grunt.loadNpmTasks('grunt-contrib-concat');
+ grunt.loadNpmTasks('grunt-contrib-copy');
+ grunt.loadNpmTasks('grunt-contrib-cssmin');
+ grunt.loadNpmTasks('grunt-contrib-uglify');
+ grunt.loadNpmTasks('grunt-shell');
+
+ // By default run all the commands in the right sequence to build our custom minified polyfill.
+ grunt.registerTask('default', ['shell:bower_install', 'bower', 'concat', 'uglify']);
+
+ // A target to build an unminified version, for debugging.
+ grunt.registerTask('notmin', ['shell:bower_install', 'bower', 'concat', 'copy:simple']);
+
+};
diff --git a/chromium/third_party/skia/experimental/webtry/poly/README.md b/chromium/third_party/skia/experimental/webtry/poly/README.md
new file mode 100644
index 00000000000..a49d290a072
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/poly/README.md
@@ -0,0 +1,18 @@
+polyfill.js
+===========
+
+To rebuild or update res/js/polyfill.js you will need to have
+[node.js](http://nodejs.org/) installed. Once you have it installed run the
+following:
+
+ cd polyfill
+ npm install
+ grunt
+
+If you want to create a verion of the polyfill.js that hasn't been minified,
+say for debugging purposes, then run:
+
+
+ cd polyfill
+ npm install
+ grunt notmin
diff --git a/chromium/third_party/skia/experimental/webtry/poly/bower.json b/chromium/third_party/skia/experimental/webtry/poly/bower.json
new file mode 100644
index 00000000000..01b2d2d2bb4
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/poly/bower.json
@@ -0,0 +1,22 @@
+{
+ "name": "polyfill",
+ "version": "0.0.1",
+ "authors": [
+ "Joe Gregorio <jcgregorio@google.com>"
+ ],
+ "description": "All the third party polyfills we use.",
+ "license": "MIT",
+ "private": true,
+ "ignore": [
+ "**/.*",
+ "node_modules",
+ "bower_components",
+ "test",
+ "tests"
+ ],
+ "dependencies": {
+ "pointerevents-polyfill": "~0.2.0",
+ "CustomElements": "~0.2.3",
+ "HTMLImports": "~0.2.3"
+ }
+}
diff --git a/chromium/third_party/skia/experimental/webtry/poly/package.json b/chromium/third_party/skia/experimental/webtry/poly/package.json
new file mode 100644
index 00000000000..2db172a1f1d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/poly/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "polyfill",
+ "version": "0.0.1",
+ "description": "All the dependencies we need to run grunt and build our minified polyfill JS library.",
+ "main": "polyfill.js",
+ "author": "jcgregorio@google.com",
+ "license": "MIT",
+ "devDependencies": {
+ "grunt": "~0.4.5",
+ "grunt-contrib-uglify": "~0.4.0",
+ "grunt-bower": "~0.13.1",
+ "grunt-contrib-concat": "~0.4.0",
+ "grunt-shell": "~0.7.0",
+ "grunt-contrib-copy": "~0.5.0",
+ "grunt-contrib-cssmin": "~0.9.0"
+ }
+}
diff --git a/chromium/third_party/skia/experimental/webtry/res/css/cm/codemirror.css b/chromium/third_party/skia/experimental/webtry/res/css/cm/codemirror.css
new file mode 100644
index 00000000000..098a317a229
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/res/css/cm/codemirror.css
@@ -0,0 +1,272 @@
+/* BASICS */
+
+.CodeMirror {
+ /* Set height, width, borders, and global font properties here */
+ font-family: monospace;
+ height: 300px;
+}
+.CodeMirror-scroll {
+ /* Set scrolling behaviour here */
+ overflow: auto;
+}
+
+/* PADDING */
+
+.CodeMirror-lines {
+ padding: 4px 0; /* Vertical padding around content */
+}
+.CodeMirror pre {
+ padding: 0 4px; /* Horizontal padding of content */
+}
+
+.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
+ background-color: white; /* The little square between H and V scrollbars */
+}
+
+/* GUTTER */
+
+.CodeMirror-gutters {
+ border-right: 1px solid #ddd;
+ background-color: #f7f7f7;
+ white-space: nowrap;
+}
+.CodeMirror-linenumbers {}
+.CodeMirror-linenumber {
+ padding: 0 3px 0 5px;
+ min-width: 20px;
+ text-align: right;
+ color: #999;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+}
+
+/* CURSOR */
+
+.CodeMirror div.CodeMirror-cursor {
+ border-left: 1px solid black;
+}
+/* Shown when moving in bi-directional text */
+.CodeMirror div.CodeMirror-secondarycursor {
+ border-left: 1px solid silver;
+}
+.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor {
+ width: auto;
+ border: 0;
+ background: #7e7;
+}
+/* Can style cursor different in overwrite (non-insert) mode */
+div.CodeMirror-overwrite div.CodeMirror-cursor {}
+
+.cm-tab { display: inline-block; }
+
+.CodeMirror-ruler {
+ border-left: 1px solid #ccc;
+ position: absolute;
+}
+
+/* DEFAULT THEME */
+
+.cm-s-default .cm-keyword {color: #708;}
+.cm-s-default .cm-atom {color: #219;}
+.cm-s-default .cm-number {color: #164;}
+.cm-s-default .cm-def {color: #00f;}
+.cm-s-default .cm-variable,
+.cm-s-default .cm-punctuation,
+.cm-s-default .cm-property,
+.cm-s-default .cm-operator {}
+.cm-s-default .cm-variable-2 {color: #05a;}
+.cm-s-default .cm-variable-3 {color: #085;}
+.cm-s-default .cm-comment {color: #a50;}
+.cm-s-default .cm-string {color: #a11;}
+.cm-s-default .cm-string-2 {color: #f50;}
+.cm-s-default .cm-meta {color: #555;}
+.cm-s-default .cm-qualifier {color: #555;}
+.cm-s-default .cm-builtin {color: #30a;}
+.cm-s-default .cm-bracket {color: #997;}
+.cm-s-default .cm-tag {color: #170;}
+.cm-s-default .cm-attribute {color: #00c;}
+.cm-s-default .cm-header {color: blue;}
+.cm-s-default .cm-quote {color: #090;}
+.cm-s-default .cm-hr {color: #999;}
+.cm-s-default .cm-link {color: #00c;}
+
+.cm-negative {color: #d44;}
+.cm-positive {color: #292;}
+.cm-header, .cm-strong {font-weight: bold;}
+.cm-em {font-style: italic;}
+.cm-link {text-decoration: underline;}
+
+.cm-s-default .cm-error {color: #f00;}
+.cm-invalidchar {color: #f00;}
+
+div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
+div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
+.CodeMirror-activeline-background {background: #e8f2ff;}
+
+/* STOP */
+
+/* The rest of this file contains styles related to the mechanics of
+ the editor. You probably shouldn't touch them. */
+
+.CodeMirror {
+ line-height: 1;
+ position: relative;
+ overflow: hidden;
+ background: white;
+ color: black;
+}
+
+.CodeMirror-scroll {
+ /* 30px is the magic margin used to hide the element's real scrollbars */
+ /* See overflow: hidden in .CodeMirror */
+ margin-bottom: -30px; margin-right: -30px;
+ padding-bottom: 30px;
+ height: 100%;
+ outline: none; /* Prevent dragging from highlighting the element */
+ position: relative;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+}
+.CodeMirror-sizer {
+ position: relative;
+ border-right: 30px solid transparent;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+}
+
+/* The fake, visible scrollbars. Used to force redraw during scrolling
+ before actuall scrolling happens, thus preventing shaking and
+ flickering artifacts. */
+.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
+ position: absolute;
+ z-index: 6;
+ display: none;
+}
+.CodeMirror-vscrollbar {
+ right: 0; top: 0;
+ overflow-x: hidden;
+ overflow-y: scroll;
+}
+.CodeMirror-hscrollbar {
+ bottom: 0; left: 0;
+ overflow-y: hidden;
+ overflow-x: scroll;
+}
+.CodeMirror-scrollbar-filler {
+ right: 0; bottom: 0;
+}
+.CodeMirror-gutter-filler {
+ left: 0; bottom: 0;
+}
+
+.CodeMirror-gutters {
+ position: absolute; left: 0; top: 0;
+ padding-bottom: 30px;
+ z-index: 3;
+}
+.CodeMirror-gutter {
+ white-space: normal;
+ height: 100%;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ padding-bottom: 30px;
+ margin-bottom: -32px;
+ display: inline-block;
+ /* Hack to make IE7 behave */
+ *zoom:1;
+ *display:inline;
+}
+.CodeMirror-gutter-elt {
+ position: absolute;
+ cursor: default;
+ z-index: 4;
+}
+
+.CodeMirror-lines {
+ cursor: text;
+}
+.CodeMirror pre {
+ /* Reset some styles that the rest of the page might have set */
+ -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
+ border-width: 0;
+ background: transparent;
+ font-family: inherit;
+ font-size: inherit;
+ margin: 0;
+ white-space: pre;
+ word-wrap: normal;
+ line-height: inherit;
+ color: inherit;
+ z-index: 2;
+ position: relative;
+ overflow: visible;
+}
+.CodeMirror-wrap pre {
+ word-wrap: break-word;
+ white-space: pre-wrap;
+ word-break: normal;
+}
+
+.CodeMirror-linebackground {
+ position: absolute;
+ left: 0; right: 0; top: 0; bottom: 0;
+ z-index: 0;
+}
+
+.CodeMirror-linewidget {
+ position: relative;
+ z-index: 2;
+ overflow: auto;
+}
+
+.CodeMirror-widget {}
+
+.CodeMirror-wrap .CodeMirror-scroll {
+ overflow-x: hidden;
+}
+
+.CodeMirror-measure {
+ position: absolute;
+ width: 100%;
+ height: 0;
+ overflow: hidden;
+ visibility: hidden;
+}
+.CodeMirror-measure pre { position: static; }
+
+.CodeMirror div.CodeMirror-cursor {
+ position: absolute;
+ border-right: none;
+ width: 0;
+}
+
+div.CodeMirror-cursors {
+ visibility: hidden;
+ position: relative;
+ z-index: 1;
+}
+.CodeMirror-focused div.CodeMirror-cursors {
+ visibility: visible;
+}
+
+.CodeMirror-selected { background: #d9d9d9; }
+.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
+.CodeMirror-crosshair { cursor: crosshair; }
+
+.cm-searching {
+ background: #ffa;
+ background: rgba(255, 255, 0, .4);
+}
+
+/* IE7 hack to prevent it from returning funny offsetTops on the spans */
+.CodeMirror span { *vertical-align: text-bottom; }
+
+/* Used to force a border model for a node */
+.cm-force-border { padding-right: .1px; }
+
+@media print {
+ /* Hide the cursor when printing */
+ .CodeMirror div.CodeMirror-cursors {
+ visibility: hidden;
+ }
+}
diff --git a/chromium/third_party/skia/experimental/webtry/res/css/webtry.css b/chromium/third_party/skia/experimental/webtry/res/css/webtry.css
new file mode 100644
index 00000000000..09751df5325
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/res/css/webtry.css
@@ -0,0 +1,128 @@
+body {
+ font-family: helvetica arial sans-serif;
+ margin: 0;
+ padding: 0;
+}
+
+img {
+ box-shadow: 2px 2px 5px gray;
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAAXNSR0IArs4c6QAAAAJiS0dEAP+Hj8y/AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAB3RJTUUH3gUBEi4DGRAQYgAAAB1JREFUGNNjfMoAAVJQmokBDdBHgPE/lPFsYN0BABdaAwN6tehMAAAAAElFTkSuQmCC");
+}
+
+
+h1 {
+ font-size: 18px;
+}
+
+h2 {
+ font-size: 16px;
+}
+
+.waiting, .waiting * {
+ cursor: wait;
+}
+
+textarea {
+ margin-left: 0;
+ border: solid 1px #ccc;
+ color: green;
+ background: #eee;
+}
+
+.iframe textarea {
+ resize: none;
+}
+
+template {
+ display: none;
+}
+
+code {
+ color: green;
+}
+
+pre, code {
+ padding: 0;
+}
+
+.tries {
+ margin: 1em;
+ float: left;
+}
+
+#title {
+ color: #ddd;
+ background: #444;
+ margin: 0;
+ padding: 0.5em;
+}
+
+#title a:link,
+#title a:visited,
+#title a:hover,
+#title a:active
+{
+ color: #ddd;
+}
+
+#content {
+ padding: 1em;
+}
+
+#tryHistory {
+ position: absolute;
+ top: 3em;
+ right: 10px;
+ width: 75px;
+}
+
+#tryHistory .tries {
+ float: none;
+}
+
+#chooseList {
+ display: flex;
+ flex-flow: row wrap;
+}
+
+#chooseSource {
+ display: none;
+ background: ivory;
+ padding: 1em;
+ border: solid lightgray 2px;
+}
+
+#chooseSource.show {
+ display: block;
+}
+
+#selectedSource {
+ display: none;
+}
+
+#selectedSource.show {
+ display: block;
+}
+
+#sourceCode {
+ display: none;
+}
+
+#sourceCode.show {
+ display: block;
+}
+
+#gitInfo {
+ float: right;
+ font-size: 70%;
+}
+
+.CodeMirror-lines,
+.CodeMirror-scroll
+{
+ background-color: #eee;
+}
+
+.CodeMirror {
+ border: solid gray 1px;
+}
diff --git a/chromium/third_party/skia/experimental/webtry/res/imp/zoom.html b/chromium/third_party/skia/experimental/webtry/res/imp/zoom.html
new file mode 100644
index 00000000000..33aab9b44c2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/res/imp/zoom.html
@@ -0,0 +1,169 @@
+<script type="text/javascript" charset="utf-8">
+ /**
+ * A reusable HTML Import to enable zooming on images.
+ *
+ * To use, simply include this HTML Import and add the class 'zoom' to any
+ * images you want zoomable.
+ *
+ * <link rel='import' type='text/html' href='/res/imp/zoom.html'>
+ *
+ * <img src="http://..." class="zoom"/>
+ *
+ * Any number of images on a page can be zoomable.
+ *
+ * If you want to display the rgb colors of the pixel at the center of the
+ * zoom then add an id of 'zoomHex' to any element that supports
+ * textContent, such as a div, p, span, etc.
+ *
+ * <p id=zoomHex></p>
+ *
+ * Note that HTML Imports need to be polyfilled in the near term.
+ */
+ (function () {
+ function onLoad() {
+ var PIXELS = 20; // The number of pixels in width and height in a zoom.
+ var clientX = 0;
+ var clientY = 0;
+ var lastClientX = 0;
+ var lastClientY = 0;
+ var ctx = null; // The 2D canvas context of the zoom.
+ var currentImage = null; // The img node we are zooming for, otherwise null.
+ var hex = document.getElementById('zoomHex');
+ var canvasCopy = null;
+ function zoomMove(e) {
+ clientX = e.clientX;
+ clientY = e.clientY;
+ }
+ function zoomMouseDown(e) {
+ e.preventDefault();
+ // Only do zooming on the primary mouse button.
+ if (e.button != 0) {
+ return
+ }
+ currentImage = e.target;
+ clientX = e.clientX;
+ clientY = e.clientY;
+ lastClientX = clientX-1;
+ lastClientY = clientY-1;
+ document.body.style.cursor = 'crosshair';
+ canvas = document.createElement('canvas');
+ canvas.width = 1024;
+ canvas.height = 1024;
+ canvas.classList.add('zoomCanvas');
+ ctx = canvas.getContext('2d');
+ ctx.imageSmoothingEnabled = false;
+ this.parentNode.insertBefore(canvas, this);
+ // Copy the image over to a canvas so we can read RGBA values for each point.
+ if (hex) {
+ canvasCopy = document.createElement('canvas');
+ canvasCopy.width = currentImage.width;
+ canvasCopy.height = currentImage.height;
+ canvasCopy.id = 'zoomCopy';
+ canvasCopy.getContext('2d').drawImage(currentImage, 0, 0, currentImage.width, currentImage.height);
+ this.parentNode.insertBefore(canvasCopy, this);
+ }
+ document.body.addEventListener('pointermove', zoomMove, true);
+ document.body.addEventListener('pointerup', zoomFinished);
+ document.body.addEventListener('pointerleave', zoomFinished);
+ // Kick off the drawing.
+ setTimeout(drawZoom, 1);
+ }
+ function hexify(i) {
+ var s = i.toString(16).toUpperCase();
+ // Pad out to two hex digits if necessary.
+ if (s.length < 2) {
+ s = '0' + s;
+ }
+ return s;
+ }
+ function drawZoom() {
+ if (currentImage) {
+ // Only draw if the mouse has moved from the last time we drew.
+ if (lastClientX != clientX || lastClientY != clientY) {
+ ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
+ var x = clientX - currentImage.x;
+ var y = clientY - currentImage.y;
+ var dx = Math.floor(ctx.canvas.width/PIXELS);
+ var dy = Math.floor(ctx.canvas.height/PIXELS);
+ ctx.lineWidth = 1;
+ ctx.strokeStyle = '#000';
+ // Draw out each pixel as a rect on the target canvas, as this works around
+ // FireFox doing a blur as it copies from one canvas to another.
+ var colors = canvasCopy.getContext('2d').getImageData(x, y, PIXELS, PIXELS).data;
+ for (var i=0; i<PIXELS; i++) {
+ for (var j=0; j<PIXELS; j++) {
+ var offset = (j*PIXELS+i)*4; // Offset into the colors array.
+ ctx.fillStyle = 'rgba(' + colors[offset] + ', ' + colors[offset+1] + ', ' + colors[offset+2] + ', ' + colors[offset+3]/255.0 + ')';
+ ctx.fillRect(i*dx, j*dy, dx-1, dy-1);
+ // Box and label one selected pixel with its rgba values.
+ if (hex && i==PIXELS/2 && j == PIXELS/2) {
+ ctx.strokeRect(i*dx, j*dy, dx-1, dy-1);
+ hex.textContent = 'rgba('
+ + colors[offset] + ', '
+ + colors[offset+1] + ', '
+ + colors[offset+2] + ', '
+ + colors[offset+3] + ') '
+ + hexify(colors[offset])
+ + hexify(colors[offset+1])
+ + hexify(colors[offset+2])
+ + hexify(colors[offset+3]);
+ }
+ }
+ }
+ lastClientX = clientX;
+ lastClientY = clientY;
+ }
+ setTimeout(drawZoom, 1000/30);
+ }
+ }
+ function zoomFinished() {
+ currentImage = null;
+ if (hex) {
+ hex.textContent = '';
+ }
+ document.body.style.cursor = 'default';
+ ctx.canvas.parentNode.removeChild(ctx.canvas);
+ canvasCopy.parentNode.removeChild(canvasCopy);
+ document.body.removeEventListener('pointermove', zoomMove, true);
+ document.body.removeEventListener('pointerup', zoomFinished);
+ document.body.removeEventListener('pointerleave', zoomFinished);
+ }
+
+ var zoomables = document.body.querySelectorAll('.zoom');
+ for (var i=0; i<zoomables.length; i++) {
+ zoomables[i].addEventListener('pointerdown', zoomMouseDown);
+ }
+ }
+
+ // If loaded via HTML Imports then DOMContentLoaded will be long done.
+ if (document.readyState != "loading") {
+ onLoad();
+ } else {
+ this.addEventListener('DOMContentLoaded', onLoad);
+ }
+ })();
+</script>
+
+<style type="text/css" media="screen">
+ .zoom {
+ cursor: crosshair;
+ }
+
+ .zoomCanvas {
+ position: absolute;
+ width: vmin;
+ height: vmin;
+ top: 3em;
+ right: 1em;
+ z-index: -1;
+ }
+
+ #zoomCopy {
+ display: none;
+ }
+
+ #zoomHex {
+ text-shadow: 1px 1px #eee;
+ }
+</style>
+
diff --git a/chromium/third_party/skia/experimental/webtry/res/js/cm/clike.js b/chromium/third_party/skia/experimental/webtry/res/js/cm/clike.js
new file mode 100644
index 00000000000..60b88bf1aa4
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/res/js/cm/clike.js
@@ -0,0 +1,436 @@
+(function(mod) {
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
+ mod(require("../../lib/codemirror"));
+ else if (typeof define == "function" && define.amd) // AMD
+ define(["../../lib/codemirror"], mod);
+ else // Plain browser env
+ mod(CodeMirror);
+})(function(CodeMirror) {
+"use strict";
+
+CodeMirror.defineMode("clike", function(config, parserConfig) {
+ var indentUnit = config.indentUnit,
+ statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,
+ dontAlignCalls = parserConfig.dontAlignCalls,
+ keywords = parserConfig.keywords || {},
+ builtin = parserConfig.builtin || {},
+ blockKeywords = parserConfig.blockKeywords || {},
+ atoms = parserConfig.atoms || {},
+ hooks = parserConfig.hooks || {},
+ multiLineStrings = parserConfig.multiLineStrings;
+ var isOperatorChar = /[+\-*&%=<>!?|\/]/;
+
+ var curPunc;
+
+ function tokenBase(stream, state) {
+ var ch = stream.next();
+ if (hooks[ch]) {
+ var result = hooks[ch](stream, state);
+ if (result !== false) return result;
+ }
+ if (ch == '"' || ch == "'") {
+ state.tokenize = tokenString(ch);
+ return state.tokenize(stream, state);
+ }
+ if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
+ curPunc = ch;
+ return null;
+ }
+ if (/\d/.test(ch)) {
+ stream.eatWhile(/[\w\.]/);
+ return "number";
+ }
+ if (ch == "/") {
+ if (stream.eat("*")) {
+ state.tokenize = tokenComment;
+ return tokenComment(stream, state);
+ }
+ if (stream.eat("/")) {
+ stream.skipToEnd();
+ return "comment";
+ }
+ }
+ if (isOperatorChar.test(ch)) {
+ stream.eatWhile(isOperatorChar);
+ return "operator";
+ }
+ stream.eatWhile(/[\w\$_]/);
+ var cur = stream.current();
+ if (keywords.propertyIsEnumerable(cur)) {
+ if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";
+ return "keyword";
+ }
+ if (builtin.propertyIsEnumerable(cur)) {
+ if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";
+ return "builtin";
+ }
+ if (atoms.propertyIsEnumerable(cur)) return "atom";
+ return "variable";
+ }
+
+ function tokenString(quote) {
+ return function(stream, state) {
+ var escaped = false, next, end = false;
+ while ((next = stream.next()) != null) {
+ if (next == quote && !escaped) {end = true; break;}
+ escaped = !escaped && next == "\\";
+ }
+ if (end || !(escaped || multiLineStrings))
+ state.tokenize = null;
+ return "string";
+ };
+ }
+
+ function tokenComment(stream, state) {
+ var maybeEnd = false, ch;
+ while (ch = stream.next()) {
+ if (ch == "/" && maybeEnd) {
+ state.tokenize = null;
+ break;
+ }
+ maybeEnd = (ch == "*");
+ }
+ return "comment";
+ }
+
+ function Context(indented, column, type, align, prev) {
+ this.indented = indented;
+ this.column = column;
+ this.type = type;
+ this.align = align;
+ this.prev = prev;
+ }
+ function pushContext(state, col, type) {
+ var indent = state.indented;
+ if (state.context && state.context.type == "statement")
+ indent = state.context.indented;
+ return state.context = new Context(indent, col, type, null, state.context);
+ }
+ function popContext(state) {
+ var t = state.context.type;
+ if (t == ")" || t == "]" || t == "}")
+ state.indented = state.context.indented;
+ return state.context = state.context.prev;
+ }
+
+ // Interface
+
+ return {
+ startState: function(basecolumn) {
+ return {
+ tokenize: null,
+ context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
+ indented: 0,
+ startOfLine: true
+ };
+ },
+
+ token: function(stream, state) {
+ var ctx = state.context;
+ if (stream.sol()) {
+ if (ctx.align == null) ctx.align = false;
+ state.indented = stream.indentation();
+ state.startOfLine = true;
+ }
+ if (stream.eatSpace()) return null;
+ curPunc = null;
+ var style = (state.tokenize || tokenBase)(stream, state);
+ if (style == "comment" || style == "meta") return style;
+ if (ctx.align == null) ctx.align = true;
+
+ if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement") popContext(state);
+ else if (curPunc == "{") pushContext(state, stream.column(), "}");
+ else if (curPunc == "[") pushContext(state, stream.column(), "]");
+ else if (curPunc == "(") pushContext(state, stream.column(), ")");
+ else if (curPunc == "}") {
+ while (ctx.type == "statement") ctx = popContext(state);
+ if (ctx.type == "}") ctx = popContext(state);
+ while (ctx.type == "statement") ctx = popContext(state);
+ }
+ else if (curPunc == ctx.type) popContext(state);
+ else if (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || (ctx.type == "statement" && curPunc == "newstatement"))
+ pushContext(state, stream.column(), "statement");
+ state.startOfLine = false;
+ return style;
+ },
+
+ indent: function(state, textAfter) {
+ if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass;
+ var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);
+ if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev;
+ var closing = firstChar == ctx.type;
+ if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit);
+ else if (ctx.align && (!dontAlignCalls || ctx.type != ")")) return ctx.column + (closing ? 0 : 1);
+ else if (ctx.type == ")" && !closing) return ctx.indented + statementIndentUnit;
+ else return ctx.indented + (closing ? 0 : indentUnit);
+ },
+
+ electricChars: "{}",
+ blockCommentStart: "/*",
+ blockCommentEnd: "*/",
+ lineComment: "//",
+ fold: "brace"
+ };
+});
+
+ function words(str) {
+ var obj = {}, words = str.split(" ");
+ for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
+ return obj;
+ }
+ var cKeywords = "auto if break int case long char register continue return default short do sizeof " +
+ "double static else struct entry switch extern typedef float union for unsigned " +
+ "goto while enum void const signed volatile";
+
+ function cppHook(stream, state) {
+ if (!state.startOfLine) return false;
+ for (;;) {
+ if (stream.skipTo("\\")) {
+ stream.next();
+ if (stream.eol()) {
+ state.tokenize = cppHook;
+ break;
+ }
+ } else {
+ stream.skipToEnd();
+ state.tokenize = null;
+ break;
+ }
+ }
+ return "meta";
+ }
+
+ function cpp11StringHook(stream, state) {
+ stream.backUp(1);
+ // Raw strings.
+ if (stream.match(/(R|u8R|uR|UR|LR)/)) {
+ var match = stream.match(/"(.{0,16})\(/);
+ if (!match) {
+ return false;
+ }
+ state.cpp11RawStringDelim = match[1];
+ state.tokenize = tokenRawString;
+ return tokenRawString(stream, state);
+ }
+ // Unicode strings/chars.
+ if (stream.match(/(u8|u|U|L)/)) {
+ if (stream.match(/["']/, /* eat */ false)) {
+ return "string";
+ }
+ return false;
+ }
+ // Ignore this hook.
+ stream.next();
+ return false;
+ }
+
+ // C#-style strings where "" escapes a quote.
+ function tokenAtString(stream, state) {
+ var next;
+ while ((next = stream.next()) != null) {
+ if (next == '"' && !stream.eat('"')) {
+ state.tokenize = null;
+ break;
+ }
+ }
+ return "string";
+ }
+
+ // C++11 raw string literal is <prefix>"<delim>( anything )<delim>", where
+ // <delim> can be a string up to 16 characters long.
+ function tokenRawString(stream, state) {
+ var closingSequence = new RegExp(".*?\\)" + state.cpp11RawStringDelim + '"');
+ var match = stream.match(closingSequence);
+ if (match) {
+ state.tokenize = null;
+ } else {
+ stream.skipToEnd();
+ }
+ return "string";
+ }
+
+ function def(mimes, mode) {
+ if (typeof mimes == "string") mimes = [mimes];
+ var words = [];
+ function add(obj) {
+ if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop))
+ words.push(prop);
+ }
+ add(mode.keywords);
+ add(mode.builtin);
+ add(mode.atoms);
+ if (words.length) {
+ mode.helperType = mimes[0];
+ CodeMirror.registerHelper("hintWords", mimes[0], words);
+ }
+
+ for (var i = 0; i < mimes.length; ++i)
+ CodeMirror.defineMIME(mimes[i], mode);
+ }
+
+ def(["text/x-csrc", "text/x-c", "text/x-chdr"], {
+ name: "clike",
+ keywords: words(cKeywords),
+ blockKeywords: words("case do else for if switch while struct"),
+ atoms: words("null"),
+ hooks: {"#": cppHook},
+ modeProps: {fold: ["brace", "include"]}
+ });
+
+ def(["text/x-c++src", "text/x-c++hdr"], {
+ name: "clike",
+ keywords: words(cKeywords + " asm dynamic_cast namespace reinterpret_cast try bool explicit new " +
+ "static_cast typeid catch operator template typename class friend private " +
+ "this using const_cast inline public throw virtual delete mutable protected " +
+ "wchar_t alignas alignof constexpr decltype nullptr noexcept thread_local final " +
+ "static_assert override"),
+ blockKeywords: words("catch class do else finally for if struct switch try while"),
+ atoms: words("true false null"),
+ hooks: {
+ "#": cppHook,
+ "u": cpp11StringHook,
+ "U": cpp11StringHook,
+ "L": cpp11StringHook,
+ "R": cpp11StringHook
+ },
+ modeProps: {fold: ["brace", "include"]}
+ });
+ def("text/x-java", {
+ name: "clike",
+ keywords: words("abstract assert boolean break byte case catch char class const continue default " +
+ "do double else enum extends final finally float for goto if implements import " +
+ "instanceof int interface long native new package private protected public " +
+ "return short static strictfp super switch synchronized this throw throws transient " +
+ "try void volatile while"),
+ blockKeywords: words("catch class do else finally for if switch try while"),
+ atoms: words("true false null"),
+ hooks: {
+ "@": function(stream) {
+ stream.eatWhile(/[\w\$_]/);
+ return "meta";
+ }
+ },
+ modeProps: {fold: ["brace", "import"]}
+ });
+ def("text/x-csharp", {
+ name: "clike",
+ keywords: words("abstract as base break case catch checked class const continue" +
+ " default delegate do else enum event explicit extern finally fixed for" +
+ " foreach goto if implicit in interface internal is lock namespace new" +
+ " operator out override params private protected public readonly ref return sealed" +
+ " sizeof stackalloc static struct switch this throw try typeof unchecked" +
+ " unsafe using virtual void volatile while add alias ascending descending dynamic from get" +
+ " global group into join let orderby partial remove select set value var yield"),
+ blockKeywords: words("catch class do else finally for foreach if struct switch try while"),
+ builtin: words("Boolean Byte Char DateTime DateTimeOffset Decimal Double" +
+ " Guid Int16 Int32 Int64 Object SByte Single String TimeSpan UInt16 UInt32" +
+ " UInt64 bool byte char decimal double short int long object" +
+ " sbyte float string ushort uint ulong"),
+ atoms: words("true false null"),
+ hooks: {
+ "@": function(stream, state) {
+ if (stream.eat('"')) {
+ state.tokenize = tokenAtString;
+ return tokenAtString(stream, state);
+ }
+ stream.eatWhile(/[\w\$_]/);
+ return "meta";
+ }
+ }
+ });
+ def("text/x-scala", {
+ name: "clike",
+ keywords: words(
+
+ /* scala */
+ "abstract case catch class def do else extends false final finally for forSome if " +
+ "implicit import lazy match new null object override package private protected return " +
+ "sealed super this throw trait try trye type val var while with yield _ : = => <- <: " +
+ "<% >: # @ " +
+
+ /* package scala */
+ "assert assume require print println printf readLine readBoolean readByte readShort " +
+ "readChar readInt readLong readFloat readDouble " +
+
+ "AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either " +
+ "Enumeration Equiv Error Exception Fractional Function IndexedSeq Integral Iterable " +
+ "Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering " +
+ "Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder " +
+ "StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector :: #:: " +
+
+ /* package java.lang */
+ "Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable " +
+ "Compiler Double Exception Float Integer Long Math Number Object Package Pair Process " +
+ "Runtime Runnable SecurityManager Short StackTraceElement StrictMath String " +
+ "StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"
+
+
+ ),
+ blockKeywords: words("catch class do else finally for forSome if match switch try while"),
+ atoms: words("true false null"),
+ hooks: {
+ "@": function(stream) {
+ stream.eatWhile(/[\w\$_]/);
+ return "meta";
+ }
+ }
+ });
+ def(["x-shader/x-vertex", "x-shader/x-fragment"], {
+ name: "clike",
+ keywords: words("float int bool void " +
+ "vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 " +
+ "mat2 mat3 mat4 " +
+ "sampler1D sampler2D sampler3D samplerCube " +
+ "sampler1DShadow sampler2DShadow" +
+ "const attribute uniform varying " +
+ "break continue discard return " +
+ "for while do if else struct " +
+ "in out inout"),
+ blockKeywords: words("for while do if else struct"),
+ builtin: words("radians degrees sin cos tan asin acos atan " +
+ "pow exp log exp2 sqrt inversesqrt " +
+ "abs sign floor ceil fract mod min max clamp mix step smootstep " +
+ "length distance dot cross normalize ftransform faceforward " +
+ "reflect refract matrixCompMult " +
+ "lessThan lessThanEqual greaterThan greaterThanEqual " +
+ "equal notEqual any all not " +
+ "texture1D texture1DProj texture1DLod texture1DProjLod " +
+ "texture2D texture2DProj texture2DLod texture2DProjLod " +
+ "texture3D texture3DProj texture3DLod texture3DProjLod " +
+ "textureCube textureCubeLod " +
+ "shadow1D shadow2D shadow1DProj shadow2DProj " +
+ "shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod " +
+ "dFdx dFdy fwidth " +
+ "noise1 noise2 noise3 noise4"),
+ atoms: words("true false " +
+ "gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex " +
+ "gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 " +
+ "gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 " +
+ "gl_FogCoord " +
+ "gl_Position gl_PointSize gl_ClipVertex " +
+ "gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor " +
+ "gl_TexCoord gl_FogFragCoord " +
+ "gl_FragCoord gl_FrontFacing " +
+ "gl_FragColor gl_FragData gl_FragDepth " +
+ "gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix " +
+ "gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse " +
+ "gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse " +
+ "gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose " +
+ "gl_ProjectionMatrixInverseTranspose " +
+ "gl_ModelViewProjectionMatrixInverseTranspose " +
+ "gl_TextureMatrixInverseTranspose " +
+ "gl_NormalScale gl_DepthRange gl_ClipPlane " +
+ "gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel " +
+ "gl_FrontLightModelProduct gl_BackLightModelProduct " +
+ "gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ " +
+ "gl_FogParameters " +
+ "gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords " +
+ "gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats " +
+ "gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits " +
+ "gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits " +
+ "gl_MaxDrawBuffers"),
+ hooks: {"#": cppHook},
+ modeProps: {fold: ["brace", "include"]}
+ });
+
+});
diff --git a/chromium/third_party/skia/experimental/webtry/res/js/cm/codemirror.js b/chromium/third_party/skia/experimental/webtry/res/js/cm/codemirror.js
new file mode 100644
index 00000000000..0ab217711ee
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/res/js/cm/codemirror.js
@@ -0,0 +1,7526 @@
+// This is CodeMirror (http://codemirror.net), a code editor
+// implemented in JavaScript on top of the browser's DOM.
+//
+// You can find some technical background for some of the code below
+// at http://marijnhaverbeke.nl/blog/#cm-internals .
+
+(function(mod) {
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
+ module.exports = mod();
+ else if (typeof define == "function" && define.amd) // AMD
+ return define([], mod);
+ else // Plain browser env
+ this.CodeMirror = mod();
+})(function() {
+ "use strict";
+
+ // BROWSER SNIFFING
+
+ // Kludges for bugs and behavior differences that can't be feature
+ // detected are enabled based on userAgent etc sniffing.
+
+ var gecko = /gecko\/\d/i.test(navigator.userAgent);
+ // ie_uptoN means Internet Explorer version N or lower
+ var ie_upto10 = /MSIE \d/.test(navigator.userAgent);
+ var ie_upto7 = ie_upto10 && (document.documentMode == null || document.documentMode < 8);
+ var ie_upto8 = ie_upto10 && (document.documentMode == null || document.documentMode < 9);
+ var ie_upto9 = ie_upto10 && (document.documentMode == null || document.documentMode < 10);
+ var ie_11up = /Trident\/([7-9]|\d{2,})\./.test(navigator.userAgent);
+ var ie = ie_upto10 || ie_11up;
+ var webkit = /WebKit\//.test(navigator.userAgent);
+ var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(navigator.userAgent);
+ var chrome = /Chrome\//.test(navigator.userAgent);
+ var presto = /Opera\//.test(navigator.userAgent);
+ var safari = /Apple Computer/.test(navigator.vendor);
+ var khtml = /KHTML\//.test(navigator.userAgent);
+ var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent);
+ var phantom = /PhantomJS/.test(navigator.userAgent);
+
+ var ios = /AppleWebKit/.test(navigator.userAgent) && /Mobile\/\w+/.test(navigator.userAgent);
+ // This is woefully incomplete. Suggestions for alternative methods welcome.
+ var mobile = ios || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent);
+ var mac = ios || /Mac/.test(navigator.platform);
+ var windows = /win/i.test(navigator.platform);
+
+ var presto_version = presto && navigator.userAgent.match(/Version\/(\d*\.\d*)/);
+ if (presto_version) presto_version = Number(presto_version[1]);
+ if (presto_version && presto_version >= 15) { presto = false; webkit = true; }
+ // Some browsers use the wrong event properties to signal cmd/ctrl on OS X
+ var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));
+ var captureRightClick = gecko || (ie && !ie_upto8);
+
+ // Optimize some code when these features are not used.
+ var sawReadOnlySpans = false, sawCollapsedSpans = false;
+
+ // EDITOR CONSTRUCTOR
+
+ // A CodeMirror instance represents an editor. This is the object
+ // that user code is usually dealing with.
+
+ function CodeMirror(place, options) {
+ if (!(this instanceof CodeMirror)) return new CodeMirror(place, options);
+
+ this.options = options = options || {};
+ // Determine effective options based on given values and defaults.
+ copyObj(defaults, options, false);
+ setGuttersForLineNumbers(options);
+
+ var doc = options.value;
+ if (typeof doc == "string") doc = new Doc(doc, options.mode);
+ this.doc = doc;
+
+ var display = this.display = new Display(place, doc);
+ display.wrapper.CodeMirror = this;
+ updateGutters(this);
+ themeChanged(this);
+ if (options.lineWrapping)
+ this.display.wrapper.className += " CodeMirror-wrap";
+ if (options.autofocus && !mobile) focusInput(this);
+
+ this.state = {
+ keyMaps: [], // stores maps added by addKeyMap
+ overlays: [], // highlighting overlays, as added by addOverlay
+ modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info
+ overwrite: false, focused: false,
+ suppressEdits: false, // used to disable editing during key handlers when in readOnly mode
+ pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in readInput
+ draggingText: false,
+ highlight: new Delayed() // stores highlight worker timeout
+ };
+
+ // Override magic textarea content restore that IE sometimes does
+ // on our hidden textarea on reload
+ if (ie_upto10) setTimeout(bind(resetInput, this, true), 20);
+
+ registerEventHandlers(this);
+
+ var cm = this;
+ runInOp(this, function() {
+ cm.curOp.forceUpdate = true;
+ attachDoc(cm, doc);
+
+ if ((options.autofocus && !mobile) || activeElt() == display.input)
+ setTimeout(bind(onFocus, cm), 20);
+ else
+ onBlur(cm);
+
+ for (var opt in optionHandlers) if (optionHandlers.hasOwnProperty(opt))
+ optionHandlers[opt](cm, options[opt], Init);
+ for (var i = 0; i < initHooks.length; ++i) initHooks[i](cm);
+ });
+ }
+
+ // DISPLAY CONSTRUCTOR
+
+ // The display handles the DOM integration, both for input reading
+ // and content drawing. It holds references to DOM nodes and
+ // display-related state.
+
+ function Display(place, doc) {
+ var d = this;
+
+ // The semihidden textarea that is focused when the editor is
+ // focused, and receives input.
+ var input = d.input = elt("textarea", null, null, "position: absolute; padding: 0; width: 1px; height: 1em; outline: none");
+ // The textarea is kept positioned near the cursor to prevent the
+ // fact that it'll be scrolled into view on input from scrolling
+ // our fake cursor out of view. On webkit, when wrap=off, paste is
+ // very slow. So make the area wide instead.
+ if (webkit) input.style.width = "1000px";
+ else input.setAttribute("wrap", "off");
+ // If border: 0; -- iOS fails to open keyboard (issue #1287)
+ if (ios) input.style.border = "1px solid black";
+ input.setAttribute("autocorrect", "off"); input.setAttribute("autocapitalize", "off"); input.setAttribute("spellcheck", "false");
+
+ // Wraps and hides input textarea
+ d.inputDiv = elt("div", [input], null, "overflow: hidden; position: relative; width: 3px; height: 0px;");
+ // The fake scrollbar elements.
+ d.scrollbarH = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar");
+ d.scrollbarV = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar");
+ // Covers bottom-right square when both scrollbars are present.
+ d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler");
+ // Covers bottom of gutter when coverGutterNextToScrollbar is on
+ // and h scrollbar is present.
+ d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler");
+ // Will contain the actual code, positioned to cover the viewport.
+ d.lineDiv = elt("div", null, "CodeMirror-code");
+ // Elements are added to these to represent selection and cursors.
+ d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1");
+ d.cursorDiv = elt("div", null, "CodeMirror-cursors");
+ // A visibility: hidden element used to find the size of things.
+ d.measure = elt("div", null, "CodeMirror-measure");
+ // When lines outside of the viewport are measured, they are drawn in this.
+ d.lineMeasure = elt("div", null, "CodeMirror-measure");
+ // Wraps everything that needs to exist inside the vertically-padded coordinate system
+ d.lineSpace = elt("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],
+ null, "position: relative; outline: none");
+ // Moved around its parent to cover visible view.
+ d.mover = elt("div", [elt("div", [d.lineSpace], "CodeMirror-lines")], null, "position: relative");
+ // Set to the height of the document, allowing scrolling.
+ d.sizer = elt("div", [d.mover], "CodeMirror-sizer");
+ // Behavior of elts with overflow: auto and padding is
+ // inconsistent across browsers. This is used to ensure the
+ // scrollable area is big enough.
+ d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerCutOff + "px; width: 1px;");
+ // Will contain the gutters, if any.
+ d.gutters = elt("div", null, "CodeMirror-gutters");
+ d.lineGutter = null;
+ // Actual scrollable element.
+ d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll");
+ d.scroller.setAttribute("tabIndex", "-1");
+ // The element in which the editor lives.
+ d.wrapper = elt("div", [d.inputDiv, d.scrollbarH, d.scrollbarV,
+ d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror");
+
+ // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)
+ if (ie_upto7) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }
+ // Needed to hide big blue blinking cursor on Mobile Safari
+ if (ios) input.style.width = "0px";
+ if (!webkit) d.scroller.draggable = true;
+ // Needed to handle Tab key in KHTML
+ if (khtml) { d.inputDiv.style.height = "1px"; d.inputDiv.style.position = "absolute"; }
+ // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).
+ if (ie_upto7) d.scrollbarH.style.minHeight = d.scrollbarV.style.minWidth = "18px";
+
+ if (place.appendChild) place.appendChild(d.wrapper);
+ else place(d.wrapper);
+
+ // Current rendered range (may be bigger than the view window).
+ d.viewFrom = d.viewTo = doc.first;
+ // Information about the rendered lines.
+ d.view = [];
+ // Holds info about a single rendered line when it was rendered
+ // for measurement, while not in view.
+ d.externalMeasured = null;
+ // Empty space (in pixels) above the view
+ d.viewOffset = 0;
+ d.lastSizeC = 0;
+ d.updateLineNumbers = null;
+
+ // Used to only resize the line number gutter when necessary (when
+ // the amount of lines crosses a boundary that makes its width change)
+ d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;
+ // See readInput and resetInput
+ d.prevInput = "";
+ // Set to true when a non-horizontal-scrolling line widget is
+ // added. As an optimization, line widget aligning is skipped when
+ // this is false.
+ d.alignWidgets = false;
+ // Flag that indicates whether we expect input to appear real soon
+ // now (after some event like 'keypress' or 'input') and are
+ // polling intensively.
+ d.pollingFast = false;
+ // Self-resetting timeout for the poller
+ d.poll = new Delayed();
+
+ d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;
+
+ // Tracks when resetInput has punted to just putting a short
+ // string into the textarea instead of the full selection.
+ d.inaccurateSelection = false;
+
+ // Tracks the maximum line length so that the horizontal scrollbar
+ // can be kept static when scrolling.
+ d.maxLine = null;
+ d.maxLineLength = 0;
+ d.maxLineChanged = false;
+
+ // Used for measuring wheel scrolling granularity
+ d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;
+
+ // True when shift is held down.
+ d.shift = false;
+ }
+
+ // STATE UPDATES
+
+ // Used to get the editor into a consistent state again when options change.
+
+ function loadMode(cm) {
+ cm.doc.mode = CodeMirror.getMode(cm.options, cm.doc.modeOption);
+ resetModeState(cm);
+ }
+
+ function resetModeState(cm) {
+ cm.doc.iter(function(line) {
+ if (line.stateAfter) line.stateAfter = null;
+ if (line.styles) line.styles = null;
+ });
+ cm.doc.frontier = cm.doc.first;
+ startWorker(cm, 100);
+ cm.state.modeGen++;
+ if (cm.curOp) regChange(cm);
+ }
+
+ function wrappingChanged(cm) {
+ if (cm.options.lineWrapping) {
+ addClass(cm.display.wrapper, "CodeMirror-wrap");
+ cm.display.sizer.style.minWidth = "";
+ } else {
+ rmClass(cm.display.wrapper, "CodeMirror-wrap");
+ findMaxLine(cm);
+ }
+ estimateLineHeights(cm);
+ regChange(cm);
+ clearCaches(cm);
+ setTimeout(function(){updateScrollbars(cm);}, 100);
+ }
+
+ // Returns a function that estimates the height of a line, to use as
+ // first approximation until the line becomes visible (and is thus
+ // properly measurable).
+ function estimateHeight(cm) {
+ var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;
+ var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);
+ return function(line) {
+ if (lineIsHidden(cm.doc, line)) return 0;
+
+ var widgetsHeight = 0;
+ if (line.widgets) for (var i = 0; i < line.widgets.length; i++) {
+ if (line.widgets[i].height) widgetsHeight += line.widgets[i].height;
+ }
+
+ if (wrapping)
+ return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th;
+ else
+ return widgetsHeight + th;
+ };
+ }
+
+ function estimateLineHeights(cm) {
+ var doc = cm.doc, est = estimateHeight(cm);
+ doc.iter(function(line) {
+ var estHeight = est(line);
+ if (estHeight != line.height) updateLineHeight(line, estHeight);
+ });
+ }
+
+ function keyMapChanged(cm) {
+ var map = keyMap[cm.options.keyMap], style = map.style;
+ cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-keymap-\S+/g, "") +
+ (style ? " cm-keymap-" + style : "");
+ }
+
+ function themeChanged(cm) {
+ cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") +
+ cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-");
+ clearCaches(cm);
+ }
+
+ function guttersChanged(cm) {
+ updateGutters(cm);
+ regChange(cm);
+ setTimeout(function(){alignHorizontally(cm);}, 20);
+ }
+
+ // Rebuild the gutter elements, ensure the margin to the left of the
+ // code matches their width.
+ function updateGutters(cm) {
+ var gutters = cm.display.gutters, specs = cm.options.gutters;
+ removeChildren(gutters);
+ for (var i = 0; i < specs.length; ++i) {
+ var gutterClass = specs[i];
+ var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass));
+ if (gutterClass == "CodeMirror-linenumbers") {
+ cm.display.lineGutter = gElt;
+ gElt.style.width = (cm.display.lineNumWidth || 1) + "px";
+ }
+ }
+ gutters.style.display = i ? "" : "none";
+ updateGutterSpace(cm);
+ }
+
+ function updateGutterSpace(cm) {
+ var width = cm.display.gutters.offsetWidth;
+ cm.display.sizer.style.marginLeft = width + "px";
+ cm.display.scrollbarH.style.left = cm.options.fixedGutter ? width + "px" : 0;
+ }
+
+ // Compute the character length of a line, taking into account
+ // collapsed ranges (see markText) that might hide parts, and join
+ // other lines onto it.
+ function lineLength(line) {
+ if (line.height == 0) return 0;
+ var len = line.text.length, merged, cur = line;
+ while (merged = collapsedSpanAtStart(cur)) {
+ var found = merged.find(0, true);
+ cur = found.from.line;
+ len += found.from.ch - found.to.ch;
+ }
+ cur = line;
+ while (merged = collapsedSpanAtEnd(cur)) {
+ var found = merged.find(0, true);
+ len -= cur.text.length - found.from.ch;
+ cur = found.to.line;
+ len += cur.text.length - found.to.ch;
+ }
+ return len;
+ }
+
+ // Find the longest line in the document.
+ function findMaxLine(cm) {
+ var d = cm.display, doc = cm.doc;
+ d.maxLine = getLine(doc, doc.first);
+ d.maxLineLength = lineLength(d.maxLine);
+ d.maxLineChanged = true;
+ doc.iter(function(line) {
+ var len = lineLength(line);
+ if (len > d.maxLineLength) {
+ d.maxLineLength = len;
+ d.maxLine = line;
+ }
+ });
+ }
+
+ // Make sure the gutters options contains the element
+ // "CodeMirror-linenumbers" when the lineNumbers option is true.
+ function setGuttersForLineNumbers(options) {
+ var found = indexOf(options.gutters, "CodeMirror-linenumbers");
+ if (found == -1 && options.lineNumbers) {
+ options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]);
+ } else if (found > -1 && !options.lineNumbers) {
+ options.gutters = options.gutters.slice(0);
+ options.gutters.splice(found, 1);
+ }
+ }
+
+ // SCROLLBARS
+
+ // Prepare DOM reads needed to update the scrollbars. Done in one
+ // shot to minimize update/measure roundtrips.
+ function measureForScrollbars(cm) {
+ var scroll = cm.display.scroller;
+ return {
+ clientHeight: scroll.clientHeight,
+ barHeight: cm.display.scrollbarV.clientHeight,
+ scrollWidth: scroll.scrollWidth, clientWidth: scroll.clientWidth,
+ barWidth: cm.display.scrollbarH.clientWidth,
+ docHeight: Math.round(cm.doc.height + paddingVert(cm.display))
+ };
+ }
+
+ // Re-synchronize the fake scrollbars with the actual size of the
+ // content.
+ function updateScrollbars(cm, measure) {
+ if (!measure) measure = measureForScrollbars(cm);
+ var d = cm.display;
+ var scrollHeight = measure.docHeight + scrollerCutOff;
+ var needsH = measure.scrollWidth > measure.clientWidth;
+ var needsV = scrollHeight > measure.clientHeight;
+ if (needsV) {
+ d.scrollbarV.style.display = "block";
+ d.scrollbarV.style.bottom = needsH ? scrollbarWidth(d.measure) + "px" : "0";
+ // A bug in IE8 can cause this value to be negative, so guard it.
+ d.scrollbarV.firstChild.style.height =
+ Math.max(0, scrollHeight - measure.clientHeight + (measure.barHeight || d.scrollbarV.clientHeight)) + "px";
+ } else {
+ d.scrollbarV.style.display = "";
+ d.scrollbarV.firstChild.style.height = "0";
+ }
+ if (needsH) {
+ d.scrollbarH.style.display = "block";
+ d.scrollbarH.style.right = needsV ? scrollbarWidth(d.measure) + "px" : "0";
+ d.scrollbarH.firstChild.style.width =
+ (measure.scrollWidth - measure.clientWidth + (measure.barWidth || d.scrollbarH.clientWidth)) + "px";
+ } else {
+ d.scrollbarH.style.display = "";
+ d.scrollbarH.firstChild.style.width = "0";
+ }
+ if (needsH && needsV) {
+ d.scrollbarFiller.style.display = "block";
+ d.scrollbarFiller.style.height = d.scrollbarFiller.style.width = scrollbarWidth(d.measure) + "px";
+ } else d.scrollbarFiller.style.display = "";
+ if (needsH && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {
+ d.gutterFiller.style.display = "block";
+ d.gutterFiller.style.height = scrollbarWidth(d.measure) + "px";
+ d.gutterFiller.style.width = d.gutters.offsetWidth + "px";
+ } else d.gutterFiller.style.display = "";
+
+ if (!cm.state.checkedOverlayScrollbar && measure.clientHeight > 0) {
+ if (scrollbarWidth(d.measure) === 0) {
+ var w = mac && !mac_geMountainLion ? "12px" : "18px";
+ d.scrollbarV.style.minWidth = d.scrollbarH.style.minHeight = w;
+ var barMouseDown = function(e) {
+ if (e_target(e) != d.scrollbarV && e_target(e) != d.scrollbarH)
+ operation(cm, onMouseDown)(e);
+ };
+ on(d.scrollbarV, "mousedown", barMouseDown);
+ on(d.scrollbarH, "mousedown", barMouseDown);
+ }
+ cm.state.checkedOverlayScrollbar = true;
+ }
+ }
+
+ // Compute the lines that are visible in a given viewport (defaults
+ // the the current scroll position). viewPort may contain top,
+ // height, and ensure (see op.scrollToPos) properties.
+ function visibleLines(display, doc, viewPort) {
+ var top = viewPort && viewPort.top != null ? viewPort.top : display.scroller.scrollTop;
+ top = Math.floor(top - paddingTop(display));
+ var bottom = viewPort && viewPort.bottom != null ? viewPort.bottom : top + display.wrapper.clientHeight;
+
+ var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);
+ // Ensure is a {from: {line, ch}, to: {line, ch}} object, and
+ // forces those lines into the viewport (if possible).
+ if (viewPort && viewPort.ensure) {
+ var ensureFrom = viewPort.ensure.from.line, ensureTo = viewPort.ensure.to.line;
+ if (ensureFrom < from)
+ return {from: ensureFrom,
+ to: lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight)};
+ if (Math.min(ensureTo, doc.lastLine()) >= to)
+ return {from: lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight),
+ to: ensureTo};
+ }
+ return {from: from, to: to};
+ }
+
+ // LINE NUMBERS
+
+ // Re-align line numbers and gutter marks to compensate for
+ // horizontal scrolling.
+ function alignHorizontally(cm) {
+ var display = cm.display, view = display.view;
+ if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) return;
+ var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;
+ var gutterW = display.gutters.offsetWidth, left = comp + "px";
+ for (var i = 0; i < view.length; i++) if (!view[i].hidden) {
+ if (cm.options.fixedGutter && view[i].gutter)
+ view[i].gutter.style.left = left;
+ var align = view[i].alignable;
+ if (align) for (var j = 0; j < align.length; j++)
+ align[j].style.left = left;
+ }
+ if (cm.options.fixedGutter)
+ display.gutters.style.left = (comp + gutterW) + "px";
+ }
+
+ // Used to ensure that the line number gutter is still the right
+ // size for the current document size. Returns true when an update
+ // is needed.
+ function maybeUpdateLineNumberWidth(cm) {
+ if (!cm.options.lineNumbers) return false;
+ var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;
+ if (last.length != display.lineNumChars) {
+ var test = display.measure.appendChild(elt("div", [elt("div", last)],
+ "CodeMirror-linenumber CodeMirror-gutter-elt"));
+ var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;
+ display.lineGutter.style.width = "";
+ display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding);
+ display.lineNumWidth = display.lineNumInnerWidth + padding;
+ display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;
+ display.lineGutter.style.width = display.lineNumWidth + "px";
+ updateGutterSpace(cm);
+ return true;
+ }
+ return false;
+ }
+
+ function lineNumberFor(options, i) {
+ return String(options.lineNumberFormatter(i + options.firstLineNumber));
+ }
+
+ // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,
+ // but using getBoundingClientRect to get a sub-pixel-accurate
+ // result.
+ function compensateForHScroll(display) {
+ return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left;
+ }
+
+ // DISPLAY DRAWING
+
+ // Updates the display, selection, and scrollbars, using the
+ // information in display.view to find out which nodes are no longer
+ // up-to-date. Tries to bail out early when no changes are needed,
+ // unless forced is true.
+ // Returns true if an actual update happened, false otherwise.
+ function updateDisplay(cm, viewPort, forced) {
+ var oldFrom = cm.display.viewFrom, oldTo = cm.display.viewTo, updated;
+ var visible = visibleLines(cm.display, cm.doc, viewPort);
+ for (var first = true;; first = false) {
+ var oldWidth = cm.display.scroller.clientWidth;
+ if (!updateDisplayInner(cm, visible, forced)) break;
+ updated = true;
+
+ // If the max line changed since it was last measured, measure it,
+ // and ensure the document's width matches it.
+ if (cm.display.maxLineChanged && !cm.options.lineWrapping)
+ adjustContentWidth(cm);
+
+ var barMeasure = measureForScrollbars(cm);
+ updateSelection(cm);
+ setDocumentHeight(cm, barMeasure);
+ updateScrollbars(cm, barMeasure);
+ if (webkit && cm.options.lineWrapping)
+ checkForWebkitWidthBug(cm, barMeasure); // (Issue #2420)
+ if (first && cm.options.lineWrapping && oldWidth != cm.display.scroller.clientWidth) {
+ forced = true;
+ continue;
+ }
+ forced = false;
+
+ // Clip forced viewport to actual scrollable area.
+ if (viewPort && viewPort.top != null)
+ viewPort = {top: Math.min(barMeasure.docHeight - scrollerCutOff - barMeasure.clientHeight, viewPort.top)};
+ // Updated line heights might result in the drawn area not
+ // actually covering the viewport. Keep looping until it does.
+ visible = visibleLines(cm.display, cm.doc, viewPort);
+ if (visible.from >= cm.display.viewFrom && visible.to <= cm.display.viewTo)
+ break;
+ }
+
+ cm.display.updateLineNumbers = null;
+ if (updated) {
+ signalLater(cm, "update", cm);
+ if (cm.display.viewFrom != oldFrom || cm.display.viewTo != oldTo)
+ signalLater(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo);
+ }
+ return updated;
+ }
+
+ // Does the actual updating of the line display. Bails out
+ // (returning false) when there is nothing to be done and forced is
+ // false.
+ function updateDisplayInner(cm, visible, forced) {
+ var display = cm.display, doc = cm.doc;
+ if (!display.wrapper.offsetWidth) {
+ resetView(cm);
+ return;
+ }
+
+ // Bail out if the visible area is already rendered and nothing changed.
+ if (!forced && visible.from >= display.viewFrom && visible.to <= display.viewTo &&
+ countDirtyView(cm) == 0)
+ return;
+
+ if (maybeUpdateLineNumberWidth(cm))
+ resetView(cm);
+ var dims = getDimensions(cm);
+
+ // Compute a suitable new viewport (from & to)
+ var end = doc.first + doc.size;
+ var from = Math.max(visible.from - cm.options.viewportMargin, doc.first);
+ var to = Math.min(end, visible.to + cm.options.viewportMargin);
+ if (display.viewFrom < from && from - display.viewFrom < 20) from = Math.max(doc.first, display.viewFrom);
+ if (display.viewTo > to && display.viewTo - to < 20) to = Math.min(end, display.viewTo);
+ if (sawCollapsedSpans) {
+ from = visualLineNo(cm.doc, from);
+ to = visualLineEndNo(cm.doc, to);
+ }
+
+ var different = from != display.viewFrom || to != display.viewTo ||
+ display.lastSizeC != display.wrapper.clientHeight;
+ adjustView(cm, from, to);
+
+ display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));
+ // Position the mover div to align with the current scroll position
+ cm.display.mover.style.top = display.viewOffset + "px";
+
+ var toUpdate = countDirtyView(cm);
+ if (!different && toUpdate == 0 && !forced) return;
+
+ // For big changes, we hide the enclosing element during the
+ // update, since that speeds up the operations on most browsers.
+ var focused = activeElt();
+ if (toUpdate > 4) display.lineDiv.style.display = "none";
+ patchDisplay(cm, display.updateLineNumbers, dims);
+ if (toUpdate > 4) display.lineDiv.style.display = "";
+ // There might have been a widget with a focused element that got
+ // hidden or updated, if so re-focus it.
+ if (focused && activeElt() != focused && focused.offsetHeight) focused.focus();
+
+ // Prevent selection and cursors from interfering with the scroll
+ // width.
+ removeChildren(display.cursorDiv);
+ removeChildren(display.selectionDiv);
+
+ if (different) {
+ display.lastSizeC = display.wrapper.clientHeight;
+ startWorker(cm, 400);
+ }
+
+ updateHeightsInViewport(cm);
+
+ return true;
+ }
+
+ function adjustContentWidth(cm) {
+ var display = cm.display;
+ var width = measureChar(cm, display.maxLine, display.maxLine.text.length).left;
+ display.maxLineChanged = false;
+ var minWidth = Math.max(0, width + 3);
+ var maxScrollLeft = Math.max(0, display.sizer.offsetLeft + minWidth + scrollerCutOff - display.scroller.clientWidth);
+ display.sizer.style.minWidth = minWidth + "px";
+ if (maxScrollLeft < cm.doc.scrollLeft)
+ setScrollLeft(cm, Math.min(display.scroller.scrollLeft, maxScrollLeft), true);
+ }
+
+ function setDocumentHeight(cm, measure) {
+ cm.display.sizer.style.minHeight = cm.display.heightForcer.style.top = measure.docHeight + "px";
+ cm.display.gutters.style.height = Math.max(measure.docHeight, measure.clientHeight - scrollerCutOff) + "px";
+ }
+
+
+ function checkForWebkitWidthBug(cm, measure) {
+ // Work around Webkit bug where it sometimes reserves space for a
+ // non-existing phantom scrollbar in the scroller (Issue #2420)
+ if (cm.display.sizer.offsetWidth + cm.display.gutters.offsetWidth < cm.display.scroller.clientWidth - 1) {
+ cm.display.sizer.style.minHeight = cm.display.heightForcer.style.top = "0px";
+ cm.display.gutters.style.height = measure.docHeight + "px";
+ }
+ }
+
+ // Read the actual heights of the rendered lines, and update their
+ // stored heights to match.
+ function updateHeightsInViewport(cm) {
+ var display = cm.display;
+ var prevBottom = display.lineDiv.offsetTop;
+ for (var i = 0; i < display.view.length; i++) {
+ var cur = display.view[i], height;
+ if (cur.hidden) continue;
+ if (ie_upto7) {
+ var bot = cur.node.offsetTop + cur.node.offsetHeight;
+ height = bot - prevBottom;
+ prevBottom = bot;
+ } else {
+ var box = cur.node.getBoundingClientRect();
+ height = box.bottom - box.top;
+ }
+ var diff = cur.line.height - height;
+ if (height < 2) height = textHeight(display);
+ if (diff > .001 || diff < -.001) {
+ updateLineHeight(cur.line, height);
+ updateWidgetHeight(cur.line);
+ if (cur.rest) for (var j = 0; j < cur.rest.length; j++)
+ updateWidgetHeight(cur.rest[j]);
+ }
+ }
+ }
+
+ // Read and store the height of line widgets associated with the
+ // given line.
+ function updateWidgetHeight(line) {
+ if (line.widgets) for (var i = 0; i < line.widgets.length; ++i)
+ line.widgets[i].height = line.widgets[i].node.offsetHeight;
+ }
+
+ // Do a bulk-read of the DOM positions and sizes needed to draw the
+ // view, so that we don't interleave reading and writing to the DOM.
+ function getDimensions(cm) {
+ var d = cm.display, left = {}, width = {};
+ for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {
+ left[cm.options.gutters[i]] = n.offsetLeft;
+ width[cm.options.gutters[i]] = n.offsetWidth;
+ }
+ return {fixedPos: compensateForHScroll(d),
+ gutterTotalWidth: d.gutters.offsetWidth,
+ gutterLeft: left,
+ gutterWidth: width,
+ wrapperWidth: d.wrapper.clientWidth};
+ }
+
+ // Sync the actual display DOM structure with display.view, removing
+ // nodes for lines that are no longer in view, and creating the ones
+ // that are not there yet, and updating the ones that are out of
+ // date.
+ function patchDisplay(cm, updateNumbersFrom, dims) {
+ var display = cm.display, lineNumbers = cm.options.lineNumbers;
+ var container = display.lineDiv, cur = container.firstChild;
+
+ function rm(node) {
+ var next = node.nextSibling;
+ // Works around a throw-scroll bug in OS X Webkit
+ if (webkit && mac && cm.display.currentWheelTarget == node)
+ node.style.display = "none";
+ else
+ node.parentNode.removeChild(node);
+ return next;
+ }
+
+ var view = display.view, lineN = display.viewFrom;
+ // Loop over the elements in the view, syncing cur (the DOM nodes
+ // in display.lineDiv) with the view as we go.
+ for (var i = 0; i < view.length; i++) {
+ var lineView = view[i];
+ if (lineView.hidden) {
+ } else if (!lineView.node) { // Not drawn yet
+ var node = buildLineElement(cm, lineView, lineN, dims);
+ container.insertBefore(node, cur);
+ } else { // Already drawn
+ while (cur != lineView.node) cur = rm(cur);
+ var updateNumber = lineNumbers && updateNumbersFrom != null &&
+ updateNumbersFrom <= lineN && lineView.lineNumber;
+ if (lineView.changes) {
+ if (indexOf(lineView.changes, "gutter") > -1) updateNumber = false;
+ updateLineForChanges(cm, lineView, lineN, dims);
+ }
+ if (updateNumber) {
+ removeChildren(lineView.lineNumber);
+ lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));
+ }
+ cur = lineView.node.nextSibling;
+ }
+ lineN += lineView.size;
+ }
+ while (cur) cur = rm(cur);
+ }
+
+ // When an aspect of a line changes, a string is added to
+ // lineView.changes. This updates the relevant part of the line's
+ // DOM structure.
+ function updateLineForChanges(cm, lineView, lineN, dims) {
+ for (var j = 0; j < lineView.changes.length; j++) {
+ var type = lineView.changes[j];
+ if (type == "text") updateLineText(cm, lineView);
+ else if (type == "gutter") updateLineGutter(cm, lineView, lineN, dims);
+ else if (type == "class") updateLineClasses(lineView);
+ else if (type == "widget") updateLineWidgets(lineView, dims);
+ }
+ lineView.changes = null;
+ }
+
+ // Lines with gutter elements, widgets or a background class need to
+ // be wrapped, and have the extra elements added to the wrapper div
+ function ensureLineWrapped(lineView) {
+ if (lineView.node == lineView.text) {
+ lineView.node = elt("div", null, null, "position: relative");
+ if (lineView.text.parentNode)
+ lineView.text.parentNode.replaceChild(lineView.node, lineView.text);
+ lineView.node.appendChild(lineView.text);
+ if (ie_upto7) lineView.node.style.zIndex = 2;
+ }
+ return lineView.node;
+ }
+
+ function updateLineBackground(lineView) {
+ var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass;
+ if (cls) cls += " CodeMirror-linebackground";
+ if (lineView.background) {
+ if (cls) lineView.background.className = cls;
+ else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }
+ } else if (cls) {
+ var wrap = ensureLineWrapped(lineView);
+ lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild);
+ }
+ }
+
+ // Wrapper around buildLineContent which will reuse the structure
+ // in display.externalMeasured when possible.
+ function getLineContent(cm, lineView) {
+ var ext = cm.display.externalMeasured;
+ if (ext && ext.line == lineView.line) {
+ cm.display.externalMeasured = null;
+ lineView.measure = ext.measure;
+ return ext.built;
+ }
+ return buildLineContent(cm, lineView);
+ }
+
+ // Redraw the line's text. Interacts with the background and text
+ // classes because the mode may output tokens that influence these
+ // classes.
+ function updateLineText(cm, lineView) {
+ var cls = lineView.text.className;
+ var built = getLineContent(cm, lineView);
+ if (lineView.text == lineView.node) lineView.node = built.pre;
+ lineView.text.parentNode.replaceChild(built.pre, lineView.text);
+ lineView.text = built.pre;
+ if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {
+ lineView.bgClass = built.bgClass;
+ lineView.textClass = built.textClass;
+ updateLineClasses(lineView);
+ } else if (cls) {
+ lineView.text.className = cls;
+ }
+ }
+
+ function updateLineClasses(lineView) {
+ updateLineBackground(lineView);
+ if (lineView.line.wrapClass)
+ ensureLineWrapped(lineView).className = lineView.line.wrapClass;
+ else if (lineView.node != lineView.text)
+ lineView.node.className = "";
+ var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass;
+ lineView.text.className = textClass || "";
+ }
+
+ function updateLineGutter(cm, lineView, lineN, dims) {
+ if (lineView.gutter) {
+ lineView.node.removeChild(lineView.gutter);
+ lineView.gutter = null;
+ }
+ var markers = lineView.line.gutterMarkers;
+ if (cm.options.lineNumbers || markers) {
+ var wrap = ensureLineWrapped(lineView);
+ var gutterWrap = lineView.gutter =
+ wrap.insertBefore(elt("div", null, "CodeMirror-gutter-wrapper", "position: absolute; left: " +
+ (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px"),
+ lineView.text);
+ if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"]))
+ lineView.lineNumber = gutterWrap.appendChild(
+ elt("div", lineNumberFor(cm.options, lineN),
+ "CodeMirror-linenumber CodeMirror-gutter-elt",
+ "left: " + dims.gutterLeft["CodeMirror-linenumbers"] + "px; width: "
+ + cm.display.lineNumInnerWidth + "px"));
+ if (markers) for (var k = 0; k < cm.options.gutters.length; ++k) {
+ var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id];
+ if (found)
+ gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", "left: " +
+ dims.gutterLeft[id] + "px; width: " + dims.gutterWidth[id] + "px"));
+ }
+ }
+ }
+
+ function updateLineWidgets(lineView, dims) {
+ if (lineView.alignable) lineView.alignable = null;
+ for (var node = lineView.node.firstChild, next; node; node = next) {
+ var next = node.nextSibling;
+ if (node.className == "CodeMirror-linewidget")
+ lineView.node.removeChild(node);
+ }
+ insertLineWidgets(lineView, dims);
+ }
+
+ // Build a line's DOM representation from scratch
+ function buildLineElement(cm, lineView, lineN, dims) {
+ var built = getLineContent(cm, lineView);
+ lineView.text = lineView.node = built.pre;
+ if (built.bgClass) lineView.bgClass = built.bgClass;
+ if (built.textClass) lineView.textClass = built.textClass;
+
+ updateLineClasses(lineView);
+ updateLineGutter(cm, lineView, lineN, dims);
+ insertLineWidgets(lineView, dims);
+ return lineView.node;
+ }
+
+ // A lineView may contain multiple logical lines (when merged by
+ // collapsed spans). The widgets for all of them need to be drawn.
+ function insertLineWidgets(lineView, dims) {
+ insertLineWidgetsFor(lineView.line, lineView, dims, true);
+ if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++)
+ insertLineWidgetsFor(lineView.rest[i], lineView, dims, false);
+ }
+
+ function insertLineWidgetsFor(line, lineView, dims, allowAbove) {
+ if (!line.widgets) return;
+ var wrap = ensureLineWrapped(lineView);
+ for (var i = 0, ws = line.widgets; i < ws.length; ++i) {
+ var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget");
+ if (!widget.handleMouseEvents) node.ignoreEvents = true;
+ positionLineWidget(widget, node, lineView, dims);
+ if (allowAbove && widget.above)
+ wrap.insertBefore(node, lineView.gutter || lineView.text);
+ else
+ wrap.appendChild(node);
+ signalLater(widget, "redraw");
+ }
+ }
+
+ function positionLineWidget(widget, node, lineView, dims) {
+ if (widget.noHScroll) {
+ (lineView.alignable || (lineView.alignable = [])).push(node);
+ var width = dims.wrapperWidth;
+ node.style.left = dims.fixedPos + "px";
+ if (!widget.coverGutter) {
+ width -= dims.gutterTotalWidth;
+ node.style.paddingLeft = dims.gutterTotalWidth + "px";
+ }
+ node.style.width = width + "px";
+ }
+ if (widget.coverGutter) {
+ node.style.zIndex = 5;
+ node.style.position = "relative";
+ if (!widget.noHScroll) node.style.marginLeft = -dims.gutterTotalWidth + "px";
+ }
+ }
+
+ // POSITION OBJECT
+
+ // A Pos instance represents a position within the text.
+ var Pos = CodeMirror.Pos = function(line, ch) {
+ if (!(this instanceof Pos)) return new Pos(line, ch);
+ this.line = line; this.ch = ch;
+ };
+
+ // Compare two positions, return 0 if they are the same, a negative
+ // number when a is less, and a positive number otherwise.
+ var cmp = CodeMirror.cmpPos = function(a, b) { return a.line - b.line || a.ch - b.ch; };
+
+ function copyPos(x) {return Pos(x.line, x.ch);}
+ function maxPos(a, b) { return cmp(a, b) < 0 ? b : a; }
+ function minPos(a, b) { return cmp(a, b) < 0 ? a : b; }
+
+ // SELECTION / CURSOR
+
+ // Selection objects are immutable. A new one is created every time
+ // the selection changes. A selection is one or more non-overlapping
+ // (and non-touching) ranges, sorted, and an integer that indicates
+ // which one is the primary selection (the one that's scrolled into
+ // view, that getCursor returns, etc).
+ function Selection(ranges, primIndex) {
+ this.ranges = ranges;
+ this.primIndex = primIndex;
+ }
+
+ Selection.prototype = {
+ primary: function() { return this.ranges[this.primIndex]; },
+ equals: function(other) {
+ if (other == this) return true;
+ if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) return false;
+ for (var i = 0; i < this.ranges.length; i++) {
+ var here = this.ranges[i], there = other.ranges[i];
+ if (cmp(here.anchor, there.anchor) != 0 || cmp(here.head, there.head) != 0) return false;
+ }
+ return true;
+ },
+ deepCopy: function() {
+ for (var out = [], i = 0; i < this.ranges.length; i++)
+ out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head));
+ return new Selection(out, this.primIndex);
+ },
+ somethingSelected: function() {
+ for (var i = 0; i < this.ranges.length; i++)
+ if (!this.ranges[i].empty()) return true;
+ return false;
+ },
+ contains: function(pos, end) {
+ if (!end) end = pos;
+ for (var i = 0; i < this.ranges.length; i++) {
+ var range = this.ranges[i];
+ if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)
+ return i;
+ }
+ return -1;
+ }
+ };
+
+ function Range(anchor, head) {
+ this.anchor = anchor; this.head = head;
+ }
+
+ Range.prototype = {
+ from: function() { return minPos(this.anchor, this.head); },
+ to: function() { return maxPos(this.anchor, this.head); },
+ empty: function() {
+ return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch;
+ }
+ };
+
+ // Take an unsorted, potentially overlapping set of ranges, and
+ // build a selection out of it. 'Consumes' ranges array (modifying
+ // it).
+ function normalizeSelection(ranges, primIndex) {
+ var prim = ranges[primIndex];
+ ranges.sort(function(a, b) { return cmp(a.from(), b.from()); });
+ primIndex = indexOf(ranges, prim);
+ for (var i = 1; i < ranges.length; i++) {
+ var cur = ranges[i], prev = ranges[i - 1];
+ if (cmp(prev.to(), cur.from()) >= 0) {
+ var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());
+ var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;
+ if (i <= primIndex) --primIndex;
+ ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));
+ }
+ }
+ return new Selection(ranges, primIndex);
+ }
+
+ function simpleSelection(anchor, head) {
+ return new Selection([new Range(anchor, head || anchor)], 0);
+ }
+
+ // Most of the external API clips given positions to make sure they
+ // actually exist within the document.
+ function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));}
+ function clipPos(doc, pos) {
+ if (pos.line < doc.first) return Pos(doc.first, 0);
+ var last = doc.first + doc.size - 1;
+ if (pos.line > last) return Pos(last, getLine(doc, last).text.length);
+ return clipToLen(pos, getLine(doc, pos.line).text.length);
+ }
+ function clipToLen(pos, linelen) {
+ var ch = pos.ch;
+ if (ch == null || ch > linelen) return Pos(pos.line, linelen);
+ else if (ch < 0) return Pos(pos.line, 0);
+ else return pos;
+ }
+ function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size;}
+ function clipPosArray(doc, array) {
+ for (var out = [], i = 0; i < array.length; i++) out[i] = clipPos(doc, array[i]);
+ return out;
+ }
+
+ // SELECTION UPDATES
+
+ // The 'scroll' parameter given to many of these indicated whether
+ // the new cursor position should be scrolled into view after
+ // modifying the selection.
+
+ // If shift is held or the extend flag is set, extends a range to
+ // include a given position (and optionally a second position).
+ // Otherwise, simply returns the range between the given positions.
+ // Used for cursor motion and such.
+ function extendRange(doc, range, head, other) {
+ if (doc.cm && doc.cm.display.shift || doc.extend) {
+ var anchor = range.anchor;
+ if (other) {
+ var posBefore = cmp(head, anchor) < 0;
+ if (posBefore != (cmp(other, anchor) < 0)) {
+ anchor = head;
+ head = other;
+ } else if (posBefore != (cmp(head, other) < 0)) {
+ head = other;
+ }
+ }
+ return new Range(anchor, head);
+ } else {
+ return new Range(other || head, head);
+ }
+ }
+
+ // Extend the primary selection range, discard the rest.
+ function extendSelection(doc, head, other, options) {
+ setSelection(doc, new Selection([extendRange(doc, doc.sel.primary(), head, other)], 0), options);
+ }
+
+ // Extend all selections (pos is an array of selections with length
+ // equal the number of selections)
+ function extendSelections(doc, heads, options) {
+ for (var out = [], i = 0; i < doc.sel.ranges.length; i++)
+ out[i] = extendRange(doc, doc.sel.ranges[i], heads[i], null);
+ var newSel = normalizeSelection(out, doc.sel.primIndex);
+ setSelection(doc, newSel, options);
+ }
+
+ // Updates a single range in the selection.
+ function replaceOneSelection(doc, i, range, options) {
+ var ranges = doc.sel.ranges.slice(0);
+ ranges[i] = range;
+ setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options);
+ }
+
+ // Reset the selection to a single range.
+ function setSimpleSelection(doc, anchor, head, options) {
+ setSelection(doc, simpleSelection(anchor, head), options);
+ }
+
+ // Give beforeSelectionChange handlers a change to influence a
+ // selection update.
+ function filterSelectionChange(doc, sel) {
+ var obj = {
+ ranges: sel.ranges,
+ update: function(ranges) {
+ this.ranges = [];
+ for (var i = 0; i < ranges.length; i++)
+ this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),
+ clipPos(doc, ranges[i].head));
+ }
+ };
+ signal(doc, "beforeSelectionChange", doc, obj);
+ if (doc.cm) signal(doc.cm, "beforeSelectionChange", doc.cm, obj);
+ if (obj.ranges != sel.ranges) return normalizeSelection(obj.ranges, obj.ranges.length - 1);
+ else return sel;
+ }
+
+ function setSelectionReplaceHistory(doc, sel, options) {
+ var done = doc.history.done, last = lst(done);
+ if (last && last.ranges) {
+ done[done.length - 1] = sel;
+ setSelectionNoUndo(doc, sel, options);
+ } else {
+ setSelection(doc, sel, options);
+ }
+ }
+
+ // Set a new selection.
+ function setSelection(doc, sel, options) {
+ setSelectionNoUndo(doc, sel, options);
+ addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);
+ }
+
+ function setSelectionNoUndo(doc, sel, options) {
+ if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange"))
+ sel = filterSelectionChange(doc, sel);
+
+ var bias = cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1;
+ setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));
+
+ if (!(options && options.scroll === false) && doc.cm)
+ ensureCursorVisible(doc.cm);
+ }
+
+ function setSelectionInner(doc, sel) {
+ if (sel.equals(doc.sel)) return;
+
+ doc.sel = sel;
+
+ if (doc.cm) {
+ doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true;
+ signalCursorActivity(doc.cm);
+ }
+ signalLater(doc, "cursorActivity", doc);
+ }
+
+ // Verify that the selection does not partially select any atomic
+ // marked ranges.
+ function reCheckSelection(doc) {
+ setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false), sel_dontScroll);
+ }
+
+ // Return a selection that does not partially select any atomic
+ // ranges.
+ function skipAtomicInSelection(doc, sel, bias, mayClear) {
+ var out;
+ for (var i = 0; i < sel.ranges.length; i++) {
+ var range = sel.ranges[i];
+ var newAnchor = skipAtomic(doc, range.anchor, bias, mayClear);
+ var newHead = skipAtomic(doc, range.head, bias, mayClear);
+ if (out || newAnchor != range.anchor || newHead != range.head) {
+ if (!out) out = sel.ranges.slice(0, i);
+ out[i] = new Range(newAnchor, newHead);
+ }
+ }
+ return out ? normalizeSelection(out, sel.primIndex) : sel;
+ }
+
+ // Ensure a given position is not inside an atomic range.
+ function skipAtomic(doc, pos, bias, mayClear) {
+ var flipped = false, curPos = pos;
+ var dir = bias || 1;
+ doc.cantEdit = false;
+ search: for (;;) {
+ var line = getLine(doc, curPos.line);
+ if (line.markedSpans) {
+ for (var i = 0; i < line.markedSpans.length; ++i) {
+ var sp = line.markedSpans[i], m = sp.marker;
+ if ((sp.from == null || (m.inclusiveLeft ? sp.from <= curPos.ch : sp.from < curPos.ch)) &&
+ (sp.to == null || (m.inclusiveRight ? sp.to >= curPos.ch : sp.to > curPos.ch))) {
+ if (mayClear) {
+ signal(m, "beforeCursorEnter");
+ if (m.explicitlyCleared) {
+ if (!line.markedSpans) break;
+ else {--i; continue;}
+ }
+ }
+ if (!m.atomic) continue;
+ var newPos = m.find(dir < 0 ? -1 : 1);
+ if (cmp(newPos, curPos) == 0) {
+ newPos.ch += dir;
+ if (newPos.ch < 0) {
+ if (newPos.line > doc.first) newPos = clipPos(doc, Pos(newPos.line - 1));
+ else newPos = null;
+ } else if (newPos.ch > line.text.length) {
+ if (newPos.line < doc.first + doc.size - 1) newPos = Pos(newPos.line + 1, 0);
+ else newPos = null;
+ }
+ if (!newPos) {
+ if (flipped) {
+ // Driven in a corner -- no valid cursor position found at all
+ // -- try again *with* clearing, if we didn't already
+ if (!mayClear) return skipAtomic(doc, pos, bias, true);
+ // Otherwise, turn off editing until further notice, and return the start of the doc
+ doc.cantEdit = true;
+ return Pos(doc.first, 0);
+ }
+ flipped = true; newPos = pos; dir = -dir;
+ }
+ }
+ curPos = newPos;
+ continue search;
+ }
+ }
+ }
+ return curPos;
+ }
+ }
+
+ // SELECTION DRAWING
+
+ // Redraw the selection and/or cursor
+ function updateSelection(cm) {
+ var display = cm.display, doc = cm.doc;
+ var curFragment = document.createDocumentFragment();
+ var selFragment = document.createDocumentFragment();
+
+ for (var i = 0; i < doc.sel.ranges.length; i++) {
+ var range = doc.sel.ranges[i];
+ var collapsed = range.empty();
+ if (collapsed || cm.options.showCursorWhenSelecting)
+ drawSelectionCursor(cm, range, curFragment);
+ if (!collapsed)
+ drawSelectionRange(cm, range, selFragment);
+ }
+
+ // Move the hidden textarea near the cursor to prevent scrolling artifacts
+ if (cm.options.moveInputWithCursor) {
+ var headPos = cursorCoords(cm, doc.sel.primary().head, "div");
+ var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();
+ var top = Math.max(0, Math.min(display.wrapper.clientHeight - 10,
+ headPos.top + lineOff.top - wrapOff.top));
+ var left = Math.max(0, Math.min(display.wrapper.clientWidth - 10,
+ headPos.left + lineOff.left - wrapOff.left));
+ display.inputDiv.style.top = top + "px";
+ display.inputDiv.style.left = left + "px";
+ }
+
+ removeChildrenAndAdd(display.cursorDiv, curFragment);
+ removeChildrenAndAdd(display.selectionDiv, selFragment);
+ }
+
+ // Draws a cursor for the given range
+ function drawSelectionCursor(cm, range, output) {
+ var pos = cursorCoords(cm, range.head, "div");
+
+ var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor"));
+ cursor.style.left = pos.left + "px";
+ cursor.style.top = pos.top + "px";
+ cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px";
+
+ if (pos.other) {
+ // Secondary cursor, shown when on a 'jump' in bi-directional text
+ var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor"));
+ otherCursor.style.display = "";
+ otherCursor.style.left = pos.other.left + "px";
+ otherCursor.style.top = pos.other.top + "px";
+ otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px";
+ }
+ }
+
+ // Draws the given range as a highlighted selection
+ function drawSelectionRange(cm, range, output) {
+ var display = cm.display, doc = cm.doc;
+ var fragment = document.createDocumentFragment();
+ var padding = paddingH(cm.display), leftSide = padding.left, rightSide = display.lineSpace.offsetWidth - padding.right;
+
+ function add(left, top, width, bottom) {
+ if (top < 0) top = 0;
+ top = Math.round(top);
+ bottom = Math.round(bottom);
+ fragment.appendChild(elt("div", null, "CodeMirror-selected", "position: absolute; left: " + left +
+ "px; top: " + top + "px; width: " + (width == null ? rightSide - left : width) +
+ "px; height: " + (bottom - top) + "px"));
+ }
+
+ function drawForLine(line, fromArg, toArg) {
+ var lineObj = getLine(doc, line);
+ var lineLen = lineObj.text.length;
+ var start, end;
+ function coords(ch, bias) {
+ return charCoords(cm, Pos(line, ch), "div", lineObj, bias);
+ }
+
+ iterateBidiSections(getOrder(lineObj), fromArg || 0, toArg == null ? lineLen : toArg, function(from, to, dir) {
+ var leftPos = coords(from, "left"), rightPos, left, right;
+ if (from == to) {
+ rightPos = leftPos;
+ left = right = leftPos.left;
+ } else {
+ rightPos = coords(to - 1, "right");
+ if (dir == "rtl") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; }
+ left = leftPos.left;
+ right = rightPos.right;
+ }
+ if (fromArg == null && from == 0) left = leftSide;
+ if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part
+ add(left, leftPos.top, null, leftPos.bottom);
+ left = leftSide;
+ if (leftPos.bottom < rightPos.top) add(left, leftPos.bottom, null, rightPos.top);
+ }
+ if (toArg == null && to == lineLen) right = rightSide;
+ if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left)
+ start = leftPos;
+ if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right)
+ end = rightPos;
+ if (left < leftSide + 1) left = leftSide;
+ add(left, rightPos.top, right - left, rightPos.bottom);
+ });
+ return {start: start, end: end};
+ }
+
+ var sFrom = range.from(), sTo = range.to();
+ if (sFrom.line == sTo.line) {
+ drawForLine(sFrom.line, sFrom.ch, sTo.ch);
+ } else {
+ var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);
+ var singleVLine = visualLine(fromLine) == visualLine(toLine);
+ var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;
+ var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;
+ if (singleVLine) {
+ if (leftEnd.top < rightStart.top - 2) {
+ add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);
+ add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);
+ } else {
+ add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);
+ }
+ }
+ if (leftEnd.bottom < rightStart.top)
+ add(leftSide, leftEnd.bottom, null, rightStart.top);
+ }
+
+ output.appendChild(fragment);
+ }
+
+ // Cursor-blinking
+ function restartBlink(cm) {
+ if (!cm.state.focused) return;
+ var display = cm.display;
+ clearInterval(display.blinker);
+ var on = true;
+ display.cursorDiv.style.visibility = "";
+ if (cm.options.cursorBlinkRate > 0)
+ display.blinker = setInterval(function() {
+ display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden";
+ }, cm.options.cursorBlinkRate);
+ }
+
+ // HIGHLIGHT WORKER
+
+ function startWorker(cm, time) {
+ if (cm.doc.mode.startState && cm.doc.frontier < cm.display.viewTo)
+ cm.state.highlight.set(time, bind(highlightWorker, cm));
+ }
+
+ function highlightWorker(cm) {
+ var doc = cm.doc;
+ if (doc.frontier < doc.first) doc.frontier = doc.first;
+ if (doc.frontier >= cm.display.viewTo) return;
+ var end = +new Date + cm.options.workTime;
+ var state = copyState(doc.mode, getStateBefore(cm, doc.frontier));
+
+ runInOp(cm, function() {
+ doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function(line) {
+ if (doc.frontier >= cm.display.viewFrom) { // Visible
+ var oldStyles = line.styles;
+ var highlighted = highlightLine(cm, line, state, true);
+ line.styles = highlighted.styles;
+ if (highlighted.classes) line.styleClasses = highlighted.classes;
+ else if (line.styleClasses) line.styleClasses = null;
+ var ischange = !oldStyles || oldStyles.length != line.styles.length;
+ for (var i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i];
+ if (ischange) regLineChange(cm, doc.frontier, "text");
+ line.stateAfter = copyState(doc.mode, state);
+ } else {
+ processLine(cm, line.text, state);
+ line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null;
+ }
+ ++doc.frontier;
+ if (+new Date > end) {
+ startWorker(cm, cm.options.workDelay);
+ return true;
+ }
+ });
+ });
+ }
+
+ // Finds the line to start with when starting a parse. Tries to
+ // find a line with a stateAfter, so that it can start with a
+ // valid state. If that fails, it returns the line with the
+ // smallest indentation, which tends to need the least context to
+ // parse correctly.
+ function findStartLine(cm, n, precise) {
+ var minindent, minline, doc = cm.doc;
+ var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);
+ for (var search = n; search > lim; --search) {
+ if (search <= doc.first) return doc.first;
+ var line = getLine(doc, search - 1);
+ if (line.stateAfter && (!precise || search <= doc.frontier)) return search;
+ var indented = countColumn(line.text, null, cm.options.tabSize);
+ if (minline == null || minindent > indented) {
+ minline = search - 1;
+ minindent = indented;
+ }
+ }
+ return minline;
+ }
+
+ function getStateBefore(cm, n, precise) {
+ var doc = cm.doc, display = cm.display;
+ if (!doc.mode.startState) return true;
+ var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter;
+ if (!state) state = startState(doc.mode);
+ else state = copyState(doc.mode, state);
+ doc.iter(pos, n, function(line) {
+ processLine(cm, line.text, state);
+ var save = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo;
+ line.stateAfter = save ? copyState(doc.mode, state) : null;
+ ++pos;
+ });
+ if (precise) doc.frontier = pos;
+ return state;
+ }
+
+ // POSITION MEASUREMENT
+
+ function paddingTop(display) {return display.lineSpace.offsetTop;}
+ function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight;}
+ function paddingH(display) {
+ if (display.cachedPaddingH) return display.cachedPaddingH;
+ var e = removeChildrenAndAdd(display.measure, elt("pre", "x"));
+ var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;
+ var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};
+ if (!isNaN(data.left) && !isNaN(data.right)) display.cachedPaddingH = data;
+ return data;
+ }
+
+ // Ensure the lineView.wrapping.heights array is populated. This is
+ // an array of bottom offsets for the lines that make up a drawn
+ // line. When lineWrapping is on, there might be more than one
+ // height.
+ function ensureLineHeights(cm, lineView, rect) {
+ var wrapping = cm.options.lineWrapping;
+ var curWidth = wrapping && cm.display.scroller.clientWidth;
+ if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {
+ var heights = lineView.measure.heights = [];
+ if (wrapping) {
+ lineView.measure.width = curWidth;
+ var rects = lineView.text.firstChild.getClientRects();
+ for (var i = 0; i < rects.length - 1; i++) {
+ var cur = rects[i], next = rects[i + 1];
+ if (Math.abs(cur.bottom - next.bottom) > 2)
+ heights.push((cur.bottom + next.top) / 2 - rect.top);
+ }
+ }
+ heights.push(rect.bottom - rect.top);
+ }
+ }
+
+ // Find a line map (mapping character offsets to text nodes) and a
+ // measurement cache for the given line number. (A line view might
+ // contain multiple lines when collapsed ranges are present.)
+ function mapFromLineView(lineView, line, lineN) {
+ if (lineView.line == line)
+ return {map: lineView.measure.map, cache: lineView.measure.cache};
+ for (var i = 0; i < lineView.rest.length; i++)
+ if (lineView.rest[i] == line)
+ return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]};
+ for (var i = 0; i < lineView.rest.length; i++)
+ if (lineNo(lineView.rest[i]) > lineN)
+ return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i], before: true};
+ }
+
+ // Render a line into the hidden node display.externalMeasured. Used
+ // when measurement is needed for a line that's not in the viewport.
+ function updateExternalMeasurement(cm, line) {
+ line = visualLine(line);
+ var lineN = lineNo(line);
+ var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);
+ view.lineN = lineN;
+ var built = view.built = buildLineContent(cm, view);
+ view.text = built.pre;
+ removeChildrenAndAdd(cm.display.lineMeasure, built.pre);
+ return view;
+ }
+
+ // Get a {top, bottom, left, right} box (in line-local coordinates)
+ // for a given character.
+ function measureChar(cm, line, ch, bias) {
+ return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias);
+ }
+
+ // Find a line view that corresponds to the given line number.
+ function findViewForLine(cm, lineN) {
+ if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)
+ return cm.display.view[findViewIndex(cm, lineN)];
+ var ext = cm.display.externalMeasured;
+ if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)
+ return ext;
+ }
+
+ // Measurement can be split in two steps, the set-up work that
+ // applies to the whole line, and the measurement of the actual
+ // character. Functions like coordsChar, that need to do a lot of
+ // measurements in a row, can thus ensure that the set-up work is
+ // only done once.
+ function prepareMeasureForLine(cm, line) {
+ var lineN = lineNo(line);
+ var view = findViewForLine(cm, lineN);
+ if (view && !view.text)
+ view = null;
+ else if (view && view.changes)
+ updateLineForChanges(cm, view, lineN, getDimensions(cm));
+ if (!view)
+ view = updateExternalMeasurement(cm, line);
+
+ var info = mapFromLineView(view, line, lineN);
+ return {
+ line: line, view: view, rect: null,
+ map: info.map, cache: info.cache, before: info.before,
+ hasHeights: false
+ };
+ }
+
+ // Given a prepared measurement object, measures the position of an
+ // actual character (or fetches it from the cache).
+ function measureCharPrepared(cm, prepared, ch, bias) {
+ if (prepared.before) ch = -1;
+ var key = ch + (bias || ""), found;
+ if (prepared.cache.hasOwnProperty(key)) {
+ found = prepared.cache[key];
+ } else {
+ if (!prepared.rect)
+ prepared.rect = prepared.view.text.getBoundingClientRect();
+ if (!prepared.hasHeights) {
+ ensureLineHeights(cm, prepared.view, prepared.rect);
+ prepared.hasHeights = true;
+ }
+ found = measureCharInner(cm, prepared, ch, bias);
+ if (!found.bogus) prepared.cache[key] = found;
+ }
+ return {left: found.left, right: found.right, top: found.top, bottom: found.bottom};
+ }
+
+ var nullRect = {left: 0, right: 0, top: 0, bottom: 0};
+
+ function measureCharInner(cm, prepared, ch, bias) {
+ var map = prepared.map;
+
+ var node, start, end, collapse;
+ // First, search the line map for the text node corresponding to,
+ // or closest to, the target character.
+ for (var i = 0; i < map.length; i += 3) {
+ var mStart = map[i], mEnd = map[i + 1];
+ if (ch < mStart) {
+ start = 0; end = 1;
+ collapse = "left";
+ } else if (ch < mEnd) {
+ start = ch - mStart;
+ end = start + 1;
+ } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {
+ end = mEnd - mStart;
+ start = end - 1;
+ if (ch >= mEnd) collapse = "right";
+ }
+ if (start != null) {
+ node = map[i + 2];
+ if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right"))
+ collapse = bias;
+ if (bias == "left" && start == 0)
+ while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {
+ node = map[(i -= 3) + 2];
+ collapse = "left";
+ }
+ if (bias == "right" && start == mEnd - mStart)
+ while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {
+ node = map[(i += 3) + 2];
+ collapse = "right";
+ }
+ break;
+ }
+ }
+
+ var rect;
+ if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.
+ while (start && isExtendingChar(prepared.line.text.charAt(mStart + start))) --start;
+ while (mStart + end < mEnd && isExtendingChar(prepared.line.text.charAt(mStart + end))) ++end;
+ if (ie_upto8 && start == 0 && end == mEnd - mStart) {
+ rect = node.parentNode.getBoundingClientRect();
+ } else if (ie && cm.options.lineWrapping) {
+ var rects = range(node, start, end).getClientRects();
+ if (rects.length)
+ rect = rects[bias == "right" ? rects.length - 1 : 0];
+ else
+ rect = nullRect;
+ } else {
+ rect = range(node, start, end).getBoundingClientRect();
+ }
+ } else { // If it is a widget, simply get the box for the whole widget.
+ if (start > 0) collapse = bias = "right";
+ var rects;
+ if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)
+ rect = rects[bias == "right" ? rects.length - 1 : 0];
+ else
+ rect = node.getBoundingClientRect();
+ }
+ if (ie_upto8 && !start && (!rect || !rect.left && !rect.right)) {
+ var rSpan = node.parentNode.getClientRects()[0];
+ if (rSpan)
+ rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom};
+ else
+ rect = nullRect;
+ }
+
+ var top, bot = (rect.bottom + rect.top) / 2 - prepared.rect.top;
+ var heights = prepared.view.measure.heights;
+ for (var i = 0; i < heights.length - 1; i++)
+ if (bot < heights[i]) break;
+ top = i ? heights[i - 1] : 0; bot = heights[i];
+ var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left,
+ right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left,
+ top: top, bottom: bot};
+ if (!rect.left && !rect.right) result.bogus = true;
+ return result;
+ }
+
+ function clearLineMeasurementCacheFor(lineView) {
+ if (lineView.measure) {
+ lineView.measure.cache = {};
+ lineView.measure.heights = null;
+ if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++)
+ lineView.measure.caches[i] = {};
+ }
+ }
+
+ function clearLineMeasurementCache(cm) {
+ cm.display.externalMeasure = null;
+ removeChildren(cm.display.lineMeasure);
+ for (var i = 0; i < cm.display.view.length; i++)
+ clearLineMeasurementCacheFor(cm.display.view[i]);
+ }
+
+ function clearCaches(cm) {
+ clearLineMeasurementCache(cm);
+ cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;
+ if (!cm.options.lineWrapping) cm.display.maxLineChanged = true;
+ cm.display.lineNumChars = null;
+ }
+
+ function pageScrollX() { return window.pageXOffset || (document.documentElement || document.body).scrollLeft; }
+ function pageScrollY() { return window.pageYOffset || (document.documentElement || document.body).scrollTop; }
+
+ // Converts a {top, bottom, left, right} box from line-local
+ // coordinates into another coordinate system. Context may be one of
+ // "line", "div" (display.lineDiv), "local"/null (editor), or "page".
+ function intoCoordSystem(cm, lineObj, rect, context) {
+ if (lineObj.widgets) for (var i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above) {
+ var size = widgetHeight(lineObj.widgets[i]);
+ rect.top += size; rect.bottom += size;
+ }
+ if (context == "line") return rect;
+ if (!context) context = "local";
+ var yOff = heightAtLine(lineObj);
+ if (context == "local") yOff += paddingTop(cm.display);
+ else yOff -= cm.display.viewOffset;
+ if (context == "page" || context == "window") {
+ var lOff = cm.display.lineSpace.getBoundingClientRect();
+ yOff += lOff.top + (context == "window" ? 0 : pageScrollY());
+ var xOff = lOff.left + (context == "window" ? 0 : pageScrollX());
+ rect.left += xOff; rect.right += xOff;
+ }
+ rect.top += yOff; rect.bottom += yOff;
+ return rect;
+ }
+
+ // Coverts a box from "div" coords to another coordinate system.
+ // Context may be "window", "page", "div", or "local"/null.
+ function fromCoordSystem(cm, coords, context) {
+ if (context == "div") return coords;
+ var left = coords.left, top = coords.top;
+ // First move into "page" coordinate system
+ if (context == "page") {
+ left -= pageScrollX();
+ top -= pageScrollY();
+ } else if (context == "local" || !context) {
+ var localBox = cm.display.sizer.getBoundingClientRect();
+ left += localBox.left;
+ top += localBox.top;
+ }
+
+ var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();
+ return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top};
+ }
+
+ function charCoords(cm, pos, context, lineObj, bias) {
+ if (!lineObj) lineObj = getLine(cm.doc, pos.line);
+ return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context);
+ }
+
+ // Returns a box for a given cursor position, which may have an
+ // 'other' property containing the position of the secondary cursor
+ // on a bidi boundary.
+ function cursorCoords(cm, pos, context, lineObj, preparedMeasure) {
+ lineObj = lineObj || getLine(cm.doc, pos.line);
+ if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj);
+ function get(ch, right) {
+ var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left");
+ if (right) m.left = m.right; else m.right = m.left;
+ return intoCoordSystem(cm, lineObj, m, context);
+ }
+ function getBidi(ch, partPos) {
+ var part = order[partPos], right = part.level % 2;
+ if (ch == bidiLeft(part) && partPos && part.level < order[partPos - 1].level) {
+ part = order[--partPos];
+ ch = bidiRight(part) - (part.level % 2 ? 0 : 1);
+ right = true;
+ } else if (ch == bidiRight(part) && partPos < order.length - 1 && part.level < order[partPos + 1].level) {
+ part = order[++partPos];
+ ch = bidiLeft(part) - part.level % 2;
+ right = false;
+ }
+ if (right && ch == part.to && ch > part.from) return get(ch - 1);
+ return get(ch, right);
+ }
+ var order = getOrder(lineObj), ch = pos.ch;
+ if (!order) return get(ch);
+ var partPos = getBidiPartAt(order, ch);
+ var val = getBidi(ch, partPos);
+ if (bidiOther != null) val.other = getBidi(ch, bidiOther);
+ return val;
+ }
+
+ // Used to cheaply estimate the coordinates for a position. Used for
+ // intermediate scroll updates.
+ function estimateCoords(cm, pos) {
+ var left = 0, pos = clipPos(cm.doc, pos);
+ if (!cm.options.lineWrapping) left = charWidth(cm.display) * pos.ch;
+ var lineObj = getLine(cm.doc, pos.line);
+ var top = heightAtLine(lineObj) + paddingTop(cm.display);
+ return {left: left, right: left, top: top, bottom: top + lineObj.height};
+ }
+
+ // Positions returned by coordsChar contain some extra information.
+ // xRel is the relative x position of the input coordinates compared
+ // to the found position (so xRel > 0 means the coordinates are to
+ // the right of the character position, for example). When outside
+ // is true, that means the coordinates lie outside the line's
+ // vertical range.
+ function PosWithInfo(line, ch, outside, xRel) {
+ var pos = Pos(line, ch);
+ pos.xRel = xRel;
+ if (outside) pos.outside = true;
+ return pos;
+ }
+
+ // Compute the character position closest to the given coordinates.
+ // Input must be lineSpace-local ("div" coordinate system).
+ function coordsChar(cm, x, y) {
+ var doc = cm.doc;
+ y += cm.display.viewOffset;
+ if (y < 0) return PosWithInfo(doc.first, 0, true, -1);
+ var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;
+ if (lineN > last)
+ return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, true, 1);
+ if (x < 0) x = 0;
+
+ var lineObj = getLine(doc, lineN);
+ for (;;) {
+ var found = coordsCharInner(cm, lineObj, lineN, x, y);
+ var merged = collapsedSpanAtEnd(lineObj);
+ var mergedPos = merged && merged.find(0, true);
+ if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0))
+ lineN = lineNo(lineObj = mergedPos.to.line);
+ else
+ return found;
+ }
+ }
+
+ function coordsCharInner(cm, lineObj, lineNo, x, y) {
+ var innerOff = y - heightAtLine(lineObj);
+ var wrongLine = false, adjust = 2 * cm.display.wrapper.clientWidth;
+ var preparedMeasure = prepareMeasureForLine(cm, lineObj);
+
+ function getX(ch) {
+ var sp = cursorCoords(cm, Pos(lineNo, ch), "line", lineObj, preparedMeasure);
+ wrongLine = true;
+ if (innerOff > sp.bottom) return sp.left - adjust;
+ else if (innerOff < sp.top) return sp.left + adjust;
+ else wrongLine = false;
+ return sp.left;
+ }
+
+ var bidi = getOrder(lineObj), dist = lineObj.text.length;
+ var from = lineLeft(lineObj), to = lineRight(lineObj);
+ var fromX = getX(from), fromOutside = wrongLine, toX = getX(to), toOutside = wrongLine;
+
+ if (x > toX) return PosWithInfo(lineNo, to, toOutside, 1);
+ // Do a binary search between these bounds.
+ for (;;) {
+ if (bidi ? to == from || to == moveVisually(lineObj, from, 1) : to - from <= 1) {
+ var ch = x < fromX || x - fromX <= toX - x ? from : to;
+ var xDiff = x - (ch == from ? fromX : toX);
+ while (isExtendingChar(lineObj.text.charAt(ch))) ++ch;
+ var pos = PosWithInfo(lineNo, ch, ch == from ? fromOutside : toOutside,
+ xDiff < -1 ? -1 : xDiff > 1 ? 1 : 0);
+ return pos;
+ }
+ var step = Math.ceil(dist / 2), middle = from + step;
+ if (bidi) {
+ middle = from;
+ for (var i = 0; i < step; ++i) middle = moveVisually(lineObj, middle, 1);
+ }
+ var middleX = getX(middle);
+ if (middleX > x) {to = middle; toX = middleX; if (toOutside = wrongLine) toX += 1000; dist = step;}
+ else {from = middle; fromX = middleX; fromOutside = wrongLine; dist -= step;}
+ }
+ }
+
+ var measureText;
+ // Compute the default text height.
+ function textHeight(display) {
+ if (display.cachedTextHeight != null) return display.cachedTextHeight;
+ if (measureText == null) {
+ measureText = elt("pre");
+ // Measure a bunch of lines, for browsers that compute
+ // fractional heights.
+ for (var i = 0; i < 49; ++i) {
+ measureText.appendChild(document.createTextNode("x"));
+ measureText.appendChild(elt("br"));
+ }
+ measureText.appendChild(document.createTextNode("x"));
+ }
+ removeChildrenAndAdd(display.measure, measureText);
+ var height = measureText.offsetHeight / 50;
+ if (height > 3) display.cachedTextHeight = height;
+ removeChildren(display.measure);
+ return height || 1;
+ }
+
+ // Compute the default character width.
+ function charWidth(display) {
+ if (display.cachedCharWidth != null) return display.cachedCharWidth;
+ var anchor = elt("span", "xxxxxxxxxx");
+ var pre = elt("pre", [anchor]);
+ removeChildrenAndAdd(display.measure, pre);
+ var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;
+ if (width > 2) display.cachedCharWidth = width;
+ return width || 10;
+ }
+
+ // OPERATIONS
+
+ // Operations are used to wrap a series of changes to the editor
+ // state in such a way that each change won't have to update the
+ // cursor and display (which would be awkward, slow, and
+ // error-prone). Instead, display updates are batched and then all
+ // combined and executed at once.
+
+ var nextOpId = 0;
+ // Start a new operation.
+ function startOperation(cm) {
+ cm.curOp = {
+ viewChanged: false, // Flag that indicates that lines might need to be redrawn
+ startHeight: cm.doc.height, // Used to detect need to update scrollbar
+ forceUpdate: false, // Used to force a redraw
+ updateInput: null, // Whether to reset the input textarea
+ typing: false, // Whether this reset should be careful to leave existing text (for compositing)
+ changeObjs: null, // Accumulated changes, for firing change events
+ cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on
+ selectionChanged: false, // Whether the selection needs to be redrawn
+ updateMaxLine: false, // Set when the widest line needs to be determined anew
+ scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet
+ scrollToPos: null, // Used to scroll to a specific position
+ id: ++nextOpId // Unique ID
+ };
+ if (!delayedCallbackDepth++) delayedCallbacks = [];
+ }
+
+ // Finish an operation, updating the display and signalling delayed events
+ function endOperation(cm) {
+ var op = cm.curOp, doc = cm.doc, display = cm.display;
+ cm.curOp = null;
+
+ if (op.updateMaxLine) findMaxLine(cm);
+
+ // If it looks like an update might be needed, call updateDisplay
+ if (op.viewChanged || op.forceUpdate || op.scrollTop != null ||
+ op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||
+ op.scrollToPos.to.line >= display.viewTo) ||
+ display.maxLineChanged && cm.options.lineWrapping) {
+ var updated = updateDisplay(cm, {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);
+ if (cm.display.scroller.offsetHeight) cm.doc.scrollTop = cm.display.scroller.scrollTop;
+ }
+ // If no update was run, but the selection changed, redraw that.
+ if (!updated && op.selectionChanged) updateSelection(cm);
+ if (!updated && op.startHeight != cm.doc.height) updateScrollbars(cm);
+
+ // Propagate the scroll position to the actual DOM scroller
+ if (op.scrollTop != null && display.scroller.scrollTop != op.scrollTop) {
+ var top = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop));
+ display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = top;
+ }
+ if (op.scrollLeft != null && display.scroller.scrollLeft != op.scrollLeft) {
+ var left = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft));
+ display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = left;
+ alignHorizontally(cm);
+ }
+ // If we need to scroll a specific position into view, do so.
+ if (op.scrollToPos) {
+ var coords = scrollPosIntoView(cm, clipPos(cm.doc, op.scrollToPos.from),
+ clipPos(cm.doc, op.scrollToPos.to), op.scrollToPos.margin);
+ if (op.scrollToPos.isCursor && cm.state.focused) maybeScrollWindow(cm, coords);
+ }
+
+ if (op.selectionChanged) restartBlink(cm);
+
+ if (cm.state.focused && op.updateInput)
+ resetInput(cm, op.typing);
+
+ // Fire events for markers that are hidden/unidden by editing or
+ // undoing
+ var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;
+ if (hidden) for (var i = 0; i < hidden.length; ++i)
+ if (!hidden[i].lines.length) signal(hidden[i], "hide");
+ if (unhidden) for (var i = 0; i < unhidden.length; ++i)
+ if (unhidden[i].lines.length) signal(unhidden[i], "unhide");
+
+ var delayed;
+ if (!--delayedCallbackDepth) {
+ delayed = delayedCallbacks;
+ delayedCallbacks = null;
+ }
+ // Fire change events, and delayed event handlers
+ if (op.changeObjs)
+ signal(cm, "changes", cm, op.changeObjs);
+ if (delayed) for (var i = 0; i < delayed.length; ++i) delayed[i]();
+ if (op.cursorActivityHandlers)
+ for (var i = 0; i < op.cursorActivityHandlers.length; i++)
+ op.cursorActivityHandlers[i](cm);
+ }
+
+ // Run the given function in an operation
+ function runInOp(cm, f) {
+ if (cm.curOp) return f();
+ startOperation(cm);
+ try { return f(); }
+ finally { endOperation(cm); }
+ }
+ // Wraps a function in an operation. Returns the wrapped function.
+ function operation(cm, f) {
+ return function() {
+ if (cm.curOp) return f.apply(cm, arguments);
+ startOperation(cm);
+ try { return f.apply(cm, arguments); }
+ finally { endOperation(cm); }
+ };
+ }
+ // Used to add methods to editor and doc instances, wrapping them in
+ // operations.
+ function methodOp(f) {
+ return function() {
+ if (this.curOp) return f.apply(this, arguments);
+ startOperation(this);
+ try { return f.apply(this, arguments); }
+ finally { endOperation(this); }
+ };
+ }
+ function docMethodOp(f) {
+ return function() {
+ var cm = this.cm;
+ if (!cm || cm.curOp) return f.apply(this, arguments);
+ startOperation(cm);
+ try { return f.apply(this, arguments); }
+ finally { endOperation(cm); }
+ };
+ }
+
+ // VIEW TRACKING
+
+ // These objects are used to represent the visible (currently drawn)
+ // part of the document. A LineView may correspond to multiple
+ // logical lines, if those are connected by collapsed ranges.
+ function LineView(doc, line, lineN) {
+ // The starting line
+ this.line = line;
+ // Continuing lines, if any
+ this.rest = visualLineContinued(line);
+ // Number of logical lines in this visual line
+ this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;
+ this.node = this.text = null;
+ this.hidden = lineIsHidden(doc, line);
+ }
+
+ // Create a range of LineView objects for the given lines.
+ function buildViewArray(cm, from, to) {
+ var array = [], nextPos;
+ for (var pos = from; pos < to; pos = nextPos) {
+ var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);
+ nextPos = pos + view.size;
+ array.push(view);
+ }
+ return array;
+ }
+
+ // Updates the display.view data structure for a given change to the
+ // document. From and to are in pre-change coordinates. Lendiff is
+ // the amount of lines added or subtracted by the change. This is
+ // used for changes that span multiple lines, or change the way
+ // lines are divided into visual lines. regLineChange (below)
+ // registers single-line changes.
+ function regChange(cm, from, to, lendiff) {
+ if (from == null) from = cm.doc.first;
+ if (to == null) to = cm.doc.first + cm.doc.size;
+ if (!lendiff) lendiff = 0;
+
+ var display = cm.display;
+ if (lendiff && to < display.viewTo &&
+ (display.updateLineNumbers == null || display.updateLineNumbers > from))
+ display.updateLineNumbers = from;
+
+ cm.curOp.viewChanged = true;
+
+ if (from >= display.viewTo) { // Change after
+ if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)
+ resetView(cm);
+ } else if (to <= display.viewFrom) { // Change before
+ if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {
+ resetView(cm);
+ } else {
+ display.viewFrom += lendiff;
+ display.viewTo += lendiff;
+ }
+ } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap
+ resetView(cm);
+ } else if (from <= display.viewFrom) { // Top overlap
+ var cut = viewCuttingPoint(cm, to, to + lendiff, 1);
+ if (cut) {
+ display.view = display.view.slice(cut.index);
+ display.viewFrom = cut.lineN;
+ display.viewTo += lendiff;
+ } else {
+ resetView(cm);
+ }
+ } else if (to >= display.viewTo) { // Bottom overlap
+ var cut = viewCuttingPoint(cm, from, from, -1);
+ if (cut) {
+ display.view = display.view.slice(0, cut.index);
+ display.viewTo = cut.lineN;
+ } else {
+ resetView(cm);
+ }
+ } else { // Gap in the middle
+ var cutTop = viewCuttingPoint(cm, from, from, -1);
+ var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);
+ if (cutTop && cutBot) {
+ display.view = display.view.slice(0, cutTop.index)
+ .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))
+ .concat(display.view.slice(cutBot.index));
+ display.viewTo += lendiff;
+ } else {
+ resetView(cm);
+ }
+ }
+
+ var ext = display.externalMeasured;
+ if (ext) {
+ if (to < ext.lineN)
+ ext.lineN += lendiff;
+ else if (from < ext.lineN + ext.size)
+ display.externalMeasured = null;
+ }
+ }
+
+ // Register a change to a single line. Type must be one of "text",
+ // "gutter", "class", "widget"
+ function regLineChange(cm, line, type) {
+ cm.curOp.viewChanged = true;
+ var display = cm.display, ext = cm.display.externalMeasured;
+ if (ext && line >= ext.lineN && line < ext.lineN + ext.size)
+ display.externalMeasured = null;
+
+ if (line < display.viewFrom || line >= display.viewTo) return;
+ var lineView = display.view[findViewIndex(cm, line)];
+ if (lineView.node == null) return;
+ var arr = lineView.changes || (lineView.changes = []);
+ if (indexOf(arr, type) == -1) arr.push(type);
+ }
+
+ // Clear the view.
+ function resetView(cm) {
+ cm.display.viewFrom = cm.display.viewTo = cm.doc.first;
+ cm.display.view = [];
+ cm.display.viewOffset = 0;
+ }
+
+ // Find the view element corresponding to a given line. Return null
+ // when the line isn't visible.
+ function findViewIndex(cm, n) {
+ if (n >= cm.display.viewTo) return null;
+ n -= cm.display.viewFrom;
+ if (n < 0) return null;
+ var view = cm.display.view;
+ for (var i = 0; i < view.length; i++) {
+ n -= view[i].size;
+ if (n < 0) return i;
+ }
+ }
+
+ function viewCuttingPoint(cm, oldN, newN, dir) {
+ var index = findViewIndex(cm, oldN), diff, view = cm.display.view;
+ if (!sawCollapsedSpans) return {index: index, lineN: newN};
+ for (var i = 0, n = cm.display.viewFrom; i < index; i++)
+ n += view[i].size;
+ if (n != oldN) {
+ if (dir > 0) {
+ if (index == view.length - 1) return null;
+ diff = (n + view[index].size) - oldN;
+ index++;
+ } else {
+ diff = n - oldN;
+ }
+ oldN += diff; newN += diff;
+ }
+ while (visualLineNo(cm.doc, newN) != newN) {
+ if (index == (dir < 0 ? 0 : view.length - 1)) return null;
+ newN += dir * view[index - (dir < 0 ? 1 : 0)].size;
+ index += dir;
+ }
+ return {index: index, lineN: newN};
+ }
+
+ // Force the view to cover a given range, adding empty view element
+ // or clipping off existing ones as needed.
+ function adjustView(cm, from, to) {
+ var display = cm.display, view = display.view;
+ if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {
+ display.view = buildViewArray(cm, from, to);
+ display.viewFrom = from;
+ } else {
+ if (display.viewFrom > from)
+ display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view);
+ else if (display.viewFrom < from)
+ display.view = display.view.slice(findViewIndex(cm, from));
+ display.viewFrom = from;
+ if (display.viewTo < to)
+ display.view = display.view.concat(buildViewArray(cm, display.viewTo, to));
+ else if (display.viewTo > to)
+ display.view = display.view.slice(0, findViewIndex(cm, to));
+ }
+ display.viewTo = to;
+ }
+
+ // Count the number of lines in the view whose DOM representation is
+ // out of date (or nonexistent).
+ function countDirtyView(cm) {
+ var view = cm.display.view, dirty = 0;
+ for (var i = 0; i < view.length; i++) {
+ var lineView = view[i];
+ if (!lineView.hidden && (!lineView.node || lineView.changes)) ++dirty;
+ }
+ return dirty;
+ }
+
+ // INPUT HANDLING
+
+ // Poll for input changes, using the normal rate of polling. This
+ // runs as long as the editor is focused.
+ function slowPoll(cm) {
+ if (cm.display.pollingFast) return;
+ cm.display.poll.set(cm.options.pollInterval, function() {
+ readInput(cm);
+ if (cm.state.focused) slowPoll(cm);
+ });
+ }
+
+ // When an event has just come in that is likely to add or change
+ // something in the input textarea, we poll faster, to ensure that
+ // the change appears on the screen quickly.
+ function fastPoll(cm) {
+ var missed = false;
+ cm.display.pollingFast = true;
+ function p() {
+ var changed = readInput(cm);
+ if (!changed && !missed) {missed = true; cm.display.poll.set(60, p);}
+ else {cm.display.pollingFast = false; slowPoll(cm);}
+ }
+ cm.display.poll.set(20, p);
+ }
+
+ // Read input from the textarea, and update the document to match.
+ // When something is selected, it is present in the textarea, and
+ // selected (unless it is huge, in which case a placeholder is
+ // used). When nothing is selected, the cursor sits after previously
+ // seen text (can be empty), which is stored in prevInput (we must
+ // not reset the textarea when typing, because that breaks IME).
+ function readInput(cm) {
+ var input = cm.display.input, prevInput = cm.display.prevInput, doc = cm.doc;
+ // Since this is called a *lot*, try to bail out as cheaply as
+ // possible when it is clear that nothing happened. hasSelection
+ // will be the case when there is a lot of text in the textarea,
+ // in which case reading its value would be expensive.
+ if (!cm.state.focused || (hasSelection(input) && !prevInput) || isReadOnly(cm) || cm.options.disableInput)
+ return false;
+ // See paste handler for more on the fakedLastChar kludge
+ if (cm.state.pasteIncoming && cm.state.fakedLastChar) {
+ input.value = input.value.substring(0, input.value.length - 1);
+ cm.state.fakedLastChar = false;
+ }
+ var text = input.value;
+ // If nothing changed, bail.
+ if (text == prevInput && !cm.somethingSelected()) return false;
+ // Work around nonsensical selection resetting in IE9/10
+ if (ie && !ie_upto8 && cm.display.inputHasSelection === text) {
+ resetInput(cm);
+ return false;
+ }
+
+ var withOp = !cm.curOp;
+ if (withOp) startOperation(cm);
+ cm.display.shift = false;
+
+ // Find the part of the input that is actually new
+ var same = 0, l = Math.min(prevInput.length, text.length);
+ while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) ++same;
+ var inserted = text.slice(same), textLines = splitLines(inserted);
+
+ // When pasing N lines into N selections, insert one line per selection
+ var multiPaste = cm.state.pasteIncoming && textLines.length > 1 && doc.sel.ranges.length == textLines.length;
+
+ // Normal behavior is to insert the new text into every selection
+ for (var i = doc.sel.ranges.length - 1; i >= 0; i--) {
+ var range = doc.sel.ranges[i];
+ var from = range.from(), to = range.to();
+ // Handle deletion
+ if (same < prevInput.length)
+ from = Pos(from.line, from.ch - (prevInput.length - same));
+ // Handle overwrite
+ else if (cm.state.overwrite && range.empty() && !cm.state.pasteIncoming)
+ to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length));
+ var updateInput = cm.curOp.updateInput;
+ var changeEvent = {from: from, to: to, text: multiPaste ? [textLines[i]] : textLines,
+ origin: cm.state.pasteIncoming ? "paste" : cm.state.cutIncoming ? "cut" : "+input"};
+ makeChange(cm.doc, changeEvent);
+ signalLater(cm, "inputRead", cm, changeEvent);
+ // When an 'electric' character is inserted, immediately trigger a reindent
+ if (inserted && !cm.state.pasteIncoming && cm.options.electricChars &&
+ cm.options.smartIndent && range.head.ch < 100 &&
+ (!i || doc.sel.ranges[i - 1].head.line != range.head.line)) {
+ var mode = cm.getModeAt(range.head);
+ if (mode.electricChars) {
+ for (var j = 0; j < mode.electricChars.length; j++)
+ if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {
+ indentLine(cm, range.head.line, "smart");
+ break;
+ }
+ } else if (mode.electricInput) {
+ var end = changeEnd(changeEvent);
+ if (mode.electricInput.test(getLine(doc, end.line).text.slice(0, end.ch)))
+ indentLine(cm, range.head.line, "smart");
+ }
+ }
+ }
+ ensureCursorVisible(cm);
+ cm.curOp.updateInput = updateInput;
+ cm.curOp.typing = true;
+
+ // Don't leave long text in the textarea, since it makes further polling slow
+ if (text.length > 1000 || text.indexOf("\n") > -1) input.value = cm.display.prevInput = "";
+ else cm.display.prevInput = text;
+ if (withOp) endOperation(cm);
+ cm.state.pasteIncoming = cm.state.cutIncoming = false;
+ return true;
+ }
+
+ // Reset the input to correspond to the selection (or to be empty,
+ // when not typing and nothing is selected)
+ function resetInput(cm, typing) {
+ var minimal, selected, doc = cm.doc;
+ if (cm.somethingSelected()) {
+ cm.display.prevInput = "";
+ var range = doc.sel.primary();
+ minimal = hasCopyEvent &&
+ (range.to().line - range.from().line > 100 || (selected = cm.getSelection()).length > 1000);
+ var content = minimal ? "-" : selected || cm.getSelection();
+ cm.display.input.value = content;
+ if (cm.state.focused) selectInput(cm.display.input);
+ if (ie && !ie_upto8) cm.display.inputHasSelection = content;
+ } else if (!typing) {
+ cm.display.prevInput = cm.display.input.value = "";
+ if (ie && !ie_upto8) cm.display.inputHasSelection = null;
+ }
+ cm.display.inaccurateSelection = minimal;
+ }
+
+ function focusInput(cm) {
+ if (cm.options.readOnly != "nocursor" && (!mobile || activeElt() != cm.display.input))
+ cm.display.input.focus();
+ }
+
+ function ensureFocus(cm) {
+ if (!cm.state.focused) { focusInput(cm); onFocus(cm); }
+ }
+
+ function isReadOnly(cm) {
+ return cm.options.readOnly || cm.doc.cantEdit;
+ }
+
+ // EVENT HANDLERS
+
+ // Attach the necessary event handlers when initializing the editor
+ function registerEventHandlers(cm) {
+ var d = cm.display;
+ on(d.scroller, "mousedown", operation(cm, onMouseDown));
+ // Older IE's will not fire a second mousedown for a double click
+ if (ie_upto10)
+ on(d.scroller, "dblclick", operation(cm, function(e) {
+ if (signalDOMEvent(cm, e)) return;
+ var pos = posFromMouse(cm, e);
+ if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) return;
+ e_preventDefault(e);
+ var word = findWordAt(cm.doc, pos);
+ extendSelection(cm.doc, word.anchor, word.head);
+ }));
+ else
+ on(d.scroller, "dblclick", function(e) { signalDOMEvent(cm, e) || e_preventDefault(e); });
+ // Prevent normal selection in the editor (we handle our own)
+ on(d.lineSpace, "selectstart", function(e) {
+ if (!eventInWidget(d, e)) e_preventDefault(e);
+ });
+ // Some browsers fire contextmenu *after* opening the menu, at
+ // which point we can't mess with it anymore. Context menu is
+ // handled in onMouseDown for these browsers.
+ if (!captureRightClick) on(d.scroller, "contextmenu", function(e) {onContextMenu(cm, e);});
+
+ // Sync scrolling between fake scrollbars and real scrollable
+ // area, ensure viewport is updated when scrolling.
+ on(d.scroller, "scroll", function() {
+ if (d.scroller.clientHeight) {
+ setScrollTop(cm, d.scroller.scrollTop);
+ setScrollLeft(cm, d.scroller.scrollLeft, true);
+ signal(cm, "scroll", cm);
+ }
+ });
+ on(d.scrollbarV, "scroll", function() {
+ if (d.scroller.clientHeight) setScrollTop(cm, d.scrollbarV.scrollTop);
+ });
+ on(d.scrollbarH, "scroll", function() {
+ if (d.scroller.clientHeight) setScrollLeft(cm, d.scrollbarH.scrollLeft);
+ });
+
+ // Listen to wheel events in order to try and update the viewport on time.
+ on(d.scroller, "mousewheel", function(e){onScrollWheel(cm, e);});
+ on(d.scroller, "DOMMouseScroll", function(e){onScrollWheel(cm, e);});
+
+ // Prevent clicks in the scrollbars from killing focus
+ function reFocus() { if (cm.state.focused) setTimeout(bind(focusInput, cm), 0); }
+ on(d.scrollbarH, "mousedown", reFocus);
+ on(d.scrollbarV, "mousedown", reFocus);
+ // Prevent wrapper from ever scrolling
+ on(d.wrapper, "scroll", function() { d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });
+
+ // When the window resizes, we need to refresh active editors.
+ var resizeTimer;
+ function onResize() {
+ if (resizeTimer == null) resizeTimer = setTimeout(function() {
+ resizeTimer = null;
+ // Might be a text scaling operation, clear size caches.
+ d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = knownScrollbarWidth = null;
+ cm.setSize();
+ }, 100);
+ }
+ on(window, "resize", onResize);
+ // The above handler holds on to the editor and its data
+ // structures. Here we poll to unregister it when the editor is no
+ // longer in the document, so that it can be garbage-collected.
+ function unregister() {
+ if (contains(document.body, d.wrapper)) setTimeout(unregister, 5000);
+ else off(window, "resize", onResize);
+ }
+ setTimeout(unregister, 5000);
+
+ on(d.input, "keyup", operation(cm, onKeyUp));
+ on(d.input, "input", function() {
+ if (ie && !ie_upto8 && cm.display.inputHasSelection) cm.display.inputHasSelection = null;
+ fastPoll(cm);
+ });
+ on(d.input, "keydown", operation(cm, onKeyDown));
+ on(d.input, "keypress", operation(cm, onKeyPress));
+ on(d.input, "focus", bind(onFocus, cm));
+ on(d.input, "blur", bind(onBlur, cm));
+
+ function drag_(e) {
+ if (!signalDOMEvent(cm, e)) e_stop(e);
+ }
+ if (cm.options.dragDrop) {
+ on(d.scroller, "dragstart", function(e){onDragStart(cm, e);});
+ on(d.scroller, "dragenter", drag_);
+ on(d.scroller, "dragover", drag_);
+ on(d.scroller, "drop", operation(cm, onDrop));
+ }
+ on(d.scroller, "paste", function(e) {
+ if (eventInWidget(d, e)) return;
+ cm.state.pasteIncoming = true;
+ focusInput(cm);
+ fastPoll(cm);
+ });
+ on(d.input, "paste", function() {
+ // Workaround for webkit bug https://bugs.webkit.org/show_bug.cgi?id=90206
+ // Add a char to the end of textarea before paste occur so that
+ // selection doesn't span to the end of textarea.
+ if (webkit && !cm.state.fakedLastChar && !(new Date - cm.state.lastMiddleDown < 200)) {
+ var start = d.input.selectionStart, end = d.input.selectionEnd;
+ d.input.value += "$";
+ d.input.selectionStart = start;
+ d.input.selectionEnd = end;
+ cm.state.fakedLastChar = true;
+ }
+ cm.state.pasteIncoming = true;
+ fastPoll(cm);
+ });
+
+ function prepareCopyCut(e) {
+ if (cm.somethingSelected()) {
+ if (d.inaccurateSelection) {
+ d.prevInput = "";
+ d.inaccurateSelection = false;
+ d.input.value = cm.getSelection();
+ selectInput(d.input);
+ }
+ } else {
+ var text = "", ranges = [];
+ for (var i = 0; i < cm.doc.sel.ranges.length; i++) {
+ var line = cm.doc.sel.ranges[i].head.line;
+ var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};
+ ranges.push(lineRange);
+ text += cm.getRange(lineRange.anchor, lineRange.head);
+ }
+ if (e.type == "cut") {
+ cm.setSelections(ranges, null, sel_dontScroll);
+ } else {
+ d.prevInput = "";
+ d.input.value = text;
+ selectInput(d.input);
+ }
+ }
+ if (e.type == "cut") cm.state.cutIncoming = true;
+ }
+ on(d.input, "cut", prepareCopyCut);
+ on(d.input, "copy", prepareCopyCut);
+
+ // Needed to handle Tab key in KHTML
+ if (khtml) on(d.sizer, "mouseup", function() {
+ if (activeElt() == d.input) d.input.blur();
+ focusInput(cm);
+ });
+ }
+
+ // MOUSE EVENTS
+
+ // Return true when the given mouse event happened in a widget
+ function eventInWidget(display, e) {
+ for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {
+ if (!n || n.ignoreEvents || n.parentNode == display.sizer && n != display.mover) return true;
+ }
+ }
+
+ // Given a mouse event, find the corresponding position. If liberal
+ // is false, it checks whether a gutter or scrollbar was clicked,
+ // and returns null if it was. forRect is used by rectangular
+ // selections, and tries to estimate a character position even for
+ // coordinates beyond the right of the text.
+ function posFromMouse(cm, e, liberal, forRect) {
+ var display = cm.display;
+ if (!liberal) {
+ var target = e_target(e);
+ if (target == display.scrollbarH || target == display.scrollbarV ||
+ target == display.scrollbarFiller || target == display.gutterFiller) return null;
+ }
+ var x, y, space = display.lineSpace.getBoundingClientRect();
+ // Fails unpredictably on IE[67] when mouse is dragged around quickly.
+ try { x = e.clientX - space.left; y = e.clientY - space.top; }
+ catch (e) { return null; }
+ var coords = coordsChar(cm, x, y), line;
+ if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {
+ var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;
+ coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));
+ }
+ return coords;
+ }
+
+ // A mouse down can be a single click, double click, triple click,
+ // start of selection drag, start of text drag, new cursor
+ // (ctrl-click), rectangle drag (alt-drag), or xwin
+ // middle-click-paste. Or it might be a click on something we should
+ // not interfere with, such as a scrollbar or widget.
+ function onMouseDown(e) {
+ if (signalDOMEvent(this, e)) return;
+ var cm = this, display = cm.display;
+ display.shift = e.shiftKey;
+
+ if (eventInWidget(display, e)) {
+ if (!webkit) {
+ // Briefly turn off draggability, to allow widgets to do
+ // normal dragging things.
+ display.scroller.draggable = false;
+ setTimeout(function(){display.scroller.draggable = true;}, 100);
+ }
+ return;
+ }
+ if (clickInGutter(cm, e)) return;
+ var start = posFromMouse(cm, e);
+ window.focus();
+
+ switch (e_button(e)) {
+ case 1:
+ if (start)
+ leftButtonDown(cm, e, start);
+ else if (e_target(e) == display.scroller)
+ e_preventDefault(e);
+ break;
+ case 2:
+ if (webkit) cm.state.lastMiddleDown = +new Date;
+ if (start) extendSelection(cm.doc, start);
+ setTimeout(bind(focusInput, cm), 20);
+ e_preventDefault(e);
+ break;
+ case 3:
+ if (captureRightClick) onContextMenu(cm, e);
+ break;
+ }
+ }
+
+ var lastClick, lastDoubleClick;
+ function leftButtonDown(cm, e, start) {
+ setTimeout(bind(ensureFocus, cm), 0);
+
+ var now = +new Date, type;
+ if (lastDoubleClick && lastDoubleClick.time > now - 400 && cmp(lastDoubleClick.pos, start) == 0) {
+ type = "triple";
+ } else if (lastClick && lastClick.time > now - 400 && cmp(lastClick.pos, start) == 0) {
+ type = "double";
+ lastDoubleClick = {time: now, pos: start};
+ } else {
+ type = "single";
+ lastClick = {time: now, pos: start};
+ }
+
+ var sel = cm.doc.sel, addNew = mac ? e.metaKey : e.ctrlKey;
+ if (cm.options.dragDrop && dragAndDrop && !addNew && !isReadOnly(cm) &&
+ type == "single" && sel.contains(start) > -1 && sel.somethingSelected())
+ leftButtonStartDrag(cm, e, start);
+ else
+ leftButtonSelect(cm, e, start, type, addNew);
+ }
+
+ // Start a text drag. When it ends, see if any dragging actually
+ // happen, and treat as a click if it didn't.
+ function leftButtonStartDrag(cm, e, start) {
+ var display = cm.display;
+ var dragEnd = operation(cm, function(e2) {
+ if (webkit) display.scroller.draggable = false;
+ cm.state.draggingText = false;
+ off(document, "mouseup", dragEnd);
+ off(display.scroller, "drop", dragEnd);
+ if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) {
+ e_preventDefault(e2);
+ extendSelection(cm.doc, start);
+ focusInput(cm);
+ // Work around unexplainable focus problem in IE9 (#2127)
+ if (ie_upto10 && !ie_upto8)
+ setTimeout(function() {document.body.focus(); focusInput(cm);}, 20);
+ }
+ });
+ // Let the drag handler handle this.
+ if (webkit) display.scroller.draggable = true;
+ cm.state.draggingText = dragEnd;
+ // IE's approach to draggable
+ if (display.scroller.dragDrop) display.scroller.dragDrop();
+ on(document, "mouseup", dragEnd);
+ on(display.scroller, "drop", dragEnd);
+ }
+
+ // Normal selection, as opposed to text dragging.
+ function leftButtonSelect(cm, e, start, type, addNew) {
+ var display = cm.display, doc = cm.doc;
+ e_preventDefault(e);
+
+ var ourRange, ourIndex, startSel = doc.sel;
+ if (addNew && !e.shiftKey) {
+ ourIndex = doc.sel.contains(start);
+ if (ourIndex > -1)
+ ourRange = doc.sel.ranges[ourIndex];
+ else
+ ourRange = new Range(start, start);
+ } else {
+ ourRange = doc.sel.primary();
+ }
+
+ if (e.altKey) {
+ type = "rect";
+ if (!addNew) ourRange = new Range(start, start);
+ start = posFromMouse(cm, e, true, true);
+ ourIndex = -1;
+ } else if (type == "double") {
+ var word = findWordAt(doc, start);
+ if (cm.display.shift || doc.extend)
+ ourRange = extendRange(doc, ourRange, word.anchor, word.head);
+ else
+ ourRange = word;
+ } else if (type == "triple") {
+ var line = new Range(Pos(start.line, 0), clipPos(doc, Pos(start.line + 1, 0)));
+ if (cm.display.shift || doc.extend)
+ ourRange = extendRange(doc, ourRange, line.anchor, line.head);
+ else
+ ourRange = line;
+ } else {
+ ourRange = extendRange(doc, ourRange, start);
+ }
+
+ if (!addNew) {
+ ourIndex = 0;
+ setSelection(doc, new Selection([ourRange], 0), sel_mouse);
+ startSel = doc.sel;
+ } else if (ourIndex > -1) {
+ replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);
+ } else {
+ ourIndex = doc.sel.ranges.length;
+ setSelection(doc, normalizeSelection(doc.sel.ranges.concat([ourRange]), ourIndex),
+ {scroll: false, origin: "*mouse"});
+ }
+
+ var lastPos = start;
+ function extendTo(pos) {
+ if (cmp(lastPos, pos) == 0) return;
+ lastPos = pos;
+
+ if (type == "rect") {
+ var ranges = [], tabSize = cm.options.tabSize;
+ var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);
+ var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);
+ var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);
+ for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));
+ line <= end; line++) {
+ var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);
+ if (left == right)
+ ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos)));
+ else if (text.length > leftPos)
+ ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize))));
+ }
+ if (!ranges.length) ranges.push(new Range(start, start));
+ setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), sel_mouse);
+ } else {
+ var oldRange = ourRange;
+ var anchor = oldRange.anchor, head = pos;
+ if (type != "single") {
+ if (type == "double")
+ var range = findWordAt(doc, pos);
+ else
+ var range = new Range(Pos(pos.line, 0), clipPos(doc, Pos(pos.line + 1, 0)));
+ if (cmp(range.anchor, anchor) > 0) {
+ head = range.head;
+ anchor = minPos(oldRange.from(), range.anchor);
+ } else {
+ head = range.anchor;
+ anchor = maxPos(oldRange.to(), range.head);
+ }
+ }
+ var ranges = startSel.ranges.slice(0);
+ ranges[ourIndex] = new Range(clipPos(doc, anchor), head);
+ setSelection(doc, normalizeSelection(ranges, ourIndex), sel_mouse);
+ }
+ }
+
+ var editorSize = display.wrapper.getBoundingClientRect();
+ // Used to ensure timeout re-tries don't fire when another extend
+ // happened in the meantime (clearTimeout isn't reliable -- at
+ // least on Chrome, the timeouts still happen even when cleared,
+ // if the clear happens after their scheduled firing time).
+ var counter = 0;
+
+ function extend(e) {
+ var curCount = ++counter;
+ var cur = posFromMouse(cm, e, true, type == "rect");
+ if (!cur) return;
+ if (cmp(cur, lastPos) != 0) {
+ ensureFocus(cm);
+ extendTo(cur);
+ var visible = visibleLines(display, doc);
+ if (cur.line >= visible.to || cur.line < visible.from)
+ setTimeout(operation(cm, function(){if (counter == curCount) extend(e);}), 150);
+ } else {
+ var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;
+ if (outside) setTimeout(operation(cm, function() {
+ if (counter != curCount) return;
+ display.scroller.scrollTop += outside;
+ extend(e);
+ }), 50);
+ }
+ }
+
+ function done(e) {
+ counter = Infinity;
+ e_preventDefault(e);
+ focusInput(cm);
+ off(document, "mousemove", move);
+ off(document, "mouseup", up);
+ doc.history.lastSelOrigin = null;
+ }
+
+ var move = operation(cm, function(e) {
+ if ((ie && !ie_upto9) ? !e.buttons : !e_button(e)) done(e);
+ else extend(e);
+ });
+ var up = operation(cm, done);
+ on(document, "mousemove", move);
+ on(document, "mouseup", up);
+ }
+
+ // Determines whether an event happened in the gutter, and fires the
+ // handlers for the corresponding event.
+ function gutterEvent(cm, e, type, prevent, signalfn) {
+ try { var mX = e.clientX, mY = e.clientY; }
+ catch(e) { return false; }
+ if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) return false;
+ if (prevent) e_preventDefault(e);
+
+ var display = cm.display;
+ var lineBox = display.lineDiv.getBoundingClientRect();
+
+ if (mY > lineBox.bottom || !hasHandler(cm, type)) return e_defaultPrevented(e);
+ mY -= lineBox.top - display.viewOffset;
+
+ for (var i = 0; i < cm.options.gutters.length; ++i) {
+ var g = display.gutters.childNodes[i];
+ if (g && g.getBoundingClientRect().right >= mX) {
+ var line = lineAtHeight(cm.doc, mY);
+ var gutter = cm.options.gutters[i];
+ signalfn(cm, type, cm, line, gutter, e);
+ return e_defaultPrevented(e);
+ }
+ }
+ }
+
+ function clickInGutter(cm, e) {
+ return gutterEvent(cm, e, "gutterClick", true, signalLater);
+ }
+
+ // Kludge to work around strange IE behavior where it'll sometimes
+ // re-fire a series of drag-related events right after the drop (#1551)
+ var lastDrop = 0;
+
+ function onDrop(e) {
+ var cm = this;
+ if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))
+ return;
+ e_preventDefault(e);
+ if (ie) lastDrop = +new Date;
+ var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;
+ if (!pos || isReadOnly(cm)) return;
+ // Might be a file drop, in which case we simply extract the text
+ // and insert it.
+ if (files && files.length && window.FileReader && window.File) {
+ var n = files.length, text = Array(n), read = 0;
+ var loadFile = function(file, i) {
+ var reader = new FileReader;
+ reader.onload = operation(cm, function() {
+ text[i] = reader.result;
+ if (++read == n) {
+ pos = clipPos(cm.doc, pos);
+ var change = {from: pos, to: pos, text: splitLines(text.join("\n")), origin: "paste"};
+ makeChange(cm.doc, change);
+ setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change)));
+ }
+ });
+ reader.readAsText(file);
+ };
+ for (var i = 0; i < n; ++i) loadFile(files[i], i);
+ } else { // Normal drop
+ // Don't do a replace if the drop happened inside of the selected text.
+ if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {
+ cm.state.draggingText(e);
+ // Ensure the editor is re-focused
+ setTimeout(bind(focusInput, cm), 20);
+ return;
+ }
+ try {
+ var text = e.dataTransfer.getData("Text");
+ if (text) {
+ var selected = cm.state.draggingText && cm.listSelections();
+ setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));
+ if (selected) for (var i = 0; i < selected.length; ++i)
+ replaceRange(cm.doc, "", selected[i].anchor, selected[i].head, "drag");
+ cm.replaceSelection(text, "around", "paste");
+ focusInput(cm);
+ }
+ }
+ catch(e){}
+ }
+ }
+
+ function onDragStart(cm, e) {
+ if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return; }
+ if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return;
+
+ e.dataTransfer.setData("Text", cm.getSelection());
+
+ // Use dummy image instead of default browsers image.
+ // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.
+ if (e.dataTransfer.setDragImage && !safari) {
+ var img = elt("img", null, null, "position: fixed; left: 0; top: 0;");
+ img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";
+ if (presto) {
+ img.width = img.height = 1;
+ cm.display.wrapper.appendChild(img);
+ // Force a relayout, or Opera won't use our image for some obscure reason
+ img._top = img.offsetTop;
+ }
+ e.dataTransfer.setDragImage(img, 0, 0);
+ if (presto) img.parentNode.removeChild(img);
+ }
+ }
+
+ // SCROLL EVENTS
+
+ // Sync the scrollable area and scrollbars, ensure the viewport
+ // covers the visible area.
+ function setScrollTop(cm, val) {
+ if (Math.abs(cm.doc.scrollTop - val) < 2) return;
+ cm.doc.scrollTop = val;
+ if (!gecko) updateDisplay(cm, {top: val});
+ if (cm.display.scroller.scrollTop != val) cm.display.scroller.scrollTop = val;
+ if (cm.display.scrollbarV.scrollTop != val) cm.display.scrollbarV.scrollTop = val;
+ if (gecko) updateDisplay(cm);
+ startWorker(cm, 100);
+ }
+ // Sync scroller and scrollbar, ensure the gutter elements are
+ // aligned.
+ function setScrollLeft(cm, val, isScroller) {
+ if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) return;
+ val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth);
+ cm.doc.scrollLeft = val;
+ alignHorizontally(cm);
+ if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val;
+ if (cm.display.scrollbarH.scrollLeft != val) cm.display.scrollbarH.scrollLeft = val;
+ }
+
+ // Since the delta values reported on mouse wheel events are
+ // unstandardized between browsers and even browser versions, and
+ // generally horribly unpredictable, this code starts by measuring
+ // the scroll effect that the first few mouse wheel events have,
+ // and, from that, detects the way it can convert deltas to pixel
+ // offsets afterwards.
+ //
+ // The reason we want to know the amount a wheel event will scroll
+ // is that it gives us a chance to update the display before the
+ // actual scrolling happens, reducing flickering.
+
+ var wheelSamples = 0, wheelPixelsPerUnit = null;
+ // Fill in a browser-detected starting value on browsers where we
+ // know one. These don't have to be accurate -- the result of them
+ // being wrong would just be a slight flicker on the first wheel
+ // scroll (if it is large enough).
+ if (ie) wheelPixelsPerUnit = -.53;
+ else if (gecko) wheelPixelsPerUnit = 15;
+ else if (chrome) wheelPixelsPerUnit = -.7;
+ else if (safari) wheelPixelsPerUnit = -1/3;
+
+ function onScrollWheel(cm, e) {
+ var dx = e.wheelDeltaX, dy = e.wheelDeltaY;
+ if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) dx = e.detail;
+ if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) dy = e.detail;
+ else if (dy == null) dy = e.wheelDelta;
+
+ var display = cm.display, scroll = display.scroller;
+ // Quit if there's nothing to scroll here
+ if (!(dx && scroll.scrollWidth > scroll.clientWidth ||
+ dy && scroll.scrollHeight > scroll.clientHeight)) return;
+
+ // Webkit browsers on OS X abort momentum scrolls when the target
+ // of the scroll event is removed from the scrollable element.
+ // This hack (see related code in patchDisplay) makes sure the
+ // element is kept around.
+ if (dy && mac && webkit) {
+ outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {
+ for (var i = 0; i < view.length; i++) {
+ if (view[i].node == cur) {
+ cm.display.currentWheelTarget = cur;
+ break outer;
+ }
+ }
+ }
+ }
+
+ // On some browsers, horizontal scrolling will cause redraws to
+ // happen before the gutter has been realigned, causing it to
+ // wriggle around in a most unseemly way. When we have an
+ // estimated pixels/delta value, we just handle horizontal
+ // scrolling entirely here. It'll be slightly off from native, but
+ // better than glitching out.
+ if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {
+ if (dy)
+ setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight)));
+ setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth)));
+ e_preventDefault(e);
+ display.wheelStartX = null; // Abort measurement, if in progress
+ return;
+ }
+
+ // 'Project' the visible viewport to cover the area that is being
+ // scrolled into view (if we know enough to estimate it).
+ if (dy && wheelPixelsPerUnit != null) {
+ var pixels = dy * wheelPixelsPerUnit;
+ var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;
+ if (pixels < 0) top = Math.max(0, top + pixels - 50);
+ else bot = Math.min(cm.doc.height, bot + pixels + 50);
+ updateDisplay(cm, {top: top, bottom: bot});
+ }
+
+ if (wheelSamples < 20) {
+ if (display.wheelStartX == null) {
+ display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;
+ display.wheelDX = dx; display.wheelDY = dy;
+ setTimeout(function() {
+ if (display.wheelStartX == null) return;
+ var movedX = scroll.scrollLeft - display.wheelStartX;
+ var movedY = scroll.scrollTop - display.wheelStartY;
+ var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||
+ (movedX && display.wheelDX && movedX / display.wheelDX);
+ display.wheelStartX = display.wheelStartY = null;
+ if (!sample) return;
+ wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);
+ ++wheelSamples;
+ }, 200);
+ } else {
+ display.wheelDX += dx; display.wheelDY += dy;
+ }
+ }
+ }
+
+ // KEY EVENTS
+
+ // Run a handler that was bound to a key.
+ function doHandleBinding(cm, bound, dropShift) {
+ if (typeof bound == "string") {
+ bound = commands[bound];
+ if (!bound) return false;
+ }
+ // Ensure previous input has been read, so that the handler sees a
+ // consistent view of the document
+ if (cm.display.pollingFast && readInput(cm)) cm.display.pollingFast = false;
+ var prevShift = cm.display.shift, done = false;
+ try {
+ if (isReadOnly(cm)) cm.state.suppressEdits = true;
+ if (dropShift) cm.display.shift = false;
+ done = bound(cm) != Pass;
+ } finally {
+ cm.display.shift = prevShift;
+ cm.state.suppressEdits = false;
+ }
+ return done;
+ }
+
+ // Collect the currently active keymaps.
+ function allKeyMaps(cm) {
+ var maps = cm.state.keyMaps.slice(0);
+ if (cm.options.extraKeys) maps.push(cm.options.extraKeys);
+ maps.push(cm.options.keyMap);
+ return maps;
+ }
+
+ var maybeTransition;
+ // Handle a key from the keydown event.
+ function handleKeyBinding(cm, e) {
+ // Handle automatic keymap transitions
+ var startMap = getKeyMap(cm.options.keyMap), next = startMap.auto;
+ clearTimeout(maybeTransition);
+ if (next && !isModifierKey(e)) maybeTransition = setTimeout(function() {
+ if (getKeyMap(cm.options.keyMap) == startMap) {
+ cm.options.keyMap = (next.call ? next.call(null, cm) : next);
+ keyMapChanged(cm);
+ }
+ }, 50);
+
+ var name = keyName(e, true), handled = false;
+ if (!name) return false;
+ var keymaps = allKeyMaps(cm);
+
+ if (e.shiftKey) {
+ // First try to resolve full name (including 'Shift-'). Failing
+ // that, see if there is a cursor-motion command (starting with
+ // 'go') bound to the keyname without 'Shift-'.
+ handled = lookupKey("Shift-" + name, keymaps, function(b) {return doHandleBinding(cm, b, true);})
+ || lookupKey(name, keymaps, function(b) {
+ if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion)
+ return doHandleBinding(cm, b);
+ });
+ } else {
+ handled = lookupKey(name, keymaps, function(b) { return doHandleBinding(cm, b); });
+ }
+
+ if (handled) {
+ e_preventDefault(e);
+ restartBlink(cm);
+ signalLater(cm, "keyHandled", cm, name, e);
+ }
+ return handled;
+ }
+
+ // Handle a key from the keypress event
+ function handleCharBinding(cm, e, ch) {
+ var handled = lookupKey("'" + ch + "'", allKeyMaps(cm),
+ function(b) { return doHandleBinding(cm, b, true); });
+ if (handled) {
+ e_preventDefault(e);
+ restartBlink(cm);
+ signalLater(cm, "keyHandled", cm, "'" + ch + "'", e);
+ }
+ return handled;
+ }
+
+ var lastStoppedKey = null;
+ function onKeyDown(e) {
+ var cm = this;
+ ensureFocus(cm);
+ if (signalDOMEvent(cm, e)) return;
+ // IE does strange things with escape.
+ if (ie_upto10 && e.keyCode == 27) e.returnValue = false;
+ var code = e.keyCode;
+ cm.display.shift = code == 16 || e.shiftKey;
+ var handled = handleKeyBinding(cm, e);
+ if (presto) {
+ lastStoppedKey = handled ? code : null;
+ // Opera has no cut event... we try to at least catch the key combo
+ if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))
+ cm.replaceSelection("", null, "cut");
+ }
+
+ // Turn mouse into crosshair when Alt is held on Mac.
+ if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className))
+ showCrossHair(cm);
+ }
+
+ function showCrossHair(cm) {
+ var lineDiv = cm.display.lineDiv;
+ addClass(lineDiv, "CodeMirror-crosshair");
+
+ function up(e) {
+ if (e.keyCode == 18 || !e.altKey) {
+ rmClass(lineDiv, "CodeMirror-crosshair");
+ off(document, "keyup", up);
+ off(document, "mouseover", up);
+ }
+ }
+ on(document, "keyup", up);
+ on(document, "mouseover", up);
+ }
+
+ function onKeyUp(e) {
+ if (signalDOMEvent(this, e)) return;
+ if (e.keyCode == 16) this.doc.sel.shift = false;
+ }
+
+ function onKeyPress(e) {
+ var cm = this;
+ if (signalDOMEvent(cm, e)) return;
+ var keyCode = e.keyCode, charCode = e.charCode;
+ if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;}
+ if (((presto && (!e.which || e.which < 10)) || khtml) && handleKeyBinding(cm, e)) return;
+ var ch = String.fromCharCode(charCode == null ? keyCode : charCode);
+ if (handleCharBinding(cm, e, ch)) return;
+ if (ie && !ie_upto8) cm.display.inputHasSelection = null;
+ fastPoll(cm);
+ }
+
+ // FOCUS/BLUR EVENTS
+
+ function onFocus(cm) {
+ if (cm.options.readOnly == "nocursor") return;
+ if (!cm.state.focused) {
+ signal(cm, "focus", cm);
+ cm.state.focused = true;
+ addClass(cm.display.wrapper, "CodeMirror-focused");
+ // The prevInput test prevents this from firing when a context
+ // menu is closed (since the resetInput would kill the
+ // select-all detection hack)
+ if (!cm.curOp && cm.display.selForContextMenu == cm.doc.sel) {
+ resetInput(cm);
+ if (webkit) setTimeout(bind(resetInput, cm, true), 0); // Issue #1730
+ }
+ }
+ slowPoll(cm);
+ restartBlink(cm);
+ }
+ function onBlur(cm) {
+ if (cm.state.focused) {
+ signal(cm, "blur", cm);
+ cm.state.focused = false;
+ rmClass(cm.display.wrapper, "CodeMirror-focused");
+ }
+ clearInterval(cm.display.blinker);
+ setTimeout(function() {if (!cm.state.focused) cm.display.shift = false;}, 150);
+ }
+
+ // CONTEXT MENU HANDLING
+
+ var detectingSelectAll;
+ // To make the context menu work, we need to briefly unhide the
+ // textarea (making it as unobtrusive as possible) to let the
+ // right-click take effect on it.
+ function onContextMenu(cm, e) {
+ if (signalDOMEvent(cm, e, "contextmenu")) return;
+ var display = cm.display;
+ if (eventInWidget(display, e) || contextMenuInGutter(cm, e)) return;
+
+ var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;
+ if (!pos || presto) return; // Opera is difficult.
+
+ // Reset the current text selection only if the click is done outside of the selection
+ // and 'resetSelectionOnContextMenu' option is true.
+ var reset = cm.options.resetSelectionOnContextMenu;
+ if (reset && cm.doc.sel.contains(pos) == -1)
+ operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll);
+
+ var oldCSS = display.input.style.cssText;
+ display.inputDiv.style.position = "absolute";
+ display.input.style.cssText = "position: fixed; width: 30px; height: 30px; top: " + (e.clientY - 5) +
+ "px; left: " + (e.clientX - 5) + "px; z-index: 1000; background: " +
+ (ie ? "rgba(255, 255, 255, .05)" : "transparent") +
+ "; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";
+ focusInput(cm);
+ resetInput(cm);
+ // Adds "Select all" to context menu in FF
+ if (!cm.somethingSelected()) display.input.value = display.prevInput = " ";
+ display.selForContextMenu = cm.doc.sel;
+
+ // Select-all will be greyed out if there's nothing to select, so
+ // this adds a zero-width space so that we can later check whether
+ // it got selected.
+ function prepareSelectAllHack() {
+ if (display.input.selectionStart != null) {
+ var selected = cm.somethingSelected();
+ var extval = display.input.value = "\u200b" + (selected ? display.input.value : "");
+ display.prevInput = selected ? "" : "\u200b";
+ display.input.selectionStart = 1; display.input.selectionEnd = extval.length;
+ }
+ }
+ function rehide() {
+ display.inputDiv.style.position = "relative";
+ display.input.style.cssText = oldCSS;
+ if (ie_upto8) display.scrollbarV.scrollTop = display.scroller.scrollTop = scrollPos;
+ slowPoll(cm);
+
+ // Try to detect the user choosing select-all
+ if (display.input.selectionStart != null) {
+ if (!ie || ie_upto8) prepareSelectAllHack();
+ clearTimeout(detectingSelectAll);
+ var i = 0, poll = function() {
+ if (display.selForContextMenu == cm.doc.sel && display.input.selectionStart == 0)
+ operation(cm, commands.selectAll)(cm);
+ else if (i++ < 10) detectingSelectAll = setTimeout(poll, 500);
+ else resetInput(cm);
+ };
+ detectingSelectAll = setTimeout(poll, 200);
+ }
+ }
+
+ if (ie && !ie_upto8) prepareSelectAllHack();
+ if (captureRightClick) {
+ e_stop(e);
+ var mouseup = function() {
+ off(window, "mouseup", mouseup);
+ setTimeout(rehide, 20);
+ };
+ on(window, "mouseup", mouseup);
+ } else {
+ setTimeout(rehide, 50);
+ }
+ }
+
+ function contextMenuInGutter(cm, e) {
+ if (!hasHandler(cm, "gutterContextMenu")) return false;
+ return gutterEvent(cm, e, "gutterContextMenu", false, signal);
+ }
+
+ // UPDATING
+
+ // Compute the position of the end of a change (its 'to' property
+ // refers to the pre-change end).
+ var changeEnd = CodeMirror.changeEnd = function(change) {
+ if (!change.text) return change.to;
+ return Pos(change.from.line + change.text.length - 1,
+ lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0));
+ };
+
+ // Adjust a position to refer to the post-change position of the
+ // same text, or the end of the change if the change covers it.
+ function adjustForChange(pos, change) {
+ if (cmp(pos, change.from) < 0) return pos;
+ if (cmp(pos, change.to) <= 0) return changeEnd(change);
+
+ var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;
+ if (pos.line == change.to.line) ch += changeEnd(change).ch - change.to.ch;
+ return Pos(line, ch);
+ }
+
+ function computeSelAfterChange(doc, change) {
+ var out = [];
+ for (var i = 0; i < doc.sel.ranges.length; i++) {
+ var range = doc.sel.ranges[i];
+ out.push(new Range(adjustForChange(range.anchor, change),
+ adjustForChange(range.head, change)));
+ }
+ return normalizeSelection(out, doc.sel.primIndex);
+ }
+
+ function offsetPos(pos, old, nw) {
+ if (pos.line == old.line)
+ return Pos(nw.line, pos.ch - old.ch + nw.ch);
+ else
+ return Pos(nw.line + (pos.line - old.line), pos.ch);
+ }
+
+ // Used by replaceSelections to allow moving the selection to the
+ // start or around the replaced test. Hint may be "start" or "around".
+ function computeReplacedSel(doc, changes, hint) {
+ var out = [];
+ var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;
+ for (var i = 0; i < changes.length; i++) {
+ var change = changes[i];
+ var from = offsetPos(change.from, oldPrev, newPrev);
+ var to = offsetPos(changeEnd(change), oldPrev, newPrev);
+ oldPrev = change.to;
+ newPrev = to;
+ if (hint == "around") {
+ var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;
+ out[i] = new Range(inv ? to : from, inv ? from : to);
+ } else {
+ out[i] = new Range(from, from);
+ }
+ }
+ return new Selection(out, doc.sel.primIndex);
+ }
+
+ // Allow "beforeChange" event handlers to influence a change
+ function filterChange(doc, change, update) {
+ var obj = {
+ canceled: false,
+ from: change.from,
+ to: change.to,
+ text: change.text,
+ origin: change.origin,
+ cancel: function() { this.canceled = true; }
+ };
+ if (update) obj.update = function(from, to, text, origin) {
+ if (from) this.from = clipPos(doc, from);
+ if (to) this.to = clipPos(doc, to);
+ if (text) this.text = text;
+ if (origin !== undefined) this.origin = origin;
+ };
+ signal(doc, "beforeChange", doc, obj);
+ if (doc.cm) signal(doc.cm, "beforeChange", doc.cm, obj);
+
+ if (obj.canceled) return null;
+ return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin};
+ }
+
+ // Apply a change to a document, and add it to the document's
+ // history, and propagating it to all linked documents.
+ function makeChange(doc, change, ignoreReadOnly) {
+ if (doc.cm) {
+ if (!doc.cm.curOp) return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly);
+ if (doc.cm.state.suppressEdits) return;
+ }
+
+ if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) {
+ change = filterChange(doc, change, true);
+ if (!change) return;
+ }
+
+ // Possibly split or suppress the update based on the presence
+ // of read-only spans in its range.
+ var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);
+ if (split) {
+ for (var i = split.length - 1; i >= 0; --i)
+ makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text});
+ } else {
+ makeChangeInner(doc, change);
+ }
+ }
+
+ function makeChangeInner(doc, change) {
+ if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) return;
+ var selAfter = computeSelAfterChange(doc, change);
+ addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);
+
+ makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));
+ var rebased = [];
+
+ linkedDocs(doc, function(doc, sharedHist) {
+ if (!sharedHist && indexOf(rebased, doc.history) == -1) {
+ rebaseHist(doc.history, change);
+ rebased.push(doc.history);
+ }
+ makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));
+ });
+ }
+
+ // Revert a change stored in a document's history.
+ function makeChangeFromHistory(doc, type, allowSelectionOnly) {
+ if (doc.cm && doc.cm.state.suppressEdits) return;
+
+ var hist = doc.history, event, selAfter = doc.sel;
+ var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done;
+
+ // Verify that there is a useable event (so that ctrl-z won't
+ // needlessly clear selection events)
+ for (var i = 0; i < source.length; i++) {
+ event = source[i];
+ if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)
+ break;
+ }
+ if (i == source.length) return;
+ hist.lastOrigin = hist.lastSelOrigin = null;
+
+ for (;;) {
+ event = source.pop();
+ if (event.ranges) {
+ pushSelectionToHistory(event, dest);
+ if (allowSelectionOnly && !event.equals(doc.sel)) {
+ setSelection(doc, event, {clearRedo: false});
+ return;
+ }
+ selAfter = event;
+ }
+ else break;
+ }
+
+ // Build up a reverse change object to add to the opposite history
+ // stack (redo when undoing, and vice versa).
+ var antiChanges = [];
+ pushSelectionToHistory(selAfter, dest);
+ dest.push({changes: antiChanges, generation: hist.generation});
+ hist.generation = event.generation || ++hist.maxGeneration;
+
+ var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange");
+
+ for (var i = event.changes.length - 1; i >= 0; --i) {
+ var change = event.changes[i];
+ change.origin = type;
+ if (filter && !filterChange(doc, change, false)) {
+ source.length = 0;
+ return;
+ }
+
+ antiChanges.push(historyChangeFromChange(doc, change));
+
+ var after = i ? computeSelAfterChange(doc, change, null) : lst(source);
+ makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));
+ if (doc.cm) ensureCursorVisible(doc.cm);
+ var rebased = [];
+
+ // Propagate to the linked documents
+ linkedDocs(doc, function(doc, sharedHist) {
+ if (!sharedHist && indexOf(rebased, doc.history) == -1) {
+ rebaseHist(doc.history, change);
+ rebased.push(doc.history);
+ }
+ makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));
+ });
+ }
+ }
+
+ // Sub-views need their line numbers shifted when text is added
+ // above or below them in the parent document.
+ function shiftDoc(doc, distance) {
+ doc.first += distance;
+ doc.sel = new Selection(map(doc.sel.ranges, function(range) {
+ return new Range(Pos(range.anchor.line + distance, range.anchor.ch),
+ Pos(range.head.line + distance, range.head.ch));
+ }), doc.sel.primIndex);
+ if (doc.cm) regChange(doc.cm, doc.first, doc.first - distance, distance);
+ }
+
+ // More lower-level change function, handling only a single document
+ // (not linked ones).
+ function makeChangeSingleDoc(doc, change, selAfter, spans) {
+ if (doc.cm && !doc.cm.curOp)
+ return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans);
+
+ if (change.to.line < doc.first) {
+ shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));
+ return;
+ }
+ if (change.from.line > doc.lastLine()) return;
+
+ // Clip the change to the size of this doc
+ if (change.from.line < doc.first) {
+ var shift = change.text.length - 1 - (doc.first - change.from.line);
+ shiftDoc(doc, shift);
+ change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),
+ text: [lst(change.text)], origin: change.origin};
+ }
+ var last = doc.lastLine();
+ if (change.to.line > last) {
+ change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),
+ text: [change.text[0]], origin: change.origin};
+ }
+
+ change.removed = getBetween(doc, change.from, change.to);
+
+ if (!selAfter) selAfter = computeSelAfterChange(doc, change, null);
+ if (doc.cm) makeChangeSingleDocInEditor(doc.cm, change, spans);
+ else updateDoc(doc, change, spans);
+ setSelectionNoUndo(doc, selAfter, sel_dontScroll);
+ }
+
+ // Handle the interaction of a change to a document with the editor
+ // that this document is part of.
+ function makeChangeSingleDocInEditor(cm, change, spans) {
+ var doc = cm.doc, display = cm.display, from = change.from, to = change.to;
+
+ var recomputeMaxLength = false, checkWidthStart = from.line;
+ if (!cm.options.lineWrapping) {
+ checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));
+ doc.iter(checkWidthStart, to.line + 1, function(line) {
+ if (line == display.maxLine) {
+ recomputeMaxLength = true;
+ return true;
+ }
+ });
+ }
+
+ if (doc.sel.contains(change.from, change.to) > -1)
+ signalCursorActivity(cm);
+
+ updateDoc(doc, change, spans, estimateHeight(cm));
+
+ if (!cm.options.lineWrapping) {
+ doc.iter(checkWidthStart, from.line + change.text.length, function(line) {
+ var len = lineLength(line);
+ if (len > display.maxLineLength) {
+ display.maxLine = line;
+ display.maxLineLength = len;
+ display.maxLineChanged = true;
+ recomputeMaxLength = false;
+ }
+ });
+ if (recomputeMaxLength) cm.curOp.updateMaxLine = true;
+ }
+
+ // Adjust frontier, schedule worker
+ doc.frontier = Math.min(doc.frontier, from.line);
+ startWorker(cm, 400);
+
+ var lendiff = change.text.length - (to.line - from.line) - 1;
+ // Remember that these lines changed, for updating the display
+ if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))
+ regLineChange(cm, from.line, "text");
+ else
+ regChange(cm, from.line, to.line + 1, lendiff);
+
+ var changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change");
+ if (changeHandler || changesHandler) {
+ var obj = {
+ from: from, to: to,
+ text: change.text,
+ removed: change.removed,
+ origin: change.origin
+ };
+ if (changeHandler) signalLater(cm, "change", cm, obj);
+ if (changesHandler) (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj);
+ }
+ }
+
+ function replaceRange(doc, code, from, to, origin) {
+ if (!to) to = from;
+ if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp; }
+ if (typeof code == "string") code = splitLines(code);
+ makeChange(doc, {from: from, to: to, text: code, origin: origin});
+ }
+
+ // SCROLLING THINGS INTO VIEW
+
+ // If an editor sits on the top or bottom of the window, partially
+ // scrolled out of view, this ensures that the cursor is visible.
+ function maybeScrollWindow(cm, coords) {
+ var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;
+ if (coords.top + box.top < 0) doScroll = true;
+ else if (coords.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false;
+ if (doScroll != null && !phantom) {
+ var scrollNode = elt("div", "\u200b", null, "position: absolute; top: " +
+ (coords.top - display.viewOffset - paddingTop(cm.display)) + "px; height: " +
+ (coords.bottom - coords.top + scrollerCutOff) + "px; left: " +
+ coords.left + "px; width: 2px;");
+ cm.display.lineSpace.appendChild(scrollNode);
+ scrollNode.scrollIntoView(doScroll);
+ cm.display.lineSpace.removeChild(scrollNode);
+ }
+ }
+
+ // Scroll a given position into view (immediately), verifying that
+ // it actually became visible (as line heights are accurately
+ // measured, the position of something may 'drift' during drawing).
+ function scrollPosIntoView(cm, pos, end, margin) {
+ if (margin == null) margin = 0;
+ for (;;) {
+ var changed = false, coords = cursorCoords(cm, pos);
+ var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);
+ var scrollPos = calculateScrollPos(cm, Math.min(coords.left, endCoords.left),
+ Math.min(coords.top, endCoords.top) - margin,
+ Math.max(coords.left, endCoords.left),
+ Math.max(coords.bottom, endCoords.bottom) + margin);
+ var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;
+ if (scrollPos.scrollTop != null) {
+ setScrollTop(cm, scrollPos.scrollTop);
+ if (Math.abs(cm.doc.scrollTop - startTop) > 1) changed = true;
+ }
+ if (scrollPos.scrollLeft != null) {
+ setScrollLeft(cm, scrollPos.scrollLeft);
+ if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) changed = true;
+ }
+ if (!changed) return coords;
+ }
+ }
+
+ // Scroll a given set of coordinates into view (immediately).
+ function scrollIntoView(cm, x1, y1, x2, y2) {
+ var scrollPos = calculateScrollPos(cm, x1, y1, x2, y2);
+ if (scrollPos.scrollTop != null) setScrollTop(cm, scrollPos.scrollTop);
+ if (scrollPos.scrollLeft != null) setScrollLeft(cm, scrollPos.scrollLeft);
+ }
+
+ // Calculate a new scroll position needed to scroll the given
+ // rectangle into view. Returns an object with scrollTop and
+ // scrollLeft properties. When these are undefined, the
+ // vertical/horizontal position does not need to be adjusted.
+ function calculateScrollPos(cm, x1, y1, x2, y2) {
+ var display = cm.display, snapMargin = textHeight(cm.display);
+ if (y1 < 0) y1 = 0;
+ var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;
+ var screen = display.scroller.clientHeight - scrollerCutOff, result = {};
+ var docBottom = cm.doc.height + paddingVert(display);
+ var atTop = y1 < snapMargin, atBottom = y2 > docBottom - snapMargin;
+ if (y1 < screentop) {
+ result.scrollTop = atTop ? 0 : y1;
+ } else if (y2 > screentop + screen) {
+ var newTop = Math.min(y1, (atBottom ? docBottom : y2) - screen);
+ if (newTop != screentop) result.scrollTop = newTop;
+ }
+
+ var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;
+ var screenw = display.scroller.clientWidth - scrollerCutOff;
+ x1 += display.gutters.offsetWidth; x2 += display.gutters.offsetWidth;
+ var gutterw = display.gutters.offsetWidth;
+ var atLeft = x1 < gutterw + 10;
+ if (x1 < screenleft + gutterw || atLeft) {
+ if (atLeft) x1 = 0;
+ result.scrollLeft = Math.max(0, x1 - 10 - gutterw);
+ } else if (x2 > screenw + screenleft - 3) {
+ result.scrollLeft = x2 + 10 - screenw;
+ }
+ return result;
+ }
+
+ // Store a relative adjustment to the scroll position in the current
+ // operation (to be applied when the operation finishes).
+ function addToScrollPos(cm, left, top) {
+ if (left != null || top != null) resolveScrollToPos(cm);
+ if (left != null)
+ cm.curOp.scrollLeft = (cm.curOp.scrollLeft == null ? cm.doc.scrollLeft : cm.curOp.scrollLeft) + left;
+ if (top != null)
+ cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;
+ }
+
+ // Make sure that at the end of the operation the current cursor is
+ // shown.
+ function ensureCursorVisible(cm) {
+ resolveScrollToPos(cm);
+ var cur = cm.getCursor(), from = cur, to = cur;
+ if (!cm.options.lineWrapping) {
+ from = cur.ch ? Pos(cur.line, cur.ch - 1) : cur;
+ to = Pos(cur.line, cur.ch + 1);
+ }
+ cm.curOp.scrollToPos = {from: from, to: to, margin: cm.options.cursorScrollMargin, isCursor: true};
+ }
+
+ // When an operation has its scrollToPos property set, and another
+ // scroll action is applied before the end of the operation, this
+ // 'simulates' scrolling that position into view in a cheap way, so
+ // that the effect of intermediate scroll commands is not ignored.
+ function resolveScrollToPos(cm) {
+ var range = cm.curOp.scrollToPos;
+ if (range) {
+ cm.curOp.scrollToPos = null;
+ var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);
+ var sPos = calculateScrollPos(cm, Math.min(from.left, to.left),
+ Math.min(from.top, to.top) - range.margin,
+ Math.max(from.right, to.right),
+ Math.max(from.bottom, to.bottom) + range.margin);
+ cm.scrollTo(sPos.scrollLeft, sPos.scrollTop);
+ }
+ }
+
+ // API UTILITIES
+
+ // Indent the given line. The how parameter can be "smart",
+ // "add"/null, "subtract", or "prev". When aggressive is false
+ // (typically set to true for forced single-line indents), empty
+ // lines are not indented, and places where the mode returns Pass
+ // are left alone.
+ function indentLine(cm, n, how, aggressive) {
+ var doc = cm.doc, state;
+ if (how == null) how = "add";
+ if (how == "smart") {
+ // Fall back to "prev" when the mode doesn't have an indentation
+ // method.
+ if (!cm.doc.mode.indent) how = "prev";
+ else state = getStateBefore(cm, n);
+ }
+
+ var tabSize = cm.options.tabSize;
+ var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);
+ if (line.stateAfter) line.stateAfter = null;
+ var curSpaceString = line.text.match(/^\s*/)[0], indentation;
+ if (!aggressive && !/\S/.test(line.text)) {
+ indentation = 0;
+ how = "not";
+ } else if (how == "smart") {
+ indentation = cm.doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);
+ if (indentation == Pass) {
+ if (!aggressive) return;
+ how = "prev";
+ }
+ }
+ if (how == "prev") {
+ if (n > doc.first) indentation = countColumn(getLine(doc, n-1).text, null, tabSize);
+ else indentation = 0;
+ } else if (how == "add") {
+ indentation = curSpace + cm.options.indentUnit;
+ } else if (how == "subtract") {
+ indentation = curSpace - cm.options.indentUnit;
+ } else if (typeof how == "number") {
+ indentation = curSpace + how;
+ }
+ indentation = Math.max(0, indentation);
+
+ var indentString = "", pos = 0;
+ if (cm.options.indentWithTabs)
+ for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";}
+ if (pos < indentation) indentString += spaceStr(indentation - pos);
+
+ if (indentString != curSpaceString) {
+ replaceRange(cm.doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input");
+ } else {
+ // Ensure that, if the cursor was in the whitespace at the start
+ // of the line, it is moved to the end of that space.
+ for (var i = 0; i < doc.sel.ranges.length; i++) {
+ var range = doc.sel.ranges[i];
+ if (range.head.line == n && range.head.ch < curSpaceString.length) {
+ var pos = Pos(n, curSpaceString.length);
+ replaceOneSelection(doc, i, new Range(pos, pos));
+ break;
+ }
+ }
+ }
+ line.stateAfter = null;
+ }
+
+ // Utility for applying a change to a line by handle or number,
+ // returning the number and optionally registering the line as
+ // changed.
+ function changeLine(cm, handle, changeType, op) {
+ var no = handle, line = handle, doc = cm.doc;
+ if (typeof handle == "number") line = getLine(doc, clipLine(doc, handle));
+ else no = lineNo(handle);
+ if (no == null) return null;
+ if (op(line, no)) regLineChange(cm, no, changeType);
+ return line;
+ }
+
+ // Helper for deleting text near the selection(s), used to implement
+ // backspace, delete, and similar functionality.
+ function deleteNearSelection(cm, compute) {
+ var ranges = cm.doc.sel.ranges, kill = [];
+ // Build up a set of ranges to kill first, merging overlapping
+ // ranges.
+ for (var i = 0; i < ranges.length; i++) {
+ var toKill = compute(ranges[i]);
+ while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {
+ var replaced = kill.pop();
+ if (cmp(replaced.from, toKill.from) < 0) {
+ toKill.from = replaced.from;
+ break;
+ }
+ }
+ kill.push(toKill);
+ }
+ // Next, remove those actual ranges.
+ runInOp(cm, function() {
+ for (var i = kill.length - 1; i >= 0; i--)
+ replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete");
+ ensureCursorVisible(cm);
+ });
+ }
+
+ // Used for horizontal relative motion. Dir is -1 or 1 (left or
+ // right), unit can be "char", "column" (like char, but doesn't
+ // cross line boundaries), "word" (across next word), or "group" (to
+ // the start of next group of word or non-word-non-whitespace
+ // chars). The visually param controls whether, in right-to-left
+ // text, direction 1 means to move towards the next index in the
+ // string, or towards the character to the right of the current
+ // position. The resulting position will have a hitSide=true
+ // property if it reached the end of the document.
+ function findPosH(doc, pos, dir, unit, visually) {
+ var line = pos.line, ch = pos.ch, origDir = dir;
+ var lineObj = getLine(doc, line);
+ var possible = true;
+ function findNextLine() {
+ var l = line + dir;
+ if (l < doc.first || l >= doc.first + doc.size) return (possible = false);
+ line = l;
+ return lineObj = getLine(doc, l);
+ }
+ function moveOnce(boundToLine) {
+ var next = (visually ? moveVisually : moveLogically)(lineObj, ch, dir, true);
+ if (next == null) {
+ if (!boundToLine && findNextLine()) {
+ if (visually) ch = (dir < 0 ? lineRight : lineLeft)(lineObj);
+ else ch = dir < 0 ? lineObj.text.length : 0;
+ } else return (possible = false);
+ } else ch = next;
+ return true;
+ }
+
+ if (unit == "char") moveOnce();
+ else if (unit == "column") moveOnce(true);
+ else if (unit == "word" || unit == "group") {
+ var sawType = null, group = unit == "group";
+ for (var first = true;; first = false) {
+ if (dir < 0 && !moveOnce(!first)) break;
+ var cur = lineObj.text.charAt(ch) || "\n";
+ var type = isWordChar(cur) ? "w"
+ : group && cur == "\n" ? "n"
+ : !group || /\s/.test(cur) ? null
+ : "p";
+ if (group && !first && !type) type = "s";
+ if (sawType && sawType != type) {
+ if (dir < 0) {dir = 1; moveOnce();}
+ break;
+ }
+
+ if (type) sawType = type;
+ if (dir > 0 && !moveOnce(!first)) break;
+ }
+ }
+ var result = skipAtomic(doc, Pos(line, ch), origDir, true);
+ if (!possible) result.hitSide = true;
+ return result;
+ }
+
+ // For relative vertical movement. Dir may be -1 or 1. Unit can be
+ // "page" or "line". The resulting position will have a hitSide=true
+ // property if it reached the end of the document.
+ function findPosV(cm, pos, dir, unit) {
+ var doc = cm.doc, x = pos.left, y;
+ if (unit == "page") {
+ var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);
+ y = pos.top + dir * (pageSize - (dir < 0 ? 1.5 : .5) * textHeight(cm.display));
+ } else if (unit == "line") {
+ y = dir > 0 ? pos.bottom + 3 : pos.top - 3;
+ }
+ for (;;) {
+ var target = coordsChar(cm, x, y);
+ if (!target.outside) break;
+ if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break; }
+ y += dir * 5;
+ }
+ return target;
+ }
+
+ // Find the word at the given position (as returned by coordsChar).
+ function findWordAt(doc, pos) {
+ var line = getLine(doc, pos.line).text;
+ var start = pos.ch, end = pos.ch;
+ if (line) {
+ if ((pos.xRel < 0 || end == line.length) && start) --start; else ++end;
+ var startChar = line.charAt(start);
+ var check = isWordChar(startChar) ? isWordChar
+ : /\s/.test(startChar) ? function(ch) {return /\s/.test(ch);}
+ : function(ch) {return !/\s/.test(ch) && !isWordChar(ch);};
+ while (start > 0 && check(line.charAt(start - 1))) --start;
+ while (end < line.length && check(line.charAt(end))) ++end;
+ }
+ return new Range(Pos(pos.line, start), Pos(pos.line, end));
+ }
+
+ // EDITOR METHODS
+
+ // The publicly visible API. Note that methodOp(f) means
+ // 'wrap f in an operation, performed on its `this` parameter'.
+
+ // This is not the complete set of editor methods. Most of the
+ // methods defined on the Doc type are also injected into
+ // CodeMirror.prototype, for backwards compatibility and
+ // convenience.
+
+ CodeMirror.prototype = {
+ constructor: CodeMirror,
+ focus: function(){window.focus(); focusInput(this); fastPoll(this);},
+
+ setOption: function(option, value) {
+ var options = this.options, old = options[option];
+ if (options[option] == value && option != "mode") return;
+ options[option] = value;
+ if (optionHandlers.hasOwnProperty(option))
+ operation(this, optionHandlers[option])(this, value, old);
+ },
+
+ getOption: function(option) {return this.options[option];},
+ getDoc: function() {return this.doc;},
+
+ addKeyMap: function(map, bottom) {
+ this.state.keyMaps[bottom ? "push" : "unshift"](map);
+ },
+ removeKeyMap: function(map) {
+ var maps = this.state.keyMaps;
+ for (var i = 0; i < maps.length; ++i)
+ if (maps[i] == map || (typeof maps[i] != "string" && maps[i].name == map)) {
+ maps.splice(i, 1);
+ return true;
+ }
+ },
+
+ addOverlay: methodOp(function(spec, options) {
+ var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);
+ if (mode.startState) throw new Error("Overlays may not be stateful.");
+ this.state.overlays.push({mode: mode, modeSpec: spec, opaque: options && options.opaque});
+ this.state.modeGen++;
+ regChange(this);
+ }),
+ removeOverlay: methodOp(function(spec) {
+ var overlays = this.state.overlays;
+ for (var i = 0; i < overlays.length; ++i) {
+ var cur = overlays[i].modeSpec;
+ if (cur == spec || typeof spec == "string" && cur.name == spec) {
+ overlays.splice(i, 1);
+ this.state.modeGen++;
+ regChange(this);
+ return;
+ }
+ }
+ }),
+
+ indentLine: methodOp(function(n, dir, aggressive) {
+ if (typeof dir != "string" && typeof dir != "number") {
+ if (dir == null) dir = this.options.smartIndent ? "smart" : "prev";
+ else dir = dir ? "add" : "subtract";
+ }
+ if (isLine(this.doc, n)) indentLine(this, n, dir, aggressive);
+ }),
+ indentSelection: methodOp(function(how) {
+ var ranges = this.doc.sel.ranges, end = -1;
+ for (var i = 0; i < ranges.length; i++) {
+ var range = ranges[i];
+ if (!range.empty()) {
+ var start = Math.max(end, range.from().line);
+ var to = range.to();
+ end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;
+ for (var j = start; j < end; ++j)
+ indentLine(this, j, how);
+ } else if (range.head.line > end) {
+ indentLine(this, range.head.line, how, true);
+ end = range.head.line;
+ if (i == this.doc.sel.primIndex) ensureCursorVisible(this);
+ }
+ }
+ }),
+
+ // Fetch the parser token for a given character. Useful for hacks
+ // that want to inspect the mode state (say, for completion).
+ getTokenAt: function(pos, precise) {
+ var doc = this.doc;
+ pos = clipPos(doc, pos);
+ var state = getStateBefore(this, pos.line, precise), mode = this.doc.mode;
+ var line = getLine(doc, pos.line);
+ var stream = new StringStream(line.text, this.options.tabSize);
+ while (stream.pos < pos.ch && !stream.eol()) {
+ stream.start = stream.pos;
+ var style = readToken(mode, stream, state);
+ }
+ return {start: stream.start,
+ end: stream.pos,
+ string: stream.current(),
+ type: style || null,
+ state: state};
+ },
+
+ getTokenTypeAt: function(pos) {
+ pos = clipPos(this.doc, pos);
+ var styles = getLineStyles(this, getLine(this.doc, pos.line));
+ var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;
+ var type;
+ if (ch == 0) type = styles[2];
+ else for (;;) {
+ var mid = (before + after) >> 1;
+ if ((mid ? styles[mid * 2 - 1] : 0) >= ch) after = mid;
+ else if (styles[mid * 2 + 1] < ch) before = mid + 1;
+ else { type = styles[mid * 2 + 2]; break; }
+ }
+ var cut = type ? type.indexOf("cm-overlay ") : -1;
+ return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1);
+ },
+
+ getModeAt: function(pos) {
+ var mode = this.doc.mode;
+ if (!mode.innerMode) return mode;
+ return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode;
+ },
+
+ getHelper: function(pos, type) {
+ return this.getHelpers(pos, type)[0];
+ },
+
+ getHelpers: function(pos, type) {
+ var found = [];
+ if (!helpers.hasOwnProperty(type)) return helpers;
+ var help = helpers[type], mode = this.getModeAt(pos);
+ if (typeof mode[type] == "string") {
+ if (help[mode[type]]) found.push(help[mode[type]]);
+ } else if (mode[type]) {
+ for (var i = 0; i < mode[type].length; i++) {
+ var val = help[mode[type][i]];
+ if (val) found.push(val);
+ }
+ } else if (mode.helperType && help[mode.helperType]) {
+ found.push(help[mode.helperType]);
+ } else if (help[mode.name]) {
+ found.push(help[mode.name]);
+ }
+ for (var i = 0; i < help._global.length; i++) {
+ var cur = help._global[i];
+ if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)
+ found.push(cur.val);
+ }
+ return found;
+ },
+
+ getStateAfter: function(line, precise) {
+ var doc = this.doc;
+ line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);
+ return getStateBefore(this, line + 1, precise);
+ },
+
+ cursorCoords: function(start, mode) {
+ var pos, range = this.doc.sel.primary();
+ if (start == null) pos = range.head;
+ else if (typeof start == "object") pos = clipPos(this.doc, start);
+ else pos = start ? range.from() : range.to();
+ return cursorCoords(this, pos, mode || "page");
+ },
+
+ charCoords: function(pos, mode) {
+ return charCoords(this, clipPos(this.doc, pos), mode || "page");
+ },
+
+ coordsChar: function(coords, mode) {
+ coords = fromCoordSystem(this, coords, mode || "page");
+ return coordsChar(this, coords.left, coords.top);
+ },
+
+ lineAtHeight: function(height, mode) {
+ height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top;
+ return lineAtHeight(this.doc, height + this.display.viewOffset);
+ },
+ heightAtLine: function(line, mode) {
+ var end = false, last = this.doc.first + this.doc.size - 1;
+ if (line < this.doc.first) line = this.doc.first;
+ else if (line > last) { line = last; end = true; }
+ var lineObj = getLine(this.doc, line);
+ return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page").top +
+ (end ? this.doc.height - heightAtLine(lineObj) : 0);
+ },
+
+ defaultTextHeight: function() { return textHeight(this.display); },
+ defaultCharWidth: function() { return charWidth(this.display); },
+
+ setGutterMarker: methodOp(function(line, gutterID, value) {
+ return changeLine(this, line, "gutter", function(line) {
+ var markers = line.gutterMarkers || (line.gutterMarkers = {});
+ markers[gutterID] = value;
+ if (!value && isEmpty(markers)) line.gutterMarkers = null;
+ return true;
+ });
+ }),
+
+ clearGutter: methodOp(function(gutterID) {
+ var cm = this, doc = cm.doc, i = doc.first;
+ doc.iter(function(line) {
+ if (line.gutterMarkers && line.gutterMarkers[gutterID]) {
+ line.gutterMarkers[gutterID] = null;
+ regLineChange(cm, i, "gutter");
+ if (isEmpty(line.gutterMarkers)) line.gutterMarkers = null;
+ }
+ ++i;
+ });
+ }),
+
+ addLineClass: methodOp(function(handle, where, cls) {
+ return changeLine(this, handle, "class", function(line) {
+ var prop = where == "text" ? "textClass" : where == "background" ? "bgClass" : "wrapClass";
+ if (!line[prop]) line[prop] = cls;
+ else if (new RegExp("(?:^|\\s)" + cls + "(?:$|\\s)").test(line[prop])) return false;
+ else line[prop] += " " + cls;
+ return true;
+ });
+ }),
+
+ removeLineClass: methodOp(function(handle, where, cls) {
+ return changeLine(this, handle, "class", function(line) {
+ var prop = where == "text" ? "textClass" : where == "background" ? "bgClass" : "wrapClass";
+ var cur = line[prop];
+ if (!cur) return false;
+ else if (cls == null) line[prop] = null;
+ else {
+ var found = cur.match(new RegExp("(?:^|\\s+)" + cls + "(?:$|\\s+)"));
+ if (!found) return false;
+ var end = found.index + found[0].length;
+ line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null;
+ }
+ return true;
+ });
+ }),
+
+ addLineWidget: methodOp(function(handle, node, options) {
+ return addLineWidget(this, handle, node, options);
+ }),
+
+ removeLineWidget: function(widget) { widget.clear(); },
+
+ lineInfo: function(line) {
+ if (typeof line == "number") {
+ if (!isLine(this.doc, line)) return null;
+ var n = line;
+ line = getLine(this.doc, line);
+ if (!line) return null;
+ } else {
+ var n = lineNo(line);
+ if (n == null) return null;
+ }
+ return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,
+ textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,
+ widgets: line.widgets};
+ },
+
+ getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo};},
+
+ addWidget: function(pos, node, scroll, vert, horiz) {
+ var display = this.display;
+ pos = cursorCoords(this, clipPos(this.doc, pos));
+ var top = pos.bottom, left = pos.left;
+ node.style.position = "absolute";
+ display.sizer.appendChild(node);
+ if (vert == "over") {
+ top = pos.top;
+ } else if (vert == "above" || vert == "near") {
+ var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),
+ hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);
+ // Default to positioning above (if specified and possible); otherwise default to positioning below
+ if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)
+ top = pos.top - node.offsetHeight;
+ else if (pos.bottom + node.offsetHeight <= vspace)
+ top = pos.bottom;
+ if (left + node.offsetWidth > hspace)
+ left = hspace - node.offsetWidth;
+ }
+ node.style.top = top + "px";
+ node.style.left = node.style.right = "";
+ if (horiz == "right") {
+ left = display.sizer.clientWidth - node.offsetWidth;
+ node.style.right = "0px";
+ } else {
+ if (horiz == "left") left = 0;
+ else if (horiz == "middle") left = (display.sizer.clientWidth - node.offsetWidth) / 2;
+ node.style.left = left + "px";
+ }
+ if (scroll)
+ scrollIntoView(this, left, top, left + node.offsetWidth, top + node.offsetHeight);
+ },
+
+ triggerOnKeyDown: methodOp(onKeyDown),
+ triggerOnKeyPress: methodOp(onKeyPress),
+ triggerOnKeyUp: methodOp(onKeyUp),
+
+ execCommand: function(cmd) {
+ if (commands.hasOwnProperty(cmd))
+ return commands[cmd](this);
+ },
+
+ findPosH: function(from, amount, unit, visually) {
+ var dir = 1;
+ if (amount < 0) { dir = -1; amount = -amount; }
+ for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) {
+ cur = findPosH(this.doc, cur, dir, unit, visually);
+ if (cur.hitSide) break;
+ }
+ return cur;
+ },
+
+ moveH: methodOp(function(dir, unit) {
+ var cm = this;
+ cm.extendSelectionsBy(function(range) {
+ if (cm.display.shift || cm.doc.extend || range.empty())
+ return findPosH(cm.doc, range.head, dir, unit, cm.options.rtlMoveVisually);
+ else
+ return dir < 0 ? range.from() : range.to();
+ }, sel_move);
+ }),
+
+ deleteH: methodOp(function(dir, unit) {
+ var sel = this.doc.sel, doc = this.doc;
+ if (sel.somethingSelected())
+ doc.replaceSelection("", null, "+delete");
+ else
+ deleteNearSelection(this, function(range) {
+ var other = findPosH(doc, range.head, dir, unit, false);
+ return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other};
+ });
+ }),
+
+ findPosV: function(from, amount, unit, goalColumn) {
+ var dir = 1, x = goalColumn;
+ if (amount < 0) { dir = -1; amount = -amount; }
+ for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) {
+ var coords = cursorCoords(this, cur, "div");
+ if (x == null) x = coords.left;
+ else coords.left = x;
+ cur = findPosV(this, coords, dir, unit);
+ if (cur.hitSide) break;
+ }
+ return cur;
+ },
+
+ moveV: methodOp(function(dir, unit) {
+ var cm = this, doc = this.doc, goals = [];
+ var collapse = !cm.display.shift && !doc.extend && doc.sel.somethingSelected();
+ doc.extendSelectionsBy(function(range) {
+ if (collapse)
+ return dir < 0 ? range.from() : range.to();
+ var headPos = cursorCoords(cm, range.head, "div");
+ if (range.goalColumn != null) headPos.left = range.goalColumn;
+ goals.push(headPos.left);
+ var pos = findPosV(cm, headPos, dir, unit);
+ if (unit == "page" && range == doc.sel.primary())
+ addToScrollPos(cm, null, charCoords(cm, pos, "div").top - headPos.top);
+ return pos;
+ }, sel_move);
+ if (goals.length) for (var i = 0; i < doc.sel.ranges.length; i++)
+ doc.sel.ranges[i].goalColumn = goals[i];
+ }),
+
+ toggleOverwrite: function(value) {
+ if (value != null && value == this.state.overwrite) return;
+ if (this.state.overwrite = !this.state.overwrite)
+ addClass(this.display.cursorDiv, "CodeMirror-overwrite");
+ else
+ rmClass(this.display.cursorDiv, "CodeMirror-overwrite");
+
+ signal(this, "overwriteToggle", this, this.state.overwrite);
+ },
+ hasFocus: function() { return activeElt() == this.display.input; },
+
+ scrollTo: methodOp(function(x, y) {
+ if (x != null || y != null) resolveScrollToPos(this);
+ if (x != null) this.curOp.scrollLeft = x;
+ if (y != null) this.curOp.scrollTop = y;
+ }),
+ getScrollInfo: function() {
+ var scroller = this.display.scroller, co = scrollerCutOff;
+ return {left: scroller.scrollLeft, top: scroller.scrollTop,
+ height: scroller.scrollHeight - co, width: scroller.scrollWidth - co,
+ clientHeight: scroller.clientHeight - co, clientWidth: scroller.clientWidth - co};
+ },
+
+ scrollIntoView: methodOp(function(range, margin) {
+ if (range == null) {
+ range = {from: this.doc.sel.primary().head, to: null};
+ if (margin == null) margin = this.options.cursorScrollMargin;
+ } else if (typeof range == "number") {
+ range = {from: Pos(range, 0), to: null};
+ } else if (range.from == null) {
+ range = {from: range, to: null};
+ }
+ if (!range.to) range.to = range.from;
+ range.margin = margin || 0;
+
+ if (range.from.line != null) {
+ resolveScrollToPos(this);
+ this.curOp.scrollToPos = range;
+ } else {
+ var sPos = calculateScrollPos(this, Math.min(range.from.left, range.to.left),
+ Math.min(range.from.top, range.to.top) - range.margin,
+ Math.max(range.from.right, range.to.right),
+ Math.max(range.from.bottom, range.to.bottom) + range.margin);
+ this.scrollTo(sPos.scrollLeft, sPos.scrollTop);
+ }
+ }),
+
+ setSize: methodOp(function(width, height) {
+ function interpret(val) {
+ return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val;
+ }
+ if (width != null) this.display.wrapper.style.width = interpret(width);
+ if (height != null) this.display.wrapper.style.height = interpret(height);
+ if (this.options.lineWrapping) clearLineMeasurementCache(this);
+ this.curOp.forceUpdate = true;
+ signal(this, "refresh", this);
+ }),
+
+ operation: function(f){return runInOp(this, f);},
+
+ refresh: methodOp(function() {
+ var oldHeight = this.display.cachedTextHeight;
+ regChange(this);
+ this.curOp.forceUpdate = true;
+ clearCaches(this);
+ this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop);
+ updateGutterSpace(this);
+ if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5)
+ estimateLineHeights(this);
+ signal(this, "refresh", this);
+ }),
+
+ swapDoc: methodOp(function(doc) {
+ var old = this.doc;
+ old.cm = null;
+ attachDoc(this, doc);
+ clearCaches(this);
+ resetInput(this);
+ this.scrollTo(doc.scrollLeft, doc.scrollTop);
+ signalLater(this, "swapDoc", this, old);
+ return old;
+ }),
+
+ getInputField: function(){return this.display.input;},
+ getWrapperElement: function(){return this.display.wrapper;},
+ getScrollerElement: function(){return this.display.scroller;},
+ getGutterElement: function(){return this.display.gutters;}
+ };
+ eventMixin(CodeMirror);
+
+ // OPTION DEFAULTS
+
+ // The default configuration options.
+ var defaults = CodeMirror.defaults = {};
+ // Functions to run when options are changed.
+ var optionHandlers = CodeMirror.optionHandlers = {};
+
+ function option(name, deflt, handle, notOnInit) {
+ CodeMirror.defaults[name] = deflt;
+ if (handle) optionHandlers[name] =
+ notOnInit ? function(cm, val, old) {if (old != Init) handle(cm, val, old);} : handle;
+ }
+
+ // Passed to option handlers when there is no old value.
+ var Init = CodeMirror.Init = {toString: function(){return "CodeMirror.Init";}};
+
+ // These two are, on init, called from the constructor because they
+ // have to be initialized before the editor can start at all.
+ option("value", "", function(cm, val) {
+ cm.setValue(val);
+ }, true);
+ option("mode", null, function(cm, val) {
+ cm.doc.modeOption = val;
+ loadMode(cm);
+ }, true);
+
+ option("indentUnit", 2, loadMode, true);
+ option("indentWithTabs", false);
+ option("smartIndent", true);
+ option("tabSize", 4, function(cm) {
+ resetModeState(cm);
+ clearCaches(cm);
+ regChange(cm);
+ }, true);
+ option("specialChars", /[\t\u0000-\u0019\u00ad\u200b\u2028\u2029\ufeff]/g, function(cm, val) {
+ cm.options.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g");
+ cm.refresh();
+ }, true);
+ option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function(cm) {cm.refresh();}, true);
+ option("electricChars", true);
+ option("rtlMoveVisually", !windows);
+ option("wholeLineUpdateBefore", true);
+
+ option("theme", "default", function(cm) {
+ themeChanged(cm);
+ guttersChanged(cm);
+ }, true);
+ option("keyMap", "default", keyMapChanged);
+ option("extraKeys", null);
+
+ option("lineWrapping", false, wrappingChanged, true);
+ option("gutters", [], function(cm) {
+ setGuttersForLineNumbers(cm.options);
+ guttersChanged(cm);
+ }, true);
+ option("fixedGutter", true, function(cm, val) {
+ cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0";
+ cm.refresh();
+ }, true);
+ option("coverGutterNextToScrollbar", false, updateScrollbars, true);
+ option("lineNumbers", false, function(cm) {
+ setGuttersForLineNumbers(cm.options);
+ guttersChanged(cm);
+ }, true);
+ option("firstLineNumber", 1, guttersChanged, true);
+ option("lineNumberFormatter", function(integer) {return integer;}, guttersChanged, true);
+ option("showCursorWhenSelecting", false, updateSelection, true);
+
+ option("resetSelectionOnContextMenu", true);
+
+ option("readOnly", false, function(cm, val) {
+ if (val == "nocursor") {
+ onBlur(cm);
+ cm.display.input.blur();
+ cm.display.disabled = true;
+ } else {
+ cm.display.disabled = false;
+ if (!val) resetInput(cm);
+ }
+ });
+ option("disableInput", false, function(cm, val) {if (!val) resetInput(cm);}, true);
+ option("dragDrop", true);
+
+ option("cursorBlinkRate", 530);
+ option("cursorScrollMargin", 0);
+ option("cursorHeight", 1);
+ option("workTime", 100);
+ option("workDelay", 100);
+ option("flattenSpans", true, resetModeState, true);
+ option("addModeClass", false, resetModeState, true);
+ option("pollInterval", 100);
+ option("undoDepth", 200, function(cm, val){cm.doc.history.undoDepth = val;});
+ option("historyEventDelay", 1250);
+ option("viewportMargin", 10, function(cm){cm.refresh();}, true);
+ option("maxHighlightLength", 10000, resetModeState, true);
+ option("moveInputWithCursor", true, function(cm, val) {
+ if (!val) cm.display.inputDiv.style.top = cm.display.inputDiv.style.left = 0;
+ });
+
+ option("tabindex", null, function(cm, val) {
+ cm.display.input.tabIndex = val || "";
+ });
+ option("autofocus", null);
+
+ // MODE DEFINITION AND QUERYING
+
+ // Known modes, by name and by MIME
+ var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {};
+
+ // Extra arguments are stored as the mode's dependencies, which is
+ // used by (legacy) mechanisms like loadmode.js to automatically
+ // load a mode. (Preferred mechanism is the require/define calls.)
+ CodeMirror.defineMode = function(name, mode) {
+ if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name;
+ if (arguments.length > 2) {
+ mode.dependencies = [];
+ for (var i = 2; i < arguments.length; ++i) mode.dependencies.push(arguments[i]);
+ }
+ modes[name] = mode;
+ };
+
+ CodeMirror.defineMIME = function(mime, spec) {
+ mimeModes[mime] = spec;
+ };
+
+ // Given a MIME type, a {name, ...options} config object, or a name
+ // string, return a mode config object.
+ CodeMirror.resolveMode = function(spec) {
+ if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) {
+ spec = mimeModes[spec];
+ } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) {
+ var found = mimeModes[spec.name];
+ if (typeof found == "string") found = {name: found};
+ spec = createObj(found, spec);
+ spec.name = found.name;
+ } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) {
+ return CodeMirror.resolveMode("application/xml");
+ }
+ if (typeof spec == "string") return {name: spec};
+ else return spec || {name: "null"};
+ };
+
+ // Given a mode spec (anything that resolveMode accepts), find and
+ // initialize an actual mode object.
+ CodeMirror.getMode = function(options, spec) {
+ var spec = CodeMirror.resolveMode(spec);
+ var mfactory = modes[spec.name];
+ if (!mfactory) return CodeMirror.getMode(options, "text/plain");
+ var modeObj = mfactory(options, spec);
+ if (modeExtensions.hasOwnProperty(spec.name)) {
+ var exts = modeExtensions[spec.name];
+ for (var prop in exts) {
+ if (!exts.hasOwnProperty(prop)) continue;
+ if (modeObj.hasOwnProperty(prop)) modeObj["_" + prop] = modeObj[prop];
+ modeObj[prop] = exts[prop];
+ }
+ }
+ modeObj.name = spec.name;
+ if (spec.helperType) modeObj.helperType = spec.helperType;
+ if (spec.modeProps) for (var prop in spec.modeProps)
+ modeObj[prop] = spec.modeProps[prop];
+
+ return modeObj;
+ };
+
+ // Minimal default mode.
+ CodeMirror.defineMode("null", function() {
+ return {token: function(stream) {stream.skipToEnd();}};
+ });
+ CodeMirror.defineMIME("text/plain", "null");
+
+ // This can be used to attach properties to mode objects from
+ // outside the actual mode definition.
+ var modeExtensions = CodeMirror.modeExtensions = {};
+ CodeMirror.extendMode = function(mode, properties) {
+ var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});
+ copyObj(properties, exts);
+ };
+
+ // EXTENSIONS
+
+ CodeMirror.defineExtension = function(name, func) {
+ CodeMirror.prototype[name] = func;
+ };
+ CodeMirror.defineDocExtension = function(name, func) {
+ Doc.prototype[name] = func;
+ };
+ CodeMirror.defineOption = option;
+
+ var initHooks = [];
+ CodeMirror.defineInitHook = function(f) {initHooks.push(f);};
+
+ var helpers = CodeMirror.helpers = {};
+ CodeMirror.registerHelper = function(type, name, value) {
+ if (!helpers.hasOwnProperty(type)) helpers[type] = CodeMirror[type] = {_global: []};
+ helpers[type][name] = value;
+ };
+ CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {
+ CodeMirror.registerHelper(type, name, value);
+ helpers[type]._global.push({pred: predicate, val: value});
+ };
+
+ // MODE STATE HANDLING
+
+ // Utility functions for working with state. Exported because nested
+ // modes need to do this for their inner modes.
+
+ var copyState = CodeMirror.copyState = function(mode, state) {
+ if (state === true) return state;
+ if (mode.copyState) return mode.copyState(state);
+ var nstate = {};
+ for (var n in state) {
+ var val = state[n];
+ if (val instanceof Array) val = val.concat([]);
+ nstate[n] = val;
+ }
+ return nstate;
+ };
+
+ var startState = CodeMirror.startState = function(mode, a1, a2) {
+ return mode.startState ? mode.startState(a1, a2) : true;
+ };
+
+ // Given a mode and a state (for that mode), find the inner mode and
+ // state at the position that the state refers to.
+ CodeMirror.innerMode = function(mode, state) {
+ while (mode.innerMode) {
+ var info = mode.innerMode(state);
+ if (!info || info.mode == mode) break;
+ state = info.state;
+ mode = info.mode;
+ }
+ return info || {mode: mode, state: state};
+ };
+
+ // STANDARD COMMANDS
+
+ // Commands are parameter-less actions that can be performed on an
+ // editor, mostly used for keybindings.
+ var commands = CodeMirror.commands = {
+ selectAll: function(cm) {cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);},
+ singleSelection: function(cm) {
+ cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll);
+ },
+ killLine: function(cm) {
+ deleteNearSelection(cm, function(range) {
+ if (range.empty()) {
+ var len = getLine(cm.doc, range.head.line).text.length;
+ if (range.head.ch == len && range.head.line < cm.lastLine())
+ return {from: range.head, to: Pos(range.head.line + 1, 0)};
+ else
+ return {from: range.head, to: Pos(range.head.line, len)};
+ } else {
+ return {from: range.from(), to: range.to()};
+ }
+ });
+ },
+ deleteLine: function(cm) {
+ deleteNearSelection(cm, function(range) {
+ return {from: Pos(range.from().line, 0),
+ to: clipPos(cm.doc, Pos(range.to().line + 1, 0))};
+ });
+ },
+ delLineLeft: function(cm) {
+ deleteNearSelection(cm, function(range) {
+ return {from: Pos(range.from().line, 0), to: range.from()};
+ });
+ },
+ undo: function(cm) {cm.undo();},
+ redo: function(cm) {cm.redo();},
+ undoSelection: function(cm) {cm.undoSelection();},
+ redoSelection: function(cm) {cm.redoSelection();},
+ goDocStart: function(cm) {cm.extendSelection(Pos(cm.firstLine(), 0));},
+ goDocEnd: function(cm) {cm.extendSelection(Pos(cm.lastLine()));},
+ goLineStart: function(cm) {
+ cm.extendSelectionsBy(function(range) { return lineStart(cm, range.head.line); }, sel_move);
+ },
+ goLineStartSmart: function(cm) {
+ cm.extendSelectionsBy(function(range) {
+ var start = lineStart(cm, range.head.line);
+ var line = cm.getLineHandle(start.line);
+ var order = getOrder(line);
+ if (!order || order[0].level == 0) {
+ var firstNonWS = Math.max(0, line.text.search(/\S/));
+ var inWS = range.head.line == start.line && range.head.ch <= firstNonWS && range.head.ch;
+ return Pos(start.line, inWS ? 0 : firstNonWS);
+ }
+ return start;
+ }, sel_move);
+ },
+ goLineEnd: function(cm) {
+ cm.extendSelectionsBy(function(range) { return lineEnd(cm, range.head.line); }, sel_move);
+ },
+ goLineRight: function(cm) {
+ cm.extendSelectionsBy(function(range) {
+ var top = cm.charCoords(range.head, "div").top + 5;
+ return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div");
+ }, sel_move);
+ },
+ goLineLeft: function(cm) {
+ cm.extendSelectionsBy(function(range) {
+ var top = cm.charCoords(range.head, "div").top + 5;
+ return cm.coordsChar({left: 0, top: top}, "div");
+ }, sel_move);
+ },
+ goLineUp: function(cm) {cm.moveV(-1, "line");},
+ goLineDown: function(cm) {cm.moveV(1, "line");},
+ goPageUp: function(cm) {cm.moveV(-1, "page");},
+ goPageDown: function(cm) {cm.moveV(1, "page");},
+ goCharLeft: function(cm) {cm.moveH(-1, "char");},
+ goCharRight: function(cm) {cm.moveH(1, "char");},
+ goColumnLeft: function(cm) {cm.moveH(-1, "column");},
+ goColumnRight: function(cm) {cm.moveH(1, "column");},
+ goWordLeft: function(cm) {cm.moveH(-1, "word");},
+ goGroupRight: function(cm) {cm.moveH(1, "group");},
+ goGroupLeft: function(cm) {cm.moveH(-1, "group");},
+ goWordRight: function(cm) {cm.moveH(1, "word");},
+ delCharBefore: function(cm) {cm.deleteH(-1, "char");},
+ delCharAfter: function(cm) {cm.deleteH(1, "char");},
+ delWordBefore: function(cm) {cm.deleteH(-1, "word");},
+ delWordAfter: function(cm) {cm.deleteH(1, "word");},
+ delGroupBefore: function(cm) {cm.deleteH(-1, "group");},
+ delGroupAfter: function(cm) {cm.deleteH(1, "group");},
+ indentAuto: function(cm) {cm.indentSelection("smart");},
+ indentMore: function(cm) {cm.indentSelection("add");},
+ indentLess: function(cm) {cm.indentSelection("subtract");},
+ insertTab: function(cm) {cm.replaceSelection("\t");},
+ insertSoftTab: function(cm) {
+ var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;
+ for (var i = 0; i < ranges.length; i++) {
+ var pos = ranges[i].from();
+ var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);
+ spaces.push(new Array(tabSize - col % tabSize + 1).join(" "));
+ }
+ cm.replaceSelections(spaces);
+ },
+ defaultTab: function(cm) {
+ if (cm.somethingSelected()) cm.indentSelection("add");
+ else cm.execCommand("insertTab");
+ },
+ transposeChars: function(cm) {
+ runInOp(cm, function() {
+ var ranges = cm.listSelections();
+ for (var i = 0; i < ranges.length; i++) {
+ var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;
+ if (cur.ch > 0 && cur.ch < line.length - 1)
+ cm.replaceRange(line.charAt(cur.ch) + line.charAt(cur.ch - 1),
+ Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1));
+ }
+ });
+ },
+ newlineAndIndent: function(cm) {
+ runInOp(cm, function() {
+ var len = cm.listSelections().length;
+ for (var i = 0; i < len; i++) {
+ var range = cm.listSelections()[i];
+ cm.replaceRange("\n", range.anchor, range.head, "+input");
+ cm.indentLine(range.from().line + 1, null, true);
+ ensureCursorVisible(cm);
+ }
+ });
+ },
+ toggleOverwrite: function(cm) {cm.toggleOverwrite();}
+ };
+
+ // STANDARD KEYMAPS
+
+ var keyMap = CodeMirror.keyMap = {};
+ keyMap.basic = {
+ "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown",
+ "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown",
+ "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore",
+ "Tab": "defaultTab", "Shift-Tab": "indentAuto",
+ "Enter": "newlineAndIndent", "Insert": "toggleOverwrite",
+ "Esc": "singleSelection"
+ };
+ // Note that the save and find-related commands aren't defined by
+ // default. User code or addons can define them. Unknown commands
+ // are simply ignored.
+ keyMap.pcDefault = {
+ "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo",
+ "Ctrl-Home": "goDocStart", "Ctrl-Up": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Down": "goDocEnd",
+ "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd",
+ "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find",
+ "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll",
+ "Ctrl-[": "indentLess", "Ctrl-]": "indentMore",
+ "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection",
+ fallthrough: "basic"
+ };
+ keyMap.macDefault = {
+ "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo",
+ "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft",
+ "Alt-Right": "goGroupRight", "Cmd-Left": "goLineStart", "Cmd-Right": "goLineEnd", "Alt-Backspace": "delGroupBefore",
+ "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find",
+ "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll",
+ "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delLineLeft",
+ "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection",
+ fallthrough: ["basic", "emacsy"]
+ };
+ // Very basic readline/emacs-style bindings, which are standard on Mac.
+ keyMap.emacsy = {
+ "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown",
+ "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd",
+ "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore",
+ "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars"
+ };
+ keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault;
+
+ // KEYMAP DISPATCH
+
+ function getKeyMap(val) {
+ if (typeof val == "string") return keyMap[val];
+ else return val;
+ }
+
+ // Given an array of keymaps and a key name, call handle on any
+ // bindings found, until that returns a truthy value, at which point
+ // we consider the key handled. Implements things like binding a key
+ // to false stopping further handling and keymap fallthrough.
+ var lookupKey = CodeMirror.lookupKey = function(name, maps, handle) {
+ function lookup(map) {
+ map = getKeyMap(map);
+ var found = map[name];
+ if (found === false) return "stop";
+ if (found != null && handle(found)) return true;
+ if (map.nofallthrough) return "stop";
+
+ var fallthrough = map.fallthrough;
+ if (fallthrough == null) return false;
+ if (Object.prototype.toString.call(fallthrough) != "[object Array]")
+ return lookup(fallthrough);
+ for (var i = 0; i < fallthrough.length; ++i) {
+ var done = lookup(fallthrough[i]);
+ if (done) return done;
+ }
+ return false;
+ }
+
+ for (var i = 0; i < maps.length; ++i) {
+ var done = lookup(maps[i]);
+ if (done) return done != "stop";
+ }
+ };
+
+ // Modifier key presses don't count as 'real' key presses for the
+ // purpose of keymap fallthrough.
+ var isModifierKey = CodeMirror.isModifierKey = function(event) {
+ var name = keyNames[event.keyCode];
+ return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod";
+ };
+
+ // Look up the name of a key as indicated by an event object.
+ var keyName = CodeMirror.keyName = function(event, noShift) {
+ if (presto && event.keyCode == 34 && event["char"]) return false;
+ var name = keyNames[event.keyCode];
+ if (name == null || event.altGraphKey) return false;
+ if (event.altKey) name = "Alt-" + name;
+ if (flipCtrlCmd ? event.metaKey : event.ctrlKey) name = "Ctrl-" + name;
+ if (flipCtrlCmd ? event.ctrlKey : event.metaKey) name = "Cmd-" + name;
+ if (!noShift && event.shiftKey) name = "Shift-" + name;
+ return name;
+ };
+
+ // FROMTEXTAREA
+
+ CodeMirror.fromTextArea = function(textarea, options) {
+ if (!options) options = {};
+ options.value = textarea.value;
+ if (!options.tabindex && textarea.tabindex)
+ options.tabindex = textarea.tabindex;
+ if (!options.placeholder && textarea.placeholder)
+ options.placeholder = textarea.placeholder;
+ // Set autofocus to true if this textarea is focused, or if it has
+ // autofocus and no other element is focused.
+ if (options.autofocus == null) {
+ var hasFocus = activeElt();
+ options.autofocus = hasFocus == textarea ||
+ textarea.getAttribute("autofocus") != null && hasFocus == document.body;
+ }
+
+ function save() {textarea.value = cm.getValue();}
+ if (textarea.form) {
+ on(textarea.form, "submit", save);
+ // Deplorable hack to make the submit method do the right thing.
+ if (!options.leaveSubmitMethodAlone) {
+ var form = textarea.form, realSubmit = form.submit;
+ try {
+ var wrappedSubmit = form.submit = function() {
+ save();
+ form.submit = realSubmit;
+ form.submit();
+ form.submit = wrappedSubmit;
+ };
+ } catch(e) {}
+ }
+ }
+
+ textarea.style.display = "none";
+ var cm = CodeMirror(function(node) {
+ textarea.parentNode.insertBefore(node, textarea.nextSibling);
+ }, options);
+ cm.save = save;
+ cm.getTextArea = function() { return textarea; };
+ cm.toTextArea = function() {
+ save();
+ textarea.parentNode.removeChild(cm.getWrapperElement());
+ textarea.style.display = "";
+ if (textarea.form) {
+ off(textarea.form, "submit", save);
+ if (typeof textarea.form.submit == "function")
+ textarea.form.submit = realSubmit;
+ }
+ };
+ return cm;
+ };
+
+ // STRING STREAM
+
+ // Fed to the mode parsers, provides helper functions to make
+ // parsers more succinct.
+
+ var StringStream = CodeMirror.StringStream = function(string, tabSize) {
+ this.pos = this.start = 0;
+ this.string = string;
+ this.tabSize = tabSize || 8;
+ this.lastColumnPos = this.lastColumnValue = 0;
+ this.lineStart = 0;
+ };
+
+ StringStream.prototype = {
+ eol: function() {return this.pos >= this.string.length;},
+ sol: function() {return this.pos == this.lineStart;},
+ peek: function() {return this.string.charAt(this.pos) || undefined;},
+ next: function() {
+ if (this.pos < this.string.length)
+ return this.string.charAt(this.pos++);
+ },
+ eat: function(match) {
+ var ch = this.string.charAt(this.pos);
+ if (typeof match == "string") var ok = ch == match;
+ else var ok = ch && (match.test ? match.test(ch) : match(ch));
+ if (ok) {++this.pos; return ch;}
+ },
+ eatWhile: function(match) {
+ var start = this.pos;
+ while (this.eat(match)){}
+ return this.pos > start;
+ },
+ eatSpace: function() {
+ var start = this.pos;
+ while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos;
+ return this.pos > start;
+ },
+ skipToEnd: function() {this.pos = this.string.length;},
+ skipTo: function(ch) {
+ var found = this.string.indexOf(ch, this.pos);
+ if (found > -1) {this.pos = found; return true;}
+ },
+ backUp: function(n) {this.pos -= n;},
+ column: function() {
+ if (this.lastColumnPos < this.start) {
+ this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);
+ this.lastColumnPos = this.start;
+ }
+ return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);
+ },
+ indentation: function() {
+ return countColumn(this.string, null, this.tabSize) -
+ (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);
+ },
+ match: function(pattern, consume, caseInsensitive) {
+ if (typeof pattern == "string") {
+ var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;};
+ var substr = this.string.substr(this.pos, pattern.length);
+ if (cased(substr) == cased(pattern)) {
+ if (consume !== false) this.pos += pattern.length;
+ return true;
+ }
+ } else {
+ var match = this.string.slice(this.pos).match(pattern);
+ if (match && match.index > 0) return null;
+ if (match && consume !== false) this.pos += match[0].length;
+ return match;
+ }
+ },
+ current: function(){return this.string.slice(this.start, this.pos);},
+ hideFirstChars: function(n, inner) {
+ this.lineStart += n;
+ try { return inner(); }
+ finally { this.lineStart -= n; }
+ }
+ };
+
+ // TEXTMARKERS
+
+ // Created with markText and setBookmark methods. A TextMarker is a
+ // handle that can be used to clear or find a marked position in the
+ // document. Line objects hold arrays (markedSpans) containing
+ // {from, to, marker} object pointing to such marker objects, and
+ // indicating that such a marker is present on that line. Multiple
+ // lines may point to the same marker when it spans across lines.
+ // The spans will have null for their from/to properties when the
+ // marker continues beyond the start/end of the line. Markers have
+ // links back to the lines they currently touch.
+
+ var TextMarker = CodeMirror.TextMarker = function(doc, type) {
+ this.lines = [];
+ this.type = type;
+ this.doc = doc;
+ };
+ eventMixin(TextMarker);
+
+ // Clear the marker.
+ TextMarker.prototype.clear = function() {
+ if (this.explicitlyCleared) return;
+ var cm = this.doc.cm, withOp = cm && !cm.curOp;
+ if (withOp) startOperation(cm);
+ if (hasHandler(this, "clear")) {
+ var found = this.find();
+ if (found) signalLater(this, "clear", found.from, found.to);
+ }
+ var min = null, max = null;
+ for (var i = 0; i < this.lines.length; ++i) {
+ var line = this.lines[i];
+ var span = getMarkedSpanFor(line.markedSpans, this);
+ if (cm && !this.collapsed) regLineChange(cm, lineNo(line), "text");
+ else if (cm) {
+ if (span.to != null) max = lineNo(line);
+ if (span.from != null) min = lineNo(line);
+ }
+ line.markedSpans = removeMarkedSpan(line.markedSpans, span);
+ if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)
+ updateLineHeight(line, textHeight(cm.display));
+ }
+ if (cm && this.collapsed && !cm.options.lineWrapping) for (var i = 0; i < this.lines.length; ++i) {
+ var visual = visualLine(this.lines[i]), len = lineLength(visual);
+ if (len > cm.display.maxLineLength) {
+ cm.display.maxLine = visual;
+ cm.display.maxLineLength = len;
+ cm.display.maxLineChanged = true;
+ }
+ }
+
+ if (min != null && cm && this.collapsed) regChange(cm, min, max + 1);
+ this.lines.length = 0;
+ this.explicitlyCleared = true;
+ if (this.atomic && this.doc.cantEdit) {
+ this.doc.cantEdit = false;
+ if (cm) reCheckSelection(cm.doc);
+ }
+ if (cm) signalLater(cm, "markerCleared", cm, this);
+ if (withOp) endOperation(cm);
+ if (this.parent) this.parent.clear();
+ };
+
+ // Find the position of the marker in the document. Returns a {from,
+ // to} object by default. Side can be passed to get a specific side
+ // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the
+ // Pos objects returned contain a line object, rather than a line
+ // number (used to prevent looking up the same line twice).
+ TextMarker.prototype.find = function(side, lineObj) {
+ if (side == null && this.type == "bookmark") side = 1;
+ var from, to;
+ for (var i = 0; i < this.lines.length; ++i) {
+ var line = this.lines[i];
+ var span = getMarkedSpanFor(line.markedSpans, this);
+ if (span.from != null) {
+ from = Pos(lineObj ? line : lineNo(line), span.from);
+ if (side == -1) return from;
+ }
+ if (span.to != null) {
+ to = Pos(lineObj ? line : lineNo(line), span.to);
+ if (side == 1) return to;
+ }
+ }
+ return from && {from: from, to: to};
+ };
+
+ // Signals that the marker's widget changed, and surrounding layout
+ // should be recomputed.
+ TextMarker.prototype.changed = function() {
+ var pos = this.find(-1, true), widget = this, cm = this.doc.cm;
+ if (!pos || !cm) return;
+ runInOp(cm, function() {
+ var line = pos.line, lineN = lineNo(pos.line);
+ var view = findViewForLine(cm, lineN);
+ if (view) {
+ clearLineMeasurementCacheFor(view);
+ cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;
+ }
+ cm.curOp.updateMaxLine = true;
+ if (!lineIsHidden(widget.doc, line) && widget.height != null) {
+ var oldHeight = widget.height;
+ widget.height = null;
+ var dHeight = widgetHeight(widget) - oldHeight;
+ if (dHeight)
+ updateLineHeight(line, line.height + dHeight);
+ }
+ });
+ };
+
+ TextMarker.prototype.attachLine = function(line) {
+ if (!this.lines.length && this.doc.cm) {
+ var op = this.doc.cm.curOp;
+ if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)
+ (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this);
+ }
+ this.lines.push(line);
+ };
+ TextMarker.prototype.detachLine = function(line) {
+ this.lines.splice(indexOf(this.lines, line), 1);
+ if (!this.lines.length && this.doc.cm) {
+ var op = this.doc.cm.curOp;
+ (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);
+ }
+ };
+
+ // Collapsed markers have unique ids, in order to be able to order
+ // them, which is needed for uniquely determining an outer marker
+ // when they overlap (they may nest, but not partially overlap).
+ var nextMarkerId = 0;
+
+ // Create a marker, wire it up to the right lines, and
+ function markText(doc, from, to, options, type) {
+ // Shared markers (across linked documents) are handled separately
+ // (markTextShared will call out to this again, once per
+ // document).
+ if (options && options.shared) return markTextShared(doc, from, to, options, type);
+ // Ensure we are in an operation.
+ if (doc.cm && !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type);
+
+ var marker = new TextMarker(doc, type), diff = cmp(from, to);
+ if (options) copyObj(options, marker, false);
+ // Don't connect empty markers unless clearWhenEmpty is false
+ if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)
+ return marker;
+ if (marker.replacedWith) {
+ // Showing up as a widget implies collapsed (widget replaces text)
+ marker.collapsed = true;
+ marker.widgetNode = elt("span", [marker.replacedWith], "CodeMirror-widget");
+ if (!options.handleMouseEvents) marker.widgetNode.ignoreEvents = true;
+ if (options.insertLeft) marker.widgetNode.insertLeft = true;
+ }
+ if (marker.collapsed) {
+ if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||
+ from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))
+ throw new Error("Inserting collapsed marker partially overlapping an existing one");
+ sawCollapsedSpans = true;
+ }
+
+ if (marker.addToHistory)
+ addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN);
+
+ var curLine = from.line, cm = doc.cm, updateMaxLine;
+ doc.iter(curLine, to.line + 1, function(line) {
+ if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)
+ updateMaxLine = true;
+ if (marker.collapsed && curLine != from.line) updateLineHeight(line, 0);
+ addMarkedSpan(line, new MarkedSpan(marker,
+ curLine == from.line ? from.ch : null,
+ curLine == to.line ? to.ch : null));
+ ++curLine;
+ });
+ // lineIsHidden depends on the presence of the spans, so needs a second pass
+ if (marker.collapsed) doc.iter(from.line, to.line + 1, function(line) {
+ if (lineIsHidden(doc, line)) updateLineHeight(line, 0);
+ });
+
+ if (marker.clearOnEnter) on(marker, "beforeCursorEnter", function() { marker.clear(); });
+
+ if (marker.readOnly) {
+ sawReadOnlySpans = true;
+ if (doc.history.done.length || doc.history.undone.length)
+ doc.clearHistory();
+ }
+ if (marker.collapsed) {
+ marker.id = ++nextMarkerId;
+ marker.atomic = true;
+ }
+ if (cm) {
+ // Sync editor state
+ if (updateMaxLine) cm.curOp.updateMaxLine = true;
+ if (marker.collapsed)
+ regChange(cm, from.line, to.line + 1);
+ else if (marker.className || marker.title || marker.startStyle || marker.endStyle)
+ for (var i = from.line; i <= to.line; i++) regLineChange(cm, i, "text");
+ if (marker.atomic) reCheckSelection(cm.doc);
+ signalLater(cm, "markerAdded", cm, marker);
+ }
+ return marker;
+ }
+
+ // SHARED TEXTMARKERS
+
+ // A shared marker spans multiple linked documents. It is
+ // implemented as a meta-marker-object controlling multiple normal
+ // markers.
+ var SharedTextMarker = CodeMirror.SharedTextMarker = function(markers, primary) {
+ this.markers = markers;
+ this.primary = primary;
+ for (var i = 0; i < markers.length; ++i)
+ markers[i].parent = this;
+ };
+ eventMixin(SharedTextMarker);
+
+ SharedTextMarker.prototype.clear = function() {
+ if (this.explicitlyCleared) return;
+ this.explicitlyCleared = true;
+ for (var i = 0; i < this.markers.length; ++i)
+ this.markers[i].clear();
+ signalLater(this, "clear");
+ };
+ SharedTextMarker.prototype.find = function(side, lineObj) {
+ return this.primary.find(side, lineObj);
+ };
+
+ function markTextShared(doc, from, to, options, type) {
+ options = copyObj(options);
+ options.shared = false;
+ var markers = [markText(doc, from, to, options, type)], primary = markers[0];
+ var widget = options.widgetNode;
+ linkedDocs(doc, function(doc) {
+ if (widget) options.widgetNode = widget.cloneNode(true);
+ markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));
+ for (var i = 0; i < doc.linked.length; ++i)
+ if (doc.linked[i].isParent) return;
+ primary = lst(markers);
+ });
+ return new SharedTextMarker(markers, primary);
+ }
+
+ function findSharedMarkers(doc) {
+ return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())),
+ function(m) { return m.parent; });
+ }
+
+ function copySharedMarkers(doc, markers) {
+ for (var i = 0; i < markers.length; i++) {
+ var marker = markers[i], pos = marker.find();
+ var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);
+ if (cmp(mFrom, mTo)) {
+ var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);
+ marker.markers.push(subMark);
+ subMark.parent = marker;
+ }
+ }
+ }
+
+ function detachSharedMarkers(markers) {
+ for (var i = 0; i < markers.length; i++) {
+ var marker = markers[i], linked = [marker.primary.doc];;
+ linkedDocs(marker.primary.doc, function(d) { linked.push(d); });
+ for (var j = 0; j < marker.markers.length; j++) {
+ var subMarker = marker.markers[j];
+ if (indexOf(linked, subMarker.doc) == -1) {
+ subMarker.parent = null;
+ marker.markers.splice(j--, 1);
+ }
+ }
+ }
+ }
+
+ // TEXTMARKER SPANS
+
+ function MarkedSpan(marker, from, to) {
+ this.marker = marker;
+ this.from = from; this.to = to;
+ }
+
+ // Search an array of spans for a span matching the given marker.
+ function getMarkedSpanFor(spans, marker) {
+ if (spans) for (var i = 0; i < spans.length; ++i) {
+ var span = spans[i];
+ if (span.marker == marker) return span;
+ }
+ }
+ // Remove a span from an array, returning undefined if no spans are
+ // left (we don't store arrays for lines without spans).
+ function removeMarkedSpan(spans, span) {
+ for (var r, i = 0; i < spans.length; ++i)
+ if (spans[i] != span) (r || (r = [])).push(spans[i]);
+ return r;
+ }
+ // Add a span to a line.
+ function addMarkedSpan(line, span) {
+ line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];
+ span.marker.attachLine(line);
+ }
+
+ // Used for the algorithm that adjusts markers for a change in the
+ // document. These functions cut an array of spans at a given
+ // character position, returning an array of remaining chunks (or
+ // undefined if nothing remains).
+ function markedSpansBefore(old, startCh, isInsert) {
+ if (old) for (var i = 0, nw; i < old.length; ++i) {
+ var span = old[i], marker = span.marker;
+ var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);
+ if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) {
+ var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);
+ (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));
+ }
+ }
+ return nw;
+ }
+ function markedSpansAfter(old, endCh, isInsert) {
+ if (old) for (var i = 0, nw; i < old.length; ++i) {
+ var span = old[i], marker = span.marker;
+ var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);
+ if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) {
+ var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);
+ (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,
+ span.to == null ? null : span.to - endCh));
+ }
+ }
+ return nw;
+ }
+
+ // Given a change object, compute the new set of marker spans that
+ // cover the line in which the change took place. Removes spans
+ // entirely within the change, reconnects spans belonging to the
+ // same marker that appear on both sides of the change, and cuts off
+ // spans partially within the change. Returns an array of span
+ // arrays with one element for each line in (after) the change.
+ function stretchSpansOverChange(doc, change) {
+ var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;
+ var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;
+ if (!oldFirst && !oldLast) return null;
+
+ var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;
+ // Get the spans that 'stick out' on both sides
+ var first = markedSpansBefore(oldFirst, startCh, isInsert);
+ var last = markedSpansAfter(oldLast, endCh, isInsert);
+
+ // Next, merge those two ends
+ var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);
+ if (first) {
+ // Fix up .to properties of first
+ for (var i = 0; i < first.length; ++i) {
+ var span = first[i];
+ if (span.to == null) {
+ var found = getMarkedSpanFor(last, span.marker);
+ if (!found) span.to = startCh;
+ else if (sameLine) span.to = found.to == null ? null : found.to + offset;
+ }
+ }
+ }
+ if (last) {
+ // Fix up .from in last (or move them into first in case of sameLine)
+ for (var i = 0; i < last.length; ++i) {
+ var span = last[i];
+ if (span.to != null) span.to += offset;
+ if (span.from == null) {
+ var found = getMarkedSpanFor(first, span.marker);
+ if (!found) {
+ span.from = offset;
+ if (sameLine) (first || (first = [])).push(span);
+ }
+ } else {
+ span.from += offset;
+ if (sameLine) (first || (first = [])).push(span);
+ }
+ }
+ }
+ // Make sure we didn't create any zero-length spans
+ if (first) first = clearEmptySpans(first);
+ if (last && last != first) last = clearEmptySpans(last);
+
+ var newMarkers = [first];
+ if (!sameLine) {
+ // Fill gap with whole-line-spans
+ var gap = change.text.length - 2, gapMarkers;
+ if (gap > 0 && first)
+ for (var i = 0; i < first.length; ++i)
+ if (first[i].to == null)
+ (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i].marker, null, null));
+ for (var i = 0; i < gap; ++i)
+ newMarkers.push(gapMarkers);
+ newMarkers.push(last);
+ }
+ return newMarkers;
+ }
+
+ // Remove spans that are empty and don't have a clearWhenEmpty
+ // option of false.
+ function clearEmptySpans(spans) {
+ for (var i = 0; i < spans.length; ++i) {
+ var span = spans[i];
+ if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)
+ spans.splice(i--, 1);
+ }
+ if (!spans.length) return null;
+ return spans;
+ }
+
+ // Used for un/re-doing changes from the history. Combines the
+ // result of computing the existing spans with the set of spans that
+ // existed in the history (so that deleting around a span and then
+ // undoing brings back the span).
+ function mergeOldSpans(doc, change) {
+ var old = getOldSpans(doc, change);
+ var stretched = stretchSpansOverChange(doc, change);
+ if (!old) return stretched;
+ if (!stretched) return old;
+
+ for (var i = 0; i < old.length; ++i) {
+ var oldCur = old[i], stretchCur = stretched[i];
+ if (oldCur && stretchCur) {
+ spans: for (var j = 0; j < stretchCur.length; ++j) {
+ var span = stretchCur[j];
+ for (var k = 0; k < oldCur.length; ++k)
+ if (oldCur[k].marker == span.marker) continue spans;
+ oldCur.push(span);
+ }
+ } else if (stretchCur) {
+ old[i] = stretchCur;
+ }
+ }
+ return old;
+ }
+
+ // Used to 'clip' out readOnly ranges when making a change.
+ function removeReadOnlyRanges(doc, from, to) {
+ var markers = null;
+ doc.iter(from.line, to.line + 1, function(line) {
+ if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) {
+ var mark = line.markedSpans[i].marker;
+ if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))
+ (markers || (markers = [])).push(mark);
+ }
+ });
+ if (!markers) return null;
+ var parts = [{from: from, to: to}];
+ for (var i = 0; i < markers.length; ++i) {
+ var mk = markers[i], m = mk.find(0);
+ for (var j = 0; j < parts.length; ++j) {
+ var p = parts[j];
+ if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) continue;
+ var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);
+ if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)
+ newParts.push({from: p.from, to: m.from});
+ if (dto > 0 || !mk.inclusiveRight && !dto)
+ newParts.push({from: m.to, to: p.to});
+ parts.splice.apply(parts, newParts);
+ j += newParts.length - 1;
+ }
+ }
+ return parts;
+ }
+
+ // Connect or disconnect spans from a line.
+ function detachMarkedSpans(line) {
+ var spans = line.markedSpans;
+ if (!spans) return;
+ for (var i = 0; i < spans.length; ++i)
+ spans[i].marker.detachLine(line);
+ line.markedSpans = null;
+ }
+ function attachMarkedSpans(line, spans) {
+ if (!spans) return;
+ for (var i = 0; i < spans.length; ++i)
+ spans[i].marker.attachLine(line);
+ line.markedSpans = spans;
+ }
+
+ // Helpers used when computing which overlapping collapsed span
+ // counts as the larger one.
+ function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0; }
+ function extraRight(marker) { return marker.inclusiveRight ? 1 : 0; }
+
+ // Returns a number indicating which of two overlapping collapsed
+ // spans is larger (and thus includes the other). Falls back to
+ // comparing ids when the spans cover exactly the same range.
+ function compareCollapsedMarkers(a, b) {
+ var lenDiff = a.lines.length - b.lines.length;
+ if (lenDiff != 0) return lenDiff;
+ var aPos = a.find(), bPos = b.find();
+ var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);
+ if (fromCmp) return -fromCmp;
+ var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);
+ if (toCmp) return toCmp;
+ return b.id - a.id;
+ }
+
+ // Find out whether a line ends or starts in a collapsed span. If
+ // so, return the marker for that span.
+ function collapsedSpanAtSide(line, start) {
+ var sps = sawCollapsedSpans && line.markedSpans, found;
+ if (sps) for (var sp, i = 0; i < sps.length; ++i) {
+ sp = sps[i];
+ if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&
+ (!found || compareCollapsedMarkers(found, sp.marker) < 0))
+ found = sp.marker;
+ }
+ return found;
+ }
+ function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true); }
+ function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false); }
+
+ // Test whether there exists a collapsed span that partially
+ // overlaps (covers the start or end, but not both) of a new span.
+ // Such overlap is not allowed.
+ function conflictingCollapsedRange(doc, lineNo, from, to, marker) {
+ var line = getLine(doc, lineNo);
+ var sps = sawCollapsedSpans && line.markedSpans;
+ if (sps) for (var i = 0; i < sps.length; ++i) {
+ var sp = sps[i];
+ if (!sp.marker.collapsed) continue;
+ var found = sp.marker.find(0);
+ var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);
+ var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);
+ if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) continue;
+ if (fromCmp <= 0 && (cmp(found.to, from) || extraRight(sp.marker) - extraLeft(marker)) > 0 ||
+ fromCmp >= 0 && (cmp(found.from, to) || extraLeft(sp.marker) - extraRight(marker)) < 0)
+ return true;
+ }
+ }
+
+ // A visual line is a line as drawn on the screen. Folding, for
+ // example, can cause multiple logical lines to appear on the same
+ // visual line. This finds the start of the visual line that the
+ // given line is part of (usually that is the line itself).
+ function visualLine(line) {
+ var merged;
+ while (merged = collapsedSpanAtStart(line))
+ line = merged.find(-1, true).line;
+ return line;
+ }
+
+ // Returns an array of logical lines that continue the visual line
+ // started by the argument, or undefined if there are no such lines.
+ function visualLineContinued(line) {
+ var merged, lines;
+ while (merged = collapsedSpanAtEnd(line)) {
+ line = merged.find(1, true).line;
+ (lines || (lines = [])).push(line);
+ }
+ return lines;
+ }
+
+ // Get the line number of the start of the visual line that the
+ // given line number is part of.
+ function visualLineNo(doc, lineN) {
+ var line = getLine(doc, lineN), vis = visualLine(line);
+ if (line == vis) return lineN;
+ return lineNo(vis);
+ }
+ // Get the line number of the start of the next visual line after
+ // the given line.
+ function visualLineEndNo(doc, lineN) {
+ if (lineN > doc.lastLine()) return lineN;
+ var line = getLine(doc, lineN), merged;
+ if (!lineIsHidden(doc, line)) return lineN;
+ while (merged = collapsedSpanAtEnd(line))
+ line = merged.find(1, true).line;
+ return lineNo(line) + 1;
+ }
+
+ // Compute whether a line is hidden. Lines count as hidden when they
+ // are part of a visual line that starts with another line, or when
+ // they are entirely covered by collapsed, non-widget span.
+ function lineIsHidden(doc, line) {
+ var sps = sawCollapsedSpans && line.markedSpans;
+ if (sps) for (var sp, i = 0; i < sps.length; ++i) {
+ sp = sps[i];
+ if (!sp.marker.collapsed) continue;
+ if (sp.from == null) return true;
+ if (sp.marker.widgetNode) continue;
+ if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))
+ return true;
+ }
+ }
+ function lineIsHiddenInner(doc, line, span) {
+ if (span.to == null) {
+ var end = span.marker.find(1, true);
+ return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker));
+ }
+ if (span.marker.inclusiveRight && span.to == line.text.length)
+ return true;
+ for (var sp, i = 0; i < line.markedSpans.length; ++i) {
+ sp = line.markedSpans[i];
+ if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&
+ (sp.to == null || sp.to != span.from) &&
+ (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&
+ lineIsHiddenInner(doc, line, sp)) return true;
+ }
+ }
+
+ // LINE WIDGETS
+
+ // Line widgets are block elements displayed above or below a line.
+
+ var LineWidget = CodeMirror.LineWidget = function(cm, node, options) {
+ if (options) for (var opt in options) if (options.hasOwnProperty(opt))
+ this[opt] = options[opt];
+ this.cm = cm;
+ this.node = node;
+ };
+ eventMixin(LineWidget);
+
+ function adjustScrollWhenAboveVisible(cm, line, diff) {
+ if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))
+ addToScrollPos(cm, null, diff);
+ }
+
+ LineWidget.prototype.clear = function() {
+ var cm = this.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);
+ if (no == null || !ws) return;
+ for (var i = 0; i < ws.length; ++i) if (ws[i] == this) ws.splice(i--, 1);
+ if (!ws.length) line.widgets = null;
+ var height = widgetHeight(this);
+ runInOp(cm, function() {
+ adjustScrollWhenAboveVisible(cm, line, -height);
+ regLineChange(cm, no, "widget");
+ updateLineHeight(line, Math.max(0, line.height - height));
+ });
+ };
+ LineWidget.prototype.changed = function() {
+ var oldH = this.height, cm = this.cm, line = this.line;
+ this.height = null;
+ var diff = widgetHeight(this) - oldH;
+ if (!diff) return;
+ runInOp(cm, function() {
+ cm.curOp.forceUpdate = true;
+ adjustScrollWhenAboveVisible(cm, line, diff);
+ updateLineHeight(line, line.height + diff);
+ });
+ };
+
+ function widgetHeight(widget) {
+ if (widget.height != null) return widget.height;
+ if (!contains(document.body, widget.node))
+ removeChildrenAndAdd(widget.cm.display.measure, elt("div", [widget.node], null, "position: relative"));
+ return widget.height = widget.node.offsetHeight;
+ }
+
+ function addLineWidget(cm, handle, node, options) {
+ var widget = new LineWidget(cm, node, options);
+ if (widget.noHScroll) cm.display.alignWidgets = true;
+ changeLine(cm, handle, "widget", function(line) {
+ var widgets = line.widgets || (line.widgets = []);
+ if (widget.insertAt == null) widgets.push(widget);
+ else widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget);
+ widget.line = line;
+ if (!lineIsHidden(cm.doc, line)) {
+ var aboveVisible = heightAtLine(line) < cm.doc.scrollTop;
+ updateLineHeight(line, line.height + widgetHeight(widget));
+ if (aboveVisible) addToScrollPos(cm, null, widget.height);
+ cm.curOp.forceUpdate = true;
+ }
+ return true;
+ });
+ return widget;
+ }
+
+ // LINE DATA STRUCTURE
+
+ // Line objects. These hold state related to a line, including
+ // highlighting info (the styles array).
+ var Line = CodeMirror.Line = function(text, markedSpans, estimateHeight) {
+ this.text = text;
+ attachMarkedSpans(this, markedSpans);
+ this.height = estimateHeight ? estimateHeight(this) : 1;
+ };
+ eventMixin(Line);
+ Line.prototype.lineNo = function() { return lineNo(this); };
+
+ // Change the content (text, markers) of a line. Automatically
+ // invalidates cached information and tries to re-estimate the
+ // line's height.
+ function updateLine(line, text, markedSpans, estimateHeight) {
+ line.text = text;
+ if (line.stateAfter) line.stateAfter = null;
+ if (line.styles) line.styles = null;
+ if (line.order != null) line.order = null;
+ detachMarkedSpans(line);
+ attachMarkedSpans(line, markedSpans);
+ var estHeight = estimateHeight ? estimateHeight(line) : 1;
+ if (estHeight != line.height) updateLineHeight(line, estHeight);
+ }
+
+ // Detach a line from the document tree and its markers.
+ function cleanUpLine(line) {
+ line.parent = null;
+ detachMarkedSpans(line);
+ }
+
+ function extractLineClasses(type, output) {
+ if (type) for (;;) {
+ var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/);
+ if (!lineClass) break;
+ type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);
+ var prop = lineClass[1] ? "bgClass" : "textClass";
+ if (output[prop] == null)
+ output[prop] = lineClass[2];
+ else if (!(new RegExp("(?:^|\s)" + lineClass[2] + "(?:$|\s)")).test(output[prop]))
+ output[prop] += " " + lineClass[2];
+ }
+ return type;
+ }
+
+ function callBlankLine(mode, state) {
+ if (mode.blankLine) return mode.blankLine(state);
+ if (!mode.innerMode) return;
+ var inner = CodeMirror.innerMode(mode, state);
+ if (inner.mode.blankLine) return inner.mode.blankLine(inner.state);
+ }
+
+ function readToken(mode, stream, state) {
+ var style = mode.token(stream, state);
+ if (stream.pos <= stream.start)
+ throw new Error("Mode " + mode.name + " failed to advance stream.");
+ return style;
+ }
+
+ // Run the given mode's parser over a line, calling f for each token.
+ function runMode(cm, text, mode, state, f, lineClasses, forceToEnd) {
+ var flattenSpans = mode.flattenSpans;
+ if (flattenSpans == null) flattenSpans = cm.options.flattenSpans;
+ var curStart = 0, curStyle = null;
+ var stream = new StringStream(text, cm.options.tabSize), style;
+ if (text == "") extractLineClasses(callBlankLine(mode, state), lineClasses);
+ while (!stream.eol()) {
+ if (stream.pos > cm.options.maxHighlightLength) {
+ flattenSpans = false;
+ if (forceToEnd) processLine(cm, text, state, stream.pos);
+ stream.pos = text.length;
+ style = null;
+ } else {
+ style = extractLineClasses(readToken(mode, stream, state), lineClasses);
+ }
+ if (cm.options.addModeClass) {
+ var mName = CodeMirror.innerMode(mode, state).mode.name;
+ if (mName) style = "m-" + (style ? mName + " " + style : mName);
+ }
+ if (!flattenSpans || curStyle != style) {
+ if (curStart < stream.start) f(stream.start, curStyle);
+ curStart = stream.start; curStyle = style;
+ }
+ stream.start = stream.pos;
+ }
+ while (curStart < stream.pos) {
+ // Webkit seems to refuse to render text nodes longer than 57444 characters
+ var pos = Math.min(stream.pos, curStart + 50000);
+ f(pos, curStyle);
+ curStart = pos;
+ }
+ }
+
+ // Compute a style array (an array starting with a mode generation
+ // -- for invalidation -- followed by pairs of end positions and
+ // style strings), which is used to highlight the tokens on the
+ // line.
+ function highlightLine(cm, line, state, forceToEnd) {
+ // A styles array always starts with a number identifying the
+ // mode/overlays that it is based on (for easy invalidation).
+ var st = [cm.state.modeGen], lineClasses = {};
+ // Compute the base array of styles
+ runMode(cm, line.text, cm.doc.mode, state, function(end, style) {
+ st.push(end, style);
+ }, lineClasses, forceToEnd);
+
+ // Run overlays, adjust style array.
+ for (var o = 0; o < cm.state.overlays.length; ++o) {
+ var overlay = cm.state.overlays[o], i = 1, at = 0;
+ runMode(cm, line.text, overlay.mode, true, function(end, style) {
+ var start = i;
+ // Ensure there's a token end at the current position, and that i points at it
+ while (at < end) {
+ var i_end = st[i];
+ if (i_end > end)
+ st.splice(i, 1, end, st[i+1], i_end);
+ i += 2;
+ at = Math.min(end, i_end);
+ }
+ if (!style) return;
+ if (overlay.opaque) {
+ st.splice(start, i - start, end, "cm-overlay " + style);
+ i = start + 2;
+ } else {
+ for (; start < i; start += 2) {
+ var cur = st[start+1];
+ st[start+1] = (cur ? cur + " " : "") + "cm-overlay " + style;
+ }
+ }
+ }, lineClasses);
+ }
+
+ return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null};
+ }
+
+ function getLineStyles(cm, line) {
+ if (!line.styles || line.styles[0] != cm.state.modeGen) {
+ var result = highlightLine(cm, line, line.stateAfter = getStateBefore(cm, lineNo(line)));
+ line.styles = result.styles;
+ if (result.classes) line.styleClasses = result.classes;
+ else if (line.styleClasses) line.styleClasses = null;
+ }
+ return line.styles;
+ }
+
+ // Lightweight form of highlight -- proceed over this line and
+ // update state, but don't save a style array. Used for lines that
+ // aren't currently visible.
+ function processLine(cm, text, state, startAt) {
+ var mode = cm.doc.mode;
+ var stream = new StringStream(text, cm.options.tabSize);
+ stream.start = stream.pos = startAt || 0;
+ if (text == "") callBlankLine(mode, state);
+ while (!stream.eol() && stream.pos <= cm.options.maxHighlightLength) {
+ readToken(mode, stream, state);
+ stream.start = stream.pos;
+ }
+ }
+
+ // Convert a style as returned by a mode (either null, or a string
+ // containing one or more styles) to a CSS style. This is cached,
+ // and also looks for line-wide styles.
+ var styleToClassCache = {}, styleToClassCacheWithMode = {};
+ function interpretTokenStyle(style, options) {
+ if (!style || /^\s*$/.test(style)) return null;
+ var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;
+ return cache[style] ||
+ (cache[style] = style.replace(/\S+/g, "cm-$&"));
+ }
+
+ // Render the DOM representation of the text of a line. Also builds
+ // up a 'line map', which points at the DOM nodes that represent
+ // specific stretches of text, and is used by the measuring code.
+ // The returned object contains the DOM node, this map, and
+ // information about line-wide styles that were set by the mode.
+ function buildLineContent(cm, lineView) {
+ // The padding-right forces the element to have a 'border', which
+ // is needed on Webkit to be able to get line-level bounding
+ // rectangles for it (in measureChar).
+ var content = elt("span", null, null, webkit ? "padding-right: .1px" : null);
+ var builder = {pre: elt("pre", [content]), content: content, col: 0, pos: 0, cm: cm};
+ lineView.measure = {};
+
+ // Iterate over the logical lines that make up this visual line.
+ for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {
+ var line = i ? lineView.rest[i - 1] : lineView.line, order;
+ builder.pos = 0;
+ builder.addToken = buildToken;
+ // Optionally wire in some hacks into the token-rendering
+ // algorithm, to deal with browser quirks.
+ if ((ie || webkit) && cm.getOption("lineWrapping"))
+ builder.addToken = buildTokenSplitSpaces(builder.addToken);
+ if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line)))
+ builder.addToken = buildTokenBadBidi(builder.addToken, order);
+ builder.map = [];
+ insertLineContent(line, builder, getLineStyles(cm, line));
+ if (line.styleClasses) {
+ if (line.styleClasses.bgClass)
+ builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || "");
+ if (line.styleClasses.textClass)
+ builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || "");
+ }
+
+ // Ensure at least a single node is present, for measuring.
+ if (builder.map.length == 0)
+ builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)));
+
+ // Store the map and a cache object for the current logical line
+ if (i == 0) {
+ lineView.measure.map = builder.map;
+ lineView.measure.cache = {};
+ } else {
+ (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map);
+ (lineView.measure.caches || (lineView.measure.caches = [])).push({});
+ }
+ }
+
+ signal(cm, "renderLine", cm, lineView.line, builder.pre);
+ return builder;
+ }
+
+ function defaultSpecialCharPlaceholder(ch) {
+ var token = elt("span", "\u2022", "cm-invalidchar");
+ token.title = "\\u" + ch.charCodeAt(0).toString(16);
+ return token;
+ }
+
+ // Build up the DOM representation for a single token, and add it to
+ // the line map. Takes care to render special characters separately.
+ function buildToken(builder, text, style, startStyle, endStyle, title) {
+ if (!text) return;
+ var special = builder.cm.options.specialChars, mustWrap = false;
+ if (!special.test(text)) {
+ builder.col += text.length;
+ var content = document.createTextNode(text);
+ builder.map.push(builder.pos, builder.pos + text.length, content);
+ if (ie_upto8) mustWrap = true;
+ builder.pos += text.length;
+ } else {
+ var content = document.createDocumentFragment(), pos = 0;
+ while (true) {
+ special.lastIndex = pos;
+ var m = special.exec(text);
+ var skipped = m ? m.index - pos : text.length - pos;
+ if (skipped) {
+ var txt = document.createTextNode(text.slice(pos, pos + skipped));
+ if (ie_upto8) content.appendChild(elt("span", [txt]));
+ else content.appendChild(txt);
+ builder.map.push(builder.pos, builder.pos + skipped, txt);
+ builder.col += skipped;
+ builder.pos += skipped;
+ }
+ if (!m) break;
+ pos += skipped + 1;
+ if (m[0] == "\t") {
+ var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;
+ var txt = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab"));
+ builder.col += tabWidth;
+ } else {
+ var txt = builder.cm.options.specialCharPlaceholder(m[0]);
+ if (ie_upto8) content.appendChild(elt("span", [txt]));
+ else content.appendChild(txt);
+ builder.col += 1;
+ }
+ builder.map.push(builder.pos, builder.pos + 1, txt);
+ builder.pos++;
+ }
+ }
+ if (style || startStyle || endStyle || mustWrap) {
+ var fullStyle = style || "";
+ if (startStyle) fullStyle += startStyle;
+ if (endStyle) fullStyle += endStyle;
+ var token = elt("span", [content], fullStyle);
+ if (title) token.title = title;
+ return builder.content.appendChild(token);
+ }
+ builder.content.appendChild(content);
+ }
+
+ function buildTokenSplitSpaces(inner) {
+ function split(old) {
+ var out = " ";
+ for (var i = 0; i < old.length - 2; ++i) out += i % 2 ? " " : "\u00a0";
+ out += " ";
+ return out;
+ }
+ return function(builder, text, style, startStyle, endStyle, title) {
+ inner(builder, text.replace(/ {3,}/g, split), style, startStyle, endStyle, title);
+ };
+ }
+
+ // Work around nonsense dimensions being reported for stretches of
+ // right-to-left text.
+ function buildTokenBadBidi(inner, order) {
+ return function(builder, text, style, startStyle, endStyle, title) {
+ style = style ? style + " cm-force-border" : "cm-force-border";
+ var start = builder.pos, end = start + text.length;
+ for (;;) {
+ // Find the part that overlaps with the start of this text
+ for (var i = 0; i < order.length; i++) {
+ var part = order[i];
+ if (part.to > start && part.from <= start) break;
+ }
+ if (part.to >= end) return inner(builder, text, style, startStyle, endStyle, title);
+ inner(builder, text.slice(0, part.to - start), style, startStyle, null, title);
+ startStyle = null;
+ text = text.slice(part.to - start);
+ start = part.to;
+ }
+ };
+ }
+
+ function buildCollapsedSpan(builder, size, marker, ignoreWidget) {
+ var widget = !ignoreWidget && marker.widgetNode;
+ if (widget) {
+ builder.map.push(builder.pos, builder.pos + size, widget);
+ builder.content.appendChild(widget);
+ }
+ builder.pos += size;
+ }
+
+ // Outputs a number of spans to make up a line, taking highlighting
+ // and marked text into account.
+ function insertLineContent(line, builder, styles) {
+ var spans = line.markedSpans, allText = line.text, at = 0;
+ if (!spans) {
+ for (var i = 1; i < styles.length; i+=2)
+ builder.addToken(builder, allText.slice(at, at = styles[i]), interpretTokenStyle(styles[i+1], builder.cm.options));
+ return;
+ }
+
+ var len = allText.length, pos = 0, i = 1, text = "", style;
+ var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed;
+ for (;;) {
+ if (nextChange == pos) { // Update current marker set
+ spanStyle = spanEndStyle = spanStartStyle = title = "";
+ collapsed = null; nextChange = Infinity;
+ var foundBookmarks = [];
+ for (var j = 0; j < spans.length; ++j) {
+ var sp = spans[j], m = sp.marker;
+ if (sp.from <= pos && (sp.to == null || sp.to > pos)) {
+ if (sp.to != null && nextChange > sp.to) { nextChange = sp.to; spanEndStyle = ""; }
+ if (m.className) spanStyle += " " + m.className;
+ if (m.startStyle && sp.from == pos) spanStartStyle += " " + m.startStyle;
+ if (m.endStyle && sp.to == nextChange) spanEndStyle += " " + m.endStyle;
+ if (m.title && !title) title = m.title;
+ if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))
+ collapsed = sp;
+ } else if (sp.from > pos && nextChange > sp.from) {
+ nextChange = sp.from;
+ }
+ if (m.type == "bookmark" && sp.from == pos && m.widgetNode) foundBookmarks.push(m);
+ }
+ if (collapsed && (collapsed.from || 0) == pos) {
+ buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,
+ collapsed.marker, collapsed.from == null);
+ if (collapsed.to == null) return;
+ }
+ if (!collapsed && foundBookmarks.length) for (var j = 0; j < foundBookmarks.length; ++j)
+ buildCollapsedSpan(builder, 0, foundBookmarks[j]);
+ }
+ if (pos >= len) break;
+
+ var upto = Math.min(len, nextChange);
+ while (true) {
+ if (text) {
+ var end = pos + text.length;
+ if (!collapsed) {
+ var tokenText = end > upto ? text.slice(0, upto - pos) : text;
+ builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,
+ spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", title);
+ }
+ if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;}
+ pos = end;
+ spanStartStyle = "";
+ }
+ text = allText.slice(at, at = styles[i++]);
+ style = interpretTokenStyle(styles[i++], builder.cm.options);
+ }
+ }
+ }
+
+ // DOCUMENT DATA STRUCTURE
+
+ // By default, updates that start and end at the beginning of a line
+ // are treated specially, in order to make the association of line
+ // widgets and marker elements with the text behave more intuitive.
+ function isWholeLineUpdate(doc, change) {
+ return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" &&
+ (!doc.cm || doc.cm.options.wholeLineUpdateBefore);
+ }
+
+ // Perform a change on the document data structure.
+ function updateDoc(doc, change, markedSpans, estimateHeight) {
+ function spansFor(n) {return markedSpans ? markedSpans[n] : null;}
+ function update(line, text, spans) {
+ updateLine(line, text, spans, estimateHeight);
+ signalLater(line, "change", line, change);
+ }
+
+ var from = change.from, to = change.to, text = change.text;
+ var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);
+ var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;
+
+ // Adjust the line structure
+ if (isWholeLineUpdate(doc, change)) {
+ // This is a whole-line replace. Treated specially to make
+ // sure line objects move the way they are supposed to.
+ for (var i = 0, added = []; i < text.length - 1; ++i)
+ added.push(new Line(text[i], spansFor(i), estimateHeight));
+ update(lastLine, lastLine.text, lastSpans);
+ if (nlines) doc.remove(from.line, nlines);
+ if (added.length) doc.insert(from.line, added);
+ } else if (firstLine == lastLine) {
+ if (text.length == 1) {
+ update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);
+ } else {
+ for (var added = [], i = 1; i < text.length - 1; ++i)
+ added.push(new Line(text[i], spansFor(i), estimateHeight));
+ added.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));
+ update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));
+ doc.insert(from.line + 1, added);
+ }
+ } else if (text.length == 1) {
+ update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));
+ doc.remove(from.line + 1, nlines);
+ } else {
+ update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));
+ update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);
+ for (var i = 1, added = []; i < text.length - 1; ++i)
+ added.push(new Line(text[i], spansFor(i), estimateHeight));
+ if (nlines > 1) doc.remove(from.line + 1, nlines - 1);
+ doc.insert(from.line + 1, added);
+ }
+
+ signalLater(doc, "change", doc, change);
+ }
+
+ // The document is represented as a BTree consisting of leaves, with
+ // chunk of lines in them, and branches, with up to ten leaves or
+ // other branch nodes below them. The top node is always a branch
+ // node, and is the document object itself (meaning it has
+ // additional methods and properties).
+ //
+ // All nodes have parent links. The tree is used both to go from
+ // line numbers to line objects, and to go from objects to numbers.
+ // It also indexes by height, and is used to convert between height
+ // and line object, and to find the total height of the document.
+ //
+ // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html
+
+ function LeafChunk(lines) {
+ this.lines = lines;
+ this.parent = null;
+ for (var i = 0, height = 0; i < lines.length; ++i) {
+ lines[i].parent = this;
+ height += lines[i].height;
+ }
+ this.height = height;
+ }
+
+ LeafChunk.prototype = {
+ chunkSize: function() { return this.lines.length; },
+ // Remove the n lines at offset 'at'.
+ removeInner: function(at, n) {
+ for (var i = at, e = at + n; i < e; ++i) {
+ var line = this.lines[i];
+ this.height -= line.height;
+ cleanUpLine(line);
+ signalLater(line, "delete");
+ }
+ this.lines.splice(at, n);
+ },
+ // Helper used to collapse a small branch into a single leaf.
+ collapse: function(lines) {
+ lines.push.apply(lines, this.lines);
+ },
+ // Insert the given array of lines at offset 'at', count them as
+ // having the given height.
+ insertInner: function(at, lines, height) {
+ this.height += height;
+ this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));
+ for (var i = 0; i < lines.length; ++i) lines[i].parent = this;
+ },
+ // Used to iterate over a part of the tree.
+ iterN: function(at, n, op) {
+ for (var e = at + n; at < e; ++at)
+ if (op(this.lines[at])) return true;
+ }
+ };
+
+ function BranchChunk(children) {
+ this.children = children;
+ var size = 0, height = 0;
+ for (var i = 0; i < children.length; ++i) {
+ var ch = children[i];
+ size += ch.chunkSize(); height += ch.height;
+ ch.parent = this;
+ }
+ this.size = size;
+ this.height = height;
+ this.parent = null;
+ }
+
+ BranchChunk.prototype = {
+ chunkSize: function() { return this.size; },
+ removeInner: function(at, n) {
+ this.size -= n;
+ for (var i = 0; i < this.children.length; ++i) {
+ var child = this.children[i], sz = child.chunkSize();
+ if (at < sz) {
+ var rm = Math.min(n, sz - at), oldHeight = child.height;
+ child.removeInner(at, rm);
+ this.height -= oldHeight - child.height;
+ if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }
+ if ((n -= rm) == 0) break;
+ at = 0;
+ } else at -= sz;
+ }
+ // If the result is smaller than 25 lines, ensure that it is a
+ // single leaf node.
+ if (this.size - n < 25 &&
+ (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {
+ var lines = [];
+ this.collapse(lines);
+ this.children = [new LeafChunk(lines)];
+ this.children[0].parent = this;
+ }
+ },
+ collapse: function(lines) {
+ for (var i = 0; i < this.children.length; ++i) this.children[i].collapse(lines);
+ },
+ insertInner: function(at, lines, height) {
+ this.size += lines.length;
+ this.height += height;
+ for (var i = 0; i < this.children.length; ++i) {
+ var child = this.children[i], sz = child.chunkSize();
+ if (at <= sz) {
+ child.insertInner(at, lines, height);
+ if (child.lines && child.lines.length > 50) {
+ while (child.lines.length > 50) {
+ var spilled = child.lines.splice(child.lines.length - 25, 25);
+ var newleaf = new LeafChunk(spilled);
+ child.height -= newleaf.height;
+ this.children.splice(i + 1, 0, newleaf);
+ newleaf.parent = this;
+ }
+ this.maybeSpill();
+ }
+ break;
+ }
+ at -= sz;
+ }
+ },
+ // When a node has grown, check whether it should be split.
+ maybeSpill: function() {
+ if (this.children.length <= 10) return;
+ var me = this;
+ do {
+ var spilled = me.children.splice(me.children.length - 5, 5);
+ var sibling = new BranchChunk(spilled);
+ if (!me.parent) { // Become the parent node
+ var copy = new BranchChunk(me.children);
+ copy.parent = me;
+ me.children = [copy, sibling];
+ me = copy;
+ } else {
+ me.size -= sibling.size;
+ me.height -= sibling.height;
+ var myIndex = indexOf(me.parent.children, me);
+ me.parent.children.splice(myIndex + 1, 0, sibling);
+ }
+ sibling.parent = me.parent;
+ } while (me.children.length > 10);
+ me.parent.maybeSpill();
+ },
+ iterN: function(at, n, op) {
+ for (var i = 0; i < this.children.length; ++i) {
+ var child = this.children[i], sz = child.chunkSize();
+ if (at < sz) {
+ var used = Math.min(n, sz - at);
+ if (child.iterN(at, used, op)) return true;
+ if ((n -= used) == 0) break;
+ at = 0;
+ } else at -= sz;
+ }
+ }
+ };
+
+ var nextDocId = 0;
+ var Doc = CodeMirror.Doc = function(text, mode, firstLine) {
+ if (!(this instanceof Doc)) return new Doc(text, mode, firstLine);
+ if (firstLine == null) firstLine = 0;
+
+ BranchChunk.call(this, [new LeafChunk([new Line("", null)])]);
+ this.first = firstLine;
+ this.scrollTop = this.scrollLeft = 0;
+ this.cantEdit = false;
+ this.cleanGeneration = 1;
+ this.frontier = firstLine;
+ var start = Pos(firstLine, 0);
+ this.sel = simpleSelection(start);
+ this.history = new History(null);
+ this.id = ++nextDocId;
+ this.modeOption = mode;
+
+ if (typeof text == "string") text = splitLines(text);
+ updateDoc(this, {from: start, to: start, text: text});
+ setSelection(this, simpleSelection(start), sel_dontScroll);
+ };
+
+ Doc.prototype = createObj(BranchChunk.prototype, {
+ constructor: Doc,
+ // Iterate over the document. Supports two forms -- with only one
+ // argument, it calls that for each line in the document. With
+ // three, it iterates over the range given by the first two (with
+ // the second being non-inclusive).
+ iter: function(from, to, op) {
+ if (op) this.iterN(from - this.first, to - from, op);
+ else this.iterN(this.first, this.first + this.size, from);
+ },
+
+ // Non-public interface for adding and removing lines.
+ insert: function(at, lines) {
+ var height = 0;
+ for (var i = 0; i < lines.length; ++i) height += lines[i].height;
+ this.insertInner(at - this.first, lines, height);
+ },
+ remove: function(at, n) { this.removeInner(at - this.first, n); },
+
+ // From here, the methods are part of the public interface. Most
+ // are also available from CodeMirror (editor) instances.
+
+ getValue: function(lineSep) {
+ var lines = getLines(this, this.first, this.first + this.size);
+ if (lineSep === false) return lines;
+ return lines.join(lineSep || "\n");
+ },
+ setValue: docMethodOp(function(code) {
+ var top = Pos(this.first, 0), last = this.first + this.size - 1;
+ makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),
+ text: splitLines(code), origin: "setValue"}, true);
+ setSelection(this, simpleSelection(top));
+ }),
+ replaceRange: function(code, from, to, origin) {
+ from = clipPos(this, from);
+ to = to ? clipPos(this, to) : from;
+ replaceRange(this, code, from, to, origin);
+ },
+ getRange: function(from, to, lineSep) {
+ var lines = getBetween(this, clipPos(this, from), clipPos(this, to));
+ if (lineSep === false) return lines;
+ return lines.join(lineSep || "\n");
+ },
+
+ getLine: function(line) {var l = this.getLineHandle(line); return l && l.text;},
+
+ getLineHandle: function(line) {if (isLine(this, line)) return getLine(this, line);},
+ getLineNumber: function(line) {return lineNo(line);},
+
+ getLineHandleVisualStart: function(line) {
+ if (typeof line == "number") line = getLine(this, line);
+ return visualLine(line);
+ },
+
+ lineCount: function() {return this.size;},
+ firstLine: function() {return this.first;},
+ lastLine: function() {return this.first + this.size - 1;},
+
+ clipPos: function(pos) {return clipPos(this, pos);},
+
+ getCursor: function(start) {
+ var range = this.sel.primary(), pos;
+ if (start == null || start == "head") pos = range.head;
+ else if (start == "anchor") pos = range.anchor;
+ else if (start == "end" || start == "to" || start === false) pos = range.to();
+ else pos = range.from();
+ return pos;
+ },
+ listSelections: function() { return this.sel.ranges; },
+ somethingSelected: function() {return this.sel.somethingSelected();},
+
+ setCursor: docMethodOp(function(line, ch, options) {
+ setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options);
+ }),
+ setSelection: docMethodOp(function(anchor, head, options) {
+ setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);
+ }),
+ extendSelection: docMethodOp(function(head, other, options) {
+ extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);
+ }),
+ extendSelections: docMethodOp(function(heads, options) {
+ extendSelections(this, clipPosArray(this, heads, options));
+ }),
+ extendSelectionsBy: docMethodOp(function(f, options) {
+ extendSelections(this, map(this.sel.ranges, f), options);
+ }),
+ setSelections: docMethodOp(function(ranges, primary, options) {
+ if (!ranges.length) return;
+ for (var i = 0, out = []; i < ranges.length; i++)
+ out[i] = new Range(clipPos(this, ranges[i].anchor),
+ clipPos(this, ranges[i].head));
+ if (primary == null) primary = Math.min(ranges.length - 1, this.sel.primIndex);
+ setSelection(this, normalizeSelection(out, primary), options);
+ }),
+ addSelection: docMethodOp(function(anchor, head, options) {
+ var ranges = this.sel.ranges.slice(0);
+ ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));
+ setSelection(this, normalizeSelection(ranges, ranges.length - 1), options);
+ }),
+
+ getSelection: function(lineSep) {
+ var ranges = this.sel.ranges, lines;
+ for (var i = 0; i < ranges.length; i++) {
+ var sel = getBetween(this, ranges[i].from(), ranges[i].to());
+ lines = lines ? lines.concat(sel) : sel;
+ }
+ if (lineSep === false) return lines;
+ else return lines.join(lineSep || "\n");
+ },
+ getSelections: function(lineSep) {
+ var parts = [], ranges = this.sel.ranges;
+ for (var i = 0; i < ranges.length; i++) {
+ var sel = getBetween(this, ranges[i].from(), ranges[i].to());
+ if (lineSep !== false) sel = sel.join(lineSep || "\n");
+ parts[i] = sel;
+ }
+ return parts;
+ },
+ replaceSelection: function(code, collapse, origin) {
+ var dup = [];
+ for (var i = 0; i < this.sel.ranges.length; i++)
+ dup[i] = code;
+ this.replaceSelections(dup, collapse, origin || "+input");
+ },
+ replaceSelections: docMethodOp(function(code, collapse, origin) {
+ var changes = [], sel = this.sel;
+ for (var i = 0; i < sel.ranges.length; i++) {
+ var range = sel.ranges[i];
+ changes[i] = {from: range.from(), to: range.to(), text: splitLines(code[i]), origin: origin};
+ }
+ var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse);
+ for (var i = changes.length - 1; i >= 0; i--)
+ makeChange(this, changes[i]);
+ if (newSel) setSelectionReplaceHistory(this, newSel);
+ else if (this.cm) ensureCursorVisible(this.cm);
+ }),
+ undo: docMethodOp(function() {makeChangeFromHistory(this, "undo");}),
+ redo: docMethodOp(function() {makeChangeFromHistory(this, "redo");}),
+ undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true);}),
+ redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true);}),
+
+ setExtending: function(val) {this.extend = val;},
+ getExtending: function() {return this.extend;},
+
+ historySize: function() {
+ var hist = this.history, done = 0, undone = 0;
+ for (var i = 0; i < hist.done.length; i++) if (!hist.done[i].ranges) ++done;
+ for (var i = 0; i < hist.undone.length; i++) if (!hist.undone[i].ranges) ++undone;
+ return {undo: done, redo: undone};
+ },
+ clearHistory: function() {this.history = new History(this.history.maxGeneration);},
+
+ markClean: function() {
+ this.cleanGeneration = this.changeGeneration(true);
+ },
+ changeGeneration: function(forceSplit) {
+ if (forceSplit)
+ this.history.lastOp = this.history.lastOrigin = null;
+ return this.history.generation;
+ },
+ isClean: function (gen) {
+ return this.history.generation == (gen || this.cleanGeneration);
+ },
+
+ getHistory: function() {
+ return {done: copyHistoryArray(this.history.done),
+ undone: copyHistoryArray(this.history.undone)};
+ },
+ setHistory: function(histData) {
+ var hist = this.history = new History(this.history.maxGeneration);
+ hist.done = copyHistoryArray(histData.done.slice(0), null, true);
+ hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);
+ },
+
+ markText: function(from, to, options) {
+ return markText(this, clipPos(this, from), clipPos(this, to), options, "range");
+ },
+ setBookmark: function(pos, options) {
+ var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),
+ insertLeft: options && options.insertLeft,
+ clearWhenEmpty: false, shared: options && options.shared};
+ pos = clipPos(this, pos);
+ return markText(this, pos, pos, realOpts, "bookmark");
+ },
+ findMarksAt: function(pos) {
+ pos = clipPos(this, pos);
+ var markers = [], spans = getLine(this, pos.line).markedSpans;
+ if (spans) for (var i = 0; i < spans.length; ++i) {
+ var span = spans[i];
+ if ((span.from == null || span.from <= pos.ch) &&
+ (span.to == null || span.to >= pos.ch))
+ markers.push(span.marker.parent || span.marker);
+ }
+ return markers;
+ },
+ findMarks: function(from, to, filter) {
+ from = clipPos(this, from); to = clipPos(this, to);
+ var found = [], lineNo = from.line;
+ this.iter(from.line, to.line + 1, function(line) {
+ var spans = line.markedSpans;
+ if (spans) for (var i = 0; i < spans.length; i++) {
+ var span = spans[i];
+ if (!(lineNo == from.line && from.ch > span.to ||
+ span.from == null && lineNo != from.line||
+ lineNo == to.line && span.from > to.ch) &&
+ (!filter || filter(span.marker)))
+ found.push(span.marker.parent || span.marker);
+ }
+ ++lineNo;
+ });
+ return found;
+ },
+ getAllMarks: function() {
+ var markers = [];
+ this.iter(function(line) {
+ var sps = line.markedSpans;
+ if (sps) for (var i = 0; i < sps.length; ++i)
+ if (sps[i].from != null) markers.push(sps[i].marker);
+ });
+ return markers;
+ },
+
+ posFromIndex: function(off) {
+ var ch, lineNo = this.first;
+ this.iter(function(line) {
+ var sz = line.text.length + 1;
+ if (sz > off) { ch = off; return true; }
+ off -= sz;
+ ++lineNo;
+ });
+ return clipPos(this, Pos(lineNo, ch));
+ },
+ indexFromPos: function (coords) {
+ coords = clipPos(this, coords);
+ var index = coords.ch;
+ if (coords.line < this.first || coords.ch < 0) return 0;
+ this.iter(this.first, coords.line, function (line) {
+ index += line.text.length + 1;
+ });
+ return index;
+ },
+
+ copy: function(copyHistory) {
+ var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first);
+ doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;
+ doc.sel = this.sel;
+ doc.extend = false;
+ if (copyHistory) {
+ doc.history.undoDepth = this.history.undoDepth;
+ doc.setHistory(this.getHistory());
+ }
+ return doc;
+ },
+
+ linkedDoc: function(options) {
+ if (!options) options = {};
+ var from = this.first, to = this.first + this.size;
+ if (options.from != null && options.from > from) from = options.from;
+ if (options.to != null && options.to < to) to = options.to;
+ var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from);
+ if (options.sharedHist) copy.history = this.history;
+ (this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});
+ copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];
+ copySharedMarkers(copy, findSharedMarkers(this));
+ return copy;
+ },
+ unlinkDoc: function(other) {
+ if (other instanceof CodeMirror) other = other.doc;
+ if (this.linked) for (var i = 0; i < this.linked.length; ++i) {
+ var link = this.linked[i];
+ if (link.doc != other) continue;
+ this.linked.splice(i, 1);
+ other.unlinkDoc(this);
+ detachSharedMarkers(findSharedMarkers(this));
+ break;
+ }
+ // If the histories were shared, split them again
+ if (other.history == this.history) {
+ var splitIds = [other.id];
+ linkedDocs(other, function(doc) {splitIds.push(doc.id);}, true);
+ other.history = new History(null);
+ other.history.done = copyHistoryArray(this.history.done, splitIds);
+ other.history.undone = copyHistoryArray(this.history.undone, splitIds);
+ }
+ },
+ iterLinkedDocs: function(f) {linkedDocs(this, f);},
+
+ getMode: function() {return this.mode;},
+ getEditor: function() {return this.cm;}
+ });
+
+ // Public alias.
+ Doc.prototype.eachLine = Doc.prototype.iter;
+
+ // Set up methods on CodeMirror's prototype to redirect to the editor's document.
+ var dontDelegate = "iter insert remove copy getEditor".split(" ");
+ for (var prop in Doc.prototype) if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)
+ CodeMirror.prototype[prop] = (function(method) {
+ return function() {return method.apply(this.doc, arguments);};
+ })(Doc.prototype[prop]);
+
+ eventMixin(Doc);
+
+ // Call f for all linked documents.
+ function linkedDocs(doc, f, sharedHistOnly) {
+ function propagate(doc, skip, sharedHist) {
+ if (doc.linked) for (var i = 0; i < doc.linked.length; ++i) {
+ var rel = doc.linked[i];
+ if (rel.doc == skip) continue;
+ var shared = sharedHist && rel.sharedHist;
+ if (sharedHistOnly && !shared) continue;
+ f(rel.doc, shared);
+ propagate(rel.doc, doc, shared);
+ }
+ }
+ propagate(doc, null, true);
+ }
+
+ // Attach a document to an editor.
+ function attachDoc(cm, doc) {
+ if (doc.cm) throw new Error("This document is already in use.");
+ cm.doc = doc;
+ doc.cm = cm;
+ estimateLineHeights(cm);
+ loadMode(cm);
+ if (!cm.options.lineWrapping) findMaxLine(cm);
+ cm.options.mode = doc.modeOption;
+ regChange(cm);
+ }
+
+ // LINE UTILITIES
+
+ // Find the line object corresponding to the given line number.
+ function getLine(doc, n) {
+ n -= doc.first;
+ if (n < 0 || n >= doc.size) throw new Error("There is no line " + (n + doc.first) + " in the document.");
+ for (var chunk = doc; !chunk.lines;) {
+ for (var i = 0;; ++i) {
+ var child = chunk.children[i], sz = child.chunkSize();
+ if (n < sz) { chunk = child; break; }
+ n -= sz;
+ }
+ }
+ return chunk.lines[n];
+ }
+
+ // Get the part of a document between two positions, as an array of
+ // strings.
+ function getBetween(doc, start, end) {
+ var out = [], n = start.line;
+ doc.iter(start.line, end.line + 1, function(line) {
+ var text = line.text;
+ if (n == end.line) text = text.slice(0, end.ch);
+ if (n == start.line) text = text.slice(start.ch);
+ out.push(text);
+ ++n;
+ });
+ return out;
+ }
+ // Get the lines between from and to, as array of strings.
+ function getLines(doc, from, to) {
+ var out = [];
+ doc.iter(from, to, function(line) { out.push(line.text); });
+ return out;
+ }
+
+ // Update the height of a line, propagating the height change
+ // upwards to parent nodes.
+ function updateLineHeight(line, height) {
+ var diff = height - line.height;
+ if (diff) for (var n = line; n; n = n.parent) n.height += diff;
+ }
+
+ // Given a line object, find its line number by walking up through
+ // its parent links.
+ function lineNo(line) {
+ if (line.parent == null) return null;
+ var cur = line.parent, no = indexOf(cur.lines, line);
+ for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {
+ for (var i = 0;; ++i) {
+ if (chunk.children[i] == cur) break;
+ no += chunk.children[i].chunkSize();
+ }
+ }
+ return no + cur.first;
+ }
+
+ // Find the line at the given vertical position, using the height
+ // information in the document tree.
+ function lineAtHeight(chunk, h) {
+ var n = chunk.first;
+ outer: do {
+ for (var i = 0; i < chunk.children.length; ++i) {
+ var child = chunk.children[i], ch = child.height;
+ if (h < ch) { chunk = child; continue outer; }
+ h -= ch;
+ n += child.chunkSize();
+ }
+ return n;
+ } while (!chunk.lines);
+ for (var i = 0; i < chunk.lines.length; ++i) {
+ var line = chunk.lines[i], lh = line.height;
+ if (h < lh) break;
+ h -= lh;
+ }
+ return n + i;
+ }
+
+
+ // Find the height above the given line.
+ function heightAtLine(lineObj) {
+ lineObj = visualLine(lineObj);
+
+ var h = 0, chunk = lineObj.parent;
+ for (var i = 0; i < chunk.lines.length; ++i) {
+ var line = chunk.lines[i];
+ if (line == lineObj) break;
+ else h += line.height;
+ }
+ for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {
+ for (var i = 0; i < p.children.length; ++i) {
+ var cur = p.children[i];
+ if (cur == chunk) break;
+ else h += cur.height;
+ }
+ }
+ return h;
+ }
+
+ // Get the bidi ordering for the given line (and cache it). Returns
+ // false for lines that are fully left-to-right, and an array of
+ // BidiSpan objects otherwise.
+ function getOrder(line) {
+ var order = line.order;
+ if (order == null) order = line.order = bidiOrdering(line.text);
+ return order;
+ }
+
+ // HISTORY
+
+ function History(startGen) {
+ // Arrays of change events and selections. Doing something adds an
+ // event to done and clears undo. Undoing moves events from done
+ // to undone, redoing moves them in the other direction.
+ this.done = []; this.undone = [];
+ this.undoDepth = Infinity;
+ // Used to track when changes can be merged into a single undo
+ // event
+ this.lastModTime = this.lastSelTime = 0;
+ this.lastOp = null;
+ this.lastOrigin = this.lastSelOrigin = null;
+ // Used by the isClean() method
+ this.generation = this.maxGeneration = startGen || 1;
+ }
+
+ // Create a history change event from an updateDoc-style change
+ // object.
+ function historyChangeFromChange(doc, change) {
+ var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};
+ attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);
+ linkedDocs(doc, function(doc) {attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);}, true);
+ return histChange;
+ }
+
+ // Pop all selection events off the end of a history array. Stop at
+ // a change event.
+ function clearSelectionEvents(array) {
+ while (array.length) {
+ var last = lst(array);
+ if (last.ranges) array.pop();
+ else break;
+ }
+ }
+
+ // Find the top change event in the history. Pop off selection
+ // events that are in the way.
+ function lastChangeEvent(hist, force) {
+ if (force) {
+ clearSelectionEvents(hist.done);
+ return lst(hist.done);
+ } else if (hist.done.length && !lst(hist.done).ranges) {
+ return lst(hist.done);
+ } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {
+ hist.done.pop();
+ return lst(hist.done);
+ }
+ }
+
+ // Register a change in the history. Merges changes that are within
+ // a single operation, ore are close together with an origin that
+ // allows merging (starting with "+") into a single event.
+ function addChangeToHistory(doc, change, selAfter, opId) {
+ var hist = doc.history;
+ hist.undone.length = 0;
+ var time = +new Date, cur;
+
+ if ((hist.lastOp == opId ||
+ hist.lastOrigin == change.origin && change.origin &&
+ ((change.origin.charAt(0) == "+" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) ||
+ change.origin.charAt(0) == "*")) &&
+ (cur = lastChangeEvent(hist, hist.lastOp == opId))) {
+ // Merge this change into the last event
+ var last = lst(cur.changes);
+ if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {
+ // Optimized case for simple insertion -- don't want to add
+ // new changesets for every character typed
+ last.to = changeEnd(change);
+ } else {
+ // Add new sub-event
+ cur.changes.push(historyChangeFromChange(doc, change));
+ }
+ } else {
+ // Can not be merged, start a new event.
+ var before = lst(hist.done);
+ if (!before || !before.ranges)
+ pushSelectionToHistory(doc.sel, hist.done);
+ cur = {changes: [historyChangeFromChange(doc, change)],
+ generation: hist.generation};
+ hist.done.push(cur);
+ while (hist.done.length > hist.undoDepth) {
+ hist.done.shift();
+ if (!hist.done[0].ranges) hist.done.shift();
+ }
+ }
+ hist.done.push(selAfter);
+ hist.generation = ++hist.maxGeneration;
+ hist.lastModTime = hist.lastSelTime = time;
+ hist.lastOp = opId;
+ hist.lastOrigin = hist.lastSelOrigin = change.origin;
+
+ if (!last) signal(doc, "historyAdded");
+ }
+
+ function selectionEventCanBeMerged(doc, origin, prev, sel) {
+ var ch = origin.charAt(0);
+ return ch == "*" ||
+ ch == "+" &&
+ prev.ranges.length == sel.ranges.length &&
+ prev.somethingSelected() == sel.somethingSelected() &&
+ new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500);
+ }
+
+ // Called whenever the selection changes, sets the new selection as
+ // the pending selection in the history, and pushes the old pending
+ // selection into the 'done' array when it was significantly
+ // different (in number of selected ranges, emptiness, or time).
+ function addSelectionToHistory(doc, sel, opId, options) {
+ var hist = doc.history, origin = options && options.origin;
+
+ // A new event is started when the previous origin does not match
+ // the current, or the origins don't allow matching. Origins
+ // starting with * are always merged, those starting with + are
+ // merged when similar and close together in time.
+ if (opId == hist.lastOp ||
+ (origin && hist.lastSelOrigin == origin &&
+ (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||
+ selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))
+ hist.done[hist.done.length - 1] = sel;
+ else
+ pushSelectionToHistory(sel, hist.done);
+
+ hist.lastSelTime = +new Date;
+ hist.lastSelOrigin = origin;
+ hist.lastOp = opId;
+ if (options && options.clearRedo !== false)
+ clearSelectionEvents(hist.undone);
+ }
+
+ function pushSelectionToHistory(sel, dest) {
+ var top = lst(dest);
+ if (!(top && top.ranges && top.equals(sel)))
+ dest.push(sel);
+ }
+
+ // Used to store marked span information in the history.
+ function attachLocalSpans(doc, change, from, to) {
+ var existing = change["spans_" + doc.id], n = 0;
+ doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function(line) {
+ if (line.markedSpans)
+ (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans;
+ ++n;
+ });
+ }
+
+ // When un/re-doing restores text containing marked spans, those
+ // that have been explicitly cleared should not be restored.
+ function removeClearedSpans(spans) {
+ if (!spans) return null;
+ for (var i = 0, out; i < spans.length; ++i) {
+ if (spans[i].marker.explicitlyCleared) { if (!out) out = spans.slice(0, i); }
+ else if (out) out.push(spans[i]);
+ }
+ return !out ? spans : out.length ? out : null;
+ }
+
+ // Retrieve and filter the old marked spans stored in a change event.
+ function getOldSpans(doc, change) {
+ var found = change["spans_" + doc.id];
+ if (!found) return null;
+ for (var i = 0, nw = []; i < change.text.length; ++i)
+ nw.push(removeClearedSpans(found[i]));
+ return nw;
+ }
+
+ // Used both to provide a JSON-safe object in .getHistory, and, when
+ // detaching a document, to split the history in two
+ function copyHistoryArray(events, newGroup, instantiateSel) {
+ for (var i = 0, copy = []; i < events.length; ++i) {
+ var event = events[i];
+ if (event.ranges) {
+ copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);
+ continue;
+ }
+ var changes = event.changes, newChanges = [];
+ copy.push({changes: newChanges});
+ for (var j = 0; j < changes.length; ++j) {
+ var change = changes[j], m;
+ newChanges.push({from: change.from, to: change.to, text: change.text});
+ if (newGroup) for (var prop in change) if (m = prop.match(/^spans_(\d+)$/)) {
+ if (indexOf(newGroup, Number(m[1])) > -1) {
+ lst(newChanges)[prop] = change[prop];
+ delete change[prop];
+ }
+ }
+ }
+ }
+ return copy;
+ }
+
+ // Rebasing/resetting history to deal with externally-sourced changes
+
+ function rebaseHistSelSingle(pos, from, to, diff) {
+ if (to < pos.line) {
+ pos.line += diff;
+ } else if (from < pos.line) {
+ pos.line = from;
+ pos.ch = 0;
+ }
+ }
+
+ // Tries to rebase an array of history events given a change in the
+ // document. If the change touches the same lines as the event, the
+ // event, and everything 'behind' it, is discarded. If the change is
+ // before the event, the event's positions are updated. Uses a
+ // copy-on-write scheme for the positions, to avoid having to
+ // reallocate them all on every rebase, but also avoid problems with
+ // shared position objects being unsafely updated.
+ function rebaseHistArray(array, from, to, diff) {
+ for (var i = 0; i < array.length; ++i) {
+ var sub = array[i], ok = true;
+ if (sub.ranges) {
+ if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }
+ for (var j = 0; j < sub.ranges.length; j++) {
+ rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);
+ rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);
+ }
+ continue;
+ }
+ for (var j = 0; j < sub.changes.length; ++j) {
+ var cur = sub.changes[j];
+ if (to < cur.from.line) {
+ cur.from = Pos(cur.from.line + diff, cur.from.ch);
+ cur.to = Pos(cur.to.line + diff, cur.to.ch);
+ } else if (from <= cur.to.line) {
+ ok = false;
+ break;
+ }
+ }
+ if (!ok) {
+ array.splice(0, i + 1);
+ i = 0;
+ }
+ }
+ }
+
+ function rebaseHist(hist, change) {
+ var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;
+ rebaseHistArray(hist.done, from, to, diff);
+ rebaseHistArray(hist.undone, from, to, diff);
+ }
+
+ // EVENT UTILITIES
+
+ // Due to the fact that we still support jurassic IE versions, some
+ // compatibility wrappers are needed.
+
+ var e_preventDefault = CodeMirror.e_preventDefault = function(e) {
+ if (e.preventDefault) e.preventDefault();
+ else e.returnValue = false;
+ };
+ var e_stopPropagation = CodeMirror.e_stopPropagation = function(e) {
+ if (e.stopPropagation) e.stopPropagation();
+ else e.cancelBubble = true;
+ };
+ function e_defaultPrevented(e) {
+ return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false;
+ }
+ var e_stop = CodeMirror.e_stop = function(e) {e_preventDefault(e); e_stopPropagation(e);};
+
+ function e_target(e) {return e.target || e.srcElement;}
+ function e_button(e) {
+ var b = e.which;
+ if (b == null) {
+ if (e.button & 1) b = 1;
+ else if (e.button & 2) b = 3;
+ else if (e.button & 4) b = 2;
+ }
+ if (mac && e.ctrlKey && b == 1) b = 3;
+ return b;
+ }
+
+ // EVENT HANDLING
+
+ // Lightweight event framework. on/off also work on DOM nodes,
+ // registering native DOM handlers.
+
+ var on = CodeMirror.on = function(emitter, type, f) {
+ if (emitter.addEventListener)
+ emitter.addEventListener(type, f, false);
+ else if (emitter.attachEvent)
+ emitter.attachEvent("on" + type, f);
+ else {
+ var map = emitter._handlers || (emitter._handlers = {});
+ var arr = map[type] || (map[type] = []);
+ arr.push(f);
+ }
+ };
+
+ var off = CodeMirror.off = function(emitter, type, f) {
+ if (emitter.removeEventListener)
+ emitter.removeEventListener(type, f, false);
+ else if (emitter.detachEvent)
+ emitter.detachEvent("on" + type, f);
+ else {
+ var arr = emitter._handlers && emitter._handlers[type];
+ if (!arr) return;
+ for (var i = 0; i < arr.length; ++i)
+ if (arr[i] == f) { arr.splice(i, 1); break; }
+ }
+ };
+
+ var signal = CodeMirror.signal = function(emitter, type /*, values...*/) {
+ var arr = emitter._handlers && emitter._handlers[type];
+ if (!arr) return;
+ var args = Array.prototype.slice.call(arguments, 2);
+ for (var i = 0; i < arr.length; ++i) arr[i].apply(null, args);
+ };
+
+ // Often, we want to signal events at a point where we are in the
+ // middle of some work, but don't want the handler to start calling
+ // other methods on the editor, which might be in an inconsistent
+ // state or simply not expect any other events to happen.
+ // signalLater looks whether there are any handlers, and schedules
+ // them to be executed when the last operation ends, or, if no
+ // operation is active, when a timeout fires.
+ var delayedCallbacks, delayedCallbackDepth = 0;
+ function signalLater(emitter, type /*, values...*/) {
+ var arr = emitter._handlers && emitter._handlers[type];
+ if (!arr) return;
+ var args = Array.prototype.slice.call(arguments, 2);
+ if (!delayedCallbacks) {
+ ++delayedCallbackDepth;
+ delayedCallbacks = [];
+ setTimeout(fireDelayed, 0);
+ }
+ function bnd(f) {return function(){f.apply(null, args);};};
+ for (var i = 0; i < arr.length; ++i)
+ delayedCallbacks.push(bnd(arr[i]));
+ }
+
+ function fireDelayed() {
+ --delayedCallbackDepth;
+ var delayed = delayedCallbacks;
+ delayedCallbacks = null;
+ for (var i = 0; i < delayed.length; ++i) delayed[i]();
+ }
+
+ // The DOM events that CodeMirror handles can be overridden by
+ // registering a (non-DOM) handler on the editor for the event name,
+ // and preventDefault-ing the event in that handler.
+ function signalDOMEvent(cm, e, override) {
+ signal(cm, override || e.type, cm, e);
+ return e_defaultPrevented(e) || e.codemirrorIgnore;
+ }
+
+ function signalCursorActivity(cm) {
+ var arr = cm._handlers && cm._handlers.cursorActivity;
+ if (!arr) return;
+ var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);
+ for (var i = 0; i < arr.length; ++i) if (indexOf(set, arr[i]) == -1)
+ set.push(arr[i]);
+ }
+
+ function hasHandler(emitter, type) {
+ var arr = emitter._handlers && emitter._handlers[type];
+ return arr && arr.length > 0;
+ }
+
+ // Add on and off methods to a constructor's prototype, to make
+ // registering events on such objects more convenient.
+ function eventMixin(ctor) {
+ ctor.prototype.on = function(type, f) {on(this, type, f);};
+ ctor.prototype.off = function(type, f) {off(this, type, f);};
+ }
+
+ // MISC UTILITIES
+
+ // Number of pixels added to scroller and sizer to hide scrollbar
+ var scrollerCutOff = 30;
+
+ // Returned or thrown by various protocols to signal 'I'm not
+ // handling this'.
+ var Pass = CodeMirror.Pass = {toString: function(){return "CodeMirror.Pass";}};
+
+ // Reused option objects for setSelection & friends
+ var sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"};
+
+ function Delayed() {this.id = null;}
+ Delayed.prototype.set = function(ms, f) {
+ clearTimeout(this.id);
+ this.id = setTimeout(f, ms);
+ };
+
+ // Counts the column offset in a string, taking tabs into account.
+ // Used mostly to find indentation.
+ var countColumn = CodeMirror.countColumn = function(string, end, tabSize, startIndex, startValue) {
+ if (end == null) {
+ end = string.search(/[^\s\u00a0]/);
+ if (end == -1) end = string.length;
+ }
+ for (var i = startIndex || 0, n = startValue || 0;;) {
+ var nextTab = string.indexOf("\t", i);
+ if (nextTab < 0 || nextTab >= end)
+ return n + (end - i);
+ n += nextTab - i;
+ n += tabSize - (n % tabSize);
+ i = nextTab + 1;
+ }
+ };
+
+ // The inverse of countColumn -- find the offset that corresponds to
+ // a particular column.
+ function findColumn(string, goal, tabSize) {
+ for (var pos = 0, col = 0;;) {
+ var nextTab = string.indexOf("\t", pos);
+ if (nextTab == -1) nextTab = string.length;
+ var skipped = nextTab - pos;
+ if (nextTab == string.length || col + skipped >= goal)
+ return pos + Math.min(skipped, goal - col);
+ col += nextTab - pos;
+ col += tabSize - (col % tabSize);
+ pos = nextTab + 1;
+ if (col >= goal) return pos;
+ }
+ }
+
+ var spaceStrs = [""];
+ function spaceStr(n) {
+ while (spaceStrs.length <= n)
+ spaceStrs.push(lst(spaceStrs) + " ");
+ return spaceStrs[n];
+ }
+
+ function lst(arr) { return arr[arr.length-1]; }
+
+ var selectInput = function(node) { node.select(); };
+ if (ios) // Mobile Safari apparently has a bug where select() is broken.
+ selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; };
+ else if (ie) // Suppress mysterious IE10 errors
+ selectInput = function(node) { try { node.select(); } catch(_e) {} };
+
+ function indexOf(array, elt) {
+ for (var i = 0; i < array.length; ++i)
+ if (array[i] == elt) return i;
+ return -1;
+ }
+ if ([].indexOf) indexOf = function(array, elt) { return array.indexOf(elt); };
+ function map(array, f) {
+ var out = [];
+ for (var i = 0; i < array.length; i++) out[i] = f(array[i], i);
+ return out;
+ }
+ if ([].map) map = function(array, f) { return array.map(f); };
+
+ function createObj(base, props) {
+ var inst;
+ if (Object.create) {
+ inst = Object.create(base);
+ } else {
+ var ctor = function() {};
+ ctor.prototype = base;
+ inst = new ctor();
+ }
+ if (props) copyObj(props, inst);
+ return inst;
+ };
+
+ function copyObj(obj, target, overwrite) {
+ if (!target) target = {};
+ for (var prop in obj)
+ if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))
+ target[prop] = obj[prop];
+ return target;
+ }
+
+ function bind(f) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ return function(){return f.apply(null, args);};
+ }
+
+ var nonASCIISingleCaseWordChar = /[\u00df\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;
+ var isWordChar = CodeMirror.isWordChar = function(ch) {
+ return /\w/.test(ch) || ch > "\x80" &&
+ (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch));
+ };
+
+ function isEmpty(obj) {
+ for (var n in obj) if (obj.hasOwnProperty(n) && obj[n]) return false;
+ return true;
+ }
+
+ // Extending unicode characters. A series of a non-extending char +
+ // any number of extending chars is treated as a single unit as far
+ // as editing and measuring is concerned. This is not fully correct,
+ // since some scripts/fonts/browsers also treat other configurations
+ // of code points as a group.
+ var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;
+ function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch); }
+
+ // DOM UTILITIES
+
+ function elt(tag, content, className, style) {
+ var e = document.createElement(tag);
+ if (className) e.className = className;
+ if (style) e.style.cssText = style;
+ if (typeof content == "string") e.appendChild(document.createTextNode(content));
+ else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]);
+ return e;
+ }
+
+ var range;
+ if (document.createRange) range = function(node, start, end) {
+ var r = document.createRange();
+ r.setEnd(node, end);
+ r.setStart(node, start);
+ return r;
+ };
+ else range = function(node, start, end) {
+ var r = document.body.createTextRange();
+ r.moveToElementText(node.parentNode);
+ r.collapse(true);
+ r.moveEnd("character", end);
+ r.moveStart("character", start);
+ return r;
+ };
+
+ function removeChildren(e) {
+ for (var count = e.childNodes.length; count > 0; --count)
+ e.removeChild(e.firstChild);
+ return e;
+ }
+
+ function removeChildrenAndAdd(parent, e) {
+ return removeChildren(parent).appendChild(e);
+ }
+
+ function contains(parent, child) {
+ if (parent.contains)
+ return parent.contains(child);
+ while (child = child.parentNode)
+ if (child == parent) return true;
+ }
+
+ function activeElt() { return document.activeElement; }
+ // Older versions of IE throws unspecified error when touching
+ // document.activeElement in some cases (during loading, in iframe)
+ if (ie_upto10) activeElt = function() {
+ try { return document.activeElement; }
+ catch(e) { return document.body; }
+ };
+
+ function classTest(cls) { return new RegExp("\\b" + cls + "\\b\\s*"); }
+ function rmClass(node, cls) {
+ var test = classTest(cls);
+ if (test.test(node.className)) node.className = node.className.replace(test, "");
+ }
+ function addClass(node, cls) {
+ if (!classTest(cls).test(node.className)) node.className += " " + cls;
+ }
+ function joinClasses(a, b) {
+ var as = a.split(" ");
+ for (var i = 0; i < as.length; i++)
+ if (as[i] && !classTest(as[i]).test(b)) b += " " + as[i];
+ return b;
+ }
+
+ // FEATURE DETECTION
+
+ // Detect drag-and-drop
+ var dragAndDrop = function() {
+ // There is *some* kind of drag-and-drop support in IE6-8, but I
+ // couldn't get it to work yet.
+ if (ie_upto8) return false;
+ var div = elt('div');
+ return "draggable" in div || "dragDrop" in div;
+ }();
+
+ var knownScrollbarWidth;
+ function scrollbarWidth(measure) {
+ if (knownScrollbarWidth != null) return knownScrollbarWidth;
+ var test = elt("div", null, null, "width: 50px; height: 50px; overflow-x: scroll");
+ removeChildrenAndAdd(measure, test);
+ if (test.offsetWidth)
+ knownScrollbarWidth = test.offsetHeight - test.clientHeight;
+ return knownScrollbarWidth || 0;
+ }
+
+ var zwspSupported;
+ function zeroWidthElement(measure) {
+ if (zwspSupported == null) {
+ var test = elt("span", "\u200b");
+ removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")]));
+ if (measure.firstChild.offsetHeight != 0)
+ zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !ie_upto7;
+ }
+ if (zwspSupported) return elt("span", "\u200b");
+ else return elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px");
+ }
+
+ // Feature-detect IE's crummy client rect reporting for bidi text
+ var badBidiRects;
+ function hasBadBidiRects(measure) {
+ if (badBidiRects != null) return badBidiRects;
+ var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA"));
+ var r0 = range(txt, 0, 1).getBoundingClientRect();
+ if (r0.left == r0.right) return false;
+ var r1 = range(txt, 1, 2).getBoundingClientRect();
+ return badBidiRects = (r1.right - r0.right < 3);
+ }
+
+ // See if "".split is the broken IE version, if so, provide an
+ // alternative way to split lines.
+ var splitLines = CodeMirror.splitLines = "\n\nb".split(/\n/).length != 3 ? function(string) {
+ var pos = 0, result = [], l = string.length;
+ while (pos <= l) {
+ var nl = string.indexOf("\n", pos);
+ if (nl == -1) nl = string.length;
+ var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl);
+ var rt = line.indexOf("\r");
+ if (rt != -1) {
+ result.push(line.slice(0, rt));
+ pos += rt + 1;
+ } else {
+ result.push(line);
+ pos = nl + 1;
+ }
+ }
+ return result;
+ } : function(string){return string.split(/\r\n?|\n/);};
+
+ var hasSelection = window.getSelection ? function(te) {
+ try { return te.selectionStart != te.selectionEnd; }
+ catch(e) { return false; }
+ } : function(te) {
+ try {var range = te.ownerDocument.selection.createRange();}
+ catch(e) {}
+ if (!range || range.parentElement() != te) return false;
+ return range.compareEndPoints("StartToEnd", range) != 0;
+ };
+
+ var hasCopyEvent = (function() {
+ var e = elt("div");
+ if ("oncopy" in e) return true;
+ e.setAttribute("oncopy", "return;");
+ return typeof e.oncopy == "function";
+ })();
+
+ // KEY NAMES
+
+ var keyNames = {3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt",
+ 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End",
+ 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert",
+ 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", 107: "=", 109: "-", 127: "Delete",
+ 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\",
+ 221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete",
+ 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert"};
+ CodeMirror.keyNames = keyNames;
+ (function() {
+ // Number keys
+ for (var i = 0; i < 10; i++) keyNames[i + 48] = keyNames[i + 96] = String(i);
+ // Alphabetic keys
+ for (var i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i);
+ // Function keys
+ for (var i = 1; i <= 12; i++) keyNames[i + 111] = keyNames[i + 63235] = "F" + i;
+ })();
+
+ // BIDI HELPERS
+
+ function iterateBidiSections(order, from, to, f) {
+ if (!order) return f(from, to, "ltr");
+ var found = false;
+ for (var i = 0; i < order.length; ++i) {
+ var part = order[i];
+ if (part.from < to && part.to > from || from == to && part.to == from) {
+ f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr");
+ found = true;
+ }
+ }
+ if (!found) f(from, to, "ltr");
+ }
+
+ function bidiLeft(part) { return part.level % 2 ? part.to : part.from; }
+ function bidiRight(part) { return part.level % 2 ? part.from : part.to; }
+
+ function lineLeft(line) { var order = getOrder(line); return order ? bidiLeft(order[0]) : 0; }
+ function lineRight(line) {
+ var order = getOrder(line);
+ if (!order) return line.text.length;
+ return bidiRight(lst(order));
+ }
+
+ function lineStart(cm, lineN) {
+ var line = getLine(cm.doc, lineN);
+ var visual = visualLine(line);
+ if (visual != line) lineN = lineNo(visual);
+ var order = getOrder(visual);
+ var ch = !order ? 0 : order[0].level % 2 ? lineRight(visual) : lineLeft(visual);
+ return Pos(lineN, ch);
+ }
+ function lineEnd(cm, lineN) {
+ var merged, line = getLine(cm.doc, lineN);
+ while (merged = collapsedSpanAtEnd(line)) {
+ line = merged.find(1, true).line;
+ lineN = null;
+ }
+ var order = getOrder(line);
+ var ch = !order ? line.text.length : order[0].level % 2 ? lineLeft(line) : lineRight(line);
+ return Pos(lineN == null ? lineNo(line) : lineN, ch);
+ }
+
+ function compareBidiLevel(order, a, b) {
+ var linedir = order[0].level;
+ if (a == linedir) return true;
+ if (b == linedir) return false;
+ return a < b;
+ }
+ var bidiOther;
+ function getBidiPartAt(order, pos) {
+ bidiOther = null;
+ for (var i = 0, found; i < order.length; ++i) {
+ var cur = order[i];
+ if (cur.from < pos && cur.to > pos) return i;
+ if ((cur.from == pos || cur.to == pos)) {
+ if (found == null) {
+ found = i;
+ } else if (compareBidiLevel(order, cur.level, order[found].level)) {
+ if (cur.from != cur.to) bidiOther = found;
+ return i;
+ } else {
+ if (cur.from != cur.to) bidiOther = i;
+ return found;
+ }
+ }
+ }
+ return found;
+ }
+
+ function moveInLine(line, pos, dir, byUnit) {
+ if (!byUnit) return pos + dir;
+ do pos += dir;
+ while (pos > 0 && isExtendingChar(line.text.charAt(pos)));
+ return pos;
+ }
+
+ // This is needed in order to move 'visually' through bi-directional
+ // text -- i.e., pressing left should make the cursor go left, even
+ // when in RTL text. The tricky part is the 'jumps', where RTL and
+ // LTR text touch each other. This often requires the cursor offset
+ // to move more than one unit, in order to visually move one unit.
+ function moveVisually(line, start, dir, byUnit) {
+ var bidi = getOrder(line);
+ if (!bidi) return moveLogically(line, start, dir, byUnit);
+ var pos = getBidiPartAt(bidi, start), part = bidi[pos];
+ var target = moveInLine(line, start, part.level % 2 ? -dir : dir, byUnit);
+
+ for (;;) {
+ if (target > part.from && target < part.to) return target;
+ if (target == part.from || target == part.to) {
+ if (getBidiPartAt(bidi, target) == pos) return target;
+ part = bidi[pos += dir];
+ return (dir > 0) == part.level % 2 ? part.to : part.from;
+ } else {
+ part = bidi[pos += dir];
+ if (!part) return null;
+ if ((dir > 0) == part.level % 2)
+ target = moveInLine(line, part.to, -1, byUnit);
+ else
+ target = moveInLine(line, part.from, 1, byUnit);
+ }
+ }
+ }
+
+ function moveLogically(line, start, dir, byUnit) {
+ var target = start + dir;
+ if (byUnit) while (target > 0 && isExtendingChar(line.text.charAt(target))) target += dir;
+ return target < 0 || target > line.text.length ? null : target;
+ }
+
+ // Bidirectional ordering algorithm
+ // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm
+ // that this (partially) implements.
+
+ // One-char codes used for character types:
+ // L (L): Left-to-Right
+ // R (R): Right-to-Left
+ // r (AL): Right-to-Left Arabic
+ // 1 (EN): European Number
+ // + (ES): European Number Separator
+ // % (ET): European Number Terminator
+ // n (AN): Arabic Number
+ // , (CS): Common Number Separator
+ // m (NSM): Non-Spacing Mark
+ // b (BN): Boundary Neutral
+ // s (B): Paragraph Separator
+ // t (S): Segment Separator
+ // w (WS): Whitespace
+ // N (ON): Other Neutrals
+
+ // Returns null if characters are ordered as they appear
+ // (left-to-right), or an array of sections ({from, to, level}
+ // objects) in the order in which they occur visually.
+ var bidiOrdering = (function() {
+ // Character types for codepoints 0 to 0xff
+ var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN";
+ // Character types for codepoints 0x600 to 0x6ff
+ var arabicTypes = "rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm";
+ function charType(code) {
+ if (code <= 0xf7) return lowTypes.charAt(code);
+ else if (0x590 <= code && code <= 0x5f4) return "R";
+ else if (0x600 <= code && code <= 0x6ed) return arabicTypes.charAt(code - 0x600);
+ else if (0x6ee <= code && code <= 0x8ac) return "r";
+ else if (0x2000 <= code && code <= 0x200b) return "w";
+ else if (code == 0x200c) return "b";
+ else return "L";
+ }
+
+ var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/;
+ var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;
+ // Browsers seem to always treat the boundaries of block elements as being L.
+ var outerType = "L";
+
+ function BidiSpan(level, from, to) {
+ this.level = level;
+ this.from = from; this.to = to;
+ }
+
+ return function(str) {
+ if (!bidiRE.test(str)) return false;
+ var len = str.length, types = [];
+ for (var i = 0, type; i < len; ++i)
+ types.push(type = charType(str.charCodeAt(i)));
+
+ // W1. Examine each non-spacing mark (NSM) in the level run, and
+ // change the type of the NSM to the type of the previous
+ // character. If the NSM is at the start of the level run, it will
+ // get the type of sor.
+ for (var i = 0, prev = outerType; i < len; ++i) {
+ var type = types[i];
+ if (type == "m") types[i] = prev;
+ else prev = type;
+ }
+
+ // W2. Search backwards from each instance of a European number
+ // until the first strong type (R, L, AL, or sor) is found. If an
+ // AL is found, change the type of the European number to Arabic
+ // number.
+ // W3. Change all ALs to R.
+ for (var i = 0, cur = outerType; i < len; ++i) {
+ var type = types[i];
+ if (type == "1" && cur == "r") types[i] = "n";
+ else if (isStrong.test(type)) { cur = type; if (type == "r") types[i] = "R"; }
+ }
+
+ // W4. A single European separator between two European numbers
+ // changes to a European number. A single common separator between
+ // two numbers of the same type changes to that type.
+ for (var i = 1, prev = types[0]; i < len - 1; ++i) {
+ var type = types[i];
+ if (type == "+" && prev == "1" && types[i+1] == "1") types[i] = "1";
+ else if (type == "," && prev == types[i+1] &&
+ (prev == "1" || prev == "n")) types[i] = prev;
+ prev = type;
+ }
+
+ // W5. A sequence of European terminators adjacent to European
+ // numbers changes to all European numbers.
+ // W6. Otherwise, separators and terminators change to Other
+ // Neutral.
+ for (var i = 0; i < len; ++i) {
+ var type = types[i];
+ if (type == ",") types[i] = "N";
+ else if (type == "%") {
+ for (var end = i + 1; end < len && types[end] == "%"; ++end) {}
+ var replace = (i && types[i-1] == "!") || (end < len && types[end] == "1") ? "1" : "N";
+ for (var j = i; j < end; ++j) types[j] = replace;
+ i = end - 1;
+ }
+ }
+
+ // W7. Search backwards from each instance of a European number
+ // until the first strong type (R, L, or sor) is found. If an L is
+ // found, then change the type of the European number to L.
+ for (var i = 0, cur = outerType; i < len; ++i) {
+ var type = types[i];
+ if (cur == "L" && type == "1") types[i] = "L";
+ else if (isStrong.test(type)) cur = type;
+ }
+
+ // N1. A sequence of neutrals takes the direction of the
+ // surrounding strong text if the text on both sides has the same
+ // direction. European and Arabic numbers act as if they were R in
+ // terms of their influence on neutrals. Start-of-level-run (sor)
+ // and end-of-level-run (eor) are used at level run boundaries.
+ // N2. Any remaining neutrals take the embedding direction.
+ for (var i = 0; i < len; ++i) {
+ if (isNeutral.test(types[i])) {
+ for (var end = i + 1; end < len && isNeutral.test(types[end]); ++end) {}
+ var before = (i ? types[i-1] : outerType) == "L";
+ var after = (end < len ? types[end] : outerType) == "L";
+ var replace = before || after ? "L" : "R";
+ for (var j = i; j < end; ++j) types[j] = replace;
+ i = end - 1;
+ }
+ }
+
+ // Here we depart from the documented algorithm, in order to avoid
+ // building up an actual levels array. Since there are only three
+ // levels (0, 1, 2) in an implementation that doesn't take
+ // explicit embedding into account, we can build up the order on
+ // the fly, without following the level-based algorithm.
+ var order = [], m;
+ for (var i = 0; i < len;) {
+ if (countsAsLeft.test(types[i])) {
+ var start = i;
+ for (++i; i < len && countsAsLeft.test(types[i]); ++i) {}
+ order.push(new BidiSpan(0, start, i));
+ } else {
+ var pos = i, at = order.length;
+ for (++i; i < len && types[i] != "L"; ++i) {}
+ for (var j = pos; j < i;) {
+ if (countsAsNum.test(types[j])) {
+ if (pos < j) order.splice(at, 0, new BidiSpan(1, pos, j));
+ var nstart = j;
+ for (++j; j < i && countsAsNum.test(types[j]); ++j) {}
+ order.splice(at, 0, new BidiSpan(2, nstart, j));
+ pos = j;
+ } else ++j;
+ }
+ if (pos < i) order.splice(at, 0, new BidiSpan(1, pos, i));
+ }
+ }
+ if (order[0].level == 1 && (m = str.match(/^\s+/))) {
+ order[0].from = m[0].length;
+ order.unshift(new BidiSpan(0, 0, m[0].length));
+ }
+ if (lst(order).level == 1 && (m = str.match(/\s+$/))) {
+ lst(order).to -= m[0].length;
+ order.push(new BidiSpan(0, len - m[0].length, len));
+ }
+ if (order[0].level != lst(order).level)
+ order.push(new BidiSpan(order[0].level, len, len));
+
+ return order;
+ };
+ })();
+
+ // THE END
+
+ CodeMirror.version = "4.1.0";
+
+ return CodeMirror;
+});
diff --git a/chromium/third_party/skia/experimental/webtry/res/js/polyfill.js b/chromium/third_party/skia/experimental/webtry/res/js/polyfill.js
new file mode 100644
index 00000000000..d4318073137
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/res/js/polyfill.js
@@ -0,0 +1,3 @@
+/*! polyfill built from /exerimental/webtry/poly 2014-05-19 */
+"undefined"==typeof WeakMap&&!function(){var a=Object.defineProperty,b=Date.now()%1e9,c=function(){this.name="__st"+(1e9*Math.random()>>>0)+(b++ +"__")};c.prototype={set:function(b,c){var d=b[this.name];d&&d[0]===b?d[1]=c:a(b,this.name,{value:[b,c],writable:!0})},get:function(a){var b;return(b=a[this.name])&&b[0]===a?b[1]:void 0},"delete":function(a){this.set(a,void 0)}},window.WeakMap=c}(),"undefined"==typeof document||"classList"in document.createElement("a")||!function(a){"use strict";if("HTMLElement"in a||"Element"in a){var b="classList",c="prototype",d=(a.HTMLElement||a.Element)[c],e=Object,f=String[c].trim||function(){return this.replace(/^\s+|\s+$/g,"")},g=Array[c].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1},h=function(a,b){this.name=a,this.code=DOMException[a],this.message=b},i=function(a,b){if(""===b)throw new h("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(b))throw new h("INVALID_CHARACTER_ERR","String contains an invalid character");return g.call(a,b)},j=function(a){for(var b=f.call(a.className),c=b?b.split(/\s+/):[],d=0,e=c.length;e>d;d++)this.push(c[d]);this._updateClassName=function(){a.className=this.toString()}},k=j[c]=[],l=function(){return new j(this)};if(h[c]=Error[c],k.item=function(a){return this[a]||null},k.contains=function(a){return a+="",-1!==i(this,a)},k.add=function(){var a,b=arguments,c=0,d=b.length,e=!1;do a=b[c]+"",-1===i(this,a)&&(this.push(a),e=!0);while(++c<d);e&&this._updateClassName()},k.remove=function(){var a,b=arguments,c=0,d=b.length,e=!1;do{a=b[c]+"";var f=i(this,a);-1!==f&&(this.splice(f,1),e=!0)}while(++c<d);e&&this._updateClassName()},k.toggle=function(a,b){a+="";var c=this.contains(a),d=c?b!==!0&&"remove":b!==!1&&"add";return d&&this[d](a),!c},k.toString=function(){return this.join(" ")},e.defineProperty){var m={get:l,enumerable:!0,configurable:!0};try{e.defineProperty(d,b,m)}catch(n){-2146823252===n.number&&(m.enumerable=!1,e.defineProperty(d,b,m))}}else e[c].__defineGetter__&&d.__defineGetter__(b,l)}}(self),"undefined"==typeof WeakMap&&!function(){var a=Object.defineProperty,b=Date.now()%1e9,c=function(){this.name="__st"+(1e9*Math.random()>>>0)+(b++ +"__")};c.prototype={set:function(b,c){var d=b[this.name];d&&d[0]===b?d[1]=c:a(b,this.name,{value:[b,c],writable:!0})},get:function(a){var b;return(b=a[this.name])&&b[0]===a?b[1]:void 0},"delete":function(a){this.set(a,void 0)}},window.WeakMap=c}(),function(a){a=a||{},a.external=a.external||{};var b={shadow:function(a){return a?a.shadowRoot||a.webkitShadowRoot:void 0},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);return this.canTarget(b)?b:void 0},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){if(a){var d,e,f=a.elementFromPoint(b,c);for(e=this.targetingShadow(f);e;){if(d=e.elementFromPoint(b,c)){var g=this.targetingShadow(d);return this.searchRoot(g,b,c)||d}e=this.olderShadow(e)}return f}},owner:function(a){for(var b=a;b.parentNode;)b=b.parentNode;return b.nodeType!=Node.DOCUMENT_NODE&&b.nodeType!=Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){var b=a.clientX,c=a.clientY,d=this.owner(a.target);return d.elementFromPoint(b,c)||(d=document),this.searchRoot(d,b,c)}};a.targetFinding=b,a.findTarget=b.findTarget.bind(b),window.PointerEventsPolyfill=a}(window.PointerEventsPolyfill),function(){function a(a){return"body ^^ "+b(a)}function b(a){return'[touch-action="'+a+'"]'}function c(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+"; touch-action-delay: none; }"}var d=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],e="";d.forEach(function(d){String(d)===d?(e+=b(d)+c(d)+"\n",e+=a(d)+c(d)+"\n"):(e+=d.selectors.map(b)+c(d.rule)+"\n",e+=d.selectors.map(a)+c(d.rule)+"\n")});var f=document.createElement("style");f.textContent=e,document.head.appendChild(f)}(),function(a){function b(a,e){e=e||{};var f;if(e.buttons||d)f=e.buttons;else switch(e.which){case 1:f=1;break;case 2:f=4;break;case 3:f=2;break;default:f=0}var i;if(c)i=new MouseEvent(a,e);else{i=document.createEvent("MouseEvent");for(var j,k={},l=0;l<g.length;l++)j=g[l],k[j]=e[j]||h[l];i.initMouseEvent(a,k.bubbles,k.cancelable,k.view,k.detail,k.screenX,k.screenY,k.clientX,k.clientY,k.ctrlKey,k.altKey,k.shiftKey,k.metaKey,k.button,k.relatedTarget)}i.__proto__=b.prototype,d||Object.defineProperty(i,"buttons",{get:function(){return f},enumerable:!0});var m=0;return m=e.pressure?e.pressure:f?.5:0,Object.defineProperties(i,{pointerId:{value:e.pointerId||0,enumerable:!0},width:{value:e.width||0,enumerable:!0},height:{value:e.height||0,enumerable:!0},pressure:{value:m,enumerable:!0},tiltX:{value:e.tiltX||0,enumerable:!0},tiltY:{value:e.tiltY||0,enumerable:!0},pointerType:{value:e.pointerType||"",enumerable:!0},hwTimestamp:{value:e.hwTimestamp||0,enumerable:!0},isPrimary:{value:e.isPrimary||!1,enumerable:!0}}),i}var c=!1,d=!1;try{var e=new MouseEvent("click",{buttons:1});c=!0,d=1===e.buttons}catch(f){}var g=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget"],h=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null];b.prototype=Object.create(MouseEvent.prototype),a.PointerEvent||(a.PointerEvent=b)}(window),function(a){function b(){if(c){var a=new Map;return a.pointers=d,a}this.keys=[],this.values=[]}var c=window.Map&&window.Map.prototype.forEach,d=function(){return this.size};b.prototype={set:function(a,b){var c=this.keys.indexOf(a);c>-1?this.values[c]=b:(this.keys.push(a),this.values.push(b))},has:function(a){return this.keys.indexOf(a)>-1},"delete":function(a){var b=this.keys.indexOf(a);b>-1&&(this.keys.splice(b,1),this.values.splice(b,1))},get:function(a){var b=this.keys.indexOf(a);return this.values[b]},clear:function(){this.keys.length=0,this.values.length=0},forEach:function(a,b){this.values.forEach(function(c,d){a.call(b,c,this.keys[d],this)},this)},pointers:function(){return this.keys.length}},a.PointerMap=b}(window.PointerEventsPolyfill),function(a){var b=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which"],c=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0],d="undefined"!=typeof SVGElementInstance,e={targets:new WeakMap,handledEvents:new WeakMap,pointermap:new a.PointerMap,eventMap:{},eventSources:{},eventSourceList:[],registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},register:function(a){for(var b,c=this.eventSourceList.length,d=0;c>d&&(b=this.eventSourceList[d]);d++)b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;c>d&&(b=this.eventSourceList[d]);d++)b.unregister.call(b,a)},contains:a.external.contains||function(a,b){return a.contains(b)},down:function(a){a.bubbles=!0,this.fireEvent("pointerdown",a)},move:function(a){a.bubbles=!0,this.fireEvent("pointermove",a)},up:function(a){a.bubbles=!0,this.fireEvent("pointerup",a)},enter:function(a){a.bubbles=!1,this.fireEvent("pointerenter",a)},leave:function(a){a.bubbles=!1,this.fireEvent("pointerleave",a)},over:function(a){a.bubbles=!0,this.fireEvent("pointerover",a)},out:function(a){a.bubbles=!0,this.fireEvent("pointerout",a)},cancel:function(a){a.bubbles=!0,this.fireEvent("pointercancel",a)},leaveOut:function(a){this.out(a),this.contains(a.target,a.relatedTarget)||this.leave(a)},enterOver:function(a){this.over(a),this.contains(a.target,a.relatedTarget)||this.enter(a)},eventHandler:function(a){if(!this.handledEvents.get(a)){var b=a.type,c=this.eventMap&&this.eventMap[b];c&&c(a),this.handledEvents.set(a,!0)}},listen:function(a,b){b.forEach(function(b){this.addEvent(a,b)},this)},unlisten:function(a,b){b.forEach(function(b){this.removeEvent(a,b)},this)},addEvent:a.external.addEvent||function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:a.external.removeEvent||function(a,b){a.removeEventListener(b,this.boundHandler)},makeEvent:function(a,b){this.captureInfo&&(b.relatedTarget=null);var c=new PointerEvent(a,b);return b.preventDefault&&(c.preventDefault=b.preventDefault),this.targets.set(c,this.targets.get(b)||b.target),c},fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},cloneEvent:function(a){for(var e,f={},g=0;g<b.length;g++)e=b[g],f[e]=a[e]||c[g],!d||"target"!==e&&"relatedTarget"!==e||f[e]instanceof SVGElementInstance&&(f[e]=f[e].correspondingUseElement);return a.preventDefault&&(f.preventDefault=function(){a.preventDefault()}),f},getTarget:function(a){return this.captureInfo&&this.captureInfo.id===a.pointerId?this.captureInfo.target:this.targets.get(a)},setCapture:function(a,b){this.captureInfo&&this.releaseCapture(this.captureInfo.id),this.captureInfo={id:a,target:b};var c=new PointerEvent("gotpointercapture",{bubbles:!0});this.implicitRelease=this.releaseCapture.bind(this,a),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease),this.targets.set(c,b),this.asyncDispatchEvent(c)},releaseCapture:function(a){if(this.captureInfo&&this.captureInfo.id===a){var b=new PointerEvent("lostpointercapture",{bubbles:!0}),c=this.captureInfo.target;this.captureInfo=null,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease),this.targets.set(b,c),this.asyncDispatchEvent(b)}},dispatchEvent:a.external.dispatchEvent||function(a){var b=this.getTarget(a);return b?b.dispatchEvent(a):void 0},asyncDispatchEvent:function(a){setTimeout(this.dispatchEvent.bind(this,a),0)}};e.boundHandler=e.eventHandler.bind(e),a.dispatcher=e,a.register=e.register.bind(e),a.unregister=e.unregister.bind(e)}(window.PointerEventsPolyfill),function(a){function b(a,b,c,d){this.addCallback=a.bind(d),this.removeCallback=b.bind(d),this.changedCallback=c.bind(d),g&&(this.observer=new g(this.mutationWatcher.bind(this)))}var c=Array.prototype.forEach.call.bind(Array.prototype.forEach),d=Array.prototype.map.call.bind(Array.prototype.map),e=Array.prototype.slice.call.bind(Array.prototype.slice),f=Array.prototype.filter.call.bind(Array.prototype.filter),g=window.MutationObserver||window.WebKitMutationObserver,h="[touch-action]",i={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};b.prototype={watchSubtree:function(b){a.targetFinding.canTarget(b)&&this.observer.observe(b,i)},enableOnSubtree:function(a){this.watchSubtree(a),a===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(a)},installNewSubtree:function(a){c(this.findElements(a),this.addElement,this)},findElements:function(a){return a.querySelectorAll?a.querySelectorAll(h):[]},removeElement:function(a){this.removeCallback(a)},addElement:function(a){this.addCallback(a)},elementChanged:function(a,b){this.changedCallback(a,b)},concatLists:function(a,b){return a.concat(e(b))},installOnLoad:function(){document.addEventListener("DOMContentLoaded",this.installNewSubtree.bind(this,document))},isElement:function(a){return a.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(a){var b=d(a,this.findElements,this);return b.push(f(a,this.isElement)),b.reduce(this.concatLists,[])},mutationWatcher:function(a){a.forEach(this.mutationHandler,this)},mutationHandler:function(a){if("childList"===a.type){var b=this.flattenMutationTree(a.addedNodes);b.forEach(this.addElement,this);var c=this.flattenMutationTree(a.removedNodes);c.forEach(this.removeElement,this)}else"attributes"===a.type&&this.elementChanged(a.target,a.oldValue)}},g||(b.prototype.watchSubtree=function(){console.warn("PointerEventsPolyfill: MutationObservers not found, touch-action will not be dynamically detected")}),a.Installer=b}(window.PointerEventsPolyfill),function(a){var b=a.dispatcher,c=b.pointermap,d=25,e={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(a){b.listen(a,this.events)},unregister:function(a){b.unlisten(a,this.events)},lastTouches:[],isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,e=a.clientX,f=a.clientY,g=0,h=c.length;h>g&&(b=c[g]);g++){var i=Math.abs(e-b.x),j=Math.abs(f-b.y);if(d>=i&&d>=j)return!0}},prepareEvent:function(a){var c=b.cloneEvent(a),d=c.preventDefault;return c.preventDefault=function(){a.preventDefault(),d()},c.pointerId=this.POINTER_ID,c.isPrimary=!0,c.pointerType=this.POINTER_TYPE,c},mousedown:function(a){if(!this.isEventSimulatedFromTouch(a)){var d=c.has(this.POINTER_ID);d&&this.cancel(a);var e=this.prepareEvent(a);c.set(this.POINTER_ID,a),b.down(e)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var c=this.prepareEvent(a);b.move(c)}},mouseup:function(a){if(!this.isEventSimulatedFromTouch(a)){var d=c.get(this.POINTER_ID);if(d&&d.button===a.button){var e=this.prepareEvent(a);b.up(e),this.cleanupMouse()}}},mouseover:function(a){if(!this.isEventSimulatedFromTouch(a)){var c=this.prepareEvent(a);b.enterOver(c)}},mouseout:function(a){if(!this.isEventSimulatedFromTouch(a)){var c=this.prepareEvent(a);b.leaveOut(c)}},cancel:function(a){var c=this.prepareEvent(a);b.cancel(c),this.cleanupMouse()},cleanupMouse:function(){c["delete"](this.POINTER_ID)}};a.mouseEvents=e}(window.PointerEventsPolyfill),function(a){var b,c=a.dispatcher,d=a.findTarget,e=a.targetFinding.allShadows.bind(a.targetFinding),f=c.pointermap,g=Array.prototype.map.call.bind(Array.prototype.map),h=2500,i=200,j="touch-action",k=!1,l={scrollType:new WeakMap,events:["touchstart","touchmove","touchend","touchcancel"],register:function(a){k?c.listen(a,this.events):b.enableOnSubtree(a)},unregister:function(a){k&&c.unlisten(a,this.events)},elementAdded:function(a){var b=a.getAttribute(j),d=this.touchActionToScrollType(b);d&&(this.scrollType.set(a,d),c.listen(a,this.events),e(a).forEach(function(a){this.scrollType.set(a,d),c.listen(a,this.events)},this))},elementRemoved:function(a){this.scrollType["delete"](a),c.unlisten(a,this.events),e(a).forEach(function(a){this.scrollType["delete"](a),c.unlisten(a,this.events)},this)},elementChanged:function(a,b){var c=a.getAttribute(j),d=this.touchActionToScrollType(c),f=this.touchActionToScrollType(b);d&&f?(this.scrollType.set(a,d),e(a).forEach(function(a){this.scrollType.set(a,d)},this)):f?this.elementRemoved(a):d&&this.elementAdded(a)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return"none"===b?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":c.SCROLLER.exec(b)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){(0===f.pointers()||1===f.pointers()&&f.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,i)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},touchToPointer:function(a){var b=c.cloneEvent(a);return b.pointerId=a.identifier+2,b.target=d(b),b.bubbles=!0,b.cancelable=!0,b.detail=this.clickCount,b.button=0,b.buttons=1,b.width=a.webkitRadiusX||a.radiusX||0,b.height=a.webkitRadiusY||a.radiusY||0,b.pressure=a.webkitForce||a.force||.5,b.isPrimary=this.isPrimaryTouch(a),b.pointerType=this.POINTER_TYPE,b},processTouches:function(a,b){var c=a.changedTouches,d=g(c,this.touchToPointer,this);d.forEach(function(b){b.preventDefault=function(){this.scrolling=!1,this.firstXY=null,a.preventDefault()}},this),d.forEach(b,this)},shouldScroll:function(a){if(this.firstXY){var b,c=this.scrollType.get(a.currentTarget);if("none"===c)b=!1;else if("XY"===c)b=!0;else{var d=a.changedTouches[0],e=c,f="Y"===c?"X":"Y",g=Math.abs(d["client"+e]-this.firstXY[e]),h=Math.abs(d["client"+f]-this.firstXY[f]);b=g>=h}return this.firstXY=null,b}},findTouch:function(a,b){for(var c,d=0,e=a.length;e>d&&(c=a[d]);d++)if(c.identifier===b)return!0},vacuumTouches:function(a){var b=a.touches;if(f.pointers()>=b.length){var c=[];f.forEach(function(a,d){if(1!==d&&!this.findTouch(b,d-2)){var e=a.out;c.push(this.touchToPointer(e))}},this),c.forEach(this.cancelOut,this)}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.overDown))},overDown:function(a){f.set(a.pointerId,{target:a.target,out:a,outTarget:a.target}),c.over(a),c.enter(a),c.down(a)},touchmove:function(a){this.scrolling||(this.shouldScroll(a)?(this.scrolling=!0,this.touchcancel(a)):(a.preventDefault(),this.processTouches(a,this.moveOverOut)))},moveOverOut:function(a){var b=a,d=f.get(b.pointerId);if(d){var e=d.out,g=d.outTarget;c.move(b),e&&g!==b.target&&(e.relatedTarget=b.target,b.relatedTarget=g,e.target=g,b.target?(c.leaveOut(e),c.enterOver(b)):(b.target=g,b.relatedTarget=null,this.cancelOut(b))),d.out=b,d.outTarget=b.target}},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.upOut)},upOut:function(a){this.scrolling||(c.up(a),c.out(a),c.leave(a)),this.cleanUpPointer(a)},touchcancel:function(a){this.processTouches(a,this.cancelOut)},cancelOut:function(a){c.cancel(a),c.out(a),c.leave(a),this.cleanUpPointer(a)},cleanUpPointer:function(a){f["delete"](a.pointerId),this.removePrimaryPointer(a)},dedupSynthMouse:function(b){var c=a.mouseEvents.lastTouches,d=b.changedTouches[0];if(this.isPrimaryTouch(d)){var e={x:d.clientX,y:d.clientY};c.push(e);var f=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,c,e);setTimeout(f,h)}}};k||(b=new a.Installer(l.elementAdded,l.elementRemoved,l.elementChanged,l)),a.touchEvents=l}(window.PointerEventsPolyfill),function(a){var b=a.dispatcher,c=b.pointermap,d=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,e={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(a){b.listen(a,this.events)},unregister:function(a){b.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var c=a;return d&&(c=b.cloneEvent(a),c.pointerType=this.POINTER_TYPES[a.pointerType]),c},cleanup:function(a){c["delete"](a)},MSPointerDown:function(a){c.set(a.pointerId,a);var d=this.prepareEvent(a);b.down(d)},MSPointerMove:function(a){var c=this.prepareEvent(a);b.move(c)},MSPointerUp:function(a){var c=this.prepareEvent(a);b.up(c),this.cleanup(a.pointerId)},MSPointerOut:function(a){var c=this.prepareEvent(a);b.leaveOut(c)},MSPointerOver:function(a){var c=this.prepareEvent(a);b.enterOver(c)},MSPointerCancel:function(a){var c=this.prepareEvent(a);b.cancel(c),this.cleanup(a.pointerId)},MSLostPointerCapture:function(a){var c=b.makeEvent("lostpointercapture",a);b.dispatchEvent(c)},MSGotPointerCapture:function(a){var c=b.makeEvent("gotpointercapture",a);b.dispatchEvent(c)}};a.msEvents=e}(window.PointerEventsPolyfill),function(a){var b=a.dispatcher;if(void 0===window.navigator.pointerEnabled){if(Object.defineProperty(window.navigator,"pointerEnabled",{value:!0,enumerable:!0}),window.navigator.msPointerEnabled){var c=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:c,enumerable:!0}),b.registerSource("ms",a.msEvents)}else b.registerSource("mouse",a.mouseEvents),void 0!==window.ontouchstart&&b.registerSource("touch",a.touchEvents);b.register(document)}}(window.PointerEventsPolyfill),function(a){function b(a){if(!e.pointermap.has(a))throw new Error("InvalidPointerId")}var c,d,e=a.dispatcher,f=window.navigator;f.msPointerEnabled?(c=function(a){b(a),this.msSetPointerCapture(a)},d=function(a){b(a),this.msReleasePointerCapture(a)}):(c=function(a){b(a),e.setCapture(a,this)},d=function(a){b(a),e.releaseCapture(a,this)}),window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:c},releasePointerCapture:{value:d}})}(window.PointerEventsPolyfill),function(a){function b(a){u.push(a),t||(t=!0,q(d))}function c(a){return window.ShadowDOMPolyfill&&window.ShadowDOMPolyfill.wrapIfNeeded(a)||a}function d(){t=!1;var a=u;u=[],a.sort(function(a,b){return a.uid_-b.uid_});var b=!1;a.forEach(function(a){var c=a.takeRecords();e(a),c.length&&(a.callback_(c,a),b=!0)}),b&&d()}function e(a){a.nodes_.forEach(function(b){var c=p.get(b);c&&c.forEach(function(b){b.observer===a&&b.removeTransientObservers()})})}function f(a,b){for(var c=a;c;c=c.parentNode){var d=p.get(c);if(d)for(var e=0;e<d.length;e++){var f=d[e],g=f.options;if(c===a||g.subtree){var h=b(g);h&&f.enqueue(h)}}}}function g(a){this.callback_=a,this.nodes_=[],this.records_=[],this.uid_=++v}function h(a,b){this.type=a,this.target=b,this.addedNodes=[],this.removedNodes=[],this.previousSibling=null,this.nextSibling=null,this.attributeName=null,this.attributeNamespace=null,this.oldValue=null}function i(a){var b=new h(a.type,a.target);return b.addedNodes=a.addedNodes.slice(),b.removedNodes=a.removedNodes.slice(),b.previousSibling=a.previousSibling,b.nextSibling=a.nextSibling,b.attributeName=a.attributeName,b.attributeNamespace=a.attributeNamespace,b.oldValue=a.oldValue,b}function j(a,b){return w=new h(a,b)}function k(a){return x?x:(x=i(w),x.oldValue=a,x)}function l(){w=x=void 0}function m(a){return a===x||a===w}function n(a,b){return a===b?a:x&&m(a)?x:null}function o(a,b,c){this.observer=a,this.target=b,this.options=c,this.transientObservedNodes=[]}var p=new WeakMap,q=window.msSetImmediate;if(!q){var r=[],s=String(Math.random());window.addEventListener("message",function(a){if(a.data===s){var b=r;r=[],b.forEach(function(a){a()})}}),q=function(a){r.push(a),window.postMessage(s,"*")}}var t=!1,u=[],v=0;g.prototype={observe:function(a,b){if(a=c(a),!b.childList&&!b.attributes&&!b.characterData||b.attributeOldValue&&!b.attributes||b.attributeFilter&&b.attributeFilter.length&&!b.attributes||b.characterDataOldValue&&!b.characterData)throw new SyntaxError;var d=p.get(a);d||p.set(a,d=[]);for(var e,f=0;f<d.length;f++)if(d[f].observer===this){e=d[f],e.removeListeners(),e.options=b;break}e||(e=new o(this,a,b),d.push(e),this.nodes_.push(a)),e.addListeners()},disconnect:function(){this.nodes_.forEach(function(a){for(var b=p.get(a),c=0;c<b.length;c++){var d=b[c];if(d.observer===this){d.removeListeners(),b.splice(c,1);break}}},this),this.records_=[]},takeRecords:function(){var a=this.records_;return this.records_=[],a}};var w,x;o.prototype={enqueue:function(a){var c=this.observer.records_,d=c.length;if(c.length>0){var e=c[d-1],f=n(e,a);if(f)return void(c[d-1]=f)}else b(this.observer);c[d]=a},addListeners:function(){this.addListeners_(this.target)},addListeners_:function(a){var b=this.options;b.attributes&&a.addEventListener("DOMAttrModified",this,!0),b.characterData&&a.addEventListener("DOMCharacterDataModified",this,!0),b.childList&&a.addEventListener("DOMNodeInserted",this,!0),(b.childList||b.subtree)&&a.addEventListener("DOMNodeRemoved",this,!0)},removeListeners:function(){this.removeListeners_(this.target)},removeListeners_:function(a){var b=this.options;b.attributes&&a.removeEventListener("DOMAttrModified",this,!0),b.characterData&&a.removeEventListener("DOMCharacterDataModified",this,!0),b.childList&&a.removeEventListener("DOMNodeInserted",this,!0),(b.childList||b.subtree)&&a.removeEventListener("DOMNodeRemoved",this,!0)},addTransientObserver:function(a){if(a!==this.target){this.addListeners_(a),this.transientObservedNodes.push(a);var b=p.get(a);b||p.set(a,b=[]),b.push(this)}},removeTransientObservers:function(){var a=this.transientObservedNodes;this.transientObservedNodes=[],a.forEach(function(a){this.removeListeners_(a);for(var b=p.get(a),c=0;c<b.length;c++)if(b[c]===this){b.splice(c,1);break}},this)},handleEvent:function(a){switch(a.stopImmediatePropagation(),a.type){case"DOMAttrModified":var b=a.attrName,c=a.relatedNode.namespaceURI,d=a.target,e=new j("attributes",d);e.attributeName=b,e.attributeNamespace=c;var g=a.attrChange===MutationEvent.ADDITION?null:a.prevValue;f(d,function(a){return!a.attributes||a.attributeFilter&&a.attributeFilter.length&&-1===a.attributeFilter.indexOf(b)&&-1===a.attributeFilter.indexOf(c)?void 0:a.attributeOldValue?k(g):e});break;case"DOMCharacterDataModified":var d=a.target,e=j("characterData",d),g=a.prevValue;f(d,function(a){return a.characterData?a.characterDataOldValue?k(g):e:void 0});break;case"DOMNodeRemoved":this.addTransientObserver(a.target);case"DOMNodeInserted":var h,i,d=a.relatedNode,m=a.target;"DOMNodeInserted"===a.type?(h=[m],i=[]):(h=[],i=[m]);var n=m.previousSibling,o=m.nextSibling,e=j("childList",d);e.addedNodes=h,e.removedNodes=i,e.previousSibling=n,e.nextSibling=o,f(d,function(a){return a.childList?e:void 0})}l()}},a.JsMutationObserver=g,a.MutationObserver||(a.MutationObserver=g)}(this),window.CustomElements=window.CustomElements||{flags:{}},function(a){function b(a,c,d){var e=a.firstElementChild;if(!e)for(e=a.firstChild;e&&e.nodeType!==Node.ELEMENT_NODE;)e=e.nextSibling;for(;e;)c(e,d)!==!0&&b(e,c,d),e=e.nextElementSibling;return null}function c(a,b){for(var c=a.shadowRoot;c;)d(c,b),c=c.olderShadowRoot}function d(a,d){b(a,function(a){return d(a)?!0:void c(a,d)}),c(a,d)}function e(a){return h(a)?(i(a),!0):void l(a)}function f(a){d(a,function(a){return e(a)?!0:void 0})}function g(a){return e(a)||f(a)}function h(b){if(!b.__upgraded__&&b.nodeType===Node.ELEMENT_NODE){var c=b.getAttribute("is")||b.localName,d=a.registry[c];if(d)return A.dom&&console.group("upgrade:",b.localName),a.upgrade(b),A.dom&&console.groupEnd(),!0}}function i(a){l(a),r(a)&&d(a,function(a){l(a)})}function j(a){if(E.push(a),!D){D=!0;var b=window.Platform&&window.Platform.endOfMicrotask||setTimeout;b(k)}}function k(){D=!1;for(var a,b=E,c=0,d=b.length;d>c&&(a=b[c]);c++)a();E=[]}function l(a){C?j(function(){m(a)}):m(a)}function m(a){(a.attachedCallback||a.detachedCallback||a.__upgraded__&&A.dom)&&(A.dom&&console.group("inserted:",a.localName),r(a)&&(a.__inserted=(a.__inserted||0)+1,a.__inserted<1&&(a.__inserted=1),a.__inserted>1?A.dom&&console.warn("inserted:",a.localName,"insert/remove count:",a.__inserted):a.attachedCallback&&(A.dom&&console.log("inserted:",a.localName),a.attachedCallback())),A.dom&&console.groupEnd())}function n(a){o(a),d(a,function(a){o(a)})}function o(a){C?j(function(){p(a)}):p(a)}function p(a){(a.attachedCallback||a.detachedCallback||a.__upgraded__&&A.dom)&&(A.dom&&console.group("removed:",a.localName),r(a)||(a.__inserted=(a.__inserted||0)-1,a.__inserted>0&&(a.__inserted=0),a.__inserted<0?A.dom&&console.warn("removed:",a.localName,"insert/remove count:",a.__inserted):a.detachedCallback&&a.detachedCallback()),A.dom&&console.groupEnd())}function q(a){return window.ShadowDOMPolyfill?ShadowDOMPolyfill.wrapIfNeeded(a):a}function r(a){for(var b=a,c=q(document);b;){if(b==c)return!0;b=b.parentNode||b.host}}function s(a){if(a.shadowRoot&&!a.shadowRoot.__watched){A.dom&&console.log("watching shadow-root for: ",a.localName);for(var b=a.shadowRoot;b;)t(b),b=b.olderShadowRoot}}function t(a){a.__watched||(w(a),a.__watched=!0)}function u(a){if(A.dom){var b=a[0];if(b&&"childList"===b.type&&b.addedNodes&&b.addedNodes){for(var c=b.addedNodes[0];c&&c!==document&&!c.host;)c=c.parentNode;var d=c&&(c.URL||c._URL||c.host&&c.host.localName)||"";d=d.split("/?").shift().split("/").pop()}console.group("mutations (%d) [%s]",a.length,d||"")}a.forEach(function(a){"childList"===a.type&&(G(a.addedNodes,function(a){a.localName&&g(a)}),G(a.removedNodes,function(a){a.localName&&n(a)}))}),A.dom&&console.groupEnd()}function v(){u(F.takeRecords()),k()}function w(a){F.observe(a,{childList:!0,subtree:!0})}function x(a){w(a)}function y(a){A.dom&&console.group("upgradeDocument: ",a.baseURI.split("/").pop()),g(a),A.dom&&console.groupEnd()}function z(a){a=q(a);for(var b,c=a.querySelectorAll("link[rel="+B+"]"),d=0,e=c.length;e>d&&(b=c[d]);d++)b.import&&b.import.__parsed&&z(b.import);y(a)}var A=window.logFlags||{},B=window.HTMLImports?HTMLImports.IMPORT_LINK_TYPE:"none",C=!window.MutationObserver||window.MutationObserver===window.JsMutationObserver;a.hasPolyfillMutations=C;var D=!1,E=[],F=new MutationObserver(u),G=Array.prototype.forEach.call.bind(Array.prototype.forEach);a.IMPORT_LINK_TYPE=B,a.watchShadow=s,a.upgradeDocumentTree=z,a.upgradeAll=g,a.upgradeSubtree=f,a.insertedNode=i,a.observeDocument=x,a.upgradeDocument=y,a.takeRecords=v}(window.CustomElements),function(a){function b(b,g){var h=g||{};if(!b)throw new Error("document.registerElement: first argument `name` must not be empty");if(b.indexOf("-")<0)throw new Error("document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '"+String(b)+"'.");if(c(b))throw new Error("Failed to execute 'registerElement' on 'Document': Registration failed for type '"+String(b)+"'. The type name is invalid.");if(n(b))throw new Error("DuplicateDefinitionError: a type with name '"+String(b)+"' is already registered");if(!h.prototype)throw new Error("Options missing required prototype property");return h.__name=b.toLowerCase(),h.lifecycle=h.lifecycle||{},h.ancestry=d(h.extends),e(h),f(h),l(h.prototype),o(h.__name,h),h.ctor=p(h),h.ctor.prototype=h.prototype,h.prototype.constructor=h.ctor,a.ready&&a.upgradeDocumentTree(document),h.ctor}function c(a){for(var b=0;b<y.length;b++)if(a===y[b])return!0}function d(a){var b=n(a);return b?d(b.extends).concat([b]):[]}function e(a){for(var b,c=a.extends,d=0;b=a.ancestry[d];d++)c=b.is&&b.tag;a.tag=c||a.__name,c&&(a.is=a.__name)}function f(a){if(!Object.__proto__){var b=HTMLElement.prototype;if(a.is){var c=document.createElement(a.tag);b=Object.getPrototypeOf(c)}for(var d,e=a.prototype;e&&e!==b;){var d=Object.getPrototypeOf(e);e.__proto__=d,e=d}}a.native=b}function g(a){return h(B(a.tag),a)}function h(b,c){return c.is&&b.setAttribute("is",c.is),b.removeAttribute("unresolved"),i(b,c),b.__upgraded__=!0,k(b),a.insertedNode(b),a.upgradeSubtree(b),b}function i(a,b){Object.__proto__?a.__proto__=b.prototype:(j(a,b.prototype,b.native),a.__proto__=b.prototype)}function j(a,b,c){for(var d={},e=b;e!==c&&e!==HTMLElement.prototype;){for(var f,g=Object.getOwnPropertyNames(e),h=0;f=g[h];h++)d[f]||(Object.defineProperty(a,f,Object.getOwnPropertyDescriptor(e,f)),d[f]=1);e=Object.getPrototypeOf(e)}}function k(a){a.createdCallback&&a.createdCallback()}function l(a){if(!a.setAttribute._polyfilled){var b=a.setAttribute;a.setAttribute=function(a,c){m.call(this,a,c,b)};var c=a.removeAttribute;a.removeAttribute=function(a){m.call(this,a,null,c)},a.setAttribute._polyfilled=!0}}function m(a,b,c){var d=this.getAttribute(a);c.apply(this,arguments);var e=this.getAttribute(a);this.attributeChangedCallback&&e!==d&&this.attributeChangedCallback(a,d,e)}function n(a){return a?z[a.toLowerCase()]:void 0}function o(a,b){z[a]=b}function p(a){return function(){return g(a)}}function q(a,b,c){return a===A?r(b,c):C(a,b)}function r(a,b){var c=n(b||a);if(c){if(a==c.tag&&b==c.is)return new c.ctor;if(!b&&!c.is)return new c.ctor}if(b){var d=r(a);return d.setAttribute("is",b),d}var d=B(a);return a.indexOf("-")>=0&&i(d,HTMLElement),d}function s(a){if(!a.__upgraded__&&a.nodeType===Node.ELEMENT_NODE){var b=a.getAttribute("is"),c=n(b||a.localName);if(c){if(b&&c.tag==a.localName)return h(a,c);
+if(!b&&!c.extends)return h(a,c)}}}function t(b){var c=D.call(this,b);return a.upgradeAll(c),c}a||(a=window.CustomElements={flags:{}});var u=a.flags,v=Boolean(document.registerElement),w=!u.register&&v&&!window.ShadowDOMPolyfill;if(w){var x=function(){};a.registry={},a.upgradeElement=x,a.watchShadow=x,a.upgrade=x,a.upgradeAll=x,a.upgradeSubtree=x,a.observeDocument=x,a.upgradeDocument=x,a.upgradeDocumentTree=x,a.takeRecords=x,a.reservedTagList=[]}else{var y=["annotation-xml","color-profile","font-face","font-face-src","font-face-uri","font-face-format","font-face-name","missing-glyph"],z={},A="http://www.w3.org/1999/xhtml",B=document.createElement.bind(document),C=document.createElementNS.bind(document),D=Node.prototype.cloneNode;document.registerElement=b,document.createElement=r,document.createElementNS=q,Node.prototype.cloneNode=t,a.registry=z,a.upgrade=s}var E;E=Object.__proto__||w?function(a,b){return a instanceof b}:function(a,b){for(var c=a;c;){if(c===b.prototype)return!0;c=c.__proto__}return!1},a.instanceof=E,a.reservedTagList=y,document.register=document.registerElement,a.hasNative=v,a.useNative=w}(window.CustomElements),function(a){function b(a){return"link"===a.localName&&a.getAttribute("rel")===c}var c=a.IMPORT_LINK_TYPE,d={selectors:["link[rel="+c+"]"],map:{link:"parseLink"},parse:function(a){if(!a.__parsed){a.__parsed=!0;var b=a.querySelectorAll(d.selectors);e(b,function(a){d[d.map[a.localName]](a)}),CustomElements.upgradeDocument(a),CustomElements.observeDocument(a)}},parseLink:function(a){b(a)&&this.parseImport(a)},parseImport:function(a){a.import&&d.parse(a.import)}},e=Array.prototype.forEach.call.bind(Array.prototype.forEach);a.parser=d,a.IMPORT_LINK_TYPE=c}(window.CustomElements),function(a){function b(){CustomElements.parser.parse(document),CustomElements.upgradeDocument(document);var a=window.Platform&&Platform.endOfMicrotask?Platform.endOfMicrotask:setTimeout;a(function(){CustomElements.ready=!0,CustomElements.readyTime=Date.now(),window.HTMLImports&&(CustomElements.elapsed=CustomElements.readyTime-HTMLImports.readyTime),document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0})),window.HTMLImports&&(HTMLImports.__importsParsingHook=function(a){CustomElements.parser.parse(a.import)})})}if("function"!=typeof window.CustomEvent&&(window.CustomEvent=function(a){var b=document.createEvent("HTMLEvents");return b.initEvent(a,!0,!0),b}),"complete"===document.readyState||a.flags.eager)b();else if("interactive"!==document.readyState||window.attachEvent||window.HTMLImports&&!window.HTMLImports.ready){var c=window.HTMLImports&&!HTMLImports.ready?"HTMLImportsLoaded":"DOMContentLoaded";window.addEventListener(c,b)}else b()}(window.CustomElements),window.HTMLImports=window.HTMLImports||{flags:{}},function(a){var b=(a.path,a.xhr),c=a.flags,d=function(a,b){this.cache={},this.onload=a,this.oncomplete=b,this.inflight=0,this.pending={}};d.prototype={addNodes:function(a){this.inflight+=a.length;for(var b,c=0,d=a.length;d>c&&(b=a[c]);c++)this.require(b);this.checkDone()},addNode:function(a){this.inflight++,this.require(a),this.checkDone()},require:function(a){var b=a.src||a.href;a.__nodeUrl=b,this.dedupe(b,a)||this.fetch(b,a)},dedupe:function(a,b){if(this.pending[a])return this.pending[a].push(b),!0;return this.cache[a]?(this.onload(a,b,this.cache[a]),this.tail(),!0):(this.pending[a]=[b],!1)},fetch:function(a,d){if(c.load&&console.log("fetch",a,d),a.match(/^data:/)){var e=a.split(","),f=e[0],g=e[1];g=f.indexOf(";base64")>-1?atob(g):decodeURIComponent(g),setTimeout(function(){this.receive(a,d,null,g)}.bind(this),0)}else{var h=function(b,c){this.receive(a,d,b,c)}.bind(this);b.load(a,h)}},receive:function(a,b,c,d){this.cache[a]=d;for(var e,f=this.pending[a],g=0,h=f.length;h>g&&(e=f[g]);g++)this.onload(a,e,d),this.tail();this.pending[a]=null},tail:function(){--this.inflight,this.checkDone()},checkDone:function(){this.inflight||this.oncomplete()}},b=b||{async:!0,ok:function(a){return a.status>=200&&a.status<300||304===a.status||0===a.status},load:function(c,d,e){var f=new XMLHttpRequest;return(a.flags.debug||a.flags.bust)&&(c+="?"+Math.random()),f.open("GET",c,b.async),f.addEventListener("readystatechange",function(){4===f.readyState&&d.call(e,!b.ok(f)&&f,f.response||f.responseText,c)}),f.send(),f},loadDocument:function(a,b,c){this.load(a,b,c).responseType="document"}},a.xhr=b,a.Loader=d}(window.HTMLImports),function(a){function b(a){return"link"===a.localName&&a.rel===g}function c(a){var b,c=d(a);try{b=btoa(c)}catch(e){b=btoa(unescape(encodeURIComponent(c))),console.warn("Script contained non-latin characters that were forced to latin. Some characters may be wrong.",a)}return"data:text/javascript;base64,"+b}function d(a){return a.textContent+e(a)}function e(a){var b=a.__nodeUrl;if(!b){b=a.ownerDocument.baseURI;var c="["+Math.floor(1e3*(Math.random()+1))+"]",d=a.textContent.match(/Polymer\(['"]([^'"]*)/);c=d&&d[1]||c,b+="/"+c+".js"}return"\n//# sourceURL="+b+"\n"}function f(a){var b=a.ownerDocument.createElement("style");return b.textContent=a.textContent,n.resolveUrlsInStyle(b),b}var g="import",h=a.flags,i=/Trident/.test(navigator.userAgent),j=window.ShadowDOMPolyfill?window.ShadowDOMPolyfill.wrapIfNeeded(document):document,k={documentSelectors:"link[rel="+g+"]",importsSelectors:["link[rel="+g+"]","link[rel=stylesheet]","style","script:not([type])",'script[type="text/javascript"]'].join(","),map:{link:"parseLink",script:"parseScript",style:"parseStyle"},parseNext:function(){var a=this.nextToParse();a&&this.parse(a)},parse:function(a){if(this.isParsed(a))return void(h.parse&&console.log("[%s] is already parsed",a.localName));var b=this[this.map[a.localName]];b&&(this.markParsing(a),b.call(this,a))},markParsing:function(a){h.parse&&console.log("parsing",a),this.parsingElement=a},markParsingComplete:function(a){a.__importParsed=!0,a.__importElement&&(a.__importElement.__importParsed=!0),this.parsingElement=null,h.parse&&console.log("completed",a),this.parseNext()},parseImport:function(a){if(a.import.__importParsed=!0,HTMLImports.__importsParsingHook&&HTMLImports.__importsParsingHook(a),a.dispatchEvent(a.__resource?new CustomEvent("load",{bubbles:!1}):new CustomEvent("error",{bubbles:!1})),a.__pending)for(var b;a.__pending.length;)b=a.__pending.shift(),b&&b({target:a});this.markParsingComplete(a)},parseLink:function(a){b(a)?this.parseImport(a):(a.href=a.href,this.parseGeneric(a))},parseStyle:function(a){var b=a;a=f(a),a.__importElement=b,this.parseGeneric(a)},parseGeneric:function(a){this.trackElement(a),document.head.appendChild(a)},trackElement:function(a,b){var c=this,d=function(d){b&&b(d),c.markParsingComplete(a)};if(a.addEventListener("load",d),a.addEventListener("error",d),i&&"style"===a.localName){var e=!1;if(-1==a.textContent.indexOf("@import"))e=!0;else if(a.sheet){e=!0;for(var f,g=a.sheet.cssRules,h=g?g.length:0,j=0;h>j&&(f=g[j]);j++)f.type===CSSRule.IMPORT_RULE&&(e=e&&Boolean(f.styleSheet))}e&&a.dispatchEvent(new CustomEvent("load",{bubbles:!1}))}},parseScript:function(b){var d=document.createElement("script");d.__importElement=b,d.src=b.src?b.src:c(b),a.currentScript=b,this.trackElement(d,function(){d.parentNode.removeChild(d),a.currentScript=null}),document.head.appendChild(d)},nextToParse:function(){return!this.parsingElement&&this.nextToParseInDoc(j)},nextToParseInDoc:function(a,c){for(var d,e=a.querySelectorAll(this.parseSelectorsForNode(a)),f=0,g=e.length;g>f&&(d=e[f]);f++)if(!this.isParsed(d))return this.hasResource(d)?b(d)?this.nextToParseInDoc(d.import,d):d:void 0;return c},parseSelectorsForNode:function(a){var b=a.ownerDocument||a;return b===j?this.documentSelectors:this.importsSelectors},isParsed:function(a){return a.__importParsed},hasResource:function(a){return b(a)&&!a.import?!1:!0}},l=/(url\()([^)]*)(\))/g,m=/(@import[\s]+(?!url\())([^;]*)(;)/g,n={resolveUrlsInStyle:function(a){var b=a.ownerDocument,c=b.createElement("a");return a.textContent=this.resolveUrlsInCssText(a.textContent,c),a},resolveUrlsInCssText:function(a,b){var c=this.replaceUrls(a,b,l);return c=this.replaceUrls(c,b,m)},replaceUrls:function(a,b,c){return a.replace(c,function(a,c,d,e){var f=d.replace(/["']/g,"");return b.href=f,f=b.href,c+"'"+f+"'"+e})}};a.parser=k,a.path=n,a.isIE=i}(HTMLImports),function(a){function b(a){return c(a,m)}function c(a,b){return"link"===a.localName&&a.getAttribute("rel")===b}function d(a,b){var c=a;c instanceof Document||(c=document.implementation.createHTMLDocument(m)),c._URL=b;var d=c.createElement("base");d.setAttribute("href",b),c.baseURI||(c.baseURI=b);var e=c.createElement("meta");return e.setAttribute("charset","utf-8"),c.head.appendChild(e),c.head.appendChild(d),a instanceof Document||(c.body.innerHTML=a),window.HTMLTemplateElement&&HTMLTemplateElement.bootstrap&&HTMLTemplateElement.bootstrap(c),c}function e(a,b){b=b||n,g(function(){h(a,b)},b)}function f(a){return"complete"===a.readyState||a.readyState===u}function g(a,b){if(f(b))a&&a();else{var c=function(){("complete"===b.readyState||b.readyState===u)&&(b.removeEventListener(v,c),g(a,b))};b.addEventListener(v,c)}}function h(a,b){function c(){f==g&&requestAnimationFrame(a)}function d(){f++,c()}var e=b.querySelectorAll("link[rel=import]"),f=0,g=e.length;if(g)for(var h,j=0;g>j&&(h=e[j]);j++)i(h)?d.call(h):(h.addEventListener("load",d),h.addEventListener("error",d));else c()}function i(a){return k?a.import&&"loading"!==a.import.readyState:a.__importParsed}var j="import"in document.createElement("link"),k=j,l=a.flags,m="import",n=window.ShadowDOMPolyfill?ShadowDOMPolyfill.wrapIfNeeded(document):document;if(k)var o={};else var p=(a.xhr,a.Loader),q=a.parser,o={documents:{},documentPreloadSelectors:"link[rel="+m+"]",importsPreloadSelectors:["link[rel="+m+"]"].join(","),loadNode:function(a){r.addNode(a)},loadSubtree:function(a){var b=this.marshalNodes(a);r.addNodes(b)},marshalNodes:function(a){return a.querySelectorAll(this.loadSelectorsForNode(a))},loadSelectorsForNode:function(a){var b=a.ownerDocument||a;return b===n?this.documentPreloadSelectors:this.importsPreloadSelectors},loaded:function(a,c,e){if(l.load&&console.log("loaded",a,c),c.__resource=e,b(c)){var f=this.documents[a];f||(f=d(e,a),f.__importLink=c,this.bootDocument(f),this.documents[a]=f),c.import=f}q.parseNext()},bootDocument:function(a){this.loadSubtree(a),this.observe(a),q.parseNext()},loadedAll:function(){q.parseNext()}},r=new p(o.loaded.bind(o),o.loadedAll.bind(o));var s={get:function(){return HTMLImports.currentScript||document.currentScript},configurable:!0};if(Object.defineProperty(document,"_currentScript",s),Object.defineProperty(n,"_currentScript",s),!document.baseURI){var t={get:function(){return window.location.href},configurable:!0};Object.defineProperty(document,"baseURI",t),Object.defineProperty(n,"baseURI",t)}var u=HTMLImports.isIE?"complete":"interactive",v="readystatechange";a.hasNative=j,a.useNative=k,a.importer=o,a.whenImportsReady=e,a.IMPORT_LINK_TYPE=m,a.isImportLoaded=i,a.importLoader=r}(window.HTMLImports),function(a){function b(a){for(var b,d=0,e=a.length;e>d&&(b=a[d]);d++)"childList"===b.type&&b.addedNodes.length&&c(b.addedNodes)}function c(a){for(var b,e=0,g=a.length;g>e&&(b=a[e]);e++)d(b)&&f.loadNode(b),b.children&&b.children.length&&c(b.children)}function d(a){return 1===a.nodeType&&g.call(a,f.loadSelectorsForNode(a))}function e(a){h.observe(a,{childList:!0,subtree:!0})}var f=(a.IMPORT_LINK_TYPE,a.importer),g=HTMLElement.prototype.matches||HTMLElement.prototype.matchesSelector||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector,h=new MutationObserver(b);a.observe=e,f.observe=e}(HTMLImports),function(){function a(){HTMLImports.importer.bootDocument(b)}"function"!=typeof window.CustomEvent&&(window.CustomEvent=function(a,b){var c=document.createEvent("HTMLEvents");return c.initEvent(a,b.bubbles===!1?!1:!0,b.cancelable===!1?!1:!0,b.detail),c});var b=window.ShadowDOMPolyfill?window.ShadowDOMPolyfill.wrapIfNeeded(document):document;HTMLImports.whenImportsReady(function(){HTMLImports.ready=!0,HTMLImports.readyTime=(new Date).getTime(),b.dispatchEvent(new CustomEvent("HTMLImportsLoaded",{bubbles:!0}))}),HTMLImports.useNative||("complete"===document.readyState||"interactive"===document.readyState&&!window.attachEvent?a():document.addEventListener("DOMContentLoaded",a))}(); \ No newline at end of file
diff --git a/chromium/third_party/skia/experimental/webtry/res/js/webtry.js b/chromium/third_party/skia/experimental/webtry/res/js/webtry.js
new file mode 100644
index 00000000000..b24501e1436
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/res/js/webtry.js
@@ -0,0 +1,303 @@
+/**
+ * Common JS that talks XHR back to the server and runs the code and receives
+ * the results.
+ */
+
+
+/**
+ * All the functionality is wrapped up in this anonymous closure, but we need
+ * to be told if we are on the workspace page or a normal try page, so the
+ * workspaceName is passed into the closure, it must be set in the global
+ * namespace. If workspaceName is the empty string then we know we aren't
+ * running on a workspace page.
+ *
+ * If we are on a workspace page we also look for a 'history'
+ * variable in the global namespace which contains the list of tries
+ * that are included in this workspace. That variable is used to
+ * populate the history list.
+ */
+(function() {
+ function onLoad() {
+ var run = document.getElementById('run');
+ var permalink = document.getElementById('permalink');
+ var embed = document.getElementById('embed');
+ var embedButton = document.getElementById('embedButton');
+ var code = document.getElementById('code');
+ var output = document.getElementById('output');
+ var stdout = document.getElementById('stdout');
+ var img = document.getElementById('img');
+ var tryHistory = document.getElementById('tryHistory');
+ var parser = new DOMParser();
+ var tryTemplate = document.getElementById('tryTemplate');
+ var sourcesTemplate = document.getElementById('sourcesTemplate');
+
+ var enableSource = document.getElementById('enableSource');
+ var selectedSource = document.getElementById('selectedSource');
+ var sourceCode = document.getElementById('sourceCode');
+ var chooseSource = document.getElementById('chooseSource');
+ var chooseList = document.getElementById('chooseList');
+
+ // Id of the source image to use, 0 if no source image is used.
+ var sourceId = 0;
+
+ sourceId = parseInt(enableSource.getAttribute('data-id'));
+ if (sourceId) {
+ sourceSelectByID(sourceId);
+ }
+
+
+ function beginWait() {
+ document.body.classList.add('waiting');
+ run.disabled = true;
+ }
+
+
+ function endWait() {
+ document.body.classList.remove('waiting');
+ run.disabled = false;
+ }
+
+
+ function sourceSelectByID(id) {
+ sourceId = id;
+ if (id > 0) {
+ enableSource.checked = true;
+ selectedSource.innerHTML = '<img with=64 height=64 src="/i/image-'+sourceId+'.png" />';
+ selectedSource.classList.add('show');
+ sourceCode.classList.add('show');
+ chooseSource.classList.remove('show');
+ } else {
+ enableSource.checked = false;
+ selectedSource.classList.remove('show');
+ sourceCode.classList.remove('show');
+ }
+ }
+
+
+ /**
+ * A selection has been made in the choiceList.
+ */
+ function sourceSelect() {
+ sourceSelectByID(parseInt(this.getAttribute('data-id')));
+ }
+
+
+ /**
+ * Callback when the loading of the image sources is complete.
+ *
+ * Fills in the list of images from the data returned.
+ */
+ function sourcesComplete(e) {
+ endWait();
+ // The response is JSON of the form:
+ // [
+ // {"id": 1},
+ // {"id": 3},
+ // ...
+ // ]
+ body = JSON.parse(e.target.response);
+ // Clear out the old list if present.
+ while (chooseList.firstChild) {
+ chooseList.removeChild(chooseList.firstChild);
+ }
+ body.forEach(function(source) {
+ var id = 'i'+source.id;
+ var imgsrc = '/i/image-'+source.id+'.png';
+ var clone = sourcesTemplate.content.cloneNode(true);
+ clone.querySelector('img').src = imgsrc;
+ clone.querySelector('button').setAttribute('id', id);
+ clone.querySelector('button').setAttribute('data-id', source.id);
+ chooseList.insertBefore(clone, chooseList.firstChild);
+ chooseList.querySelector('#'+id).addEventListener('click', sourceSelect, true);
+ });
+ chooseSource.classList.add('show');
+ }
+
+
+ /**
+ * Toggle the use of a source image, or select a new source image.
+ *
+ * If enabling source images then load the list of available images via
+ * XHR.
+ */
+ function sourceClick(e) {
+ selectedSource.classList.remove('show');
+ sourceCode.classList.remove('show');
+ if (enableSource.checked) {
+ beginWait();
+ var req = new XMLHttpRequest();
+ req.addEventListener('load', sourcesComplete);
+ req.addEventListener('error', xhrError);
+ req.overrideMimeType('application/json');
+ req.open('GET', '/sources/', true);
+ req.send();
+ } else {
+ sourceId = 0;
+ }
+ }
+
+ enableSource.addEventListener('click', sourceClick, true);
+ selectedSource.addEventListener('click', sourceClick, true);
+
+
+ var editor = CodeMirror.fromTextArea(code, {
+ theme: "default",
+ lineNumbers: true,
+ matchBrackets: true,
+ mode: "text/x-c++src",
+ indentUnit: 4,
+ });
+
+ // Match the initial textarea size.
+ editor.setSize(editor.defaultCharWidth() * code.cols,
+ editor.defaultTextHeight() * code.rows);
+
+
+ /**
+ * Callback when there's an XHR error.
+ * @param e The callback event.
+ */
+ function xhrError(e) {
+ endWait();
+ alert('Something bad happened: ' + e);
+ }
+
+ function clearOutput() {
+ output.textContent = "";
+ if (stdout) {
+ stdout.textContent = "";
+ }
+ embed.style.display='none';
+ }
+
+ /**
+ * Called when an image in the workspace history is clicked.
+ */
+ function historyClick() {
+ beginWait();
+ clearOutput();
+ var req = new XMLHttpRequest();
+ req.addEventListener('load', historyComplete);
+ req.addEventListener('error', xhrError);
+ req.overrideMimeType('application/json');
+ req.open('GET', this.getAttribute('data-try'), true);
+ req.send();
+ }
+
+
+ /**
+ * Callback for when the XHR kicked off in historyClick() returns.
+ */
+ function historyComplete(e) {
+ // The response is JSON of the form:
+ // {
+ // "hash": "unique id for a try",
+ // "code": "source code for try"
+ // }
+ endWait();
+ body = JSON.parse(e.target.response);
+ code.value = body.code;
+ editor.setValue(body.code);
+ img.src = '/i/'+body.hash+'.png';
+ sourceSelectByID(body.source);
+ if (permalink) {
+ permalink.href = '/c/' + body.hash;
+ }
+ }
+
+
+ /**
+ * Add the given try image to the history of a workspace.
+ */
+ function addToHistory(hash, imgUrl) {
+ var clone = tryTemplate.content.cloneNode(true);
+ clone.querySelector('img').src = imgUrl;
+ clone.querySelector('.tries').setAttribute('data-try', '/json/' + hash);
+ tryHistory.insertBefore(clone, tryHistory.firstChild);
+ tryHistory.querySelector('.tries').addEventListener('click', historyClick, true);
+ }
+
+
+ /**
+ * Callback for when the XHR returns after attempting to run the code.
+ * @param e The callback event.
+ */
+ function codeComplete(e) {
+ // The response is JSON of the form:
+ // {
+ // "message": "you had an error...",
+ // "img": "<base64 encoded image but only on success>"
+ // }
+ //
+ // The img is optional and only appears if there is a valid
+ // image to display.
+ endWait();
+ console.log(e.target.response);
+ body = JSON.parse(e.target.response);
+ output.textContent = body.message;
+ if (stdout) {
+ stdout.textContent = body.stdout;
+ }
+ if (body.hasOwnProperty('img')) {
+ img.src = 'data:image/png;base64,' + body.img;
+ } else {
+ img.src = '';
+ }
+ // Add the image to the history if we are on a workspace page.
+ if (tryHistory) {
+ addToHistory(body.hash, 'data:image/png;base64,' + body.img);
+ } else {
+ window.history.pushState(null, null, '/c/' + body.hash);
+ }
+ if (permalink) {
+ permalink.href = '/c/' + body.hash;
+ }
+ if (embed) {
+ var url = document.URL;
+ url = url.replace('/c/', '/iframe/');
+ embed.value = '<iframe src="' + url + '" width="740" height="550" style="border: solid #00a 5px; border-radius: 5px;"/>'
+ }
+ if (embedButton && embedButton.hasAttribute('disabled')) {
+ embedButton.removeAttribute('disabled');
+ }
+ }
+
+
+ function onSubmitCode() {
+ beginWait();
+ clearOutput();
+ var req = new XMLHttpRequest();
+ req.addEventListener('load', codeComplete);
+ req.addEventListener('error', xhrError);
+ req.overrideMimeType('application/json');
+ req.open('POST', '/', true);
+ req.setRequestHeader('content-type', 'application/json');
+ req.send(JSON.stringify({'code': editor.getValue(), 'name': workspaceName, 'source': sourceId}));
+ }
+ run.addEventListener('click', onSubmitCode);
+
+
+ function onEmbedClick() {
+ embed.style.display='inline';
+ }
+
+ if (embedButton) {
+ embedButton.addEventListener('click', onEmbedClick);
+ }
+
+ // Add the images to the history if we are on a workspace page.
+ if (tryHistory && history) {
+ for (var i=0; i<history.length; i++) {
+ addToHistory(history[i].hash, '/i/'+history[i].hash+'.png');
+ }
+ }
+ }
+
+ // If loaded via HTML Imports then DOMContentLoaded will be long done.
+ if (document.readyState != "loading") {
+ onLoad();
+ } else {
+ this.addEventListener('DOMContentLoaded', onLoad);
+ }
+
+})();
diff --git a/chromium/third_party/skia/experimental/webtry/result.cpp b/chromium/third_party/skia/experimental/webtry/result.cpp
new file mode 100644
index 00000000000..cc1c2f6516d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/result.cpp
@@ -0,0 +1,29 @@
+#include "SkCanvas.h"
+#include "SkData.h"
+#include "SkForceLinking.h"
+#include "SkGraphics.h"
+#include "SkImageEncoder.h"
+#include "SkImageInfo.h"
+#include "SkStream.h"
+#include "SkSurface.h"
+
+SkBitmap source;
+
+void draw(SkCanvas* canvas) {
+#line 1
+SkPaint p;
+#line 2
+p.setColor(SK_ColorRED);
+#line 3
+p.setAntiAlias(true);
+#line 4
+p.setStyle(SkPaint::kStroke_Style);
+#line 5
+p.setStrokeWidth(10);
+#line 6
+
+#line 7
+canvas->drawLine(20, 20, 100, 100, p);
+#line 8
+
+}
diff --git a/chromium/third_party/skia/experimental/webtry/safec++ b/chromium/third_party/skia/experimental/webtry/safec++
new file mode 100755
index 00000000000..ec40bed08d2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/safec++
@@ -0,0 +1,7 @@
+#!/bin/bash
+# Limit the amount of time and the core size for the compiler.
+set -e
+
+ulimit -t 5 -c 0
+
+c++ $@
diff --git a/chromium/third_party/skia/experimental/webtry/seccomp_bpf.h b/chromium/third_party/skia/experimental/webtry/seccomp_bpf.h
new file mode 100644
index 00000000000..02bf3cff3a7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/seccomp_bpf.h
@@ -0,0 +1,65 @@
+/*
+ * seccomp example for x86 (32-bit and 64-bit) with BPF macros
+ *
+ * Copyright (c) 2012 The Chromium OS Authors <chromium-os-dev@chromium.org>
+ * Authors:
+ * Will Drewry <wad@chromium.org>
+ * Kees Cook <keescook@chromium.org>
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ * A stripped down version of the file found in this tutorial: http://outflux.net/teach-seccomp/.
+ */
+#ifndef _SECCOMP_BPF_H_
+#define _SECCOMP_BPF_H_
+
+#define _GNU_SOURCE 1
+#include <stdio.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <signal.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <sys/prctl.h>
+#ifndef PR_SET_NO_NEW_PRIVS
+# define PR_SET_NO_NEW_PRIVS 38
+#endif
+
+#include <linux/unistd.h>
+#include <linux/audit.h>
+#include <linux/filter.h>
+#ifdef HAVE_LINUX_SECCOMP_H
+# include <linux/seccomp.h>
+#endif
+#ifndef SECCOMP_MODE_FILTER
+# define SECCOMP_MODE_FILTER 2 /* uses user-supplied filter. */
+# define SECCOMP_RET_KILL 0x00000000U /* kill the task immediately */
+# define SECCOMP_RET_TRAP 0x00030000U /* disallow and force a SIGSYS */
+# define SECCOMP_RET_ALLOW 0x7fff0000U /* allow */
+struct seccomp_data {
+ int nr;
+ __u32 arch;
+ __u64 instruction_pointer;
+ __u64 args[6];
+};
+#endif
+#ifndef SYS_SECCOMP
+# define SYS_SECCOMP 1
+#endif
+
+#define syscall_nr (offsetof(struct seccomp_data, nr))
+
+#define EXAMINE_SYSCALL \
+ BPF_STMT(BPF_LD+BPF_W+BPF_ABS, syscall_nr)
+
+#define ALLOW_SYSCALL(name) \
+ BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, __NR_##name, 0, 1), \
+ BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_ALLOW)
+
+#define KILL_PROCESS \
+ BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL)
+
+#endif /* _SECCOMP_BPF_H_ */
diff --git a/chromium/third_party/skia/experimental/webtry/setup/continue_install b/chromium/third_party/skia/experimental/webtry/setup/continue_install
new file mode 100755
index 00000000000..7891be4d53e
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/setup/continue_install
@@ -0,0 +1,60 @@
+#!/bin/bash
+#
+# Don't execute this script directly, instead it is copied into the webtry
+# user's directory and executed as the user webtry by the webtry_setup.sh
+# script.
+#
+# See the README file for detailed installation instructions.
+cd
+pwd
+
+# Install depot_tools.
+if [ -d depot_tools ]; then
+ (cd depot_tools && git pull);
+else
+ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git;
+fi
+export PATH=$PATH:$HOME/depot_tools
+
+# Install Go
+if [ -d go ]; then
+ echo Go already installed.
+else
+ wget https://go.googlecode.com/files/go1.2.1.linux-amd64.tar.gz
+ tar -xzf go1.2.1.linux-amd64.tar.gz
+fi
+export GOROOT=$HOME/go
+mkdir=$HOME/golib
+export GOPATH=$HOME/golib
+
+export PATH=$PATH:$GOROOT/bin
+
+mkdir /home/webtry/cache
+mkdir /home/webtry/inout
+chmod 777 /home/webtry/inout
+
+# Sometimes you need to test patches on the server, to do that uncomment
+# the following commented out lines and update the PATCH env variable to the
+# name of the codereview to use.
+
+# rm -rf skia
+
+# Checkout the skia code and dependencies.
+mkdir skia
+cd skia
+gclient config --name . https://skia.googlesource.com/skia.git
+gclient sync
+git checkout master
+
+# PATCH=issue196723021_100001.diff
+# rm $PATCH
+# wget https://codereview.chromium.org/download/$PATCH
+# git apply $PATCH
+
+GYP_GENERATORS=ninja ./gyp_skia gyp/webtry.gyp gyp/most.gyp -Dskia_gpu=0
+ninja -C out/Debug webtry
+
+cd experimental/webtry
+
+go get -d
+go build webtry.go
diff --git a/chromium/third_party/skia/experimental/webtry/setup/webtry_setup.sh b/chromium/third_party/skia/experimental/webtry/setup/webtry_setup.sh
new file mode 100755
index 00000000000..34a8051d42c
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/setup/webtry_setup.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+#
+# Script to setup a GCE instance to run the webtry server.
+# For full instructions see the README file.
+sudo apt-get install schroot debootstrap monit squid3
+sudo apt-get install g++ libfreetype6 libfreetype6-dev libpng12-0 libpng12-dev libglu1-mesa-dev mesa-common-dev freeglut3-dev libgif-dev libfontconfig libfontconfig-dev
+
+echo "Adding the webtry user account"
+sudo adduser webtry
+
+sudo cp continue_install /home/webtry/continue_install
+sudo chmod 766 /home/webtry/continue_install
+sudo chown webtry:webtry /home/webtry/continue_install
+sudo su webtry -c /home/webtry/continue_install
+
+sudo mkdir -p /srv/chroot/webtry
+sudo cp /home/webtry/skia/experimental/webtry/sys/webtry_schroot /etc/schroot/chroot.d/webtry
+
+sudo mkdir /srv/chroot/webtry/etc
+sudo mkdir /srv/chroot/webtry/bin
+sudo cp /bin/sh /srv/chroot/webtry/bin/sh
+
+# Copy all the dependent libraries into the schroot.
+sudo cp --parents `ldd /home/webtry/skia/out/Debug/webtry | cut -d " " -f 3` /srv/chroot/webtry
+sudo cp --parents `ldd /bin/sh | cut -d " " -f 3` /srv/chroot/webtry
+
+sudo cp /home/webtry/skia/experimental/webtry/sys/webtry_init /etc/init.d/webtry
+sudo cp /home/webtry/skia/experimental/webtry/sys/webtry_monit /etc/monit/conf.d/webtry
+sudo cp /home/webtry/skia/experimental/webtry/sys/webtry_squid /etc/squid3/squid.conf
+sudo chmod 744 /etc/init.d/webtry
+
+# Confirm that monit is happy.
+sudo monit -t
diff --git a/chromium/third_party/skia/experimental/webtry/sys/webtry_init b/chromium/third_party/skia/experimental/webtry/sys/webtry_init
new file mode 100644
index 00000000000..359e19e46c4
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/sys/webtry_init
@@ -0,0 +1,159 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: webtry
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Start webtry.
+# Description: Web server for trying Skia C++ code.
+### END INIT INFO
+
+# Author: Joe Gregorio <jcgregorio@google.com>
+#
+# Copied from /etc/init.d/skeleton and modified only the following
+# environment variables and updated the start-stop-daemon calls
+# in do_start() to add --make-pidfile, --background, and --chuid.
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="The Skia webtry application."
+NAME=webtry
+DAEMON=/home/webtry/skia/experimental/webtry/$NAME
+DAEMON_ARGS="--use_chroot"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+. /lib/init/vars.sh
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
+# and status_of_proc is working.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON --make-pidfile --background --chuid webtry --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON --make-pidfile --background --chuid webtry --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ status)
+ status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/chromium/third_party/skia/experimental/webtry/sys/webtry_monit b/chromium/third_party/skia/experimental/webtry/sys/webtry_monit
new file mode 100644
index 00000000000..906b0a69ac8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/sys/webtry_monit
@@ -0,0 +1,7 @@
+check process webtry with pidfile /var/run/webtry.pid
+ start program = "/etc/init.d/webtry start"
+ stop program = "/etc/init.d/webtry stop"
+
+check process squid3 with pidfile /var/run/squid3.pid
+ start program = "/etc/init.d/squid3 start"
+ stop program = "/etc/init.d/squid3 stop"
diff --git a/chromium/third_party/skia/experimental/webtry/sys/webtry_schroot b/chromium/third_party/skia/experimental/webtry/sys/webtry_schroot
new file mode 100644
index 00000000000..c2bdfd320d0
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/sys/webtry_schroot
@@ -0,0 +1,9 @@
+[webtry]
+description=Chroot jail for webtry runs.
+type=directory
+directory=/srv/chroot/webtry
+users=default,webtry
+root-groups=default
+personality=linux
+preserve-environment=false
+profile=minimal
diff --git a/chromium/third_party/skia/experimental/webtry/sys/webtry_squid b/chromium/third_party/skia/experimental/webtry/sys/webtry_squid
new file mode 100644
index 00000000000..8dd623ba086
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/sys/webtry_squid
@@ -0,0 +1,6 @@
+http_port 80 accel defaultsite=skfiddle.com
+cache_peer 127.0.0.1 parent 8000 0 no-query originserver name=myAccel
+acl our_sites dstdomain skfiddle.com
+http_access allow our_sites
+cache_peer_access myAccel allow our_sites
+cache_peer_access myAccel deny all
diff --git a/chromium/third_party/skia/experimental/webtry/templates/content.html b/chromium/third_party/skia/experimental/webtry/templates/content.html
new file mode 100644
index 00000000000..0f2177a38a8
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/templates/content.html
@@ -0,0 +1,42 @@
+
+<section id=content>
+
+ <template id=sourcesTemplate>
+ <button id="" class=source><img width=64 height=64 src=''></button>
+ </template>
+ <input type="checkbox" id="enableSource" data-id="{{.Source}}"> Use an input bitmap.
+ <br>
+ <button id=selectedSource></button>
+ <pre id=sourceCode>SkBitmap source;</pre>
+ <div id=chooseSource>
+ Choose an image below or upload a new one to use as an input bitmap.
+ <div id="chooseList">
+ </div>
+ <form action="/sources/" method="post" accept-charset="utf-8" enctype="multipart/form-data">
+ <input type="file" accept="image/*" name="upload" value="" id="upload">
+ <input type="submit" value="Add Image">
+ </form>
+ </div>
+
+ <pre>
+ <textarea spellcheck=false name='code' id='code' rows='15' cols='100'>{{.Code}}</textarea>
+ </pre>
+
+ <input type='button' value='Run' id='run'>
+ <a href='{{if .Hash}}/c/{{.Hash}}{{end}}' target=_blank id=permalink>Share</a>
+
+ <input type='button' value='Embed' id='embedButton' disabled/>
+ <input type="text" value="" id="embed" readonly style="display:none;">
+ <br>
+
+ <p>
+ <img touch-action='none' class='zoom' id='img' src='{{if .Hash}}/i/{{.Hash}}.png{{end}}'/>
+ </p>
+ <p id='zoomHex'></p>
+
+ <h2>Warnings and Errors</h2>
+ <pre><code id='output'></code></pre>
+ <h2>Runtime output</h2>
+ <pre id='stdout'></pre>
+
+</section>
diff --git a/chromium/third_party/skia/experimental/webtry/templates/footercommon.html b/chromium/third_party/skia/experimental/webtry/templates/footercommon.html
new file mode 100644
index 00000000000..47a27647ad3
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/templates/footercommon.html
@@ -0,0 +1,6 @@
+ <link rel='stylesheet' href='/res/css/webtry.css' type='text/css'>
+ <link rel='stylesheet' href='/res/css/cm/codemirror.css' type='text/css'>
+ <script src='/res/js/polyfill.js' type='text/javascript'></script>
+ <script src='/res/js/cm/codemirror.js' type='text/javascript'></script>
+ <script src='/res/js/cm/clike.js' type='text/javascript'></script>
+ <script src='/res/js/webtry.js' type='text/javascript'></script>
diff --git a/chromium/third_party/skia/experimental/webtry/templates/headercommon.html b/chromium/third_party/skia/experimental/webtry/templates/headercommon.html
new file mode 100644
index 00000000000..2c2102d82f7
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/templates/headercommon.html
@@ -0,0 +1,2 @@
+ <meta charset='utf-8' />
+ <meta name=viewport content='width=device-width, initial-scale=1'>
diff --git a/chromium/third_party/skia/experimental/webtry/templates/iframe.html b/chromium/third_party/skia/experimental/webtry/templates/iframe.html
new file mode 100644
index 00000000000..47bfeecfb6d
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/templates/iframe.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Skia WebTry</title>
+ {{template "headercommon.html" .}}
+ <link rel='import' type='text/html' href='/res/imp/zoom.html'>
+</head>
+<body class=iframe>
+ {{template "content.html" .}}
+ <script type='text/javascript'>
+ // Not running in a workspace.
+ var workspaceName = '';
+ </script>
+ {{template "footercommon.html" .}}
+</body>
+</html>
diff --git a/chromium/third_party/skia/experimental/webtry/templates/index.html b/chromium/third_party/skia/experimental/webtry/templates/index.html
new file mode 100644
index 00000000000..58b7e3578d5
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/templates/index.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Skia WebTry</title>
+ {{template "headercommon.html" .}}
+ <link rel='import' type='text/html' href='/res/imp/zoom.html'>
+</head>
+<body>
+ {{template "titlebar.html" .}}
+ {{template "content.html" .}}
+
+ <script type='text/javascript'>
+ // Not running in a workspace.
+ var workspaceName = '';
+ </script>
+ {{template "footercommon.html" .}}
+</body>
+</html>
diff --git a/chromium/third_party/skia/experimental/webtry/templates/recent.html b/chromium/third_party/skia/experimental/webtry/templates/recent.html
new file mode 100644
index 00000000000..d5e4cc72592
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/templates/recent.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Recent SkFiddles</title>
+ <meta charset='utf-8' />
+ {{template "headercommon.html" .}}
+</head>
+<body>
+ {{template "titlebar.html" .}}
+ <section id=content>
+ <h1>Recent Activity</h1>
+ <section>
+ {{range .Tries}}
+ <div class=tries>
+ <h2><a href="/c/{{.Hash}}">{{.CreateTS}}</a></h2>
+ <a href="/c/{{.Hash}}">
+ <img width=128 height=128 src="/i/{{.Hash}}.png">
+ </a>
+ </div>
+ {{end}}
+ </section>
+ </section>
+ {{template "footercommon.html" .}}
+</body>
+</html>
diff --git a/chromium/third_party/skia/experimental/webtry/templates/template.cpp b/chromium/third_party/skia/experimental/webtry/templates/template.cpp
new file mode 100644
index 00000000000..6c5cfa80e9a
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/templates/template.cpp
@@ -0,0 +1,162 @@
+// To regenerate this list of includes run the following command from skia/include:
+//
+// find core effects pathops -maxdepth 1 -name "*.h" | sed "s#^[^\/]*\/##g" | sed "s/\(.*\)/#include \"\1\"/" | sort
+//
+#include "Sk1DPathEffect.h"
+#include "Sk2DPathEffect.h"
+#include "SkAdvancedTypefaceMetrics.h"
+#include "SkAlphaThresholdFilter.h"
+#include "SkAnnotation.h"
+#include "SkArithmeticMode.h"
+#include "SkAvoidXfermode.h"
+#include "SkBBHFactory.h"
+#include "SkBicubicImageFilter.h"
+#include "SkBitmapDevice.h"
+#include "SkBitmap.h"
+#include "SkBitmapSource.h"
+#include "SkBlitRow.h"
+#include "SkBlurDrawLooper.h"
+#include "SkBlurImageFilter.h"
+#include "SkBlurMaskFilter.h"
+#include "SkBlurTypes.h"
+#include "SkCanvas.h"
+#include "SkChecksum.h"
+#include "SkChunkAlloc.h"
+#include "SkClipStack.h"
+#include "SkColorFilter.h"
+#include "SkColorFilterImageFilter.h"
+#include "SkColor.h"
+#include "SkColorMatrixFilter.h"
+#include "SkColorMatrix.h"
+#include "SkColorPriv.h"
+#include "SkColorShader.h"
+#include "SkColorTable.h"
+#include "SkComposeImageFilter.h"
+#include "SkComposeShader.h"
+#include "SkCornerPathEffect.h"
+#include "SkDashPathEffect.h"
+#include "SkData.h"
+#include "SkDataTable.h"
+#include "SkDeque.h"
+#include "SkDevice.h"
+#include "SkDeviceProperties.h"
+#include "SkDiscretePathEffect.h"
+#include "SkDisplacementMapEffect.h"
+#include "SkDither.h"
+#include "SkDocument.h"
+#include "SkDrawExtraPathEffect.h"
+#include "SkDrawFilter.h"
+#include "SkDraw.h"
+#include "SkDrawLooper.h"
+#include "SkDropShadowImageFilter.h"
+#include "SkDynamicAnnotations.h"
+#include "SkEmbossMaskFilter.h"
+#include "SkEmptyShader.h"
+#include "SkEndian.h"
+#include "SkError.h"
+#include "SkFixed.h"
+#include "SkFlate.h"
+#include "SkFlattenableBuffers.h"
+#include "SkFlattenable.h"
+#include "SkFlattenableSerialization.h"
+#include "SkFloatBits.h"
+#include "SkFloatingPoint.h"
+#include "SkFont.h"
+#include "SkFontHost.h"
+#include "SkFontLCDConfig.h"
+#include "SkGeometry.h"
+#include "SkGradientShader.h"
+#include "SkGraphics.h"
+#include "SkImageDecoder.h"
+#include "SkImageEncoder.h"
+#include "SkImageFilter.h"
+#include "SkImageGenerator.h"
+#include "SkImage.h"
+#include "SkImageInfo.h"
+#include "SkInstCnt.h"
+#include "SkLayerDrawLooper.h"
+#include "SkLayerRasterizer.h"
+#include "SkLerpXfermode.h"
+#include "SkLightingImageFilter.h"
+#include "SkLineClipper.h"
+#include "SkLumaColorFilter.h"
+#include "SkMagnifierImageFilter.h"
+#include "SkMallocPixelRef.h"
+#include "SkMaskFilter.h"
+#include "SkMask.h"
+#include "SkMath.h"
+#include "SkMatrixConvolutionImageFilter.h"
+#include "SkMatrix.h"
+#include "SkMatrixImageFilter.h"
+#include "SkMergeImageFilter.h"
+#include "SkMetaData.h"
+#include "SkMorphologyImageFilter.h"
+#include "SkOffsetImageFilter.h"
+#include "SkOnce.h"
+#include "SkOSFile.h"
+#include "SkPackBits.h"
+#include "SkPaintFlagsDrawFilter.h"
+#include "SkPaint.h"
+#include "SkPaintOptionsAndroid.h"
+#include "SkPathEffect.h"
+#include "SkPath.h"
+#include "SkPathMeasure.h"
+#include "SkPathOps.h"
+#include "SkPathRef.h"
+#include "SkPerlinNoiseShader.h"
+#include "SkPicture.h"
+#include "SkPictureImageFilter.h"
+#include "SkPictureRecorder.h"
+#include "SkPixelRef.h"
+#include "SkPixelXorXfermode.h"
+#include "SkPoint.h"
+#include "SkPorterDuff.h"
+#include "SkPostConfig.h"
+#include "SkPreConfig.h"
+#include "SkRasterizer.h"
+#include "SkReadBuffer.h"
+#include "SkReader32.h"
+#include "SkRect.h"
+#include "SkRectShaderImageFilter.h"
+#include "SkRefCnt.h"
+#include "SkRegion.h"
+#include "SkRRect.h"
+#include "SkScalar.h"
+#include "SkShader.h"
+#include "SkSize.h"
+#include "SkStippleMaskFilter.h"
+#include "SkStream.h"
+#include "SkString.h"
+#include "SkStringUtils.h"
+#include "SkStrokeRec.h"
+#include "SkSurface.h"
+#include "SkTableColorFilter.h"
+#include "SkTableMaskFilter.h"
+#include "SkTArray.h"
+#include "SkTDArray.h"
+#include "SkTDict.h"
+#include "SkTDStack.h"
+#include "SkTemplates.h"
+#include "SkTestImageFilters.h"
+#include "SkThread.h"
+#include "SkTileImageFilter.h"
+#include "SkTime.h"
+#include "SkTInternalLList.h"
+#include "SkTLazy.h"
+#include "SkTransparentShader.h"
+#include "SkTRegistry.h"
+#include "SkTSearch.h"
+#include "SkTypeface.h"
+#include "SkTypes.h"
+#include "SkUnPreMultiply.h"
+#include "SkUtils.h"
+#include "SkVertState.h"
+#include "SkWeakRefCnt.h"
+#include "SkWriteBuffer.h"
+#include "SkWriter32.h"
+#include "SkXfermode.h"
+#include "SkXfermodeImageFilter.h"
+
+SkBitmap source;
+
+{{.Code}}
diff --git a/chromium/third_party/skia/experimental/webtry/templates/titlebar.html b/chromium/third_party/skia/experimental/webtry/templates/titlebar.html
new file mode 100644
index 00000000000..73e853d9009
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/templates/titlebar.html
@@ -0,0 +1,8 @@
+ <section id=title>
+ <a href="/">Home</a>
+ <a href="/recent/">Recent</a>
+ <a href="/w/">Workspace</a>
+ <a href="http://chromium-skia-gm.commondatastorage.googleapis.com/doxygen/doxygen/html/classes.html">Doxygen</a>
+ <a href="https://github.com/google/skia/tree/master/experimental/webtry">Code</a>
+ <a id=gitInfo href="https://github.com/google/skia/commit/{{.Titlebar.GitHash}}">{{.Titlebar.GitInfo}}</a>
+ </section>
diff --git a/chromium/third_party/skia/experimental/webtry/templates/workspace.html b/chromium/third_party/skia/experimental/webtry/templates/workspace.html
new file mode 100644
index 00000000000..9694a357b10
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/templates/workspace.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Workspace</title>
+ {{template "headercommon.html" .}}
+ <link rel='import' type='text/html' href='/res/imp/zoom.html'>
+</head>
+<body>
+ <template id=tryTemplate>
+ <div class=tries data-try=''>
+ <img width=64 height=64 src=''>
+ </div>
+ </template>
+ {{template "titlebar.html" .}}
+{{if .Name}}
+ {{template "content.html" .}}
+
+ <section id=tryHistory>
+ </section>
+
+ <script type='text/javascript'>
+ var history = {{.Tries}};
+ </script>
+ <script type='text/javascript'>
+ // Set the workspace name so run.js also updates the history.
+ var workspaceName = '{{.Name}}';
+ </script>
+{{else}}
+ <section id=content>
+ <h1>Create</h1>
+ Create a new workspace:
+ <form action='.' method='POST'>
+ <p><input type='submit' value='Create'></p>
+ </form>
+ </section>
+{{end}}
+ {{template "footercommon.html" .}}
+</body>
+</html>
diff --git a/chromium/third_party/skia/experimental/webtry/webtry.go b/chromium/third_party/skia/experimental/webtry/webtry.go
new file mode 100644
index 00000000000..93e78c42da2
--- /dev/null
+++ b/chromium/third_party/skia/experimental/webtry/webtry.go
@@ -0,0 +1,872 @@
+package main
+
+import (
+ "bytes"
+ "crypto/md5"
+ "database/sql"
+ "encoding/base64"
+ "encoding/binary"
+ "encoding/json"
+ "flag"
+ "fmt"
+ htemplate "html/template"
+ "image"
+ _ "image/gif"
+ _ "image/jpeg"
+ "image/png"
+ "io/ioutil"
+ "log"
+ "math/rand"
+ "net"
+ "net/http"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "regexp"
+ "strings"
+ "text/template"
+ "time"
+)
+
+import (
+ "github.com/fiorix/go-web/autogzip"
+ _ "github.com/go-sql-driver/mysql"
+ _ "github.com/mattn/go-sqlite3"
+ "github.com/rcrowley/go-metrics"
+)
+
+const (
+ RESULT_COMPILE = `../../experimental/webtry/safec++ -DSK_GAMMA_SRGB -DSK_GAMMA_APPLY_TO_A8 -DSK_SCALAR_TO_FLOAT_EXCLUDED -DSK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1 -DSK_SUPPORT_GPU=0 -DSK_SUPPORT_OPENCL=0 -DSK_FORCE_DISTANCEFIELD_FONTS=0 -DSK_SCALAR_IS_FLOAT -DSK_CAN_USE_FLOAT -DSK_SAMPLES_FOR_X -DSK_BUILD_FOR_UNIX -DSK_USE_POSIX_THREADS -DSK_SYSTEM_ZLIB=1 -DSK_DEBUG -DSK_DEVELOPER=1 -I../../src/core -I../../src/images -I../../tools/flags -I../../include/config -I../../include/core -I../../include/pathops -I../../include/pipe -I../../include/effects -I../../include/ports -I../../src/sfnt -I../../include/utils -I../../src/utils -I../../include/images -g -fno-exceptions -fstrict-aliasing -Wall -Wextra -Winit-self -Wpointer-arith -Wno-unused-parameter -m64 -fno-rtti -Wnon-virtual-dtor -c ../../../cache/%s.cpp -o ../../../cache/%s.o`
+ LINK = `../../experimental/webtry/safec++ -m64 -lstdc++ -lm -o ../../../inout/%s -Wl,--start-group ../../../cache/%s.o obj/experimental/webtry/webtry.main.o obj/gyp/libflags.a libskia_images.a libskia_core.a libskia_effects.a obj/gyp/libjpeg.a obj/gyp/libetc1.a obj/gyp/libSkKTX.a obj/gyp/libwebp_dec.a obj/gyp/libwebp_demux.a obj/gyp/libwebp_dsp.a obj/gyp/libwebp_enc.a obj/gyp/libwebp_utils.a libskia_utils.a libskia_opts.a libskia_opts_ssse3.a libskia_ports.a libskia_sfnt.a -Wl,--end-group -lpng -lz -lgif -lpthread -lfontconfig -ldl -lfreetype`
+
+ DEFAULT_SAMPLE = `void draw(SkCanvas* canvas) {
+ SkPaint p;
+ p.setColor(SK_ColorRED);
+ p.setAntiAlias(true);
+ p.setStyle(SkPaint::kStroke_Style);
+ p.setStrokeWidth(10);
+
+ canvas->drawLine(20, 20, 100, 100, p);
+}`
+ // Don't increase above 2^16 w/o altering the db tables to accept something bigger than TEXT.
+ MAX_TRY_SIZE = 64000
+)
+
+var (
+ // codeTemplate is the cpp code template the user's code is copied into.
+ codeTemplate *template.Template = nil
+
+ // indexTemplate is the main index.html page we serve.
+ indexTemplate *htemplate.Template = nil
+
+ // iframeTemplate is the main index.html page we serve.
+ iframeTemplate *htemplate.Template = nil
+
+ // recentTemplate is a list of recent images.
+ recentTemplate *htemplate.Template = nil
+
+ // workspaceTemplate is the page for workspaces, a series of webtrys.
+ workspaceTemplate *htemplate.Template = nil
+
+ // db is the database, nil if we don't have an SQL database to store data into.
+ db *sql.DB = nil
+
+ // directLink is the regex that matches URLs paths that are direct links.
+ directLink = regexp.MustCompile("^/c/([a-f0-9]+)$")
+
+ // iframeLink is the regex that matches URLs paths that are links to iframes.
+ iframeLink = regexp.MustCompile("^/iframe/([a-f0-9]+)$")
+
+ // imageLink is the regex that matches URLs paths that are direct links to PNGs.
+ imageLink = regexp.MustCompile("^/i/([a-z0-9-]+.png)$")
+
+ // tryInfoLink is the regex that matches URLs paths that are direct links to data about a single try.
+ tryInfoLink = regexp.MustCompile("^/json/([a-f0-9]+)$")
+
+ // workspaceLink is the regex that matches URLs paths for workspaces.
+ workspaceLink = regexp.MustCompile("^/w/([a-z0-9-]+)$")
+
+ // workspaceNameAdj is a list of adjectives for building workspace names.
+ workspaceNameAdj = []string{
+ "autumn", "hidden", "bitter", "misty", "silent", "empty", "dry", "dark",
+ "summer", "icy", "delicate", "quiet", "white", "cool", "spring", "winter",
+ "patient", "twilight", "dawn", "crimson", "wispy", "weathered", "blue",
+ "billowing", "broken", "cold", "damp", "falling", "frosty", "green",
+ "long", "late", "lingering", "bold", "little", "morning", "muddy", "old",
+ "red", "rough", "still", "small", "sparkling", "throbbing", "shy",
+ "wandering", "withered", "wild", "black", "young", "holy", "solitary",
+ "fragrant", "aged", "snowy", "proud", "floral", "restless", "divine",
+ "polished", "ancient", "purple", "lively", "nameless",
+ }
+
+ // workspaceNameNoun is a list of nouns for building workspace names.
+ workspaceNameNoun = []string{
+ "waterfall", "river", "breeze", "moon", "rain", "wind", "sea", "morning",
+ "snow", "lake", "sunset", "pine", "shadow", "leaf", "dawn", "glitter",
+ "forest", "hill", "cloud", "meadow", "sun", "glade", "bird", "brook",
+ "butterfly", "bush", "dew", "dust", "field", "fire", "flower", "firefly",
+ "feather", "grass", "haze", "mountain", "night", "pond", "darkness",
+ "snowflake", "silence", "sound", "sky", "shape", "surf", "thunder",
+ "violet", "water", "wildflower", "wave", "water", "resonance", "sun",
+ "wood", "dream", "cherry", "tree", "fog", "frost", "voice", "paper",
+ "frog", "smoke", "star",
+ }
+
+ gitHash = ""
+ gitInfo = ""
+
+ requestsCounter = metrics.NewRegisteredCounter("requests", metrics.DefaultRegistry)
+)
+
+// flags
+var (
+ useChroot = flag.Bool("use_chroot", false, "Run the compiled code in the schroot jail.")
+ port = flag.String("port", ":8000", "HTTP service address (e.g., ':8000')")
+)
+
+// lineNumbers adds #line numbering to the user's code.
+func LineNumbers(c string) string {
+ lines := strings.Split(c, "\n")
+ ret := []string{}
+ for i, line := range lines {
+ ret = append(ret, fmt.Sprintf("#line %d", i+1))
+ ret = append(ret, line)
+ }
+ return strings.Join(ret, "\n")
+}
+
+func init() {
+ rand.Seed(time.Now().UnixNano())
+
+ // Change the current working directory to the directory of the executable.
+ var err error
+ cwd, err := filepath.Abs(filepath.Dir(os.Args[0]))
+ if err != nil {
+ log.Fatal(err)
+ }
+ os.Chdir(cwd)
+
+ codeTemplate, err = template.ParseFiles(filepath.Join(cwd, "templates/template.cpp"))
+ if err != nil {
+ panic(err)
+ }
+ indexTemplate, err = htemplate.ParseFiles(
+ filepath.Join(cwd, "templates/index.html"),
+ filepath.Join(cwd, "templates/titlebar.html"),
+ filepath.Join(cwd, "templates/content.html"),
+ filepath.Join(cwd, "templates/headercommon.html"),
+ filepath.Join(cwd, "templates/footercommon.html"),
+ )
+ if err != nil {
+ panic(err)
+ }
+ iframeTemplate, err = htemplate.ParseFiles(
+ filepath.Join(cwd, "templates/iframe.html"),
+ filepath.Join(cwd, "templates/content.html"),
+ filepath.Join(cwd, "templates/headercommon.html"),
+ filepath.Join(cwd, "templates/footercommon.html"),
+ )
+ if err != nil {
+ panic(err)
+ }
+ recentTemplate, err = htemplate.ParseFiles(
+ filepath.Join(cwd, "templates/recent.html"),
+ filepath.Join(cwd, "templates/titlebar.html"),
+ filepath.Join(cwd, "templates/headercommon.html"),
+ filepath.Join(cwd, "templates/footercommon.html"),
+ )
+ if err != nil {
+ panic(err)
+ }
+ workspaceTemplate, err = htemplate.ParseFiles(
+ filepath.Join(cwd, "templates/workspace.html"),
+ filepath.Join(cwd, "templates/titlebar.html"),
+ filepath.Join(cwd, "templates/content.html"),
+ filepath.Join(cwd, "templates/headercommon.html"),
+ filepath.Join(cwd, "templates/footercommon.html"),
+ )
+ if err != nil {
+ panic(err)
+ }
+
+ // The git command returns output of the format:
+ //
+ // f672cead70404080a991ebfb86c38316a4589b23 2014-04-27 19:21:51 +0000
+ //
+ logOutput, err := doCmd(`git log --format=%H%x20%ai HEAD^..HEAD`, true)
+ if err != nil {
+ panic(err)
+ }
+ logInfo := strings.Split(logOutput, " ")
+ gitHash = logInfo[0]
+ gitInfo = logInfo[1] + " " + logInfo[2] + " " + logInfo[0][0:6]
+
+ // Connect to MySQL server. First, get the password from the metadata server.
+ // See https://developers.google.com/compute/docs/metadata#custom.
+ req, err := http.NewRequest("GET", "http://metadata/computeMetadata/v1/instance/attributes/password", nil)
+ if err != nil {
+ panic(err)
+ }
+ client := http.Client{}
+ req.Header.Add("X-Google-Metadata-Request", "True")
+ if resp, err := client.Do(req); err == nil {
+ password, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ log.Printf("ERROR: Failed to read password from metadata server: %q\n", err)
+ panic(err)
+ }
+ // The IP address of the database is found here:
+ // https://console.developers.google.com/project/31977622648/sql/instances/webtry/overview
+ // And 3306 is the default port for MySQL.
+ db, err = sql.Open("mysql", fmt.Sprintf("webtry:%s@tcp(173.194.83.52:3306)/webtry?parseTime=true", password))
+ if err != nil {
+ log.Printf("ERROR: Failed to open connection to SQL server: %q\n", err)
+ panic(err)
+ }
+ } else {
+ log.Printf("INFO: Failed to find metadata, unable to connect to MySQL server (Expected when running locally): %q\n", err)
+ // Fallback to sqlite for local use.
+ db, err = sql.Open("sqlite3", "./webtry.db")
+ if err != nil {
+ log.Printf("ERROR: Failed to open: %q\n", err)
+ panic(err)
+ }
+ sql := `CREATE TABLE source_images (
+ id INTEGER PRIMARY KEY NOT NULL,
+ image MEDIUMBLOB DEFAULT '' NOT NULL, -- formatted as a PNG.
+ width INTEGER DEFAULT 0 NOT NULL,
+ height INTEGER DEFAULT 0 NOT NULL,
+ create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
+ hidden INTEGER DEFAULT 0 NOT NULL
+ )`
+ _, err = db.Exec(sql)
+ log.Printf("Info: status creating sqlite table for sources: %q\n", err)
+
+ sql = `CREATE TABLE webtry (
+ code TEXT DEFAULT '' NOT NULL,
+ create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
+ hash CHAR(64) DEFAULT '' NOT NULL,
+ source_image_id INTEGER DEFAULT 0 NOT NULL,
+
+ PRIMARY KEY(hash)
+ )`
+ _, err = db.Exec(sql)
+ log.Printf("Info: status creating sqlite table for webtry: %q\n", err)
+
+ sql = `CREATE TABLE workspace (
+ name CHAR(64) DEFAULT '' NOT NULL,
+ create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
+ PRIMARY KEY(name)
+ )`
+ _, err = db.Exec(sql)
+ log.Printf("Info: status creating sqlite table for workspace: %q\n", err)
+
+ sql = `CREATE TABLE workspacetry (
+ name CHAR(64) DEFAULT '' NOT NULL,
+ create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
+ hash CHAR(64) DEFAULT '' NOT NULL,
+ hidden INTEGER DEFAULT 0 NOT NULL,
+ source_image_id INTEGER DEFAULT 0 NOT NULL,
+
+ FOREIGN KEY (name) REFERENCES workspace(name)
+ )`
+ _, err = db.Exec(sql)
+ log.Printf("Info: status creating sqlite table for workspace try: %q\n", err)
+ }
+
+ // Ping the database to keep the connection fresh.
+ go func() {
+ c := time.Tick(1 * time.Minute)
+ for _ = range c {
+ if err := db.Ping(); err != nil {
+ log.Printf("ERROR: Database failed to respond: %q\n", err)
+ }
+ }
+ }()
+
+ metrics.RegisterRuntimeMemStats(metrics.DefaultRegistry)
+ go metrics.CaptureRuntimeMemStats(metrics.DefaultRegistry, 1*time.Minute)
+
+ // Start reporting metrics.
+ // TODO(jcgregorio) We need a centrialized config server for storing things
+ // like the IP address of the Graphite monitor.
+ addr, _ := net.ResolveTCPAddr("tcp", "skia-monitoring-b:2003")
+ go metrics.Graphite(metrics.DefaultRegistry, 1*time.Minute, "webtry", addr)
+
+ writeOutAllSourceImages()
+}
+
+func writeOutAllSourceImages() {
+ // Pull all the source images from the db and write them out to inout.
+ rows, err := db.Query("SELECT id, image, create_ts FROM source_images ORDER BY create_ts DESC")
+
+ if err != nil {
+ log.Printf("ERROR: Failed to open connection to SQL server: %q\n", err)
+ panic(err)
+ }
+ for rows.Next() {
+ var id int
+ var image []byte
+ var create_ts time.Time
+ if err := rows.Scan(&id, &image, &create_ts); err != nil {
+ log.Printf("Error: failed to fetch from database: %q", err)
+ continue
+ }
+ filename := fmt.Sprintf("../../../inout/image-%d.png", id)
+ if _, err := os.Stat(filename); os.IsExist(err) {
+ log.Printf("Skipping write since file exists: %q", filename)
+ continue
+ }
+ if err := ioutil.WriteFile(filename, image, 0666); err != nil {
+ log.Printf("Error: failed to write image file: %q", err)
+ }
+ }
+}
+
+// Titlebar is used in titlebar template expansion.
+type Titlebar struct {
+ GitHash string
+ GitInfo string
+}
+
+// userCode is used in template expansion.
+type userCode struct {
+ Code string
+ Hash string
+ Source int
+ Titlebar Titlebar
+}
+
+// expandToFile expands the template and writes the result to the file.
+func expandToFile(filename string, code string, t *template.Template) error {
+ f, err := os.Create(filename)
+ if err != nil {
+ return err
+ }
+ defer f.Close()
+ return t.Execute(f, userCode{Code: code, Titlebar: Titlebar{GitHash: gitHash, GitInfo: gitInfo}})
+}
+
+// expandCode expands the template into a file and calculates the MD5 hash.
+func expandCode(code string, source int) (string, error) {
+ h := md5.New()
+ h.Write([]byte(code))
+ binary.Write(h, binary.LittleEndian, int64(source))
+ hash := fmt.Sprintf("%x", h.Sum(nil))
+ // At this point we are running in skia/experimental/webtry, making cache a
+ // peer directory to skia.
+ // TODO(jcgregorio) Make all relative directories into flags.
+ err := expandToFile(fmt.Sprintf("../../../cache/%s.cpp", hash), code, codeTemplate)
+ return hash, err
+}
+
+// response is serialized to JSON as a response to POSTs.
+type response struct {
+ Message string `json:"message"`
+ StdOut string `json:"stdout"`
+ Img string `json:"img"`
+ Hash string `json:"hash"`
+}
+
+// doCmd executes the given command line string in either the out/Debug
+// directory or the inout directory. Returns the stdout and stderr.
+func doCmd(commandLine string, moveToDebug bool) (string, error) {
+ log.Printf("Command: %q\n", commandLine)
+ programAndArgs := strings.SplitN(commandLine, " ", 2)
+ program := programAndArgs[0]
+ args := []string{}
+ if len(programAndArgs) > 1 {
+ args = strings.Split(programAndArgs[1], " ")
+ }
+ cmd := exec.Command(program, args...)
+ abs, err := filepath.Abs("../../out/Debug")
+ if err != nil {
+ return "", fmt.Errorf("Failed to find absolute path to Debug directory.")
+ }
+ if moveToDebug {
+ cmd.Dir = abs
+ } else if !*useChroot { // Don't set cmd.Dir when using chroot.
+ abs, err := filepath.Abs("../../../inout")
+ if err != nil {
+ return "", fmt.Errorf("Failed to find absolute path to inout directory.")
+ }
+ cmd.Dir = abs
+ }
+ log.Printf("Run in directory: %q\n", cmd.Dir)
+ message, err := cmd.CombinedOutput()
+ log.Printf("StdOut + StdErr: %s\n", string(message))
+ if err != nil {
+ log.Printf("Exit status: %s\n", err.Error())
+ return string(message), fmt.Errorf("Failed to run command.")
+ }
+ return string(message), nil
+}
+
+// reportError formats an HTTP error response and also logs the detailed error message.
+func reportError(w http.ResponseWriter, r *http.Request, err error, message string) {
+ log.Printf("Error: %s\n%s", message, err.Error())
+ w.Header().Set("Content-Type", "text/plain")
+ http.Error(w, message, 500)
+}
+
+// reportTryError formats an HTTP error response in JSON and also logs the detailed error message.
+func reportTryError(w http.ResponseWriter, r *http.Request, err error, message, hash string) {
+ m := response{
+ Message: message,
+ Hash: hash,
+ }
+ log.Printf("Error: %s\n%s", message, err.Error())
+ resp, err := json.Marshal(m)
+ if err != nil {
+ http.Error(w, "Failed to serialize a response", 500)
+ return
+ }
+ w.Header().Set("Content-Type", "text/plain")
+ w.Write(resp)
+}
+
+func writeToDatabase(hash string, code string, workspaceName string, source int) {
+ if db == nil {
+ return
+ }
+ if _, err := db.Exec("INSERT INTO webtry (code, hash, source_image_id) VALUES(?, ?, ?)", code, hash, source); err != nil {
+ log.Printf("ERROR: Failed to insert code into database: %q\n", err)
+ }
+ if workspaceName != "" {
+ if _, err := db.Exec("INSERT INTO workspacetry (name, hash, source_image_id) VALUES(?, ?, ?)", workspaceName, hash, source); err != nil {
+ log.Printf("ERROR: Failed to insert into workspacetry table: %q\n", err)
+ }
+ }
+}
+
+type Sources struct {
+ Id int `json:"id"`
+}
+
+// sourcesHandler serves up the PNG of a specific try.
+func sourcesHandler(w http.ResponseWriter, r *http.Request) {
+ log.Printf("Sources Handler: %q\n", r.URL.Path)
+ if r.Method == "GET" {
+ rows, err := db.Query("SELECT id, create_ts FROM source_images WHERE hidden=0 ORDER BY create_ts DESC")
+
+ if err != nil {
+ http.Error(w, fmt.Sprintf("Failed to query sources: %s.", err), 500)
+ }
+ sources := make([]Sources, 0, 0)
+ for rows.Next() {
+ var id int
+ var create_ts time.Time
+ if err := rows.Scan(&id, &create_ts); err != nil {
+ log.Printf("Error: failed to fetch from database: %q", err)
+ continue
+ }
+ sources = append(sources, Sources{Id: id})
+ }
+
+ resp, err := json.Marshal(sources)
+ if err != nil {
+ reportError(w, r, err, "Failed to serialize a response.")
+ return
+ }
+ w.Header().Set("Content-Type", "application/json")
+ w.Write(resp)
+
+ } else if r.Method == "POST" {
+ if err := r.ParseMultipartForm(1000000); err != nil {
+ http.Error(w, fmt.Sprintf("Failed to load image: %s.", err), 500)
+ return
+ }
+ if _, ok := r.MultipartForm.File["upload"]; !ok {
+ http.Error(w, "Invalid upload.", 500)
+ return
+ }
+ if len(r.MultipartForm.File["upload"]) != 1 {
+ http.Error(w, "Wrong number of uploads.", 500)
+ return
+ }
+ f, err := r.MultipartForm.File["upload"][0].Open()
+ if err != nil {
+ http.Error(w, fmt.Sprintf("Failed to load image: %s.", err), 500)
+ return
+ }
+ defer f.Close()
+ m, _, err := image.Decode(f)
+ if err != nil {
+ http.Error(w, fmt.Sprintf("Failed to decode image: %s.", err), 500)
+ return
+ }
+ var b bytes.Buffer
+ png.Encode(&b, m)
+ bounds := m.Bounds()
+ width := bounds.Max.Y - bounds.Min.Y
+ height := bounds.Max.X - bounds.Min.X
+ if _, err := db.Exec("INSERT INTO source_images (image, width, height) VALUES(?, ?, ?)", b.Bytes(), width, height); err != nil {
+ log.Printf("ERROR: Failed to insert sources into database: %q\n", err)
+ http.Error(w, fmt.Sprintf("Failed to store image: %s.", err), 500)
+ return
+ }
+ go writeOutAllSourceImages()
+
+ // Now redirect back to where we came from.
+ http.Redirect(w, r, r.Referer(), 302)
+ } else {
+ http.NotFound(w, r)
+ return
+ }
+}
+
+// imageHandler serves up the PNG of a specific try.
+func imageHandler(w http.ResponseWriter, r *http.Request) {
+ log.Printf("Image Handler: %q\n", r.URL.Path)
+ if r.Method != "GET" {
+ http.NotFound(w, r)
+ return
+ }
+ match := imageLink.FindStringSubmatch(r.URL.Path)
+ if len(match) != 2 {
+ http.NotFound(w, r)
+ return
+ }
+ filename := match[1]
+ w.Header().Set("Content-Type", "image/png")
+ http.ServeFile(w, r, fmt.Sprintf("../../../inout/%s", filename))
+}
+
+type Try struct {
+ Hash string `json:"hash"`
+ Source int
+ CreateTS string `json:"create_ts"`
+}
+
+type Recent struct {
+ Tries []Try
+ Titlebar Titlebar
+}
+
+// recentHandler shows the last 20 tries.
+func recentHandler(w http.ResponseWriter, r *http.Request) {
+ log.Printf("Recent Handler: %q\n", r.URL.Path)
+
+ var err error
+ rows, err := db.Query("SELECT create_ts, hash FROM webtry ORDER BY create_ts DESC LIMIT 20")
+ if err != nil {
+ http.NotFound(w, r)
+ return
+ }
+ recent := []Try{}
+ for rows.Next() {
+ var hash string
+ var create_ts time.Time
+ if err := rows.Scan(&create_ts, &hash); err != nil {
+ log.Printf("Error: failed to fetch from database: %q", err)
+ continue
+ }
+ recent = append(recent, Try{Hash: hash, CreateTS: create_ts.Format("2006-02-01")})
+ }
+ w.Header().Set("Content-Type", "text/html")
+ if err := recentTemplate.Execute(w, Recent{Tries: recent, Titlebar: Titlebar{GitHash: gitHash, GitInfo: gitInfo}}); err != nil {
+ log.Printf("ERROR: Failed to expand template: %q\n", err)
+ }
+}
+
+type Workspace struct {
+ Name string
+ Code string
+ Hash string
+ Source int
+ Tries []Try
+ Titlebar Titlebar
+}
+
+// newWorkspace generates a new random workspace name and stores it in the database.
+func newWorkspace() (string, error) {
+ for i := 0; i < 10; i++ {
+ adj := workspaceNameAdj[rand.Intn(len(workspaceNameAdj))]
+ noun := workspaceNameNoun[rand.Intn(len(workspaceNameNoun))]
+ suffix := rand.Intn(1000)
+ name := fmt.Sprintf("%s-%s-%d", adj, noun, suffix)
+ if _, err := db.Exec("INSERT INTO workspace (name) VALUES(?)", name); err == nil {
+ return name, nil
+ } else {
+ log.Printf("ERROR: Failed to insert workspace into database: %q\n", err)
+ }
+ }
+ return "", fmt.Errorf("Failed to create a new workspace")
+}
+
+// getCode returns the code for a given hash, or the empty string if not found.
+func getCode(hash string) (string, int, error) {
+ code := ""
+ source := 0
+ if err := db.QueryRow("SELECT code, source_image_id FROM webtry WHERE hash=?", hash).Scan(&code, &source); err != nil {
+ log.Printf("ERROR: Code for hash is missing: %q\n", err)
+ return code, source, err
+ }
+ return code, source, nil
+}
+
+func workspaceHandler(w http.ResponseWriter, r *http.Request) {
+ log.Printf("Workspace Handler: %q\n", r.URL.Path)
+ if r.Method == "GET" {
+ tries := []Try{}
+ match := workspaceLink.FindStringSubmatch(r.URL.Path)
+ name := ""
+ if len(match) == 2 {
+ name = match[1]
+ rows, err := db.Query("SELECT create_ts, hash, source_image_id FROM workspacetry WHERE name=? ORDER BY create_ts", name)
+ if err != nil {
+ reportError(w, r, err, "Failed to select.")
+ return
+ }
+ for rows.Next() {
+ var hash string
+ var create_ts time.Time
+ var source int
+ if err := rows.Scan(&create_ts, &hash, &source); err != nil {
+ log.Printf("Error: failed to fetch from database: %q", err)
+ continue
+ }
+ tries = append(tries, Try{Hash: hash, Source: source, CreateTS: create_ts.Format("2006-02-01")})
+ }
+ }
+ var code string
+ var hash string
+ source := 0
+ if len(tries) == 0 {
+ code = DEFAULT_SAMPLE
+ } else {
+ hash = tries[len(tries)-1].Hash
+ code, source, _ = getCode(hash)
+ }
+ w.Header().Set("Content-Type", "text/html")
+ if err := workspaceTemplate.Execute(w, Workspace{Tries: tries, Code: code, Name: name, Hash: hash, Source: source, Titlebar: Titlebar{GitHash: gitHash, GitInfo: gitInfo}}); err != nil {
+ log.Printf("ERROR: Failed to expand template: %q\n", err)
+ }
+ } else if r.Method == "POST" {
+ name, err := newWorkspace()
+ if err != nil {
+ http.Error(w, "Failed to create a new workspace.", 500)
+ return
+ }
+ http.Redirect(w, r, "/w/"+name, 302)
+ }
+}
+
+// hasPreProcessor returns true if any line in the code begins with a # char.
+func hasPreProcessor(code string) bool {
+ lines := strings.Split(code, "\n")
+ for _, s := range lines {
+ if strings.HasPrefix(strings.TrimSpace(s), "#") {
+ return true
+ }
+ }
+ return false
+}
+
+type TryRequest struct {
+ Code string `json:"code"`
+ Name string `json:"name"` // Optional name of the workspace the code is in.
+ Source int `json:"source"` // ID of the source image, 0 if none.
+}
+
+// iframeHandler handles the GET and POST of the main page.
+func iframeHandler(w http.ResponseWriter, r *http.Request) {
+ log.Printf("IFrame Handler: %q\n", r.URL.Path)
+ if r.Method != "GET" {
+ http.NotFound(w, r)
+ return
+ }
+ match := iframeLink.FindStringSubmatch(r.URL.Path)
+ if len(match) != 2 {
+ http.NotFound(w, r)
+ return
+ }
+ hash := match[1]
+ if db == nil {
+ http.NotFound(w, r)
+ return
+ }
+ var code string
+ code, source, err := getCode(hash)
+ if err != nil {
+ http.NotFound(w, r)
+ return
+ }
+ // Expand the template.
+ w.Header().Set("Content-Type", "text/html")
+ if err := iframeTemplate.Execute(w, userCode{Code: code, Hash: hash, Source: source}); err != nil {
+ log.Printf("ERROR: Failed to expand template: %q\n", err)
+ }
+}
+
+type TryInfo struct {
+ Hash string `json:"hash"`
+ Code string `json:"code"`
+ Source int `json:"source"`
+}
+
+// tryInfoHandler returns information about a specific try.
+func tryInfoHandler(w http.ResponseWriter, r *http.Request) {
+ log.Printf("Try Info Handler: %q\n", r.URL.Path)
+ if r.Method != "GET" {
+ http.NotFound(w, r)
+ return
+ }
+ match := tryInfoLink.FindStringSubmatch(r.URL.Path)
+ if len(match) != 2 {
+ http.NotFound(w, r)
+ return
+ }
+ hash := match[1]
+ code, source, err := getCode(hash)
+ if err != nil {
+ http.NotFound(w, r)
+ return
+ }
+ m := TryInfo{
+ Hash: hash,
+ Code: code,
+ Source: source,
+ }
+ resp, err := json.Marshal(m)
+ if err != nil {
+ reportError(w, r, err, "Failed to serialize a response.")
+ return
+ }
+ w.Header().Set("Content-Type", "application/json")
+ w.Write(resp)
+}
+
+func cleanCompileOutput(s, hash string) string {
+ old := "../../../cache/" + hash + ".cpp:"
+ log.Printf("INFO: replacing %q\n", old)
+ return strings.Replace(s, old, "usercode.cpp:", -1)
+}
+
+// mainHandler handles the GET and POST of the main page.
+func mainHandler(w http.ResponseWriter, r *http.Request) {
+ log.Printf("Main Handler: %q\n", r.URL.Path)
+ requestsCounter.Inc(1)
+ if r.Method == "GET" {
+ code := DEFAULT_SAMPLE
+ source := 0
+ match := directLink.FindStringSubmatch(r.URL.Path)
+ var hash string
+ if len(match) == 2 && r.URL.Path != "/" {
+ hash = match[1]
+ if db == nil {
+ http.NotFound(w, r)
+ return
+ }
+ // Update 'code' with the code found in the database.
+ if err := db.QueryRow("SELECT code, source_image_id FROM webtry WHERE hash=?", hash).Scan(&code, &source); err != nil {
+ http.NotFound(w, r)
+ return
+ }
+ }
+ // Expand the template.
+ w.Header().Set("Content-Type", "text/html")
+ if err := indexTemplate.Execute(w, userCode{Code: code, Hash: hash, Source: source, Titlebar: Titlebar{GitHash: gitHash, GitInfo: gitInfo}}); err != nil {
+ log.Printf("ERROR: Failed to expand template: %q\n", err)
+ }
+ } else if r.Method == "POST" {
+ w.Header().Set("Content-Type", "application/json")
+ buf := bytes.NewBuffer(make([]byte, 0, MAX_TRY_SIZE))
+ n, err := buf.ReadFrom(r.Body)
+ if err != nil {
+ reportTryError(w, r, err, "Failed to read a request body.", "")
+ return
+ }
+ if n == MAX_TRY_SIZE {
+ err := fmt.Errorf("Code length equal to, or exceeded, %d", MAX_TRY_SIZE)
+ reportTryError(w, r, err, "Code too large.", "")
+ return
+ }
+ request := TryRequest{}
+ if err := json.Unmarshal(buf.Bytes(), &request); err != nil {
+ reportTryError(w, r, err, "Coulnd't decode JSON.", "")
+ return
+ }
+ if hasPreProcessor(request.Code) {
+ err := fmt.Errorf("Found preprocessor macro in code.")
+ reportTryError(w, r, err, "Preprocessor macros aren't allowed.", "")
+ return
+ }
+ hash, err := expandCode(LineNumbers(request.Code), request.Source)
+ if err != nil {
+ reportTryError(w, r, err, "Failed to write the code to compile.", hash)
+ return
+ }
+ writeToDatabase(hash, request.Code, request.Name, request.Source)
+ message, err := doCmd(fmt.Sprintf(RESULT_COMPILE, hash, hash), true)
+ if err != nil {
+ message = cleanCompileOutput(message, hash)
+ reportTryError(w, r, err, message, hash)
+ return
+ }
+ linkMessage, err := doCmd(fmt.Sprintf(LINK, hash, hash), true)
+ if err != nil {
+ linkMessage = cleanCompileOutput(linkMessage, hash)
+ reportTryError(w, r, err, linkMessage, hash)
+ return
+ }
+ message += linkMessage
+ cmd := hash + " --out " + hash + ".png"
+ if request.Source > 0 {
+ cmd += fmt.Sprintf(" --source image-%d.png", request.Source)
+ }
+ if *useChroot {
+ cmd = "schroot -c webtry --directory=/inout -- /inout/" + cmd
+ } else {
+ abs, err := filepath.Abs("../../../inout")
+ if err != nil {
+ reportTryError(w, r, err, "Failed to find executable directory.", hash)
+ return
+ }
+ cmd = abs + "/" + cmd
+ }
+
+ execMessage, err := doCmd(cmd, false)
+ if err != nil {
+ reportTryError(w, r, err, "Failed to run the code:\n"+execMessage, hash)
+ return
+ }
+ png, err := ioutil.ReadFile("../../../inout/" + hash + ".png")
+ if err != nil {
+ reportTryError(w, r, err, "Failed to open the generated PNG.", hash)
+ return
+ }
+
+ m := response{
+ Message: message,
+ StdOut: execMessage,
+ Img: base64.StdEncoding.EncodeToString([]byte(png)),
+ Hash: hash,
+ }
+ resp, err := json.Marshal(m)
+ if err != nil {
+ reportTryError(w, r, err, "Failed to serialize a response.", hash)
+ return
+ }
+ w.Header().Set("Content-Type", "application/json")
+ w.Write(resp)
+ }
+}
+
+func main() {
+ flag.Parse()
+ http.HandleFunc("/i/", autogzip.HandleFunc(imageHandler))
+ http.HandleFunc("/w/", autogzip.HandleFunc(workspaceHandler))
+ http.HandleFunc("/recent/", autogzip.HandleFunc(recentHandler))
+ http.HandleFunc("/iframe/", autogzip.HandleFunc(iframeHandler))
+ http.HandleFunc("/json/", autogzip.HandleFunc(tryInfoHandler))
+ http.HandleFunc("/sources/", autogzip.HandleFunc(sourcesHandler))
+
+ // Resources are served directly
+ // TODO add support for caching/etags/gzip
+ http.Handle("/res/", autogzip.Handle(http.FileServer(http.Dir("./"))))
+
+ // TODO Break out /c/ as it's own handler.
+ http.HandleFunc("/", autogzip.HandleFunc(mainHandler))
+ log.Fatal(http.ListenAndServe(*port, nil))
+}